diff --git a/Projects/App/Sources/Application/AppComponent+Songs.swift b/Projects/App/Sources/Application/AppComponent+Songs.swift index 52e3acadc..795b82db8 100644 --- a/Projects/App/Sources/Application/AppComponent+Songs.swift +++ b/Projects/App/Sources/Application/AppComponent+Songs.swift @@ -11,6 +11,7 @@ import DataModule import NetworkModule import SearchFeature import HomeFeature +import CommonFeature public extension AppComponent { @@ -29,6 +30,14 @@ public extension AppComponent { var homeComponent: HomeComponent { HomeComponent(parent: self) } + + var newSongsComponent: NewSongsComponent { + NewSongsComponent(parent: self) + } + + var newSongsContentComponent: NewSongsContentComponent { + NewSongsContentComponent(parent: self) + } var remoteSongsDataSource: any RemoteSongsDataSource { shared { @@ -53,9 +62,9 @@ public extension AppComponent { } } - var fetchNewSongUseCase: any FetchNewSongUseCase { + var fetchNewSongsUseCase: any FetchNewSongsUseCase { shared { - FetchNewSongUseCaseImpl(songsRepository: songsRepository) + FetchNewSongsUseCaseImpl(songsRepository: songsRepository) } } } diff --git a/Projects/App/Sources/Application/AppComponent.swift b/Projects/App/Sources/Application/AppComponent.swift index 193ca8d73..de543e09f 100644 --- a/Projects/App/Sources/Application/AppComponent.swift +++ b/Projects/App/Sources/Application/AppComponent.swift @@ -12,22 +12,18 @@ public final class AppComponent: BootstrapComponent { public func makeRootView() -> IntroViewController { rootComponent.makeView() } + public var keychain: any Keychain { shared { KeychainImpl() } } + var rootComponent: RootComponent { shared { RootComponent(parent: self) } } - - var permissionComponent: PermissionComponent { - shared { - PermissionComponent(parent: self) - } - } } // MARK: - Tabbar @@ -61,7 +57,12 @@ public extension AppComponent { var openSourceLicenseComponent: OpenSourceLicenseComponent { OpenSourceLicenseComponent(parent: self) } + var serviceInfoComponent: ServiceInfoComponent { ServiceInfoComponent(parent: self) } + + var permissionComponent: PermissionComponent { + PermissionComponent(parent: self) + } } diff --git a/Projects/App/Sources/Application/NeedleGenerated.swift b/Projects/App/Sources/Application/NeedleGenerated.swift index 1b9b7ff73..d3ebb2ff1 100644 --- a/Projects/App/Sources/Application/NeedleGenerated.swift +++ b/Projects/App/Sources/Application/NeedleGenerated.swift @@ -550,8 +550,8 @@ private class HomeDependency443c4e1871277bd8432aProvider: HomeDependency { var fetchChartRankingUseCase: any FetchChartRankingUseCase { return appComponent.fetchChartRankingUseCase } - var fetchNewSongUseCase: any FetchNewSongUseCase { - return appComponent.fetchNewSongUseCase + var fetchNewSongsUseCase: any FetchNewSongsUseCase { + return appComponent.fetchNewSongsUseCase } var fetchRecommendPlayListUseCase: any FetchRecommendPlayListUseCase { return appComponent.fetchRecommendPlayListUseCase @@ -559,6 +559,9 @@ private class HomeDependency443c4e1871277bd8432aProvider: HomeDependency { var playListDetailComponent: PlayListDetailComponent { return appComponent.playListDetailComponent } + var newSongsComponent: NewSongsComponent { + return appComponent.newSongsComponent + } private let appComponent: AppComponent init(appComponent: AppComponent) { self.appComponent = appComponent @@ -684,6 +687,19 @@ private class MultiPurposePopDependency30141c7a9a9e67e148afProvider: MultiPurpos private func factory972fcba2860fcb8ad7b8f47b58f8f304c97af4d5(_ component: NeedleFoundation.Scope) -> AnyObject { return MultiPurposePopDependency30141c7a9a9e67e148afProvider(appComponent: parent1(component) as! AppComponent) } +private class NewSongsDependencyee634cc0cae21fc2a9e3Provider: NewSongsDependency { + var newSongsContentComponent: NewSongsContentComponent { + return appComponent.newSongsContentComponent + } + private let appComponent: AppComponent + init(appComponent: AppComponent) { + self.appComponent = appComponent + } +} +/// ^->AppComponent->NewSongsComponent +private func factory379179b05dd24ff979edf47b58f8f304c97af4d5(_ component: NeedleFoundation.Scope) -> AnyObject { + return NewSongsDependencyee634cc0cae21fc2a9e3Provider(appComponent: parent1(component) as! AppComponent) +} private class PlayListDetailDependencyb06fb5392859952b82a2Provider: PlayListDetailDependency { var fetchPlayListDetailUseCase: any FetchPlayListDetailUseCase { return appComponent.fetchPlayListDetailUseCase @@ -747,6 +763,25 @@ private class ProfilePopDependency081172e20caa75abdb54Provider: ProfilePopDepend private func factorybd14b11ccce6dac94a24f47b58f8f304c97af4d5(_ component: NeedleFoundation.Scope) -> AnyObject { return ProfilePopDependency081172e20caa75abdb54Provider(appComponent: parent1(component) as! AppComponent) } +private class NewSongsContentDependency93a05f20fa300c5bbec3Provider: NewSongsContentDependency { + var fetchNewSongsUseCase: any FetchNewSongsUseCase { + return appComponent.fetchNewSongsUseCase + } + var fetchChartUpdateTimeUseCase: any FetchChartUpdateTimeUseCase { + return appComponent.fetchChartUpdateTimeUseCase + } + var containSongsComponent: ContainSongsComponent { + return appComponent.containSongsComponent + } + private let appComponent: AppComponent + init(appComponent: AppComponent) { + self.appComponent = appComponent + } +} +/// ^->AppComponent->NewSongsContentComponent +private func factorye130e1fbfcbc622a4c38f47b58f8f304c97af4d5(_ component: NeedleFoundation.Scope) -> AnyObject { + return NewSongsContentDependency93a05f20fa300c5bbec3Provider(appComponent: parent1(component) as! AppComponent) +} #else extension AppComponent: Registration { @@ -760,11 +795,13 @@ extension AppComponent: Registration { localTable["afterSearchComponent-AfterSearchComponent"] = { self.afterSearchComponent as Any } localTable["afterSearchContentComponent-AfterSearchContentComponent"] = { self.afterSearchContentComponent as Any } localTable["homeComponent-HomeComponent"] = { self.homeComponent as Any } + localTable["newSongsComponent-NewSongsComponent"] = { self.newSongsComponent as Any } + localTable["newSongsContentComponent-NewSongsContentComponent"] = { self.newSongsContentComponent as Any } localTable["remoteSongsDataSource-any RemoteSongsDataSource"] = { self.remoteSongsDataSource as Any } localTable["songsRepository-any SongsRepository"] = { self.songsRepository as Any } localTable["fetchSearchSongUseCase-any FetchSearchSongUseCase"] = { self.fetchSearchSongUseCase as Any } localTable["fetchLyricsUseCase-any FetchLyricsUseCase"] = { self.fetchLyricsUseCase as Any } - localTable["fetchNewSongUseCase-any FetchNewSongUseCase"] = { self.fetchNewSongUseCase as Any } + localTable["fetchNewSongsUseCase-any FetchNewSongsUseCase"] = { self.fetchNewSongsUseCase as Any } localTable["signInComponent-SignInComponent"] = { self.signInComponent as Any } localTable["storageComponent-StorageComponent"] = { self.storageComponent as Any } localTable["afterLoginComponent-AfterLoginComponent"] = { self.afterLoginComponent as Any } @@ -823,6 +860,7 @@ extension AppComponent: Registration { localTable["playlistComponent-PlaylistComponent"] = { self.playlistComponent as Any } localTable["openSourceLicenseComponent-OpenSourceLicenseComponent"] = { self.openSourceLicenseComponent as Any } localTable["serviceInfoComponent-ServiceInfoComponent"] = { self.serviceInfoComponent as Any } + localTable["permissionComponent-PermissionComponent"] = { self.permissionComponent as Any } localTable["noticePopupComponent-NoticePopupComponent"] = { self.noticePopupComponent as Any } localTable["noticeComponent-NoticeComponent"] = { self.noticeComponent as Any } localTable["noticeDetailComponent-NoticeDetailComponent"] = { self.noticeDetailComponent as Any } @@ -1051,9 +1089,10 @@ extension SignInComponent: Registration { extension HomeComponent: Registration { public func registerItems() { keyPathToName[\HomeDependency.fetchChartRankingUseCase] = "fetchChartRankingUseCase-any FetchChartRankingUseCase" - keyPathToName[\HomeDependency.fetchNewSongUseCase] = "fetchNewSongUseCase-any FetchNewSongUseCase" + keyPathToName[\HomeDependency.fetchNewSongsUseCase] = "fetchNewSongsUseCase-any FetchNewSongsUseCase" keyPathToName[\HomeDependency.fetchRecommendPlayListUseCase] = "fetchRecommendPlayListUseCase-any FetchRecommendPlayListUseCase" keyPathToName[\HomeDependency.playListDetailComponent] = "playListDetailComponent-PlayListDetailComponent" + keyPathToName[\HomeDependency.newSongsComponent] = "newSongsComponent-NewSongsComponent" } } extension AfterSearchComponent: Registration { @@ -1100,6 +1139,11 @@ extension MultiPurposePopComponent: Registration { keyPathToName[\MultiPurposePopDependency.editPlayListNameUseCase] = "editPlayListNameUseCase-any EditPlayListNameUseCase" } } +extension NewSongsComponent: Registration { + public func registerItems() { + keyPathToName[\NewSongsDependency.newSongsContentComponent] = "newSongsContentComponent-NewSongsContentComponent" + } +} extension PlayListDetailComponent: Registration { public func registerItems() { keyPathToName[\PlayListDetailDependency.fetchPlayListDetailUseCase] = "fetchPlayListDetailUseCase-any FetchPlayListDetailUseCase" @@ -1125,6 +1169,13 @@ extension ProfilePopComponent: Registration { keyPathToName[\ProfilePopDependency.setProfileUseCase] = "setProfileUseCase-any SetProfileUseCase" } } +extension NewSongsContentComponent: Registration { + public func registerItems() { + keyPathToName[\NewSongsContentDependency.fetchNewSongsUseCase] = "fetchNewSongsUseCase-any FetchNewSongsUseCase" + keyPathToName[\NewSongsContentDependency.fetchChartUpdateTimeUseCase] = "fetchChartUpdateTimeUseCase-any FetchChartUpdateTimeUseCase" + keyPathToName[\NewSongsContentDependency.containSongsComponent] = "containSongsComponent-ContainSongsComponent" + } +} #endif @@ -1178,10 +1229,12 @@ private func registerProviderFactory(_ componentPath: String, _ factory: @escapi registerProviderFactory("^->AppComponent->ContainSongsComponent", factory4d4f4455414271fee232f47b58f8f304c97af4d5) registerProviderFactory("^->AppComponent->ServiceInfoComponent", factory3afd170b9974b0dbd863f47b58f8f304c97af4d5) registerProviderFactory("^->AppComponent->MultiPurposePopComponent", factory972fcba2860fcb8ad7b8f47b58f8f304c97af4d5) + registerProviderFactory("^->AppComponent->NewSongsComponent", factory379179b05dd24ff979edf47b58f8f304c97af4d5) registerProviderFactory("^->AppComponent->PlayListDetailComponent", factory9e077ee814ce180ea399f47b58f8f304c97af4d5) registerProviderFactory("^->AppComponent->OpenSourceLicenseComponent", factoryd505894818021731340ae3b0c44298fc1c149afb) registerProviderFactory("^->AppComponent->NoticePopupComponent", factorycd081aacb61d6a707ca7e3b0c44298fc1c149afb) registerProviderFactory("^->AppComponent->ProfilePopComponent", factorybd14b11ccce6dac94a24f47b58f8f304c97af4d5) + registerProviderFactory("^->AppComponent->NewSongsContentComponent", factorye130e1fbfcbc622a4c38f47b58f8f304c97af4d5) } #endif diff --git a/Projects/App/Support/Info.plist b/Projects/App/Support/Info.plist index db8bcc7f9..15cc21b16 100644 --- a/Projects/App/Support/Info.plist +++ b/Projects/App/Support/Info.plist @@ -116,6 +116,8 @@ $(WMDOMAIN_QNA) WMDOMAIN_SONGS $(WMDOMAIN_SONGS) + WMDOMAIN_V2_SONGS + $(WMDOMAIN_V2_SONGS) WMDOMAIN_SUGGEST $(WMDOMAIN_SUGGEST) WMDOMAIN_USER diff --git a/Projects/Features/ArtistFeature/Sources/ViewControllers/ArtistViewController.swift b/Projects/Features/ArtistFeature/Sources/ViewControllers/ArtistViewController.swift index bffd07136..e24c8629e 100644 --- a/Projects/Features/ArtistFeature/Sources/ViewControllers/ArtistViewController.swift +++ b/Projects/Features/ArtistFeature/Sources/ViewControllers/ArtistViewController.swift @@ -27,9 +27,14 @@ public final class ArtistViewController: BaseViewController, ViewControllerFromS public override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) + navigationController?.interactivePopGestureRecognizer?.delegate = self + } + + public override func viewDidDisappear(_ animated: Bool) { + super.viewDidDisappear(animated) navigationController?.interactivePopGestureRecognizer?.delegate = nil } - + public static func viewController( viewModel: ArtistViewModel, artistDetailComponent: ArtistDetailComponent @@ -131,3 +136,9 @@ extension ArtistViewController { } } } + +extension ArtistViewController: UIGestureRecognizerDelegate { + public func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool { + return false + } +} diff --git a/Projects/Features/ChartFeature/Sources/ViewContrillers/ChartContentViewController.swift b/Projects/Features/ChartFeature/Sources/ViewContrillers/ChartContentViewController.swift index 3f3c53f76..65630be18 100644 --- a/Projects/Features/ChartFeature/Sources/ViewContrillers/ChartContentViewController.swift +++ b/Projects/Features/ChartFeature/Sources/ViewContrillers/ChartContentViewController.swift @@ -71,10 +71,15 @@ extension ChartContentViewController { private func outputBind() { output.dataSource .skip(1) - .do(onNext: { [weak self] _ in + .do(onNext: { [weak self] (model) in guard let `self` = self else { return } self.activityIncidator.stopAnimating() self.refreshControl.endRefreshing() + let space: CGFloat = APP_HEIGHT() - 40 - 102 - 56 - 56 - STATUS_BAR_HEGHIT() - SAFEAREA_BOTTOM_HEIGHT() + let height: CGFloat = space / 3 * 2 + let warningView: WarningView = WarningView(frame: CGRect(x: 0, y: 0, width: APP_WIDTH(), height: height)) + warningView.text = "차트 데이터가 없습니다." + self.tableView.tableFooterView = model.isEmpty ? warningView : UIView(frame: CGRect(x: 0, y: 0, width: APP_WIDTH(), height: PLAYER_HEIGHT())) }) .bind(to: tableView.rx.items) { [weak self] (tableView, index, model) -> UITableViewCell in guard let self else { return UITableViewCell() } @@ -126,8 +131,8 @@ extension ChartContentViewController { self.activityIncidator.type = .circleStrokeSpin self.activityIncidator.color = DesignSystemAsset.PrimaryColor.point.color self.activityIncidator.startAnimating() - self.tableView.tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: APP_WIDTH(), height: 56)) - self.tableView.scrollIndicatorInsets = UIEdgeInsets(top: 0, left: 0, bottom: 56, right: 0) + self.tableView.tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: APP_WIDTH(), height: PLAYER_HEIGHT())) + self.tableView.scrollIndicatorInsets = UIEdgeInsets(top: 0, left: 0, bottom: PLAYER_HEIGHT(), right: 0) self.tableView.refreshControl = refreshControl } } @@ -136,6 +141,7 @@ extension ChartContentViewController: UITableViewDelegate { public func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 60 } + public func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return 102 } diff --git a/Projects/Features/CommonFeature/Resources/CommonUI.storyboard b/Projects/Features/CommonFeature/Resources/CommonUI.storyboard index 233484ac7..ee4f46f94 100644 --- a/Projects/Features/CommonFeature/Resources/CommonUI.storyboard +++ b/Projects/Features/CommonFeature/Resources/CommonUI.storyboard @@ -1,9 +1,9 @@ - + - + @@ -166,7 +166,7 @@ - - - - - - - - - + + + + + + + + + - + + - + + + + + + @@ -449,13 +429,11 @@ - - + - - - + + diff --git a/Projects/Features/HomeFeature/Sources/Components/HomeComponent.swift b/Projects/Features/HomeFeature/Sources/Components/HomeComponent.swift index 67396cc33..ef61395cd 100644 --- a/Projects/Features/HomeFeature/Sources/Components/HomeComponent.swift +++ b/Projects/Features/HomeFeature/Sources/Components/HomeComponent.swift @@ -14,9 +14,10 @@ import CommonFeature public protocol HomeDependency: Dependency { var fetchChartRankingUseCase: any FetchChartRankingUseCase { get } - var fetchNewSongUseCase: any FetchNewSongUseCase { get } + var fetchNewSongsUseCase: any FetchNewSongsUseCase { get } var fetchRecommendPlayListUseCase: any FetchRecommendPlayListUseCase { get } - var playListDetailComponent : PlayListDetailComponent {get} + var playListDetailComponent : PlayListDetailComponent { get } + var newSongsComponent: NewSongsComponent { get } } public final class HomeComponent: Component { @@ -24,10 +25,11 @@ public final class HomeComponent: Component { return HomeViewController.viewController( viewModel: .init( fetchChartRankingUseCase: dependency.fetchChartRankingUseCase, - fetchNewSongUseCase: dependency.fetchNewSongUseCase, + fetchNewSongsUseCase: dependency.fetchNewSongsUseCase, fetchRecommendPlayListUseCase: dependency.fetchRecommendPlayListUseCase ), - playListDetailComponent: dependency.playListDetailComponent + playListDetailComponent: dependency.playListDetailComponent, + newSongsComponent: dependency.newSongsComponent ) } } diff --git a/Projects/Features/HomeFeature/Sources/ViewControllers/HomeViewController.swift b/Projects/Features/HomeFeature/Sources/ViewControllers/HomeViewController.swift index 01d457529..1d7ba3e53 100644 --- a/Projects/Features/HomeFeature/Sources/ViewControllers/HomeViewController.swift +++ b/Projects/Features/HomeFeature/Sources/ViewControllers/HomeViewController.swift @@ -30,14 +30,12 @@ public final class HomeViewController: BaseViewController, ViewControllerFromSto //최신음악 @IBOutlet weak var latestSongLabel: UILabel! - @IBOutlet weak var latestSongAllButton: UIButton! - @IBOutlet weak var latestSongWwgButton: UIButton! - @IBOutlet weak var latestSongIseButton: UIButton! - @IBOutlet weak var latestSongGomButton: UIButton! - @IBOutlet weak var latestSongAcademyButton: UIButton! + @IBOutlet weak var latestArrowImageView: UIImageView! + @IBOutlet weak var latestSongsMoveButton: UIButton! + @IBOutlet weak var latestSongsPlayButton: UIButton! @IBOutlet weak var collectionView: UICollectionView! @IBOutlet weak var latestSongEmptyLabel: UILabel! - + private let blurImageView = UIImageView().then { $0.layer.cornerRadius = 12 $0.clipsToBounds = true @@ -53,6 +51,7 @@ public final class HomeViewController: BaseViewController, ViewControllerFromSto } private var refreshControl = UIRefreshControl() var playListDetailComponent: PlayListDetailComponent! + var newSongsComponent: NewSongsComponent! var recommendViewHeightConstraint: NSLayoutConstraint? var viewModel: HomeViewModel! @@ -68,10 +67,25 @@ public final class HomeViewController: BaseViewController, ViewControllerFromSto outputBind() } - public static func viewController(viewModel: HomeViewModel, playListDetailComponent :PlayListDetailComponent) -> HomeViewController { + public override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + navigationController?.interactivePopGestureRecognizer?.delegate = self + } + + public override func viewDidDisappear(_ animated: Bool) { + super.viewDidDisappear(animated) + navigationController?.interactivePopGestureRecognizer?.delegate = nil + } + + public static func viewController( + viewModel: HomeViewModel, + playListDetailComponent: PlayListDetailComponent, + newSongsComponent: NewSongsComponent + ) -> HomeViewController { let viewController = HomeViewController.viewController(storyBoardName: "Home", bundle: Bundle.module) viewController.viewModel = viewModel viewController.playListDetailComponent = playListDetailComponent + viewController.newSongsComponent = newSongsComponent return viewController } } @@ -83,77 +97,20 @@ extension HomeViewController { .disposed(by: disposeBag) chartAllListenButton.rx.tap - .bind(to: input.allListenTapped) + .bind(to: input.chartAllListenTapped) + .disposed(by: disposeBag) + + latestSongsMoveButton.rx.tap + .withUnretained(self) + .subscribe(onNext: { (owner, _) in + let viewController = owner.newSongsComponent.makeView() + owner.navigationController?.pushViewController(viewController, animated: true) + }) + .disposed(by: disposeBag) + + latestSongsPlayButton.rx.tap + .bind(to: input.newSongsAllListenTapped) .disposed(by: disposeBag) - - Observable.merge( - latestSongAllButton.rx.tap.map { _ -> NewSongGroupType in .all }, - latestSongWwgButton.rx.tap.map { _ -> NewSongGroupType in .woowakgood }, - latestSongIseButton.rx.tap.map { _ -> NewSongGroupType in .isedol }, - latestSongGomButton.rx.tap.map { _ -> NewSongGroupType in .gomem }, - latestSongAcademyButton.rx.tap.map { _ -> NewSongGroupType in .academy } - ) - .withLatestFrom(input.newSongTypeTapped) { ($0, $1) } - .filter{ (currentSelectedType, previousType) in - guard currentSelectedType != previousType else { return false } - return true - } - .throttle(RxTimeInterval.seconds(1), latest: false, scheduler: MainScheduler.instance) - .do(onNext: { [weak self] (currentSelectedType, previousType) in - guard let `self` = self else { return } - - switch previousType { - case .all: - self.latestSongAllButton.isSelected = false - case .woowakgood: - self.latestSongWwgButton.isSelected = false - case .isedol: - self.latestSongIseButton.isSelected = false - case .gomem: - self.latestSongGomButton.isSelected = false - case .academy: - self.latestSongAcademyButton.isSelected = false - } - - switch currentSelectedType { - case .all: - self.latestSongAllButton.isSelected = true - self.latestSongWwgButton.isEnabled = false - self.latestSongIseButton.isEnabled = false - self.latestSongGomButton.isEnabled = false - self.latestSongAcademyButton.isSelected = false - case .woowakgood: - self.latestSongAllButton.isEnabled = false - self.latestSongWwgButton.isSelected = true - self.latestSongIseButton.isEnabled = false - self.latestSongGomButton.isEnabled = false - self.latestSongAcademyButton.isSelected = false - case .isedol: - self.latestSongAllButton.isEnabled = false - self.latestSongWwgButton.isEnabled = false - self.latestSongIseButton.isSelected = true - self.latestSongGomButton.isEnabled = false - self.latestSongAcademyButton.isSelected = false - case .gomem: - self.latestSongAllButton.isEnabled = false - self.latestSongWwgButton.isEnabled = false - self.latestSongIseButton.isEnabled = false - self.latestSongGomButton.isSelected = true - self.latestSongAcademyButton.isSelected = false - case .academy: - self.latestSongAllButton.isEnabled = false - self.latestSongWwgButton.isEnabled = false - self.latestSongIseButton.isEnabled = false - self.latestSongGomButton.isSelected = false - self.latestSongAcademyButton.isSelected = true - } - self.activityIndicator.startAnimating() - }) - .map { (currentSelectedType, _) -> NewSongGroupType in - return currentSelectedType - } - .bind(to: input.newSongTypeTapped) - .disposed(by: disposeBag) refreshControl.rx .controlEvent(.valueChanged) @@ -224,15 +181,14 @@ extension HomeViewController { output.newSongDataSource .skip(1) + .map{ (model) in + let max: Int = 10 + return (model.count >= max) ? Array(model[0.. UICollectionViewCell in @@ -278,23 +234,6 @@ extension HomeViewController { self.recommendViewHeightConstraint?.constant = height recommendView.dataSource = model } - }).disposed(by: disposeBag) - - output.songEntityOfAllChart - .subscribe(onNext: { (songs) in - let songEntities: [SongEntity] = songs.map { - return SongEntity( - id: $0.id, - title: $0.title, - artist: $0.artist, - remix: $0.remix, - reaction: $0.reaction, - views: $0.views, - last: $0.last, - date: $0.date - ) - } - PlayState.shared.loadAndAppendSongsToPlaylist(songEntities) }) .disposed(by: disposeBag) } @@ -345,27 +284,16 @@ extension HomeViewController { .kern: -0.5] ) latestSongLabel.attributedText = latestSongAttributedString + latestArrowImageView.image = DesignSystemAsset.Home.homeArrowRight.image + + let latestSongPlayAttributedString = NSMutableAttributedString( + string: "전체듣기", + attributes: [.font: DesignSystemFontFamily.Pretendard.medium.font(size: 14), + .foregroundColor: DesignSystemAsset.GrayColor.gray900.color.withAlphaComponent(0.6), + .kern: -0.5] + ) + latestSongsPlayButton.setAttributedTitle(latestSongPlayAttributedString, for: .normal) - let buttons: [UIButton] = [latestSongAllButton, latestSongWwgButton, latestSongIseButton, latestSongGomButton, latestSongAcademyButton] - - for (model, button) in zip(NewSongGroupType.allCases, buttons) { - let attributedString = NSMutableAttributedString( - string: model.display, - attributes: [.font: DesignSystemFontFamily.Pretendard.light.font(size: 14), - .foregroundColor: DesignSystemAsset.GrayColor.gray900.color, - .kern: -0.5] - ) - button.setAttributedTitle(attributedString, for: .normal) - - let selectedAttributedString = NSMutableAttributedString( - string: model.display, - attributes: [.font: DesignSystemFontFamily.Pretendard.bold.font(size: 14), - .foregroundColor: DesignSystemAsset.GrayColor.gray900.color, - .kern: -0.5] - ) - button.setAttributedTitle(selectedAttributedString, for: .selected) - } - latestSongAllButton.isSelected = true latestSongEmptyLabel.isHidden = true latestSongEmptyLabel.text = "현재 집계된 음악이 없습니다." latestSongEmptyLabel.textColor = DesignSystemAsset.GrayColor.gray900.color @@ -432,3 +360,9 @@ extension HomeViewController { } } } + +extension HomeViewController: UIGestureRecognizerDelegate { + public func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool { + return false + } +} diff --git a/Projects/Features/HomeFeature/Sources/ViewModels/HomeViewModel.swift b/Projects/Features/HomeFeature/Sources/ViewModels/HomeViewModel.swift index 3a93807c9..05f02ca16 100644 --- a/Projects/Features/HomeFeature/Sources/ViewModels/HomeViewModel.swift +++ b/Projects/Features/HomeFeature/Sources/ViewModels/HomeViewModel.swift @@ -13,63 +13,60 @@ import BaseFeature import DomainModule import Utility import DataMappingModule +import CommonFeature public final class HomeViewModel: ViewModelType { var disposeBag = DisposeBag() var fetchChartRankingUseCase: FetchChartRankingUseCase - var fetchNewSongUseCase: FetchNewSongUseCase + var fetchNewSongsUseCase: FetchNewSongsUseCase var fetchRecommendPlayListUseCase: FetchRecommendPlayListUseCase public init( fetchChartRankingUseCase: any FetchChartRankingUseCase, - fetchNewSongUseCase: any FetchNewSongUseCase, + fetchNewSongsUseCase: any FetchNewSongsUseCase, fetchRecommendPlayListUseCase: any FetchRecommendPlayListUseCase ){ self.fetchChartRankingUseCase = fetchChartRankingUseCase - self.fetchNewSongUseCase = fetchNewSongUseCase + self.fetchNewSongsUseCase = fetchNewSongsUseCase self.fetchRecommendPlayListUseCase = fetchRecommendPlayListUseCase - DEBUG_LOG("✅ \(Self.self) 생성") } public struct Input { - var newSongTypeTapped: BehaviorSubject = BehaviorSubject(value: .all) var chartMoreTapped: PublishSubject = PublishSubject() - var allListenTapped: PublishSubject = PublishSubject() + var chartAllListenTapped: PublishSubject = PublishSubject() + var newSongsAllListenTapped: PublishSubject = PublishSubject() var refreshPulled: PublishSubject = PublishSubject() } public struct Output { var chartDataSource: BehaviorRelay<[ChartRankingEntity]> - let newSongDataSource: BehaviorRelay<[NewSongEntity]> + let newSongDataSource: BehaviorRelay<[NewSongsEntity]> var playListDataSource: BehaviorRelay<[RecommendPlayListEntity]> - var songEntityOfAllChart: PublishSubject<[ChartRankingEntity]> } public func transform(from input: Input) -> Output { let chartDataSource: BehaviorRelay<[ChartRankingEntity]> = BehaviorRelay(value: []) - let newSongDataSource: BehaviorRelay<[NewSongEntity]> = BehaviorRelay(value: []) + let newSongDataSource: BehaviorRelay<[NewSongsEntity]> = BehaviorRelay(value: []) let playListDataSource: BehaviorRelay<[RecommendPlayListEntity]> = BehaviorRelay(value: []) - let songEntityOfAllChart: PublishSubject<[ChartRankingEntity]> = PublishSubject() + + let chart = self.fetchChartRankingUseCase + .execute(type: .hourly, limit: 100) + .catchAndReturn([]) + .asObservable() - let chartAndNewSong = Observable.zip( - self.fetchChartRankingUseCase - .execute(type: .hourly, limit: 100) - .catchAndReturn([]) - .asObservable(), - self.fetchNewSongUseCase - .execute(type: .all) - .catchAndReturn([]) - .asObservable() - ) + let newSongs = self.fetchNewSongsUseCase + .execute(type: .all, page: 1, limit: 100) + .catchAndReturn([]) + .asObservable() - let firstLoad = Observable.zip( - chartAndNewSong, - self.fetchRecommendPlayListUseCase - .execute() - .catchAndReturn([]) - .asObservable() - ) + let playList = self.fetchRecommendPlayListUseCase + .execute() + .catchAndReturn([]) + .asObservable() + + let chartAndNewSong = Observable.zip(chart, newSongs) + let firstLoad = Observable.zip(chartAndNewSong, playList) firstLoad .take(1) @@ -78,7 +75,8 @@ public final class HomeViewModel: ViewModelType { chartDataSource.accept(chartRankingEntity) newSongDataSource.accept(newSongEntity) playListDataSource.accept(recommendPlayListEntity) - }).disposed(by: disposeBag) + }) + .disposed(by: disposeBag) input.chartMoreTapped .map { _ in 1 } @@ -86,45 +84,48 @@ public final class HomeViewModel: ViewModelType { NotificationCenter.default.post(name: .movedTab, object: index) }).disposed(by: disposeBag) - input.allListenTapped + input.chartAllListenTapped .withLatestFrom(chartDataSource) - .bind(to: songEntityOfAllChart) + .subscribe(onNext: { (songs) in + let songEntities: [SongEntity] = songs.map { + return SongEntity( + id: $0.id, + title: $0.title, + artist: $0.artist, + remix: $0.remix, + reaction: $0.reaction, + views: $0.views, + last: $0.last, + date: $0.date + ) + } + PlayState.shared.loadAndAppendSongsToPlaylist(songEntities) + }) .disposed(by: disposeBag) - input.newSongTypeTapped - .skip(1) - .debug("✅ newSongTypeTapped") - .flatMap { [weak self] (type) -> Observable<[NewSongEntity]> in - guard let `self` = self else { return Observable.empty() } - return self.fetchNewSongUseCase.execute(type: type) - .catchAndReturn([]) - .asObservable() - } - .bind(to: newSongDataSource) + input.newSongsAllListenTapped + .withLatestFrom(newSongDataSource) + .subscribe(onNext: { (newSongs) in + let songEntities: [SongEntity] = newSongs.map { + return SongEntity( + id: $0.id, + title: $0.title, + artist: $0.artist, + remix: $0.remix, + reaction: $0.reaction, + views: $0.views, + last: $0.last, + date: "\($0.date)" + ) + } + PlayState.shared.loadAndAppendSongsToPlaylist(songEntities) + }) .disposed(by: disposeBag) input.refreshPulled - .withLatestFrom(input.newSongTypeTapped) - .flatMap { [weak self] (type) -> Observable<(([ChartRankingEntity], [NewSongEntity]), [RecommendPlayListEntity])> in - guard let self = self else{ return Observable.empty() } - - let chartAndNewSong = Observable.zip( - self.fetchChartRankingUseCase - .execute(type: .hourly, limit: 100) - .catchAndReturn([]) - .asObservable(), - self.fetchNewSongUseCase - .execute(type: type) - .catchAndReturn([]) - .asObservable() - ) - let result = Observable.zip( - chartAndNewSong, - self.fetchRecommendPlayListUseCase - .execute() - .catchAndReturn([]) - .asObservable() - ) + .flatMap { _ -> Observable<(([ChartRankingEntity], [NewSongsEntity]), [RecommendPlayListEntity])> in + let chartAndNewSong = Observable.zip(chart, newSongs) + let result = Observable.zip(chartAndNewSong, playList) return result } .debug("✅ Refresh Completed") @@ -133,13 +134,13 @@ public final class HomeViewModel: ViewModelType { chartDataSource.accept(chartRankingEntity) newSongDataSource.accept(newSongEntity) playListDataSource.accept(recommendPlayListEntity) - }).disposed(by: disposeBag) + }) + .disposed(by: disposeBag) return Output( chartDataSource: chartDataSource, newSongDataSource: newSongDataSource, - playListDataSource: playListDataSource, - songEntityOfAllChart: songEntityOfAllChart + playListDataSource: playListDataSource ) } } diff --git a/Projects/Features/HomeFeature/Sources/Views/HomeNewSongCell.swift b/Projects/Features/HomeFeature/Sources/Views/HomeNewSongCell.swift index 834295bb3..ae3dd769b 100644 --- a/Projects/Features/HomeFeature/Sources/Views/HomeNewSongCell.swift +++ b/Projects/Features/HomeFeature/Sources/Views/HomeNewSongCell.swift @@ -34,7 +34,7 @@ class HomeNewSongCell: UICollectionViewCell { extension HomeNewSongCell { - func update(model: NewSongEntity) { + func update(model: NewSongsEntity) { let titleAttributedString = NSMutableAttributedString( string: model.title, diff --git a/Projects/Features/PlayerFeature/Sources/ViewControllers/PlayerViewController.swift b/Projects/Features/PlayerFeature/Sources/ViewControllers/PlayerViewController.swift index 167d4f755..db554fa1b 100644 --- a/Projects/Features/PlayerFeature/Sources/ViewControllers/PlayerViewController.swift +++ b/Projects/Features/PlayerFeature/Sources/ViewControllers/PlayerViewController.swift @@ -27,7 +27,7 @@ public class PlayerViewController: UIViewController { var playerView: PlayerView! var miniPlayerView: MiniPlayerView! - lazy var youtubePlayerView = YouTubePlayerHostingView(player: playState.player).then { + lazy var youtubePlayerView = YouTubePlayerHostingView(player: playState.player ?? YouTubePlayer()).then { $0.isHidden = true } @@ -100,7 +100,7 @@ private extension PlayerViewController { private func resetYouTubePlayerHostingView() { self.youtubePlayerView.removeFromSuperview() - self.youtubePlayerView = YouTubePlayerHostingView(player: self.playState.player) + self.youtubePlayerView = YouTubePlayerHostingView(player: self.playState.player ?? YouTubePlayer()) self.youtubePlayerView.isHidden = true self.view.addSubview(self.youtubePlayerView) self.youtubePlayerView.snp.makeConstraints { @@ -447,7 +447,7 @@ extension PlayerViewController: UITableViewDelegate, UITableViewDataSource, UISc findCenterCellIndexPath { centerCellIndexPath in if viewModel.lyricsDict.isEmpty { return } let start = viewModel.lyricsDict.keys.sorted()[centerCellIndexPath.row] - playState.player.seek(to: Double(start), allowSeekAhead: true) + playState.player?.seek(to: Double(start), allowSeekAhead: true) viewModel.isLyricsScrolling = false } } @@ -458,7 +458,7 @@ extension PlayerViewController: UITableViewDelegate, UITableViewDataSource, UISc findCenterCellIndexPath { centerCellIndexPath in if viewModel.lyricsDict.isEmpty { return } let start = viewModel.lyricsDict.keys.sorted()[centerCellIndexPath.row] - playState.player.seek(to: Double(start), allowSeekAhead: true) + playState.player?.seek(to: Double(start), allowSeekAhead: true) viewModel.isLyricsScrolling = false } } diff --git a/Projects/Features/PlayerFeature/Sources/ViewControllers/PlaylistViewController.swift b/Projects/Features/PlayerFeature/Sources/ViewControllers/PlaylistViewController.swift index dd3c2fb20..5f431d93b 100644 --- a/Projects/Features/PlayerFeature/Sources/ViewControllers/PlaylistViewController.swift +++ b/Projects/Features/PlayerFeature/Sources/ViewControllers/PlaylistViewController.swift @@ -36,6 +36,8 @@ public class PlaylistViewController: UIViewController, SongCartViewType { public var songCartView: CommonFeature.SongCartView! public var bottomSheetView: CommonFeature.BottomSheetView! + private var panGestureRecognizer: UIPanGestureRecognizer! + init(viewModel: PlaylistViewModel, containSongsComponent: ContainSongsComponent) { self.viewModel = viewModel self.containSongsComponent = containSongsComponent @@ -59,6 +61,7 @@ public class PlaylistViewController: UIViewController, SongCartViewType { public override func viewDidLoad() { super.viewDidLoad() playlistView.playlistTableView.rx.setDelegate(self).disposed(by: disposeBag) + bindGesture() bindViewModel() bindActions() } @@ -75,6 +78,55 @@ public class PlaylistViewController: UIViewController, SongCartViewType { } private extension PlaylistViewController { + @objc func handlePanGesture(_ gestureRecognizer: UIPanGestureRecognizer) { + let distance = gestureRecognizer.translation(in: self.view) + let screenHeight = Utility.APP_HEIGHT() + + switch gestureRecognizer.state { + case .began: + return + + case .changed: + let distanceY = max(distance.y, 0) + view.frame = CGRect(x: 0, y: distanceY, width: view.frame.width, height: screenHeight) + //let opacity = 1 - (distanceY / screenHeight) + //updateOpacity(value: Float(opacity)) + + case .ended: + let velocity = gestureRecognizer.velocity(in: self.view) + + // 빠르게 드래그하거나 화면의 40% 이상 드래그 했을 경우 dismiss + if velocity.y > 1000 || view.frame.origin.y > (screenHeight * 0.4) { + dismiss(animated: true) + } else { + UIView.animate(withDuration: 0.35, + delay: 0.0, + usingSpringWithDamping: 0.8, + initialSpringVelocity: 0.8, + options: [.curveEaseInOut], + animations: { + self.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: screenHeight) + self.updateOpacity(value : 1) + }) + } + + default: + break + } + } + + func updateOpacity(value: Float) { + playlistView.layer.opacity = value + } +} + +private extension PlaylistViewController { + private func bindGesture() { + panGestureRecognizer = UIPanGestureRecognizer(target: self, + action: #selector(handlePanGesture(_:))) + self.playlistView.titleBarView.addGestureRecognizer(panGestureRecognizer) + } + private func bindViewModel() { let input = PlaylistViewModel.Input( closeButtonDidTapEvent: playlistView.closeButton.tapPublisher, diff --git a/Projects/Features/PlayerFeature/Sources/ViewModels/PlayerViewModel.swift b/Projects/Features/PlayerFeature/Sources/ViewModels/PlayerViewModel.swift index 683f9580e..ca0d2768d 100644 --- a/Projects/Features/PlayerFeature/Sources/ViewModels/PlayerViewModel.swift +++ b/Projects/Features/PlayerFeature/Sources/ViewModels/PlayerViewModel.swift @@ -167,7 +167,7 @@ final class PlayerViewModel: ViewModelType { input.sliderValueChangedEvent.subscribe { [weak self] value in guard let self else { return } - self.playState.player.seek(to: Double(value), allowSeekAhead: true) + self.playState.player?.seek(to: Double(value), allowSeekAhead: true) }.disposed(by: disposeBag) input.likeButtonDidTapEvent @@ -346,7 +346,7 @@ final class PlayerViewModel: ViewModelType { } - private func handleProgress(progress: PlayState.PlayProgress, output: Output) { + private func handleProgress(progress: PlayProgress, output: Output) { output.playTimeText.send(self.formatTime(progress.currentProgress)) output.totalTimeText.send(self.formatTime(progress.endProgress)) output.playTimeValue.send(Float(progress.currentProgress)) diff --git a/Projects/Features/PlayerFeature/Sources/Views/PlaylistView.swift b/Projects/Features/PlayerFeature/Sources/Views/PlaylistView.swift index 7a8a8406d..7ae085fc7 100644 --- a/Projects/Features/PlayerFeature/Sources/Views/PlaylistView.swift +++ b/Projects/Features/PlayerFeature/Sources/Views/PlaylistView.swift @@ -20,7 +20,7 @@ public final class PlaylistView: UIView { private lazy var contentView = UIView() - private lazy var titleBarView: UIView = UIView() + internal lazy var titleBarView: UIView = UIView() internal lazy var closeButton = UIButton().then { $0.setImage(DesignSystemAsset.Navigation.close.image, for: .normal) diff --git a/Projects/Features/SearchFeature/Sources/ViewControllers/BeforeSearchContentViewController.swift b/Projects/Features/SearchFeature/Sources/ViewControllers/BeforeSearchContentViewController.swift index c20393814..aeba8c987 100644 --- a/Projects/Features/SearchFeature/Sources/ViewControllers/BeforeSearchContentViewController.swift +++ b/Projects/Features/SearchFeature/Sources/ViewControllers/BeforeSearchContentViewController.swift @@ -54,6 +54,8 @@ public final class BeforeSearchContentViewController: BaseViewController,ViewCon extension BeforeSearchContentViewController { private func configureUI() { self.tableView.backgroundColor = DesignSystemAsset.GrayColor.gray100.color + self.tableView.tableFooterView = UIView(frame: .init(x: 0, y: 0, width: APP_WIDTH(), height: PLAYER_HEIGHT())) + self.tableView.scrollIndicatorInsets = UIEdgeInsets(top: 0, left: 0, bottom: PLAYER_HEIGHT(), right: 0) self.indicator.type = .circleStrokeSpin self.indicator.color = DesignSystemAsset.PrimaryColor.point.color self.indicator.startAnimating() diff --git a/Projects/Features/StorageFeature/Sources/ViewControllers/NoticeDetailViewController.swift b/Projects/Features/StorageFeature/Sources/ViewControllers/NoticeDetailViewController.swift index 24328fd3b..f3c31ee74 100644 --- a/Projects/Features/StorageFeature/Sources/ViewControllers/NoticeDetailViewController.swift +++ b/Projects/Features/StorageFeature/Sources/ViewControllers/NoticeDetailViewController.swift @@ -35,7 +35,8 @@ public class NoticeDetailViewController: UIViewController, ViewControllerFromSto public override func viewDidLoad() { super.viewDidLoad() configureUI() - bind() + outputBind() + inputBind() } public static func viewController( @@ -52,13 +53,17 @@ public class NoticeDetailViewController: UIViewController, ViewControllerFromSto } extension NoticeDetailViewController { - private func bind() { + private func inputBind() { + viewModel.input.fetchNoticeDetail.onNext(()) + } + + private func outputBind() { viewModel.output.dataSource .bind(to: collectionView.rx.items(dataSource: createDataSource())) .disposed(by: disposeBag) viewModel.output.imageSizes - .filter { !$0.isEmpty } + .skip(1) .subscribe(onNext: { [weak self] _ in self?.indicator.stopAnimating() }) diff --git a/Projects/Features/StorageFeature/Sources/ViewControllers/QuestionViewController.swift b/Projects/Features/StorageFeature/Sources/ViewControllers/QuestionViewController.swift index 5ba472310..2c937b10d 100644 --- a/Projects/Features/StorageFeature/Sources/ViewControllers/QuestionViewController.swift +++ b/Projects/Features/StorageFeature/Sources/ViewControllers/QuestionViewController.swift @@ -14,6 +14,7 @@ import BaseFeature import DataMappingModule import MessageUI import CommonFeature +import SafariServices public final class QuestionViewController: BaseViewController,ViewControllerFromStoryBoard { @@ -239,7 +240,7 @@ extension QuestionViewController { ) imageViews[i].isHidden = i == index ? false : true superViews[i].layer.borderColor = i == index ? self.selectedColor.cgColor : self.unSelectedColor.cgColor - superViews[i].addShadow(offset: CGSize(width: 0, height: 2),color: colorFromRGB("080F34"),opacity: i == index ? 0.08 : 0) + superViews[i].addShadow(offset: CGSize(width: 0, height: 2), color: colorFromRGB("080F34"), opacity: i == index ? 0.08 : 0) } }) .disposed(by: disposeBag) @@ -247,26 +248,27 @@ extension QuestionViewController { nextButton.rx.tap .withLatestFrom(output.mailSource) .filter { $0 != .unknown } - .subscribe(onNext: { [weak self] in - guard let self = self else { - return - } - - if MFMailComposeViewController.canSendMail() { - let compseVC = MFMailComposeViewController() - compseVC.mailComposeDelegate = self - compseVC.setToRecipients([$0.receiver]) - compseVC.setSubject($0.title) - compseVC.setMessageBody($0.body + $0.suffix, isHTML: false) - self.present(compseVC, animated: true, completion: nil) - - }else { - let vc = TextPopupViewController.viewController( - text: "메일 계정이 설정되어 있지 않습니다.\n설정 > Mail 앱 > 계정을 설정해주세요.", - cancelButtonIsHidden: true, - confirmButtonText: "확인" + .subscribe(onNext: { [weak self] (source) in + guard let self = self else { return } + if source == .addSong { + let link: String = "https://whimsical.com/E3GQxrTaafVVBrhm55BNBS" + let textPopup = TextPopupViewController.viewController( + text: "· 이세돌 분들이 부르신 걸 이파리분들이 개인 소장용으로 일부 공개한 영상을 올리길 원하시면 ‘은수저’ 님에게 왁물원 채팅으로 부탁드립니다.\n· 왁뮤에 들어갈 수 있는 기준을 충족하는지 꼭 확인하시고 추가 요청해 주세요.", + cancelButtonIsHidden: false, + confirmButtonText: "다음", + cancelButtonText: "충족 기준 보기", + completion: { + self.goToMail(source: source) + }, + cancelCompletion: { + guard let URL = URL(string: link) else { return } + let safari = SFSafariViewController(url: URL) + self.present(safari, animated: true) + } ) - self.showPanModal(content: vc) + self.showPanModal(content: textPopup) + }else{ + self.goToMail(source: source) } }) .disposed(by: disposeBag) @@ -288,6 +290,26 @@ extension QuestionViewController { } } +extension QuestionViewController { + private func goToMail(source: InquiryType) { + if MFMailComposeViewController.canSendMail() { + let compseVC = MFMailComposeViewController() + compseVC.mailComposeDelegate = self + compseVC.setToRecipients([source.receiver]) + compseVC.setSubject(source.title) + compseVC.setMessageBody(source.body + source.suffix, isHTML: false) + self.present(compseVC, animated: true, completion: nil) + + }else { + let vc = TextPopupViewController.viewController( + text: "메일 계정이 설정되어 있지 않습니다.\n설정 > Mail 앱 > 계정을 설정해주세요.", + cancelButtonIsHidden: true, + confirmButtonText: "확인" + ) + self.showPanModal(content: vc) + } + } +} extension QuestionViewController : MFMailComposeViewControllerDelegate { public func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { diff --git a/Projects/Features/StorageFeature/Sources/ViewModels/NoticeDetailViewModel.swift b/Projects/Features/StorageFeature/Sources/ViewModels/NoticeDetailViewModel.swift index a287b39a6..40b96b963 100644 --- a/Projects/Features/StorageFeature/Sources/ViewModels/NoticeDetailViewModel.swift +++ b/Projects/Features/StorageFeature/Sources/ViewModels/NoticeDetailViewModel.swift @@ -26,6 +26,7 @@ public class NoticeDetailViewModel { } public struct Input { + var fetchNoticeDetail: PublishSubject = PublishSubject() } public struct Output { @@ -45,10 +46,10 @@ public class NoticeDetailViewModel { } .compactMap { $0 } - Observable.just(imageURLs) - .flatMap { [weak self] (urls) -> Observable<[CGSize]> in + input.fetchNoticeDetail + .flatMap { [weak self] _ -> Observable<[CGSize]> in guard let self else { return Observable.empty() } - return self.downloadImage(urls: urls) + return imageURLs.isEmpty ? Observable.just([]) : self.downloadImage(urls: imageURLs) } .subscribe(onNext: { [weak self] (imageSizes) in self?.output.imageSizes.accept(imageSizes) diff --git a/Projects/Features/StorageFeature/Sources/ViewModels/QuestionViewModel.swift b/Projects/Features/StorageFeature/Sources/ViewModels/QuestionViewModel.swift index bcb2a3c4c..97189688d 100644 --- a/Projects/Features/StorageFeature/Sources/ViewModels/QuestionViewModel.swift +++ b/Projects/Features/StorageFeature/Sources/ViewModels/QuestionViewModel.swift @@ -52,7 +52,7 @@ public final class QuestionViewModel:ViewModelType { switch result { case let .success(result): DEBUG_LOG("MFMailComposeResult: \(result)") - return (result == .sent) ? ("소중한 의견 감사합니다.", true) : ("", false) + return (result == .sent) ? ("문의가 등록되었습니다. 도움을 주셔서 감사합니다.", true) : ("", false) case let .failure(error): return (error.localizedDescription, false) } @@ -110,8 +110,6 @@ extension InquiryType { """ case .addSong: return """ - · 이세돌 분들이 부르신 걸 이파리분들이 개인 소장용으로 일부 공개한 영상을 올리길 원하시면 ‘은수저’님에게 왁물원 채팅으로 부탁드립니다. - · 왁뮤에 들어갈 수 있는 기준을 충족하는지 꼭 확인하시고 추가 요청해 주세요. \n아티스트:\n\n노래 제목:\n\n유튜브 링크:\n\n내용:\n\n\n\n """ case .modifySong: diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/Info.plist index 6ff1028a3..c3cd3bb38 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/Info.plist +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/Info.plist @@ -5,8 +5,10 @@ AvailableLibraries + BinaryPath + Realm.framework/Realm LibraryIdentifier - ios-arm64_x86_64-maccatalyst + xros-arm64_x86_64-simulator LibraryPath Realm.framework SupportedArchitectures @@ -15,11 +17,13 @@ x86_64 SupportedPlatform - ios + xros SupportedPlatformVariant - maccatalyst + simulator + BinaryPath + Realm.framework/Realm LibraryIdentifier ios-arm64 LibraryPath @@ -32,52 +36,59 @@ ios + BinaryPath + Realm.framework/Realm LibraryIdentifier - macos-arm64_x86_64 + xros-arm64 LibraryPath Realm.framework SupportedArchitectures arm64 - x86_64 SupportedPlatform - macos + xros + BinaryPath + Realm.framework/Versions/A/Realm LibraryIdentifier - watchos-arm64_i386_x86_64-simulator + ios-arm64_x86_64-maccatalyst LibraryPath Realm.framework SupportedArchitectures arm64 - i386 x86_64 SupportedPlatform - watchos + ios SupportedPlatformVariant - simulator + maccatalyst + BinaryPath + Realm.framework/Realm LibraryIdentifier - tvos-arm64_x86_64-simulator + watchos-arm64_i386_x86_64-simulator LibraryPath Realm.framework SupportedArchitectures arm64 + i386 x86_64 SupportedPlatform - tvos + watchos SupportedPlatformVariant simulator + BinaryPath + Realm.framework/Versions/A/Realm LibraryIdentifier - ios-arm64_x86_64-simulator + macos-arm64_x86_64 LibraryPath Realm.framework SupportedArchitectures @@ -86,11 +97,11 @@ x86_64 SupportedPlatform - ios - SupportedPlatformVariant - simulator + macos + BinaryPath + Realm.framework/Realm LibraryIdentifier watchos-arm64_arm64_32_armv7k LibraryPath @@ -105,6 +116,8 @@ watchos + BinaryPath + Realm.framework/Realm LibraryIdentifier tvos-arm64 LibraryPath @@ -116,6 +129,40 @@ SupportedPlatform tvos + + BinaryPath + Realm.framework/Realm + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + Realm.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + Realm.framework/Realm + LibraryIdentifier + tvos-arm64_x86_64-simulator + LibraryPath + Realm.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + tvos + SupportedPlatformVariant + simulator + CFBundlePackageType XFWK diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/CHANGELOG.md b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/CHANGELOG.md index bccff1d05..00cc01244 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/CHANGELOG.md +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/CHANGELOG.md @@ -1,3 +1,222 @@ +10.42.3 Release notes (2023-09-18) +============================================================= + +### Enhancements + +* Update packaging for the Xcode 15.0 release. Carthage release and obj-c + binaries are now built with Xcode 15. + +### Fixed + +* The prebuilt Realm.xcframework for SPM was packaged incorrectly and did not + work ([#8361](https://github.com/realm/realm-swift/issues/8361), since v10.42.1). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 15.0.0. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15.0.0. + +10.42.2 Release notes (2023-09-13) +============================================================= + +### Enhancements + +* Add support for logging messages sent by the server. + ([Core #6476](https://github.com/realm/realm-core/pull/6476)) +* Unknown protocol errors received from the baas server will no longer cause + the application to crash if a valid error action is also received. Unknown + error actions will be treated as an ApplicationBug error action and will + cause sync to fail with an error via the sync error handler. + ([Core #6885](https://github.com/realm/realm-core/pull/6885)) +* Some sync error messages now contain more information about what went wrong. + +### Fixed + +* The `MultipleSyncAgents` exception from opening a synchronized Realm in + multiple processes at once no longer leaves the sync client in an invalid + state. ([Core #6868](https://github.com/realm/realm-core/pull/6868), since v10.36.0) +* Testing the size of a collection of links against zero would sometimes fail + (sometimes = "difficult to explain"). In particular: + ([Core #6850](https://github.com/realm/realm-core/issues/6850), since v10.41.0) +* When async writes triggered a file compaction some internal state could be + corrupted, leading to later crashes in the slab allocator. This typically + resulted in the "ref + size <= next->first" assertion failure, but other + failures were possible. Many issues reported; see [Core #6340](https://github.com/realm/realm-core/issues/6340). + (since 10.35.0) +* `Realm.Configuration.maximumNumberOfActiveVersions` now handles intermediate + versions which have been cleaned up correctly and checks the number of live + versions rather than the number of versions between the oldest live version + and current version (since 10.35.0). +* If the client disconnected between uploading a change to flexible sync + subscriptions and receiving the new object data from the server resulting + from that subscription change, the next connection to the server would + sometimes result in a client reset + ([Core #6966](https://github.com/realm/realm-core/issues/6966), since v10.21.1). + +### Deprecations + +* `RLMApp` has `localAppName` and `localAppVersion` fields which never ended up + being used for anything and are now deprecated. +* `RLMSyncAuthError` has not been used since v10.0.0 and is now deprecated. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +### Internal + +* Upgraded realm-core from 13.17.1 to 13.20.1 + +10.42.1 Release notes (2023-08-28) +============================================================= + +### Fixed + +* The names of the prebuilt zips for SPM have changed to avoid having Carthage + download them instead of the intended Carthage zip + ([#8326](https://github.com/realm/realm-swift/issues/8326), since v10.42.0). +* The prebuild Realm.xcframework for SwiftPM now has all platforms other than + visionOS built with Xcode 14 to comply with app store rules + ([#8339](https://github.com/realm/realm-swift/issues/8339), since 10.42.0). +* Fix visionOS compilation with Xcode beta 7. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +10.42.0 Release notes (2023-07-30) +============================================================= + +### Enhancements + +* Add support for building for visionOS and add Xcode 15 binaries to the + release package. visionOS currently requires installing Realm via either + Swift Package Manager or by using a XCFramework as CocoaPods and Carthage do + not yet support it. +* Zips compatible with SPM's `.binaryTarget()` are now published as part of the + releases on Github. +* Prebuilt XCFrameworks are now built with LTO enabled. This has insignificant + performance benefits, but cuts the size of the library by ~15%. + +### Fixed + +* Fix nested properties observation on a `Projections` not notifying when there is a property change. + ([#8276](https://github.com/realm/realm-swift/issues/8276), since v10.34.0). +* Fix undefined symbol error for `UIKit` when linking Realm to a framework using SPM. + ([#8308](https://github.com/realm/realm-swift/issues/8308), since v10.41.0) +* If the app crashed at exactly the wrong time while opening a freshly + compacted Realm the file could be left in an invalid state + ([Core #6807](https://github.com/realm/realm-core/pull/6807), since v10.33.0). +* Sync progress for DOWNLOAD messages was sometimes stored incorrectly, + resulting in an extra round trip to the server. + ([Core #6827](https://github.com/realm/realm-core/issues/6827), since v10.31.0) + +### Breaking Changes + +* Legacy non-xcframework Carthage installations are no longer supported. Please + ensure you are using `--use-xcframeworks` if installing via Carthage. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 5. + +### Internal + +* Upgraded realm-core from 13.17.0 to 13.17.1 +* Release packages were being uploaded to several static.realm.io URLs which + are no longer linked to anywhere. These are no longer being updated, and + release packages are now only being uploaded to Github. + +10.41.1 Release notes (2023-07-17) +============================================================= + +### Enhancements + +* Filesystem errors now include more information in the error message. +* Sync connection and session reconnect timing/backoff logic has been reworked + and unified into a single implementation. Previously some categories of errors + would cause an hour-long wait before attempting to reconnect, while others + would use an exponential backoff strategy. All errors now result in the sync + client waiting for 1 second before retrying, doubling the wait after each + subsequent failure up to a maximum of five minutes. If the cause of the error + changes, the backoff will be reset. If the sync client voluntarily disconnects, + no backoff will be used. ([Core #6526]((https://github.com/realm/realm-core/pull/6526))) + +### Fixed + +* Removed warnings for deprecated APIs internal use. + ([#8251](https://github.com/realm/realm-swift/issues/8251), since v10.39.0) +* Fix an error during async open and client reset if properties have been added + to the schema. This fix also applies to partition-based to flexible sync + migration if async open is used. ([Core #6707](https://github.com/realm/realm-core/issues/6707), since v10.28.2) + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 4. + +### Internal + +* Upgraded realm-core from 13.15.1 to 13.17.0 +* The location where prebuilt core binaries are published has changed slightly. + If you are using `REALM_BASE_URL` to mirror the binaries, you may need to + adjust your mirroring logic. + +10.41.0 Release notes (2023-06-26) +============================================================= + +### Enhancements + +* Add support for multiplexing sync connections. When enabled (the default), a single + connection is used per sync user rather than one per synchronized Realm. This + reduces resource consumption when multiple Realms are opened and will + typically improve performance ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). +* Sync timeout options can now be set on `RLMAppConfiguration` along with the + other app-wide configuration settings ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Fixed + +* Import as `RLMRealm_Private.h` as a module would cause issues when using Realm as a subdependency. + ([#8164](https://github.com/realm/realm-swift/issues/8164), since 10.37.0) +* Disable setting a custom logger by default on the sync client when the sync manager is created. + This was overriding the default logger set using `RLMLogger.defaultLogger`. (since v10.39.0). + +### Breaking Changes + +* The `RLMSyncTimeouts.appConfiguration` property has been removed. This was an + unimplemented read-only property which did not make any sense on the + containing type ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 2. + +### Internal + +* Upgraded realm-core from 13.15.0 to 13.15.1 + 10.40.2 Release notes (2023-06-09) ============================================================= @@ -15,7 +234,7 @@ * If the order of properties in the local class definitions did not match the order in the server-side schema, the before-reset Realm argument passed to a client reset handler would have an invalid schema and likely crash if any - data was read from it. ([Core 6693](https://github.com/realm/realm-core/issues/6693), since v10.40.0) + data was read from it. ([Core #6693](https://github.com/realm/realm-core/issues/6693), since v10.40.0) ### Compatibility @@ -27,7 +246,7 @@ ### Internal -* Upgraded realm-core from 13.13.0 to 13.16.0. +* Upgraded realm-core from 13.13.0 to 13.15.0. * The prebuilt library used for CocoaPods installations is now built with Xcode 14. This should not have any observable effects other than the download being much smaller due to no longer including bitcode. @@ -3870,10 +4089,6 @@ This release also contains all changes from 5.3.2. * Realm Studio: 10.0.0 or later. * Carthage release for Swift is built with Xcode 11.5. -### Internal -* Upgraded realm-core from ? to ? -* Upgraded realm-sync from ? to ? - 10.0.0-beta.2 Release notes (2020-06-09) ============================================================= Xcode 11.3 and iOS 9 are now the minimum supported versions. diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMApp.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMApp.h index 3aa02c5e1..2228232e8 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMApp.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMApp.h @@ -23,7 +23,7 @@ RLM_HEADER_AUDIT_BEGIN(nullability, sendability) @protocol RLMNetworkTransport, RLMBSON; -@class RLMUser, RLMCredentials, RLMSyncManager, RLMEmailPasswordAuth, RLMPushClient; +@class RLMUser, RLMCredentials, RLMSyncManager, RLMEmailPasswordAuth, RLMPushClient, RLMSyncTimeoutOptions; /// A block type used for APIs which asynchronously vend an `RLMUser`. typedef void(^RLMUserCompletionBlock)(RLMUser * _Nullable, NSError * _Nullable); @@ -35,7 +35,7 @@ typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); /// Properties representing the configuration of a client /// that communicate with a particular Realm application. -@interface RLMAppConfiguration : NSObject +@interface RLMAppConfiguration : NSObject /// A custom base URL to request against. @property (nonatomic, strong, nullable) NSString *baseURL; @@ -43,41 +43,67 @@ typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); /// The custom transport for network calls to the server. @property (nonatomic, strong, nullable) id transport; -/// A custom app name. -@property (nonatomic, strong, nullable) NSString *localAppName; - -/// A custom app version. -@property (nonatomic, strong, nullable) NSString *localAppVersion; +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppName + __attribute__((deprecated("This field is not used"))); +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppVersion + __attribute__((deprecated("This field is not used"))); /// The default timeout for network requests. @property (nonatomic, assign) NSUInteger defaultRequestTimeoutMS; +/// If enabled (the default), a single connection is used for all Realms opened +/// with a single sync user. If disabled, a separate connection is used for each +/// Realm. +/// +/// Session multiplexing reduces resources used and typically improves +/// performance. When multiplexing is enabled, the connection is not immediately +/// closed when the last session is closed, and instead remains open for +/// ``RLMSyncTimeoutOptions.connectionLingerTime`` milliseconds (30 seconds by +/// default). +@property (nonatomic, assign) BOOL enableSessionMultiplexing; + +/** + Options for the assorted types of connection timeouts for sync connections. + + If nil default values for all timeouts are used instead. + */ +@property (nonatomic, nullable, copy) RLMSyncTimeoutOptions *syncTimeouts; + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *)baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *) baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion + defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + /** Create a new Realm App configuration. @param baseURL A custom base URL to request against. @param transport A custom network transport. -@param localAppName A custom app name. -@param localAppVersion A custom app version. */ - (instancetype)initWithBaseURL:(nullable NSString *)baseURL - transport:(nullable id)transport - localAppName:(nullable NSString *)localAppName - localAppVersion:(nullable NSString *)localAppVersion; + transport:(nullable id)transport; /** Create a new Realm App configuration. @param baseURL A custom base URL to request against. @param transport A custom network transport. - @param localAppName A custom app name. - @param localAppVersion A custom app version. @param defaultRequestTimeoutMS A custom default timeout for network requests. */ - (instancetype)initWithBaseURL:(nullable NSString *) baseURL transport:(nullable id)transport - localAppName:(nullable NSString *)localAppName - localAppVersion:(nullable NSString *)localAppVersion defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS; @end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMDictionary.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMDictionary.h index 99f98b92a..9c8cac538 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMDictionary.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMDictionary.h @@ -40,6 +40,8 @@ RLM_HEADER_AUDIT_BEGIN(nullability, sendability) `RLMDictionary`s cannot be created directly. `RLMDictionary` properties on `RLMObject`s are lazily created when accessed, or can be obtained by querying a Realm. + `RLMDictionary` only supports `NSString` as a key. Realm disallows the use of `.` or `$` characters within a dictionary key. + ### Key-Value Observing `RLMDictionary` supports dictionary key-value observing on `RLMDictionary` properties on `RLMObject` diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMError.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMError.h index 795361b2b..514ceee3f 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMError.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMError.h @@ -265,13 +265,7 @@ typedef RLM_ERROR_ENUM(NSInteger, RLMSyncError, RLMSyncErrorDomain) { */ RLMSyncErrorClientResetError = 7, - /** - An error that indicates an authentication error occurred. - - The `kRLMSyncUnderlyingErrorKey` key in the user info dictionary will contain the - underlying error, which is guaranteed to be under the `RLMSyncAuthErrorDomain` - error domain. - */ + /// :nodoc: RLMSyncErrorUnderlyingAuthError = 8, /** @@ -314,56 +308,53 @@ typedef RLM_ERROR_ENUM(NSInteger, RLMSyncError, RLMSyncErrorDomain) { This error is informational and does not require any explicit handling. */ RLMSyncErrorWriteRejected = 11, + + /** + A connection error without a more specific error code occurred. + + Realm internally handles retrying connections with appropriate backoffs, + so connection errors are normally logged and not reported to the error + handler. The exception is if + ``RLMSyncConfiguration.cancelAsyncOpenOnNonFatalErrors`` is set to `true`, + in which case async opens will be canceled on connection failures and the + error will be reported to the completion handler. + + Note that connection timeouts are reported as + (errorDomain: NSPosixErrorDomain, error: ETIMEDOUT) + and not as one of these error codes. + */ + RLMSyncErrorConnectionFailed = 12, + + /** + Connecting to the server failed due to a TLS issue such as an invalid certificate. + */ + RLMSyncErrorTLSHandshakeFailed = 13, }; #pragma mark - RLMSyncAuthError -/// An error which is related to authentication to Atlas App Services. +// NEXT-MAJOR: This was a ROS thing and should have been removed in v10 +/// :nodoc: typedef RLM_ERROR_ENUM(NSInteger, RLMSyncAuthError, RLMSyncAuthErrorDomain) { - /// An error that indicates that the response received from the authentication server was malformed. RLMSyncAuthErrorBadResponse = 1, - - /// An error that indicates that the supplied Realm path was invalid, or could not be resolved by the authentication - /// server. RLMSyncAuthErrorBadRemoteRealmPath = 2, - - /// An error that indicates that the response received from the authentication server was an HTTP error code. The - /// `userInfo` dictionary contains the actual error code value. RLMSyncAuthErrorHTTPStatusCodeError = 3, - - /// An error that indicates a problem with the session (a specific Realm opened for sync). RLMSyncAuthErrorClientSessionError = 4, - - /// An error that indicates that the provided credentials are ill-formed. RLMSyncAuthErrorInvalidParameters = 601, - - /// An error that indicates that no Realm path was included in the URL. RLMSyncAuthErrorMissingPath = 602, - - /// An error that indicates that the provided credentials are invalid. RLMSyncAuthErrorInvalidCredential = 611, - - /// An error that indicates that the user with provided credentials does not exist. RLMSyncAuthErrorUserDoesNotExist = 612, - - /// An error that indicates that the user cannot be registered as it exists already. RLMSyncAuthErrorUserAlreadyExists = 613, - - /// An error that indicates the path is invalid or the user doesn't have access to that Realm. RLMSyncAuthErrorAccessDeniedOrInvalidPath = 614, - - /// An error that indicates the refresh token was invalid. RLMSyncAuthErrorInvalidAccessToken = 615, - - /// An error that indicates the file at the given path can't be shared. RLMSyncAuthErrorFileCannotBeShared = 703, -}; +} __attribute__((deprecated("Errors of this type are no longer reported"))); #pragma mark - RLMSyncAppError /// An error which occurred when making a request to Atlas App Services. typedef RLM_ERROR_ENUM(NSInteger, RLMAppError, RLMAppErrorDomain) { - /// An unknown error has occured + /// An unknown error has occurred RLMAppErrorUnknown = -1, /// A HTTP request completed with an error status code. The failing status diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMMongoDatabase.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMMongoDatabase.h index f700cb87a..177fbc1b8 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMMongoDatabase.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMMongoDatabase.h @@ -44,6 +44,7 @@ RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class /// @param name The name of the collection to return /// @returns The collection - (RLMMongoCollection *)collectionWithName:(NSString *)name; +// NEXT-MAJOR: NS_SWIFT_NAME(collection(named:)) @end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMPlatform.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMPlatform.h deleted file mode 100644 index 37bbba555..000000000 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMPlatform.h +++ /dev/null @@ -1,46 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// -// Copyright 2014 Realm Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////// - -#ifdef REALM_BUILDING_FOR_MACOS -#if !__is_target_os(macosx) -#error Attempting to use Realm's macOS framework in a non-macOS target. -#endif -#endif - -#ifdef REALM_BUILDING_FOR_MACCATALYST -#if !__is_target_os(ios) || !__is_target_environment(macabi) -#error Attempting to use Realm's Catalyst framework in a non-Catalyst target. -#endif -#endif - -#if !__is_target_os(ios) || __is_target_environment(macabi) -#error Attempting to use Realm's iOS framework in a non-iOS target. -#endif - -#ifdef REALM_BUILDING_FOR_TVOS -#if !__is_target_os(tvos) -#error Attempting to use Realm's tvOS framework in a non-tvOS target. -#endif -#endif - -#ifdef REALM_BUILDING_FOR_WATCHOS -#if !__is_target_os(watchos) -#error Attempting to use Realm's watchOS framework in a non-watchOS target. -#endif -#endif -#define REALM_IOPLATFORMUUID @"" diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMSyncManager.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMSyncManager.h index d130ebaff..1dee453d0 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMSyncManager.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/RLMSyncManager.h @@ -50,7 +50,7 @@ typedef RLM_CLOSED_ENUM(NSUInteger, RLMSyncLogLevel) { /// /// - warning: Will incur a measurable performance impact. RLMSyncLogLevelAll -} __attribute__((deprecated("Use `RLMLogLevel`/`LogLevel` instead"))); +}; #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" @@ -218,11 +218,6 @@ __attribute__((deprecated("Use `RLMLogger.default`/`Logger.shared` to set/get th /// /// Defaults to 1 minute. @property (nonatomic) NSUInteger fastReconnectLimit; - -/// The app configuration that has initialized this SyncManager. -/// This can be set multiple times. This gives the SyncManager -/// access to necessary app functionality. -@property (nonatomic, readonly) RLMAppConfiguration *appConfiguration; @end RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/Realm.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/Realm.h index 0f980e1b3..245596393 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/Realm.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Headers/Realm.h @@ -29,7 +29,6 @@ #import #import #import -#import #import #import #import diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Info.plist index 5a16400cd..e830776f7 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Info.plist and b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Info.plist differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Modules/module.modulemap b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Modules/module.modulemap index ed5e7fee2..519ddc20b 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Modules/module.modulemap +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Modules/module.modulemap @@ -13,7 +13,6 @@ framework module Realm { header "RLMObject.h" header "RLMObjectId.h" header "RLMObjectSchema.h" - header "RLMPlatform.h" header "RLMProperty.h" header "RLMProviderClient.h" header "RLMRealm+Sync.h" diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/PrivateHeaders/RLMApp_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/PrivateHeaders/RLMApp_Private.h index ea52e9715..5da5c3c7a 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/PrivateHeaders/RLMApp_Private.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/PrivateHeaders/RLMApp_Private.h @@ -36,15 +36,15 @@ typedef void(^RLMAppNotificationBlock)(RLMApp *); /// Subscribe to notifications for this RLMApp. - (RLMAppSubscriptionToken *)subscribe:(RLMAppNotificationBlock)block; -+ (instancetype)appWithId:(NSString *)appId - configuration:(nullable RLMAppConfiguration *)configuration - rootDirectory:(nullable NSURL *)rootDirectory; - -+ (instancetype)uncachedAppWithId:(NSString *)appId - configuration:(RLMAppConfiguration *)configuration - rootDirectory:(nullable NSURL *)rootDirectory; ++ (instancetype)appWithConfiguration:(RLMAppConfiguration *)configuration; + (void)resetAppCache; @end +@interface RLMAppConfiguration () +@property (nonatomic) NSString *appId; +@property (nonatomic) BOOL encryptMetadata; +@property (nonatomic) NSURL *rootDirectory; +@end + RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h index cee1e7fca..3cce89441 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h @@ -18,7 +18,7 @@ #import -#import +#import "RLMRealm_Private.h" RLM_HEADER_AUDIT_BEGIN(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/PrivateHeaders/RLMObjectStore.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/PrivateHeaders/RLMObjectStore.h index 69443c965..6045f1e8e 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/PrivateHeaders/RLMObjectStore.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/PrivateHeaders/RLMObjectStore.h @@ -92,7 +92,7 @@ RLMObjectBase *RLMObjectFromObjLink(RLMRealm *realm, // Create accessors RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, int64_t key) NS_RETURNS_RETAINED; -RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, realm::Obj&& obj) NS_RETURNS_RETAINED; +RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, const realm::Obj& obj) NS_RETURNS_RETAINED; #endif RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Realm b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Realm index 9a34ef4d7..bc8aec43f 100755 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Realm and b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64/Realm.framework/Realm differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMApp.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMApp.h index 3aa02c5e1..2228232e8 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMApp.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMApp.h @@ -23,7 +23,7 @@ RLM_HEADER_AUDIT_BEGIN(nullability, sendability) @protocol RLMNetworkTransport, RLMBSON; -@class RLMUser, RLMCredentials, RLMSyncManager, RLMEmailPasswordAuth, RLMPushClient; +@class RLMUser, RLMCredentials, RLMSyncManager, RLMEmailPasswordAuth, RLMPushClient, RLMSyncTimeoutOptions; /// A block type used for APIs which asynchronously vend an `RLMUser`. typedef void(^RLMUserCompletionBlock)(RLMUser * _Nullable, NSError * _Nullable); @@ -35,7 +35,7 @@ typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); /// Properties representing the configuration of a client /// that communicate with a particular Realm application. -@interface RLMAppConfiguration : NSObject +@interface RLMAppConfiguration : NSObject /// A custom base URL to request against. @property (nonatomic, strong, nullable) NSString *baseURL; @@ -43,41 +43,67 @@ typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); /// The custom transport for network calls to the server. @property (nonatomic, strong, nullable) id transport; -/// A custom app name. -@property (nonatomic, strong, nullable) NSString *localAppName; - -/// A custom app version. -@property (nonatomic, strong, nullable) NSString *localAppVersion; +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppName + __attribute__((deprecated("This field is not used"))); +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppVersion + __attribute__((deprecated("This field is not used"))); /// The default timeout for network requests. @property (nonatomic, assign) NSUInteger defaultRequestTimeoutMS; +/// If enabled (the default), a single connection is used for all Realms opened +/// with a single sync user. If disabled, a separate connection is used for each +/// Realm. +/// +/// Session multiplexing reduces resources used and typically improves +/// performance. When multiplexing is enabled, the connection is not immediately +/// closed when the last session is closed, and instead remains open for +/// ``RLMSyncTimeoutOptions.connectionLingerTime`` milliseconds (30 seconds by +/// default). +@property (nonatomic, assign) BOOL enableSessionMultiplexing; + +/** + Options for the assorted types of connection timeouts for sync connections. + + If nil default values for all timeouts are used instead. + */ +@property (nonatomic, nullable, copy) RLMSyncTimeoutOptions *syncTimeouts; + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *)baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *) baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion + defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + /** Create a new Realm App configuration. @param baseURL A custom base URL to request against. @param transport A custom network transport. -@param localAppName A custom app name. -@param localAppVersion A custom app version. */ - (instancetype)initWithBaseURL:(nullable NSString *)baseURL - transport:(nullable id)transport - localAppName:(nullable NSString *)localAppName - localAppVersion:(nullable NSString *)localAppVersion; + transport:(nullable id)transport; /** Create a new Realm App configuration. @param baseURL A custom base URL to request against. @param transport A custom network transport. - @param localAppName A custom app name. - @param localAppVersion A custom app version. @param defaultRequestTimeoutMS A custom default timeout for network requests. */ - (instancetype)initWithBaseURL:(nullable NSString *) baseURL transport:(nullable id)transport - localAppName:(nullable NSString *)localAppName - localAppVersion:(nullable NSString *)localAppVersion defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS; @end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMDictionary.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMDictionary.h index 99f98b92a..9c8cac538 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMDictionary.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMDictionary.h @@ -40,6 +40,8 @@ RLM_HEADER_AUDIT_BEGIN(nullability, sendability) `RLMDictionary`s cannot be created directly. `RLMDictionary` properties on `RLMObject`s are lazily created when accessed, or can be obtained by querying a Realm. + `RLMDictionary` only supports `NSString` as a key. Realm disallows the use of `.` or `$` characters within a dictionary key. + ### Key-Value Observing `RLMDictionary` supports dictionary key-value observing on `RLMDictionary` properties on `RLMObject` diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMError.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMError.h index 795361b2b..514ceee3f 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMError.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMError.h @@ -265,13 +265,7 @@ typedef RLM_ERROR_ENUM(NSInteger, RLMSyncError, RLMSyncErrorDomain) { */ RLMSyncErrorClientResetError = 7, - /** - An error that indicates an authentication error occurred. - - The `kRLMSyncUnderlyingErrorKey` key in the user info dictionary will contain the - underlying error, which is guaranteed to be under the `RLMSyncAuthErrorDomain` - error domain. - */ + /// :nodoc: RLMSyncErrorUnderlyingAuthError = 8, /** @@ -314,56 +308,53 @@ typedef RLM_ERROR_ENUM(NSInteger, RLMSyncError, RLMSyncErrorDomain) { This error is informational and does not require any explicit handling. */ RLMSyncErrorWriteRejected = 11, + + /** + A connection error without a more specific error code occurred. + + Realm internally handles retrying connections with appropriate backoffs, + so connection errors are normally logged and not reported to the error + handler. The exception is if + ``RLMSyncConfiguration.cancelAsyncOpenOnNonFatalErrors`` is set to `true`, + in which case async opens will be canceled on connection failures and the + error will be reported to the completion handler. + + Note that connection timeouts are reported as + (errorDomain: NSPosixErrorDomain, error: ETIMEDOUT) + and not as one of these error codes. + */ + RLMSyncErrorConnectionFailed = 12, + + /** + Connecting to the server failed due to a TLS issue such as an invalid certificate. + */ + RLMSyncErrorTLSHandshakeFailed = 13, }; #pragma mark - RLMSyncAuthError -/// An error which is related to authentication to Atlas App Services. +// NEXT-MAJOR: This was a ROS thing and should have been removed in v10 +/// :nodoc: typedef RLM_ERROR_ENUM(NSInteger, RLMSyncAuthError, RLMSyncAuthErrorDomain) { - /// An error that indicates that the response received from the authentication server was malformed. RLMSyncAuthErrorBadResponse = 1, - - /// An error that indicates that the supplied Realm path was invalid, or could not be resolved by the authentication - /// server. RLMSyncAuthErrorBadRemoteRealmPath = 2, - - /// An error that indicates that the response received from the authentication server was an HTTP error code. The - /// `userInfo` dictionary contains the actual error code value. RLMSyncAuthErrorHTTPStatusCodeError = 3, - - /// An error that indicates a problem with the session (a specific Realm opened for sync). RLMSyncAuthErrorClientSessionError = 4, - - /// An error that indicates that the provided credentials are ill-formed. RLMSyncAuthErrorInvalidParameters = 601, - - /// An error that indicates that no Realm path was included in the URL. RLMSyncAuthErrorMissingPath = 602, - - /// An error that indicates that the provided credentials are invalid. RLMSyncAuthErrorInvalidCredential = 611, - - /// An error that indicates that the user with provided credentials does not exist. RLMSyncAuthErrorUserDoesNotExist = 612, - - /// An error that indicates that the user cannot be registered as it exists already. RLMSyncAuthErrorUserAlreadyExists = 613, - - /// An error that indicates the path is invalid or the user doesn't have access to that Realm. RLMSyncAuthErrorAccessDeniedOrInvalidPath = 614, - - /// An error that indicates the refresh token was invalid. RLMSyncAuthErrorInvalidAccessToken = 615, - - /// An error that indicates the file at the given path can't be shared. RLMSyncAuthErrorFileCannotBeShared = 703, -}; +} __attribute__((deprecated("Errors of this type are no longer reported"))); #pragma mark - RLMSyncAppError /// An error which occurred when making a request to Atlas App Services. typedef RLM_ERROR_ENUM(NSInteger, RLMAppError, RLMAppErrorDomain) { - /// An unknown error has occured + /// An unknown error has occurred RLMAppErrorUnknown = -1, /// A HTTP request completed with an error status code. The failing status diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMMongoDatabase.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMMongoDatabase.h index f700cb87a..177fbc1b8 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMMongoDatabase.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMMongoDatabase.h @@ -44,6 +44,7 @@ RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class /// @param name The name of the collection to return /// @returns The collection - (RLMMongoCollection *)collectionWithName:(NSString *)name; +// NEXT-MAJOR: NS_SWIFT_NAME(collection(named:)) @end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMPlatform.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMPlatform.h deleted file mode 100644 index 95187e4dc..000000000 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMPlatform.h +++ /dev/null @@ -1,46 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// -// Copyright 2014 Realm Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////// - -#ifdef REALM_BUILDING_FOR_MACOS -#if !__is_target_os(macosx) -#error Attempting to use Realm's macOS framework in a non-macOS target. -#endif -#endif - -#if !__is_target_os(ios) || !__is_target_environment(macabi) -#error Attempting to use Realm's Catalyst framework in a non-Catalyst target. -#endif - -#ifdef REALM_BUILDING_FOR_IOS -#if !__is_target_os(ios) || __is_target_environment(macabi) -#error Attempting to use Realm's iOS framework in a non-iOS target. -#endif -#endif - -#ifdef REALM_BUILDING_FOR_TVOS -#if !__is_target_os(tvos) -#error Attempting to use Realm's tvOS framework in a non-tvOS target. -#endif -#endif - -#ifdef REALM_BUILDING_FOR_WATCHOS -#if !__is_target_os(watchos) -#error Attempting to use Realm's watchOS framework in a non-watchOS target. -#endif -#endif -#define REALM_IOPLATFORMUUID @"" diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMSyncManager.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMSyncManager.h index d130ebaff..1dee453d0 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMSyncManager.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/RLMSyncManager.h @@ -50,7 +50,7 @@ typedef RLM_CLOSED_ENUM(NSUInteger, RLMSyncLogLevel) { /// /// - warning: Will incur a measurable performance impact. RLMSyncLogLevelAll -} __attribute__((deprecated("Use `RLMLogLevel`/`LogLevel` instead"))); +}; #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" @@ -218,11 +218,6 @@ __attribute__((deprecated("Use `RLMLogger.default`/`Logger.shared` to set/get th /// /// Defaults to 1 minute. @property (nonatomic) NSUInteger fastReconnectLimit; - -/// The app configuration that has initialized this SyncManager. -/// This can be set multiple times. This gives the SyncManager -/// access to necessary app functionality. -@property (nonatomic, readonly) RLMAppConfiguration *appConfiguration; @end RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/Realm.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/Realm.h index 0f980e1b3..245596393 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/Realm.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Headers/Realm.h @@ -29,7 +29,6 @@ #import #import #import -#import #import #import #import diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Modules/module.modulemap b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Modules/module.modulemap index ed5e7fee2..519ddc20b 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Modules/module.modulemap +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Modules/module.modulemap @@ -13,7 +13,6 @@ framework module Realm { header "RLMObject.h" header "RLMObjectId.h" header "RLMObjectSchema.h" - header "RLMPlatform.h" header "RLMProperty.h" header "RLMProviderClient.h" header "RLMRealm+Sync.h" diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/PrivateHeaders/RLMApp_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/PrivateHeaders/RLMApp_Private.h index ea52e9715..5da5c3c7a 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/PrivateHeaders/RLMApp_Private.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/PrivateHeaders/RLMApp_Private.h @@ -36,15 +36,15 @@ typedef void(^RLMAppNotificationBlock)(RLMApp *); /// Subscribe to notifications for this RLMApp. - (RLMAppSubscriptionToken *)subscribe:(RLMAppNotificationBlock)block; -+ (instancetype)appWithId:(NSString *)appId - configuration:(nullable RLMAppConfiguration *)configuration - rootDirectory:(nullable NSURL *)rootDirectory; - -+ (instancetype)uncachedAppWithId:(NSString *)appId - configuration:(RLMAppConfiguration *)configuration - rootDirectory:(nullable NSURL *)rootDirectory; ++ (instancetype)appWithConfiguration:(RLMAppConfiguration *)configuration; + (void)resetAppCache; @end +@interface RLMAppConfiguration () +@property (nonatomic) NSString *appId; +@property (nonatomic) BOOL encryptMetadata; +@property (nonatomic) NSURL *rootDirectory; +@end + RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/PrivateHeaders/RLMAsyncTask_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/PrivateHeaders/RLMAsyncTask_Private.h index cee1e7fca..3cce89441 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/PrivateHeaders/RLMAsyncTask_Private.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/PrivateHeaders/RLMAsyncTask_Private.h @@ -18,7 +18,7 @@ #import -#import +#import "RLMRealm_Private.h" RLM_HEADER_AUDIT_BEGIN(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/PrivateHeaders/RLMObjectStore.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/PrivateHeaders/RLMObjectStore.h index 69443c965..6045f1e8e 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/PrivateHeaders/RLMObjectStore.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/PrivateHeaders/RLMObjectStore.h @@ -92,7 +92,7 @@ RLMObjectBase *RLMObjectFromObjLink(RLMRealm *realm, // Create accessors RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, int64_t key) NS_RETURNS_RETAINED; -RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, realm::Obj&& obj) NS_RETURNS_RETAINED; +RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, const realm::Obj& obj) NS_RETURNS_RETAINED; #endif RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Realm b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Realm index 7a2501981..f1245c188 100755 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Realm and b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Realm differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Resources/CHANGELOG.md b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Resources/CHANGELOG.md index bccff1d05..00cc01244 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Resources/CHANGELOG.md +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Resources/CHANGELOG.md @@ -1,3 +1,222 @@ +10.42.3 Release notes (2023-09-18) +============================================================= + +### Enhancements + +* Update packaging for the Xcode 15.0 release. Carthage release and obj-c + binaries are now built with Xcode 15. + +### Fixed + +* The prebuilt Realm.xcframework for SPM was packaged incorrectly and did not + work ([#8361](https://github.com/realm/realm-swift/issues/8361), since v10.42.1). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 15.0.0. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15.0.0. + +10.42.2 Release notes (2023-09-13) +============================================================= + +### Enhancements + +* Add support for logging messages sent by the server. + ([Core #6476](https://github.com/realm/realm-core/pull/6476)) +* Unknown protocol errors received from the baas server will no longer cause + the application to crash if a valid error action is also received. Unknown + error actions will be treated as an ApplicationBug error action and will + cause sync to fail with an error via the sync error handler. + ([Core #6885](https://github.com/realm/realm-core/pull/6885)) +* Some sync error messages now contain more information about what went wrong. + +### Fixed + +* The `MultipleSyncAgents` exception from opening a synchronized Realm in + multiple processes at once no longer leaves the sync client in an invalid + state. ([Core #6868](https://github.com/realm/realm-core/pull/6868), since v10.36.0) +* Testing the size of a collection of links against zero would sometimes fail + (sometimes = "difficult to explain"). In particular: + ([Core #6850](https://github.com/realm/realm-core/issues/6850), since v10.41.0) +* When async writes triggered a file compaction some internal state could be + corrupted, leading to later crashes in the slab allocator. This typically + resulted in the "ref + size <= next->first" assertion failure, but other + failures were possible. Many issues reported; see [Core #6340](https://github.com/realm/realm-core/issues/6340). + (since 10.35.0) +* `Realm.Configuration.maximumNumberOfActiveVersions` now handles intermediate + versions which have been cleaned up correctly and checks the number of live + versions rather than the number of versions between the oldest live version + and current version (since 10.35.0). +* If the client disconnected between uploading a change to flexible sync + subscriptions and receiving the new object data from the server resulting + from that subscription change, the next connection to the server would + sometimes result in a client reset + ([Core #6966](https://github.com/realm/realm-core/issues/6966), since v10.21.1). + +### Deprecations + +* `RLMApp` has `localAppName` and `localAppVersion` fields which never ended up + being used for anything and are now deprecated. +* `RLMSyncAuthError` has not been used since v10.0.0 and is now deprecated. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +### Internal + +* Upgraded realm-core from 13.17.1 to 13.20.1 + +10.42.1 Release notes (2023-08-28) +============================================================= + +### Fixed + +* The names of the prebuilt zips for SPM have changed to avoid having Carthage + download them instead of the intended Carthage zip + ([#8326](https://github.com/realm/realm-swift/issues/8326), since v10.42.0). +* The prebuild Realm.xcframework for SwiftPM now has all platforms other than + visionOS built with Xcode 14 to comply with app store rules + ([#8339](https://github.com/realm/realm-swift/issues/8339), since 10.42.0). +* Fix visionOS compilation with Xcode beta 7. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +10.42.0 Release notes (2023-07-30) +============================================================= + +### Enhancements + +* Add support for building for visionOS and add Xcode 15 binaries to the + release package. visionOS currently requires installing Realm via either + Swift Package Manager or by using a XCFramework as CocoaPods and Carthage do + not yet support it. +* Zips compatible with SPM's `.binaryTarget()` are now published as part of the + releases on Github. +* Prebuilt XCFrameworks are now built with LTO enabled. This has insignificant + performance benefits, but cuts the size of the library by ~15%. + +### Fixed + +* Fix nested properties observation on a `Projections` not notifying when there is a property change. + ([#8276](https://github.com/realm/realm-swift/issues/8276), since v10.34.0). +* Fix undefined symbol error for `UIKit` when linking Realm to a framework using SPM. + ([#8308](https://github.com/realm/realm-swift/issues/8308), since v10.41.0) +* If the app crashed at exactly the wrong time while opening a freshly + compacted Realm the file could be left in an invalid state + ([Core #6807](https://github.com/realm/realm-core/pull/6807), since v10.33.0). +* Sync progress for DOWNLOAD messages was sometimes stored incorrectly, + resulting in an extra round trip to the server. + ([Core #6827](https://github.com/realm/realm-core/issues/6827), since v10.31.0) + +### Breaking Changes + +* Legacy non-xcframework Carthage installations are no longer supported. Please + ensure you are using `--use-xcframeworks` if installing via Carthage. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 5. + +### Internal + +* Upgraded realm-core from 13.17.0 to 13.17.1 +* Release packages were being uploaded to several static.realm.io URLs which + are no longer linked to anywhere. These are no longer being updated, and + release packages are now only being uploaded to Github. + +10.41.1 Release notes (2023-07-17) +============================================================= + +### Enhancements + +* Filesystem errors now include more information in the error message. +* Sync connection and session reconnect timing/backoff logic has been reworked + and unified into a single implementation. Previously some categories of errors + would cause an hour-long wait before attempting to reconnect, while others + would use an exponential backoff strategy. All errors now result in the sync + client waiting for 1 second before retrying, doubling the wait after each + subsequent failure up to a maximum of five minutes. If the cause of the error + changes, the backoff will be reset. If the sync client voluntarily disconnects, + no backoff will be used. ([Core #6526]((https://github.com/realm/realm-core/pull/6526))) + +### Fixed + +* Removed warnings for deprecated APIs internal use. + ([#8251](https://github.com/realm/realm-swift/issues/8251), since v10.39.0) +* Fix an error during async open and client reset if properties have been added + to the schema. This fix also applies to partition-based to flexible sync + migration if async open is used. ([Core #6707](https://github.com/realm/realm-core/issues/6707), since v10.28.2) + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 4. + +### Internal + +* Upgraded realm-core from 13.15.1 to 13.17.0 +* The location where prebuilt core binaries are published has changed slightly. + If you are using `REALM_BASE_URL` to mirror the binaries, you may need to + adjust your mirroring logic. + +10.41.0 Release notes (2023-06-26) +============================================================= + +### Enhancements + +* Add support for multiplexing sync connections. When enabled (the default), a single + connection is used per sync user rather than one per synchronized Realm. This + reduces resource consumption when multiple Realms are opened and will + typically improve performance ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). +* Sync timeout options can now be set on `RLMAppConfiguration` along with the + other app-wide configuration settings ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Fixed + +* Import as `RLMRealm_Private.h` as a module would cause issues when using Realm as a subdependency. + ([#8164](https://github.com/realm/realm-swift/issues/8164), since 10.37.0) +* Disable setting a custom logger by default on the sync client when the sync manager is created. + This was overriding the default logger set using `RLMLogger.defaultLogger`. (since v10.39.0). + +### Breaking Changes + +* The `RLMSyncTimeouts.appConfiguration` property has been removed. This was an + unimplemented read-only property which did not make any sense on the + containing type ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 2. + +### Internal + +* Upgraded realm-core from 13.15.0 to 13.15.1 + 10.40.2 Release notes (2023-06-09) ============================================================= @@ -15,7 +234,7 @@ * If the order of properties in the local class definitions did not match the order in the server-side schema, the before-reset Realm argument passed to a client reset handler would have an invalid schema and likely crash if any - data was read from it. ([Core 6693](https://github.com/realm/realm-core/issues/6693), since v10.40.0) + data was read from it. ([Core #6693](https://github.com/realm/realm-core/issues/6693), since v10.40.0) ### Compatibility @@ -27,7 +246,7 @@ ### Internal -* Upgraded realm-core from 13.13.0 to 13.16.0. +* Upgraded realm-core from 13.13.0 to 13.15.0. * The prebuilt library used for CocoaPods installations is now built with Xcode 14. This should not have any observable effects other than the download being much smaller due to no longer including bitcode. @@ -3870,10 +4089,6 @@ This release also contains all changes from 5.3.2. * Realm Studio: 10.0.0 or later. * Carthage release for Swift is built with Xcode 11.5. -### Internal -* Upgraded realm-core from ? to ? -* Upgraded realm-sync from ? to ? - 10.0.0-beta.2 Release notes (2020-06-09) ============================================================= Xcode 11.3 and iOS 9 are now the minimum supported versions. diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Resources/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Resources/Info.plist index e9573c5f6..17afd5bea 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Resources/Info.plist +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-maccatalyst/Realm.framework/Versions/A/Resources/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 21G646 + 22G91 CFBundleDevelopmentRegion English CFBundleExecutable @@ -17,7 +17,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 10.40.2 + 10.42.3 CFBundleSignature ???? CFBundleSupportedPlatforms @@ -25,7 +25,7 @@ MacOSX CFBundleVersion - 10.40.2 + 10.42.3 DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild @@ -33,15 +33,15 @@ DTPlatformName macosx DTPlatformVersion - 13.3 + 14.0 DTSDKBuild - 22E245 + 23A5326c DTSDKName - macosx13.3 + macosx14.0 DTXcode - 1431 + 1500 DTXcodeBuild - 14E300c + 15A5229h LSMinimumSystemVersion 10.15 NSHumanReadableCopyright @@ -49,6 +49,7 @@ UIDeviceFamily 2 + 6 diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/CHANGELOG.md b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/CHANGELOG.md index bccff1d05..00cc01244 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/CHANGELOG.md +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/CHANGELOG.md @@ -1,3 +1,222 @@ +10.42.3 Release notes (2023-09-18) +============================================================= + +### Enhancements + +* Update packaging for the Xcode 15.0 release. Carthage release and obj-c + binaries are now built with Xcode 15. + +### Fixed + +* The prebuilt Realm.xcframework for SPM was packaged incorrectly and did not + work ([#8361](https://github.com/realm/realm-swift/issues/8361), since v10.42.1). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 15.0.0. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15.0.0. + +10.42.2 Release notes (2023-09-13) +============================================================= + +### Enhancements + +* Add support for logging messages sent by the server. + ([Core #6476](https://github.com/realm/realm-core/pull/6476)) +* Unknown protocol errors received from the baas server will no longer cause + the application to crash if a valid error action is also received. Unknown + error actions will be treated as an ApplicationBug error action and will + cause sync to fail with an error via the sync error handler. + ([Core #6885](https://github.com/realm/realm-core/pull/6885)) +* Some sync error messages now contain more information about what went wrong. + +### Fixed + +* The `MultipleSyncAgents` exception from opening a synchronized Realm in + multiple processes at once no longer leaves the sync client in an invalid + state. ([Core #6868](https://github.com/realm/realm-core/pull/6868), since v10.36.0) +* Testing the size of a collection of links against zero would sometimes fail + (sometimes = "difficult to explain"). In particular: + ([Core #6850](https://github.com/realm/realm-core/issues/6850), since v10.41.0) +* When async writes triggered a file compaction some internal state could be + corrupted, leading to later crashes in the slab allocator. This typically + resulted in the "ref + size <= next->first" assertion failure, but other + failures were possible. Many issues reported; see [Core #6340](https://github.com/realm/realm-core/issues/6340). + (since 10.35.0) +* `Realm.Configuration.maximumNumberOfActiveVersions` now handles intermediate + versions which have been cleaned up correctly and checks the number of live + versions rather than the number of versions between the oldest live version + and current version (since 10.35.0). +* If the client disconnected between uploading a change to flexible sync + subscriptions and receiving the new object data from the server resulting + from that subscription change, the next connection to the server would + sometimes result in a client reset + ([Core #6966](https://github.com/realm/realm-core/issues/6966), since v10.21.1). + +### Deprecations + +* `RLMApp` has `localAppName` and `localAppVersion` fields which never ended up + being used for anything and are now deprecated. +* `RLMSyncAuthError` has not been used since v10.0.0 and is now deprecated. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +### Internal + +* Upgraded realm-core from 13.17.1 to 13.20.1 + +10.42.1 Release notes (2023-08-28) +============================================================= + +### Fixed + +* The names of the prebuilt zips for SPM have changed to avoid having Carthage + download them instead of the intended Carthage zip + ([#8326](https://github.com/realm/realm-swift/issues/8326), since v10.42.0). +* The prebuild Realm.xcframework for SwiftPM now has all platforms other than + visionOS built with Xcode 14 to comply with app store rules + ([#8339](https://github.com/realm/realm-swift/issues/8339), since 10.42.0). +* Fix visionOS compilation with Xcode beta 7. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +10.42.0 Release notes (2023-07-30) +============================================================= + +### Enhancements + +* Add support for building for visionOS and add Xcode 15 binaries to the + release package. visionOS currently requires installing Realm via either + Swift Package Manager or by using a XCFramework as CocoaPods and Carthage do + not yet support it. +* Zips compatible with SPM's `.binaryTarget()` are now published as part of the + releases on Github. +* Prebuilt XCFrameworks are now built with LTO enabled. This has insignificant + performance benefits, but cuts the size of the library by ~15%. + +### Fixed + +* Fix nested properties observation on a `Projections` not notifying when there is a property change. + ([#8276](https://github.com/realm/realm-swift/issues/8276), since v10.34.0). +* Fix undefined symbol error for `UIKit` when linking Realm to a framework using SPM. + ([#8308](https://github.com/realm/realm-swift/issues/8308), since v10.41.0) +* If the app crashed at exactly the wrong time while opening a freshly + compacted Realm the file could be left in an invalid state + ([Core #6807](https://github.com/realm/realm-core/pull/6807), since v10.33.0). +* Sync progress for DOWNLOAD messages was sometimes stored incorrectly, + resulting in an extra round trip to the server. + ([Core #6827](https://github.com/realm/realm-core/issues/6827), since v10.31.0) + +### Breaking Changes + +* Legacy non-xcframework Carthage installations are no longer supported. Please + ensure you are using `--use-xcframeworks` if installing via Carthage. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 5. + +### Internal + +* Upgraded realm-core from 13.17.0 to 13.17.1 +* Release packages were being uploaded to several static.realm.io URLs which + are no longer linked to anywhere. These are no longer being updated, and + release packages are now only being uploaded to Github. + +10.41.1 Release notes (2023-07-17) +============================================================= + +### Enhancements + +* Filesystem errors now include more information in the error message. +* Sync connection and session reconnect timing/backoff logic has been reworked + and unified into a single implementation. Previously some categories of errors + would cause an hour-long wait before attempting to reconnect, while others + would use an exponential backoff strategy. All errors now result in the sync + client waiting for 1 second before retrying, doubling the wait after each + subsequent failure up to a maximum of five minutes. If the cause of the error + changes, the backoff will be reset. If the sync client voluntarily disconnects, + no backoff will be used. ([Core #6526]((https://github.com/realm/realm-core/pull/6526))) + +### Fixed + +* Removed warnings for deprecated APIs internal use. + ([#8251](https://github.com/realm/realm-swift/issues/8251), since v10.39.0) +* Fix an error during async open and client reset if properties have been added + to the schema. This fix also applies to partition-based to flexible sync + migration if async open is used. ([Core #6707](https://github.com/realm/realm-core/issues/6707), since v10.28.2) + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 4. + +### Internal + +* Upgraded realm-core from 13.15.1 to 13.17.0 +* The location where prebuilt core binaries are published has changed slightly. + If you are using `REALM_BASE_URL` to mirror the binaries, you may need to + adjust your mirroring logic. + +10.41.0 Release notes (2023-06-26) +============================================================= + +### Enhancements + +* Add support for multiplexing sync connections. When enabled (the default), a single + connection is used per sync user rather than one per synchronized Realm. This + reduces resource consumption when multiple Realms are opened and will + typically improve performance ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). +* Sync timeout options can now be set on `RLMAppConfiguration` along with the + other app-wide configuration settings ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Fixed + +* Import as `RLMRealm_Private.h` as a module would cause issues when using Realm as a subdependency. + ([#8164](https://github.com/realm/realm-swift/issues/8164), since 10.37.0) +* Disable setting a custom logger by default on the sync client when the sync manager is created. + This was overriding the default logger set using `RLMLogger.defaultLogger`. (since v10.39.0). + +### Breaking Changes + +* The `RLMSyncTimeouts.appConfiguration` property has been removed. This was an + unimplemented read-only property which did not make any sense on the + containing type ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 2. + +### Internal + +* Upgraded realm-core from 13.15.0 to 13.15.1 + 10.40.2 Release notes (2023-06-09) ============================================================= @@ -15,7 +234,7 @@ * If the order of properties in the local class definitions did not match the order in the server-side schema, the before-reset Realm argument passed to a client reset handler would have an invalid schema and likely crash if any - data was read from it. ([Core 6693](https://github.com/realm/realm-core/issues/6693), since v10.40.0) + data was read from it. ([Core #6693](https://github.com/realm/realm-core/issues/6693), since v10.40.0) ### Compatibility @@ -27,7 +246,7 @@ ### Internal -* Upgraded realm-core from 13.13.0 to 13.16.0. +* Upgraded realm-core from 13.13.0 to 13.15.0. * The prebuilt library used for CocoaPods installations is now built with Xcode 14. This should not have any observable effects other than the download being much smaller due to no longer including bitcode. @@ -3870,10 +4089,6 @@ This release also contains all changes from 5.3.2. * Realm Studio: 10.0.0 or later. * Carthage release for Swift is built with Xcode 11.5. -### Internal -* Upgraded realm-core from ? to ? -* Upgraded realm-sync from ? to ? - 10.0.0-beta.2 Release notes (2020-06-09) ============================================================= Xcode 11.3 and iOS 9 are now the minimum supported versions. diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMApp.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMApp.h index 3aa02c5e1..2228232e8 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMApp.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMApp.h @@ -23,7 +23,7 @@ RLM_HEADER_AUDIT_BEGIN(nullability, sendability) @protocol RLMNetworkTransport, RLMBSON; -@class RLMUser, RLMCredentials, RLMSyncManager, RLMEmailPasswordAuth, RLMPushClient; +@class RLMUser, RLMCredentials, RLMSyncManager, RLMEmailPasswordAuth, RLMPushClient, RLMSyncTimeoutOptions; /// A block type used for APIs which asynchronously vend an `RLMUser`. typedef void(^RLMUserCompletionBlock)(RLMUser * _Nullable, NSError * _Nullable); @@ -35,7 +35,7 @@ typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); /// Properties representing the configuration of a client /// that communicate with a particular Realm application. -@interface RLMAppConfiguration : NSObject +@interface RLMAppConfiguration : NSObject /// A custom base URL to request against. @property (nonatomic, strong, nullable) NSString *baseURL; @@ -43,41 +43,67 @@ typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); /// The custom transport for network calls to the server. @property (nonatomic, strong, nullable) id transport; -/// A custom app name. -@property (nonatomic, strong, nullable) NSString *localAppName; - -/// A custom app version. -@property (nonatomic, strong, nullable) NSString *localAppVersion; +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppName + __attribute__((deprecated("This field is not used"))); +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppVersion + __attribute__((deprecated("This field is not used"))); /// The default timeout for network requests. @property (nonatomic, assign) NSUInteger defaultRequestTimeoutMS; +/// If enabled (the default), a single connection is used for all Realms opened +/// with a single sync user. If disabled, a separate connection is used for each +/// Realm. +/// +/// Session multiplexing reduces resources used and typically improves +/// performance. When multiplexing is enabled, the connection is not immediately +/// closed when the last session is closed, and instead remains open for +/// ``RLMSyncTimeoutOptions.connectionLingerTime`` milliseconds (30 seconds by +/// default). +@property (nonatomic, assign) BOOL enableSessionMultiplexing; + +/** + Options for the assorted types of connection timeouts for sync connections. + + If nil default values for all timeouts are used instead. + */ +@property (nonatomic, nullable, copy) RLMSyncTimeoutOptions *syncTimeouts; + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *)baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *) baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion + defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + /** Create a new Realm App configuration. @param baseURL A custom base URL to request against. @param transport A custom network transport. -@param localAppName A custom app name. -@param localAppVersion A custom app version. */ - (instancetype)initWithBaseURL:(nullable NSString *)baseURL - transport:(nullable id)transport - localAppName:(nullable NSString *)localAppName - localAppVersion:(nullable NSString *)localAppVersion; + transport:(nullable id)transport; /** Create a new Realm App configuration. @param baseURL A custom base URL to request against. @param transport A custom network transport. - @param localAppName A custom app name. - @param localAppVersion A custom app version. @param defaultRequestTimeoutMS A custom default timeout for network requests. */ - (instancetype)initWithBaseURL:(nullable NSString *) baseURL transport:(nullable id)transport - localAppName:(nullable NSString *)localAppName - localAppVersion:(nullable NSString *)localAppVersion defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS; @end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMDictionary.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMDictionary.h index 99f98b92a..9c8cac538 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMDictionary.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMDictionary.h @@ -40,6 +40,8 @@ RLM_HEADER_AUDIT_BEGIN(nullability, sendability) `RLMDictionary`s cannot be created directly. `RLMDictionary` properties on `RLMObject`s are lazily created when accessed, or can be obtained by querying a Realm. + `RLMDictionary` only supports `NSString` as a key. Realm disallows the use of `.` or `$` characters within a dictionary key. + ### Key-Value Observing `RLMDictionary` supports dictionary key-value observing on `RLMDictionary` properties on `RLMObject` diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMError.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMError.h index 795361b2b..514ceee3f 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMError.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMError.h @@ -265,13 +265,7 @@ typedef RLM_ERROR_ENUM(NSInteger, RLMSyncError, RLMSyncErrorDomain) { */ RLMSyncErrorClientResetError = 7, - /** - An error that indicates an authentication error occurred. - - The `kRLMSyncUnderlyingErrorKey` key in the user info dictionary will contain the - underlying error, which is guaranteed to be under the `RLMSyncAuthErrorDomain` - error domain. - */ + /// :nodoc: RLMSyncErrorUnderlyingAuthError = 8, /** @@ -314,56 +308,53 @@ typedef RLM_ERROR_ENUM(NSInteger, RLMSyncError, RLMSyncErrorDomain) { This error is informational and does not require any explicit handling. */ RLMSyncErrorWriteRejected = 11, + + /** + A connection error without a more specific error code occurred. + + Realm internally handles retrying connections with appropriate backoffs, + so connection errors are normally logged and not reported to the error + handler. The exception is if + ``RLMSyncConfiguration.cancelAsyncOpenOnNonFatalErrors`` is set to `true`, + in which case async opens will be canceled on connection failures and the + error will be reported to the completion handler. + + Note that connection timeouts are reported as + (errorDomain: NSPosixErrorDomain, error: ETIMEDOUT) + and not as one of these error codes. + */ + RLMSyncErrorConnectionFailed = 12, + + /** + Connecting to the server failed due to a TLS issue such as an invalid certificate. + */ + RLMSyncErrorTLSHandshakeFailed = 13, }; #pragma mark - RLMSyncAuthError -/// An error which is related to authentication to Atlas App Services. +// NEXT-MAJOR: This was a ROS thing and should have been removed in v10 +/// :nodoc: typedef RLM_ERROR_ENUM(NSInteger, RLMSyncAuthError, RLMSyncAuthErrorDomain) { - /// An error that indicates that the response received from the authentication server was malformed. RLMSyncAuthErrorBadResponse = 1, - - /// An error that indicates that the supplied Realm path was invalid, or could not be resolved by the authentication - /// server. RLMSyncAuthErrorBadRemoteRealmPath = 2, - - /// An error that indicates that the response received from the authentication server was an HTTP error code. The - /// `userInfo` dictionary contains the actual error code value. RLMSyncAuthErrorHTTPStatusCodeError = 3, - - /// An error that indicates a problem with the session (a specific Realm opened for sync). RLMSyncAuthErrorClientSessionError = 4, - - /// An error that indicates that the provided credentials are ill-formed. RLMSyncAuthErrorInvalidParameters = 601, - - /// An error that indicates that no Realm path was included in the URL. RLMSyncAuthErrorMissingPath = 602, - - /// An error that indicates that the provided credentials are invalid. RLMSyncAuthErrorInvalidCredential = 611, - - /// An error that indicates that the user with provided credentials does not exist. RLMSyncAuthErrorUserDoesNotExist = 612, - - /// An error that indicates that the user cannot be registered as it exists already. RLMSyncAuthErrorUserAlreadyExists = 613, - - /// An error that indicates the path is invalid or the user doesn't have access to that Realm. RLMSyncAuthErrorAccessDeniedOrInvalidPath = 614, - - /// An error that indicates the refresh token was invalid. RLMSyncAuthErrorInvalidAccessToken = 615, - - /// An error that indicates the file at the given path can't be shared. RLMSyncAuthErrorFileCannotBeShared = 703, -}; +} __attribute__((deprecated("Errors of this type are no longer reported"))); #pragma mark - RLMSyncAppError /// An error which occurred when making a request to Atlas App Services. typedef RLM_ERROR_ENUM(NSInteger, RLMAppError, RLMAppErrorDomain) { - /// An unknown error has occured + /// An unknown error has occurred RLMAppErrorUnknown = -1, /// A HTTP request completed with an error status code. The failing status diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMMongoDatabase.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMMongoDatabase.h index f700cb87a..177fbc1b8 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMMongoDatabase.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMMongoDatabase.h @@ -44,6 +44,7 @@ RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class /// @param name The name of the collection to return /// @returns The collection - (RLMMongoCollection *)collectionWithName:(NSString *)name; +// NEXT-MAJOR: NS_SWIFT_NAME(collection(named:)) @end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMPlatform.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMPlatform.h deleted file mode 100644 index 37bbba555..000000000 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMPlatform.h +++ /dev/null @@ -1,46 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// -// Copyright 2014 Realm Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////// - -#ifdef REALM_BUILDING_FOR_MACOS -#if !__is_target_os(macosx) -#error Attempting to use Realm's macOS framework in a non-macOS target. -#endif -#endif - -#ifdef REALM_BUILDING_FOR_MACCATALYST -#if !__is_target_os(ios) || !__is_target_environment(macabi) -#error Attempting to use Realm's Catalyst framework in a non-Catalyst target. -#endif -#endif - -#if !__is_target_os(ios) || __is_target_environment(macabi) -#error Attempting to use Realm's iOS framework in a non-iOS target. -#endif - -#ifdef REALM_BUILDING_FOR_TVOS -#if !__is_target_os(tvos) -#error Attempting to use Realm's tvOS framework in a non-tvOS target. -#endif -#endif - -#ifdef REALM_BUILDING_FOR_WATCHOS -#if !__is_target_os(watchos) -#error Attempting to use Realm's watchOS framework in a non-watchOS target. -#endif -#endif -#define REALM_IOPLATFORMUUID @"" diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncManager.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncManager.h index d130ebaff..1dee453d0 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncManager.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncManager.h @@ -50,7 +50,7 @@ typedef RLM_CLOSED_ENUM(NSUInteger, RLMSyncLogLevel) { /// /// - warning: Will incur a measurable performance impact. RLMSyncLogLevelAll -} __attribute__((deprecated("Use `RLMLogLevel`/`LogLevel` instead"))); +}; #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" @@ -218,11 +218,6 @@ __attribute__((deprecated("Use `RLMLogger.default`/`Logger.shared` to set/get th /// /// Defaults to 1 minute. @property (nonatomic) NSUInteger fastReconnectLimit; - -/// The app configuration that has initialized this SyncManager. -/// This can be set multiple times. This gives the SyncManager -/// access to necessary app functionality. -@property (nonatomic, readonly) RLMAppConfiguration *appConfiguration; @end RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/Realm.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/Realm.h index 0f980e1b3..245596393 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/Realm.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Headers/Realm.h @@ -29,7 +29,6 @@ #import #import #import -#import #import #import #import diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Info.plist index 22415d550..5e6b75327 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Info.plist and b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Info.plist differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Modules/module.modulemap b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Modules/module.modulemap index ed5e7fee2..519ddc20b 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Modules/module.modulemap +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Modules/module.modulemap @@ -13,7 +13,6 @@ framework module Realm { header "RLMObject.h" header "RLMObjectId.h" header "RLMObjectSchema.h" - header "RLMPlatform.h" header "RLMProperty.h" header "RLMProviderClient.h" header "RLMRealm+Sync.h" diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMApp_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMApp_Private.h index ea52e9715..5da5c3c7a 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMApp_Private.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMApp_Private.h @@ -36,15 +36,15 @@ typedef void(^RLMAppNotificationBlock)(RLMApp *); /// Subscribe to notifications for this RLMApp. - (RLMAppSubscriptionToken *)subscribe:(RLMAppNotificationBlock)block; -+ (instancetype)appWithId:(NSString *)appId - configuration:(nullable RLMAppConfiguration *)configuration - rootDirectory:(nullable NSURL *)rootDirectory; - -+ (instancetype)uncachedAppWithId:(NSString *)appId - configuration:(RLMAppConfiguration *)configuration - rootDirectory:(nullable NSURL *)rootDirectory; ++ (instancetype)appWithConfiguration:(RLMAppConfiguration *)configuration; + (void)resetAppCache; @end +@interface RLMAppConfiguration () +@property (nonatomic) NSString *appId; +@property (nonatomic) BOOL encryptMetadata; +@property (nonatomic) NSURL *rootDirectory; +@end + RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h index cee1e7fca..3cce89441 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h @@ -18,7 +18,7 @@ #import -#import +#import "RLMRealm_Private.h" RLM_HEADER_AUDIT_BEGIN(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectStore.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectStore.h index 69443c965..6045f1e8e 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectStore.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectStore.h @@ -92,7 +92,7 @@ RLMObjectBase *RLMObjectFromObjLink(RLMRealm *realm, // Create accessors RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, int64_t key) NS_RETURNS_RETAINED; -RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, realm::Obj&& obj) NS_RETURNS_RETAINED; +RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, const realm::Obj& obj) NS_RETURNS_RETAINED; #endif RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Realm b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Realm index 4e267c4d2..c6b0a13ea 100755 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Realm and b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/Realm differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/_CodeSignature/CodeResources b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/_CodeSignature/CodeResources index 629d859d3..5d86f8b27 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/_CodeSignature/CodeResources +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/ios-arm64_x86_64-simulator/Realm.framework/_CodeSignature/CodeResources @@ -6,7 +6,7 @@ CHANGELOG.md - Y8GU8qLvT58gIcC07I5ct6f15yQ= + Zv1aE8lgTnRPKTg4+FZa+hYQQNM= Headers/NSError+RLMSync.h @@ -18,7 +18,7 @@ Headers/RLMApp.h - 6RyMP6TBnOUmBDH2QMQUojyINrk= + Ld28y6nHFgdYCwgko5F6L9mRTCc= Headers/RLMArray.h @@ -54,7 +54,7 @@ Headers/RLMDictionary.h - 7XBEThemlgTLK/fjIZZRYBBY0mw= + J4dcvrLymwvq7wa1sgBJejF2lnk= Headers/RLMEmailPasswordAuth.h @@ -66,7 +66,7 @@ Headers/RLMError.h - 5x4rLGEjGLOQkkDsTvH34k/NNUo= + f/fmbab1ht8EdLMSS3f0NXW1ejg= Headers/RLMFindOneAndModifyOptions.h @@ -94,7 +94,7 @@ Headers/RLMMongoDatabase.h - O7qUDn3s7yS4uxFaQz4juTrU+HY= + 0+ymiybJvLDiWbH4UgOpF5kK7JA= Headers/RLMNetworkTransport.h @@ -120,10 +120,6 @@ yasl78Lq+PvN6f/sBDQAG9IiiwU= - Headers/RLMPlatform.h - - rMjVKSYmeE1ZgDP0WxJy7QaplcM= - Headers/RLMProperty.h QyE/WKZTEZokOC4HNpIuGWTo3V8= @@ -182,7 +178,7 @@ Headers/RLMSyncManager.h - mXu4dAftvdZCFzVS3ez+96Ek15E= + YkhlSPT2hNZyA//Lf07+5rkaTsc= Headers/RLMSyncSession.h @@ -214,11 +210,11 @@ Headers/Realm.h - 3mbp9c9/HFfHwbrysBEt9iCljqo= + fDREEG2URHEbKjZ2nfKq+7M/7m8= Info.plist - xDsIqhdLRGdklvY/Tal/rZlTAcQ= + NDthP8IGAbod/DoVrdChQyBHybo= LICENSE @@ -226,7 +222,7 @@ Modules/module.modulemap - qh0tedLfxDFRk+f7aR8LrPdUIRQ= + A28J5rfl2ooZX6nLmKAtWsKyoFg= PrivateHeaders/RLMAccessor.h @@ -234,7 +230,7 @@ PrivateHeaders/RLMApp_Private.h - /TYV5cyQTqtxO1CaqCz8NYEPKiA= + fw57ZhMCNGsWCpB/lCMaKqf0gek= PrivateHeaders/RLMArray_Private.h @@ -242,7 +238,7 @@ PrivateHeaders/RLMAsyncTask_Private.h - LGxSKo8pzwcfSmd1xrmd0iwKHoc= + ayc2eXD44f0/BptRlmZc+ocrzs8= PrivateHeaders/RLMBSON_Private.hpp @@ -282,7 +278,7 @@ PrivateHeaders/RLMObjectStore.h - yzumEKtFJ7A507jAYkj8Z/DGG0I= + LH3NYAHYk37ukx3w36l3VfRkWLY= PrivateHeaders/RLMObject_Private.h @@ -351,7 +347,7 @@ hash2 - YkS7d92nc1CbgkrNj49UJRdpGfHZ4B4jOg0AqFE9EHo= + wt8p9tw4OPVj/LtpO9d+DXFoOnRQ6hRaxf/hS2NxDRg= Headers/NSError+RLMSync.h @@ -372,7 +368,7 @@ hash2 - uLD2KqwHxLTJ/f9mMDT52TZw6QqpvJeb6plXQI4/f1o= + fmHB8oywmfycQqOzXoYB99LpOLE7akGn0ZrJtqviiTs= Headers/RLMArray.h @@ -435,7 +431,7 @@ hash2 - I0iusExV7YvVkdt6MHXOAwNHJ2iVzHJciY0geWG3g5A= + 7zN2nXgEwGfrPRtbgqtfoLrwJbwqohcVvU/OyA/07Lk= Headers/RLMEmailPasswordAuth.h @@ -456,7 +452,7 @@ hash2 - OWjWlN8fXFm/L0glkTwwiNA7HP2SqXfp++r0dCTxccI= + 6duvM3p0FRf6fZ+aS57vHkf7WvV1KPoz7PcIZA48WTU= Headers/RLMFindOneAndModifyOptions.h @@ -505,7 +501,7 @@ hash2 - eMx63OF3EFRqAGsLMEXvv+y0YnKqWOB1RiyzlyW2+IE= + wnJWmMW0z3xO9KVRJKpiE+xkaKkzXBXiH5j+8eaFmcA= Headers/RLMNetworkTransport.h @@ -550,13 +546,6 @@ 8oCJihoGgigIF170SRk/yU5RLDNX9TYQUrXxLjYrtuM= - Headers/RLMPlatform.h - - hash2 - - n8zkay5MESbAFL6eMc22AAmlvvYylqsQj4HAB4zvtNg= - - Headers/RLMProperty.h hash2 @@ -659,7 +648,7 @@ hash2 - mdAe8l7XifP7CmhttYUKNJxUfRFiL6vb+MRO2sXIqpo= + rFV4QDsBonA29YqdZXsYhNSVewEYkrafSLPWBGaEhqI= Headers/RLMSyncSession.h @@ -715,7 +704,7 @@ hash2 - XojGXRDQANLfoU7VwvyqGGmZmf/oNUXjRNXzxcxJZEA= + kjoP0TvFhg49q7sxVEgPoNFg+zqo9bCE2Uh0YOpDpbE= LICENSE @@ -729,7 +718,7 @@ hash2 - UDqXkLimJ+9qpDCcsMjIqR5Qsd7iEaavhqi8J7iEBhI= + KdpbsAGrxax/jx81TZ93YswnCwT1BZTor6VwIHvgRUs= PrivateHeaders/RLMAccessor.h @@ -743,7 +732,7 @@ hash2 - 6KWA9yC7TNQAvVa3VI9qPhSnV6DWxJZkFJHCIRX49u4= + 4pd3636NRX7kQgsEy7dv7IQH/AyZMKjQvA2nmK97Vq0= PrivateHeaders/RLMArray_Private.h @@ -757,7 +746,7 @@ hash2 - iKrJ9TGXoc8UTr44+s8a0yCnhaJeVQNs0mLKA5yBfRs= + vD90SYI5658JDp88stHbsxALdVNhs0Tojcld9hVORHE= PrivateHeaders/RLMBSON_Private.hpp @@ -827,7 +816,7 @@ hash2 - glcepASGexcV1kvpkZeXGcPrdsuxPgyj7HNo6RMGNuQ= + 0KjmazUjg/mYvymGTJ74ChBgvrqN2Lc9O0TqcYF/Mic= PrivateHeaders/RLMObject_Private.h diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMApp.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMApp.h index 3aa02c5e1..2228232e8 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMApp.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMApp.h @@ -23,7 +23,7 @@ RLM_HEADER_AUDIT_BEGIN(nullability, sendability) @protocol RLMNetworkTransport, RLMBSON; -@class RLMUser, RLMCredentials, RLMSyncManager, RLMEmailPasswordAuth, RLMPushClient; +@class RLMUser, RLMCredentials, RLMSyncManager, RLMEmailPasswordAuth, RLMPushClient, RLMSyncTimeoutOptions; /// A block type used for APIs which asynchronously vend an `RLMUser`. typedef void(^RLMUserCompletionBlock)(RLMUser * _Nullable, NSError * _Nullable); @@ -35,7 +35,7 @@ typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); /// Properties representing the configuration of a client /// that communicate with a particular Realm application. -@interface RLMAppConfiguration : NSObject +@interface RLMAppConfiguration : NSObject /// A custom base URL to request against. @property (nonatomic, strong, nullable) NSString *baseURL; @@ -43,41 +43,67 @@ typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); /// The custom transport for network calls to the server. @property (nonatomic, strong, nullable) id transport; -/// A custom app name. -@property (nonatomic, strong, nullable) NSString *localAppName; - -/// A custom app version. -@property (nonatomic, strong, nullable) NSString *localAppVersion; +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppName + __attribute__((deprecated("This field is not used"))); +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppVersion + __attribute__((deprecated("This field is not used"))); /// The default timeout for network requests. @property (nonatomic, assign) NSUInteger defaultRequestTimeoutMS; +/// If enabled (the default), a single connection is used for all Realms opened +/// with a single sync user. If disabled, a separate connection is used for each +/// Realm. +/// +/// Session multiplexing reduces resources used and typically improves +/// performance. When multiplexing is enabled, the connection is not immediately +/// closed when the last session is closed, and instead remains open for +/// ``RLMSyncTimeoutOptions.connectionLingerTime`` milliseconds (30 seconds by +/// default). +@property (nonatomic, assign) BOOL enableSessionMultiplexing; + +/** + Options for the assorted types of connection timeouts for sync connections. + + If nil default values for all timeouts are used instead. + */ +@property (nonatomic, nullable, copy) RLMSyncTimeoutOptions *syncTimeouts; + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *)baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *) baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion + defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + /** Create a new Realm App configuration. @param baseURL A custom base URL to request against. @param transport A custom network transport. -@param localAppName A custom app name. -@param localAppVersion A custom app version. */ - (instancetype)initWithBaseURL:(nullable NSString *)baseURL - transport:(nullable id)transport - localAppName:(nullable NSString *)localAppName - localAppVersion:(nullable NSString *)localAppVersion; + transport:(nullable id)transport; /** Create a new Realm App configuration. @param baseURL A custom base URL to request against. @param transport A custom network transport. - @param localAppName A custom app name. - @param localAppVersion A custom app version. @param defaultRequestTimeoutMS A custom default timeout for network requests. */ - (instancetype)initWithBaseURL:(nullable NSString *) baseURL transport:(nullable id)transport - localAppName:(nullable NSString *)localAppName - localAppVersion:(nullable NSString *)localAppVersion defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS; @end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMDictionary.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMDictionary.h index 99f98b92a..9c8cac538 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMDictionary.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMDictionary.h @@ -40,6 +40,8 @@ RLM_HEADER_AUDIT_BEGIN(nullability, sendability) `RLMDictionary`s cannot be created directly. `RLMDictionary` properties on `RLMObject`s are lazily created when accessed, or can be obtained by querying a Realm. + `RLMDictionary` only supports `NSString` as a key. Realm disallows the use of `.` or `$` characters within a dictionary key. + ### Key-Value Observing `RLMDictionary` supports dictionary key-value observing on `RLMDictionary` properties on `RLMObject` diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMError.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMError.h index 795361b2b..514ceee3f 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMError.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMError.h @@ -265,13 +265,7 @@ typedef RLM_ERROR_ENUM(NSInteger, RLMSyncError, RLMSyncErrorDomain) { */ RLMSyncErrorClientResetError = 7, - /** - An error that indicates an authentication error occurred. - - The `kRLMSyncUnderlyingErrorKey` key in the user info dictionary will contain the - underlying error, which is guaranteed to be under the `RLMSyncAuthErrorDomain` - error domain. - */ + /// :nodoc: RLMSyncErrorUnderlyingAuthError = 8, /** @@ -314,56 +308,53 @@ typedef RLM_ERROR_ENUM(NSInteger, RLMSyncError, RLMSyncErrorDomain) { This error is informational and does not require any explicit handling. */ RLMSyncErrorWriteRejected = 11, + + /** + A connection error without a more specific error code occurred. + + Realm internally handles retrying connections with appropriate backoffs, + so connection errors are normally logged and not reported to the error + handler. The exception is if + ``RLMSyncConfiguration.cancelAsyncOpenOnNonFatalErrors`` is set to `true`, + in which case async opens will be canceled on connection failures and the + error will be reported to the completion handler. + + Note that connection timeouts are reported as + (errorDomain: NSPosixErrorDomain, error: ETIMEDOUT) + and not as one of these error codes. + */ + RLMSyncErrorConnectionFailed = 12, + + /** + Connecting to the server failed due to a TLS issue such as an invalid certificate. + */ + RLMSyncErrorTLSHandshakeFailed = 13, }; #pragma mark - RLMSyncAuthError -/// An error which is related to authentication to Atlas App Services. +// NEXT-MAJOR: This was a ROS thing and should have been removed in v10 +/// :nodoc: typedef RLM_ERROR_ENUM(NSInteger, RLMSyncAuthError, RLMSyncAuthErrorDomain) { - /// An error that indicates that the response received from the authentication server was malformed. RLMSyncAuthErrorBadResponse = 1, - - /// An error that indicates that the supplied Realm path was invalid, or could not be resolved by the authentication - /// server. RLMSyncAuthErrorBadRemoteRealmPath = 2, - - /// An error that indicates that the response received from the authentication server was an HTTP error code. The - /// `userInfo` dictionary contains the actual error code value. RLMSyncAuthErrorHTTPStatusCodeError = 3, - - /// An error that indicates a problem with the session (a specific Realm opened for sync). RLMSyncAuthErrorClientSessionError = 4, - - /// An error that indicates that the provided credentials are ill-formed. RLMSyncAuthErrorInvalidParameters = 601, - - /// An error that indicates that no Realm path was included in the URL. RLMSyncAuthErrorMissingPath = 602, - - /// An error that indicates that the provided credentials are invalid. RLMSyncAuthErrorInvalidCredential = 611, - - /// An error that indicates that the user with provided credentials does not exist. RLMSyncAuthErrorUserDoesNotExist = 612, - - /// An error that indicates that the user cannot be registered as it exists already. RLMSyncAuthErrorUserAlreadyExists = 613, - - /// An error that indicates the path is invalid or the user doesn't have access to that Realm. RLMSyncAuthErrorAccessDeniedOrInvalidPath = 614, - - /// An error that indicates the refresh token was invalid. RLMSyncAuthErrorInvalidAccessToken = 615, - - /// An error that indicates the file at the given path can't be shared. RLMSyncAuthErrorFileCannotBeShared = 703, -}; +} __attribute__((deprecated("Errors of this type are no longer reported"))); #pragma mark - RLMSyncAppError /// An error which occurred when making a request to Atlas App Services. typedef RLM_ERROR_ENUM(NSInteger, RLMAppError, RLMAppErrorDomain) { - /// An unknown error has occured + /// An unknown error has occurred RLMAppErrorUnknown = -1, /// A HTTP request completed with an error status code. The failing status diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMMongoDatabase.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMMongoDatabase.h index f700cb87a..177fbc1b8 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMMongoDatabase.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMMongoDatabase.h @@ -44,6 +44,7 @@ RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class /// @param name The name of the collection to return /// @returns The collection - (RLMMongoCollection *)collectionWithName:(NSString *)name; +// NEXT-MAJOR: NS_SWIFT_NAME(collection(named:)) @end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMPlatform.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMPlatform.h deleted file mode 100644 index 979686a7d..000000000 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMPlatform.h +++ /dev/null @@ -1,46 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// -// Copyright 2014 Realm Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////// - -#if !__is_target_os(macosx) -#error Attempting to use Realm's macOS framework in a non-macOS target. -#endif - -#ifdef REALM_BUILDING_FOR_MACCATALYST -#if !__is_target_os(ios) || !__is_target_environment(macabi) -#error Attempting to use Realm's Catalyst framework in a non-Catalyst target. -#endif -#endif - -#ifdef REALM_BUILDING_FOR_IOS -#if !__is_target_os(ios) || __is_target_environment(macabi) -#error Attempting to use Realm's iOS framework in a non-iOS target. -#endif -#endif - -#ifdef REALM_BUILDING_FOR_TVOS -#if !__is_target_os(tvos) -#error Attempting to use Realm's tvOS framework in a non-tvOS target. -#endif -#endif - -#ifdef REALM_BUILDING_FOR_WATCHOS -#if !__is_target_os(watchos) -#error Attempting to use Realm's watchOS framework in a non-watchOS target. -#endif -#endif -#define REALM_IOPLATFORMUUID @"" diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMSyncManager.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMSyncManager.h index d130ebaff..1dee453d0 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMSyncManager.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/RLMSyncManager.h @@ -50,7 +50,7 @@ typedef RLM_CLOSED_ENUM(NSUInteger, RLMSyncLogLevel) { /// /// - warning: Will incur a measurable performance impact. RLMSyncLogLevelAll -} __attribute__((deprecated("Use `RLMLogLevel`/`LogLevel` instead"))); +}; #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" @@ -218,11 +218,6 @@ __attribute__((deprecated("Use `RLMLogger.default`/`Logger.shared` to set/get th /// /// Defaults to 1 minute. @property (nonatomic) NSUInteger fastReconnectLimit; - -/// The app configuration that has initialized this SyncManager. -/// This can be set multiple times. This gives the SyncManager -/// access to necessary app functionality. -@property (nonatomic, readonly) RLMAppConfiguration *appConfiguration; @end RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/Realm.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/Realm.h index 0f980e1b3..245596393 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/Realm.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Headers/Realm.h @@ -29,7 +29,6 @@ #import #import #import -#import #import #import #import diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Modules/module.modulemap b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Modules/module.modulemap index ed5e7fee2..519ddc20b 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Modules/module.modulemap +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Modules/module.modulemap @@ -13,7 +13,6 @@ framework module Realm { header "RLMObject.h" header "RLMObjectId.h" header "RLMObjectSchema.h" - header "RLMPlatform.h" header "RLMProperty.h" header "RLMProviderClient.h" header "RLMRealm+Sync.h" diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/PrivateHeaders/RLMApp_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/PrivateHeaders/RLMApp_Private.h index ea52e9715..5da5c3c7a 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/PrivateHeaders/RLMApp_Private.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/PrivateHeaders/RLMApp_Private.h @@ -36,15 +36,15 @@ typedef void(^RLMAppNotificationBlock)(RLMApp *); /// Subscribe to notifications for this RLMApp. - (RLMAppSubscriptionToken *)subscribe:(RLMAppNotificationBlock)block; -+ (instancetype)appWithId:(NSString *)appId - configuration:(nullable RLMAppConfiguration *)configuration - rootDirectory:(nullable NSURL *)rootDirectory; - -+ (instancetype)uncachedAppWithId:(NSString *)appId - configuration:(RLMAppConfiguration *)configuration - rootDirectory:(nullable NSURL *)rootDirectory; ++ (instancetype)appWithConfiguration:(RLMAppConfiguration *)configuration; + (void)resetAppCache; @end +@interface RLMAppConfiguration () +@property (nonatomic) NSString *appId; +@property (nonatomic) BOOL encryptMetadata; +@property (nonatomic) NSURL *rootDirectory; +@end + RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/PrivateHeaders/RLMAsyncTask_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/PrivateHeaders/RLMAsyncTask_Private.h index cee1e7fca..3cce89441 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/PrivateHeaders/RLMAsyncTask_Private.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/PrivateHeaders/RLMAsyncTask_Private.h @@ -18,7 +18,7 @@ #import -#import +#import "RLMRealm_Private.h" RLM_HEADER_AUDIT_BEGIN(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/PrivateHeaders/RLMObjectStore.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/PrivateHeaders/RLMObjectStore.h index 69443c965..6045f1e8e 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/PrivateHeaders/RLMObjectStore.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/PrivateHeaders/RLMObjectStore.h @@ -92,7 +92,7 @@ RLMObjectBase *RLMObjectFromObjLink(RLMRealm *realm, // Create accessors RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, int64_t key) NS_RETURNS_RETAINED; -RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, realm::Obj&& obj) NS_RETURNS_RETAINED; +RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, const realm::Obj& obj) NS_RETURNS_RETAINED; #endif RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Realm b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Realm index a42529cb3..2fcdc0582 100755 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Realm and b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Realm differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Resources/CHANGELOG.md b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Resources/CHANGELOG.md index bccff1d05..00cc01244 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Resources/CHANGELOG.md +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Resources/CHANGELOG.md @@ -1,3 +1,222 @@ +10.42.3 Release notes (2023-09-18) +============================================================= + +### Enhancements + +* Update packaging for the Xcode 15.0 release. Carthage release and obj-c + binaries are now built with Xcode 15. + +### Fixed + +* The prebuilt Realm.xcframework for SPM was packaged incorrectly and did not + work ([#8361](https://github.com/realm/realm-swift/issues/8361), since v10.42.1). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 15.0.0. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15.0.0. + +10.42.2 Release notes (2023-09-13) +============================================================= + +### Enhancements + +* Add support for logging messages sent by the server. + ([Core #6476](https://github.com/realm/realm-core/pull/6476)) +* Unknown protocol errors received from the baas server will no longer cause + the application to crash if a valid error action is also received. Unknown + error actions will be treated as an ApplicationBug error action and will + cause sync to fail with an error via the sync error handler. + ([Core #6885](https://github.com/realm/realm-core/pull/6885)) +* Some sync error messages now contain more information about what went wrong. + +### Fixed + +* The `MultipleSyncAgents` exception from opening a synchronized Realm in + multiple processes at once no longer leaves the sync client in an invalid + state. ([Core #6868](https://github.com/realm/realm-core/pull/6868), since v10.36.0) +* Testing the size of a collection of links against zero would sometimes fail + (sometimes = "difficult to explain"). In particular: + ([Core #6850](https://github.com/realm/realm-core/issues/6850), since v10.41.0) +* When async writes triggered a file compaction some internal state could be + corrupted, leading to later crashes in the slab allocator. This typically + resulted in the "ref + size <= next->first" assertion failure, but other + failures were possible. Many issues reported; see [Core #6340](https://github.com/realm/realm-core/issues/6340). + (since 10.35.0) +* `Realm.Configuration.maximumNumberOfActiveVersions` now handles intermediate + versions which have been cleaned up correctly and checks the number of live + versions rather than the number of versions between the oldest live version + and current version (since 10.35.0). +* If the client disconnected between uploading a change to flexible sync + subscriptions and receiving the new object data from the server resulting + from that subscription change, the next connection to the server would + sometimes result in a client reset + ([Core #6966](https://github.com/realm/realm-core/issues/6966), since v10.21.1). + +### Deprecations + +* `RLMApp` has `localAppName` and `localAppVersion` fields which never ended up + being used for anything and are now deprecated. +* `RLMSyncAuthError` has not been used since v10.0.0 and is now deprecated. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +### Internal + +* Upgraded realm-core from 13.17.1 to 13.20.1 + +10.42.1 Release notes (2023-08-28) +============================================================= + +### Fixed + +* The names of the prebuilt zips for SPM have changed to avoid having Carthage + download them instead of the intended Carthage zip + ([#8326](https://github.com/realm/realm-swift/issues/8326), since v10.42.0). +* The prebuild Realm.xcframework for SwiftPM now has all platforms other than + visionOS built with Xcode 14 to comply with app store rules + ([#8339](https://github.com/realm/realm-swift/issues/8339), since 10.42.0). +* Fix visionOS compilation with Xcode beta 7. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +10.42.0 Release notes (2023-07-30) +============================================================= + +### Enhancements + +* Add support for building for visionOS and add Xcode 15 binaries to the + release package. visionOS currently requires installing Realm via either + Swift Package Manager or by using a XCFramework as CocoaPods and Carthage do + not yet support it. +* Zips compatible with SPM's `.binaryTarget()` are now published as part of the + releases on Github. +* Prebuilt XCFrameworks are now built with LTO enabled. This has insignificant + performance benefits, but cuts the size of the library by ~15%. + +### Fixed + +* Fix nested properties observation on a `Projections` not notifying when there is a property change. + ([#8276](https://github.com/realm/realm-swift/issues/8276), since v10.34.0). +* Fix undefined symbol error for `UIKit` when linking Realm to a framework using SPM. + ([#8308](https://github.com/realm/realm-swift/issues/8308), since v10.41.0) +* If the app crashed at exactly the wrong time while opening a freshly + compacted Realm the file could be left in an invalid state + ([Core #6807](https://github.com/realm/realm-core/pull/6807), since v10.33.0). +* Sync progress for DOWNLOAD messages was sometimes stored incorrectly, + resulting in an extra round trip to the server. + ([Core #6827](https://github.com/realm/realm-core/issues/6827), since v10.31.0) + +### Breaking Changes + +* Legacy non-xcframework Carthage installations are no longer supported. Please + ensure you are using `--use-xcframeworks` if installing via Carthage. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 5. + +### Internal + +* Upgraded realm-core from 13.17.0 to 13.17.1 +* Release packages were being uploaded to several static.realm.io URLs which + are no longer linked to anywhere. These are no longer being updated, and + release packages are now only being uploaded to Github. + +10.41.1 Release notes (2023-07-17) +============================================================= + +### Enhancements + +* Filesystem errors now include more information in the error message. +* Sync connection and session reconnect timing/backoff logic has been reworked + and unified into a single implementation. Previously some categories of errors + would cause an hour-long wait before attempting to reconnect, while others + would use an exponential backoff strategy. All errors now result in the sync + client waiting for 1 second before retrying, doubling the wait after each + subsequent failure up to a maximum of five minutes. If the cause of the error + changes, the backoff will be reset. If the sync client voluntarily disconnects, + no backoff will be used. ([Core #6526]((https://github.com/realm/realm-core/pull/6526))) + +### Fixed + +* Removed warnings for deprecated APIs internal use. + ([#8251](https://github.com/realm/realm-swift/issues/8251), since v10.39.0) +* Fix an error during async open and client reset if properties have been added + to the schema. This fix also applies to partition-based to flexible sync + migration if async open is used. ([Core #6707](https://github.com/realm/realm-core/issues/6707), since v10.28.2) + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 4. + +### Internal + +* Upgraded realm-core from 13.15.1 to 13.17.0 +* The location where prebuilt core binaries are published has changed slightly. + If you are using `REALM_BASE_URL` to mirror the binaries, you may need to + adjust your mirroring logic. + +10.41.0 Release notes (2023-06-26) +============================================================= + +### Enhancements + +* Add support for multiplexing sync connections. When enabled (the default), a single + connection is used per sync user rather than one per synchronized Realm. This + reduces resource consumption when multiple Realms are opened and will + typically improve performance ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). +* Sync timeout options can now be set on `RLMAppConfiguration` along with the + other app-wide configuration settings ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Fixed + +* Import as `RLMRealm_Private.h` as a module would cause issues when using Realm as a subdependency. + ([#8164](https://github.com/realm/realm-swift/issues/8164), since 10.37.0) +* Disable setting a custom logger by default on the sync client when the sync manager is created. + This was overriding the default logger set using `RLMLogger.defaultLogger`. (since v10.39.0). + +### Breaking Changes + +* The `RLMSyncTimeouts.appConfiguration` property has been removed. This was an + unimplemented read-only property which did not make any sense on the + containing type ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 2. + +### Internal + +* Upgraded realm-core from 13.15.0 to 13.15.1 + 10.40.2 Release notes (2023-06-09) ============================================================= @@ -15,7 +234,7 @@ * If the order of properties in the local class definitions did not match the order in the server-side schema, the before-reset Realm argument passed to a client reset handler would have an invalid schema and likely crash if any - data was read from it. ([Core 6693](https://github.com/realm/realm-core/issues/6693), since v10.40.0) + data was read from it. ([Core #6693](https://github.com/realm/realm-core/issues/6693), since v10.40.0) ### Compatibility @@ -27,7 +246,7 @@ ### Internal -* Upgraded realm-core from 13.13.0 to 13.16.0. +* Upgraded realm-core from 13.13.0 to 13.15.0. * The prebuilt library used for CocoaPods installations is now built with Xcode 14. This should not have any observable effects other than the download being much smaller due to no longer including bitcode. @@ -3870,10 +4089,6 @@ This release also contains all changes from 5.3.2. * Realm Studio: 10.0.0 or later. * Carthage release for Swift is built with Xcode 11.5. -### Internal -* Upgraded realm-core from ? to ? -* Upgraded realm-sync from ? to ? - 10.0.0-beta.2 Release notes (2020-06-09) ============================================================= Xcode 11.3 and iOS 9 are now the minimum supported versions. diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Resources/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Resources/Info.plist index 372a3ec3e..0c7b6d04e 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Resources/Info.plist +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/Resources/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 21G646 + 22G91 CFBundleDevelopmentRegion English CFBundleExecutable @@ -17,7 +17,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 10.40.2 + 10.42.3 CFBundleSignature ???? CFBundleSupportedPlatforms @@ -25,7 +25,7 @@ MacOSX CFBundleVersion - 10.40.2 + 10.42.3 DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild @@ -33,17 +33,17 @@ DTPlatformName macosx DTPlatformVersion - 13.3 + 14.0 DTSDKBuild - 22E245 + 23A5326c DTSDKName - macosx13.3 + macosx14.0 DTXcode - 1431 + 1500 DTXcodeBuild - 14E300c + 15A5229h LSMinimumSystemVersion - 10.13 + 10.14 NSHumanReadableCopyright Copyright © 2014-2021 Realm. All rights reserved. diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/_CodeSignature/CodeResources b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/_CodeSignature/CodeResources index 4a5ddab3b..a51ebb17e 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/_CodeSignature/CodeResources +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/macos-arm64_x86_64/Realm.framework/Versions/A/_CodeSignature/CodeResources @@ -6,11 +6,11 @@ Resources/CHANGELOG.md - Y8GU8qLvT58gIcC07I5ct6f15yQ= + Zv1aE8lgTnRPKTg4+FZa+hYQQNM= Resources/Info.plist - RcFkpPcXZ0TLolUcpomrb9dKdDY= + 37qKn6yYo8Bs7w5Bsw9U508vLTM= Resources/LICENSE @@ -37,7 +37,7 @@ hash2 - uLD2KqwHxLTJ/f9mMDT52TZw6QqpvJeb6plXQI4/f1o= + fmHB8oywmfycQqOzXoYB99LpOLE7akGn0ZrJtqviiTs= Headers/RLMArray.h @@ -100,7 +100,7 @@ hash2 - I0iusExV7YvVkdt6MHXOAwNHJ2iVzHJciY0geWG3g5A= + 7zN2nXgEwGfrPRtbgqtfoLrwJbwqohcVvU/OyA/07Lk= Headers/RLMEmailPasswordAuth.h @@ -121,7 +121,7 @@ hash2 - OWjWlN8fXFm/L0glkTwwiNA7HP2SqXfp++r0dCTxccI= + 6duvM3p0FRf6fZ+aS57vHkf7WvV1KPoz7PcIZA48WTU= Headers/RLMFindOneAndModifyOptions.h @@ -170,7 +170,7 @@ hash2 - eMx63OF3EFRqAGsLMEXvv+y0YnKqWOB1RiyzlyW2+IE= + wnJWmMW0z3xO9KVRJKpiE+xkaKkzXBXiH5j+8eaFmcA= Headers/RLMNetworkTransport.h @@ -215,13 +215,6 @@ 8oCJihoGgigIF170SRk/yU5RLDNX9TYQUrXxLjYrtuM= - Headers/RLMPlatform.h - - hash2 - - L0mOKhJ6tDl4S6VMEBG3wOahF1oDVR+ctnXfc1wdSrM= - - Headers/RLMProperty.h hash2 @@ -324,7 +317,7 @@ hash2 - mdAe8l7XifP7CmhttYUKNJxUfRFiL6vb+MRO2sXIqpo= + rFV4QDsBonA29YqdZXsYhNSVewEYkrafSLPWBGaEhqI= Headers/RLMSyncSession.h @@ -380,14 +373,14 @@ hash2 - XojGXRDQANLfoU7VwvyqGGmZmf/oNUXjRNXzxcxJZEA= + kjoP0TvFhg49q7sxVEgPoNFg+zqo9bCE2Uh0YOpDpbE= Modules/module.modulemap hash2 - UDqXkLimJ+9qpDCcsMjIqR5Qsd7iEaavhqi8J7iEBhI= + KdpbsAGrxax/jx81TZ93YswnCwT1BZTor6VwIHvgRUs= PrivateHeaders/RLMAccessor.h @@ -401,7 +394,7 @@ hash2 - 6KWA9yC7TNQAvVa3VI9qPhSnV6DWxJZkFJHCIRX49u4= + 4pd3636NRX7kQgsEy7dv7IQH/AyZMKjQvA2nmK97Vq0= PrivateHeaders/RLMArray_Private.h @@ -415,7 +408,7 @@ hash2 - iKrJ9TGXoc8UTr44+s8a0yCnhaJeVQNs0mLKA5yBfRs= + vD90SYI5658JDp88stHbsxALdVNhs0Tojcld9hVORHE= PrivateHeaders/RLMBSON_Private.hpp @@ -485,7 +478,7 @@ hash2 - glcepASGexcV1kvpkZeXGcPrdsuxPgyj7HNo6RMGNuQ= + 0KjmazUjg/mYvymGTJ74ChBgvrqN2Lc9O0TqcYF/Mic= PrivateHeaders/RLMObject_Private.h @@ -597,14 +590,14 @@ hash2 - YkS7d92nc1CbgkrNj49UJRdpGfHZ4B4jOg0AqFE9EHo= + wt8p9tw4OPVj/LtpO9d+DXFoOnRQ6hRaxf/hS2NxDRg= Resources/Info.plist hash2 - 7tsMttSM/iCgd1KKj3dy2MFa49Iqi14xnEjF8r90ON0= + j5zPVyg7y3Li5RJXjlOqskV7JvGSz10z0/tRdQ+iniE= Resources/LICENSE diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/CHANGELOG.md b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/CHANGELOG.md index bccff1d05..00cc01244 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/CHANGELOG.md +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/CHANGELOG.md @@ -1,3 +1,222 @@ +10.42.3 Release notes (2023-09-18) +============================================================= + +### Enhancements + +* Update packaging for the Xcode 15.0 release. Carthage release and obj-c + binaries are now built with Xcode 15. + +### Fixed + +* The prebuilt Realm.xcframework for SPM was packaged incorrectly and did not + work ([#8361](https://github.com/realm/realm-swift/issues/8361), since v10.42.1). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 15.0.0. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15.0.0. + +10.42.2 Release notes (2023-09-13) +============================================================= + +### Enhancements + +* Add support for logging messages sent by the server. + ([Core #6476](https://github.com/realm/realm-core/pull/6476)) +* Unknown protocol errors received from the baas server will no longer cause + the application to crash if a valid error action is also received. Unknown + error actions will be treated as an ApplicationBug error action and will + cause sync to fail with an error via the sync error handler. + ([Core #6885](https://github.com/realm/realm-core/pull/6885)) +* Some sync error messages now contain more information about what went wrong. + +### Fixed + +* The `MultipleSyncAgents` exception from opening a synchronized Realm in + multiple processes at once no longer leaves the sync client in an invalid + state. ([Core #6868](https://github.com/realm/realm-core/pull/6868), since v10.36.0) +* Testing the size of a collection of links against zero would sometimes fail + (sometimes = "difficult to explain"). In particular: + ([Core #6850](https://github.com/realm/realm-core/issues/6850), since v10.41.0) +* When async writes triggered a file compaction some internal state could be + corrupted, leading to later crashes in the slab allocator. This typically + resulted in the "ref + size <= next->first" assertion failure, but other + failures were possible. Many issues reported; see [Core #6340](https://github.com/realm/realm-core/issues/6340). + (since 10.35.0) +* `Realm.Configuration.maximumNumberOfActiveVersions` now handles intermediate + versions which have been cleaned up correctly and checks the number of live + versions rather than the number of versions between the oldest live version + and current version (since 10.35.0). +* If the client disconnected between uploading a change to flexible sync + subscriptions and receiving the new object data from the server resulting + from that subscription change, the next connection to the server would + sometimes result in a client reset + ([Core #6966](https://github.com/realm/realm-core/issues/6966), since v10.21.1). + +### Deprecations + +* `RLMApp` has `localAppName` and `localAppVersion` fields which never ended up + being used for anything and are now deprecated. +* `RLMSyncAuthError` has not been used since v10.0.0 and is now deprecated. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +### Internal + +* Upgraded realm-core from 13.17.1 to 13.20.1 + +10.42.1 Release notes (2023-08-28) +============================================================= + +### Fixed + +* The names of the prebuilt zips for SPM have changed to avoid having Carthage + download them instead of the intended Carthage zip + ([#8326](https://github.com/realm/realm-swift/issues/8326), since v10.42.0). +* The prebuild Realm.xcframework for SwiftPM now has all platforms other than + visionOS built with Xcode 14 to comply with app store rules + ([#8339](https://github.com/realm/realm-swift/issues/8339), since 10.42.0). +* Fix visionOS compilation with Xcode beta 7. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +10.42.0 Release notes (2023-07-30) +============================================================= + +### Enhancements + +* Add support for building for visionOS and add Xcode 15 binaries to the + release package. visionOS currently requires installing Realm via either + Swift Package Manager or by using a XCFramework as CocoaPods and Carthage do + not yet support it. +* Zips compatible with SPM's `.binaryTarget()` are now published as part of the + releases on Github. +* Prebuilt XCFrameworks are now built with LTO enabled. This has insignificant + performance benefits, but cuts the size of the library by ~15%. + +### Fixed + +* Fix nested properties observation on a `Projections` not notifying when there is a property change. + ([#8276](https://github.com/realm/realm-swift/issues/8276), since v10.34.0). +* Fix undefined symbol error for `UIKit` when linking Realm to a framework using SPM. + ([#8308](https://github.com/realm/realm-swift/issues/8308), since v10.41.0) +* If the app crashed at exactly the wrong time while opening a freshly + compacted Realm the file could be left in an invalid state + ([Core #6807](https://github.com/realm/realm-core/pull/6807), since v10.33.0). +* Sync progress for DOWNLOAD messages was sometimes stored incorrectly, + resulting in an extra round trip to the server. + ([Core #6827](https://github.com/realm/realm-core/issues/6827), since v10.31.0) + +### Breaking Changes + +* Legacy non-xcframework Carthage installations are no longer supported. Please + ensure you are using `--use-xcframeworks` if installing via Carthage. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 5. + +### Internal + +* Upgraded realm-core from 13.17.0 to 13.17.1 +* Release packages were being uploaded to several static.realm.io URLs which + are no longer linked to anywhere. These are no longer being updated, and + release packages are now only being uploaded to Github. + +10.41.1 Release notes (2023-07-17) +============================================================= + +### Enhancements + +* Filesystem errors now include more information in the error message. +* Sync connection and session reconnect timing/backoff logic has been reworked + and unified into a single implementation. Previously some categories of errors + would cause an hour-long wait before attempting to reconnect, while others + would use an exponential backoff strategy. All errors now result in the sync + client waiting for 1 second before retrying, doubling the wait after each + subsequent failure up to a maximum of five minutes. If the cause of the error + changes, the backoff will be reset. If the sync client voluntarily disconnects, + no backoff will be used. ([Core #6526]((https://github.com/realm/realm-core/pull/6526))) + +### Fixed + +* Removed warnings for deprecated APIs internal use. + ([#8251](https://github.com/realm/realm-swift/issues/8251), since v10.39.0) +* Fix an error during async open and client reset if properties have been added + to the schema. This fix also applies to partition-based to flexible sync + migration if async open is used. ([Core #6707](https://github.com/realm/realm-core/issues/6707), since v10.28.2) + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 4. + +### Internal + +* Upgraded realm-core from 13.15.1 to 13.17.0 +* The location where prebuilt core binaries are published has changed slightly. + If you are using `REALM_BASE_URL` to mirror the binaries, you may need to + adjust your mirroring logic. + +10.41.0 Release notes (2023-06-26) +============================================================= + +### Enhancements + +* Add support for multiplexing sync connections. When enabled (the default), a single + connection is used per sync user rather than one per synchronized Realm. This + reduces resource consumption when multiple Realms are opened and will + typically improve performance ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). +* Sync timeout options can now be set on `RLMAppConfiguration` along with the + other app-wide configuration settings ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Fixed + +* Import as `RLMRealm_Private.h` as a module would cause issues when using Realm as a subdependency. + ([#8164](https://github.com/realm/realm-swift/issues/8164), since 10.37.0) +* Disable setting a custom logger by default on the sync client when the sync manager is created. + This was overriding the default logger set using `RLMLogger.defaultLogger`. (since v10.39.0). + +### Breaking Changes + +* The `RLMSyncTimeouts.appConfiguration` property has been removed. This was an + unimplemented read-only property which did not make any sense on the + containing type ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 2. + +### Internal + +* Upgraded realm-core from 13.15.0 to 13.15.1 + 10.40.2 Release notes (2023-06-09) ============================================================= @@ -15,7 +234,7 @@ * If the order of properties in the local class definitions did not match the order in the server-side schema, the before-reset Realm argument passed to a client reset handler would have an invalid schema and likely crash if any - data was read from it. ([Core 6693](https://github.com/realm/realm-core/issues/6693), since v10.40.0) + data was read from it. ([Core #6693](https://github.com/realm/realm-core/issues/6693), since v10.40.0) ### Compatibility @@ -27,7 +246,7 @@ ### Internal -* Upgraded realm-core from 13.13.0 to 13.16.0. +* Upgraded realm-core from 13.13.0 to 13.15.0. * The prebuilt library used for CocoaPods installations is now built with Xcode 14. This should not have any observable effects other than the download being much smaller due to no longer including bitcode. @@ -3870,10 +4089,6 @@ This release also contains all changes from 5.3.2. * Realm Studio: 10.0.0 or later. * Carthage release for Swift is built with Xcode 11.5. -### Internal -* Upgraded realm-core from ? to ? -* Upgraded realm-sync from ? to ? - 10.0.0-beta.2 Release notes (2020-06-09) ============================================================= Xcode 11.3 and iOS 9 are now the minimum supported versions. diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMApp.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMApp.h index 3aa02c5e1..2228232e8 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMApp.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMApp.h @@ -23,7 +23,7 @@ RLM_HEADER_AUDIT_BEGIN(nullability, sendability) @protocol RLMNetworkTransport, RLMBSON; -@class RLMUser, RLMCredentials, RLMSyncManager, RLMEmailPasswordAuth, RLMPushClient; +@class RLMUser, RLMCredentials, RLMSyncManager, RLMEmailPasswordAuth, RLMPushClient, RLMSyncTimeoutOptions; /// A block type used for APIs which asynchronously vend an `RLMUser`. typedef void(^RLMUserCompletionBlock)(RLMUser * _Nullable, NSError * _Nullable); @@ -35,7 +35,7 @@ typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); /// Properties representing the configuration of a client /// that communicate with a particular Realm application. -@interface RLMAppConfiguration : NSObject +@interface RLMAppConfiguration : NSObject /// A custom base URL to request against. @property (nonatomic, strong, nullable) NSString *baseURL; @@ -43,41 +43,67 @@ typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); /// The custom transport for network calls to the server. @property (nonatomic, strong, nullable) id transport; -/// A custom app name. -@property (nonatomic, strong, nullable) NSString *localAppName; - -/// A custom app version. -@property (nonatomic, strong, nullable) NSString *localAppVersion; +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppName + __attribute__((deprecated("This field is not used"))); +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppVersion + __attribute__((deprecated("This field is not used"))); /// The default timeout for network requests. @property (nonatomic, assign) NSUInteger defaultRequestTimeoutMS; +/// If enabled (the default), a single connection is used for all Realms opened +/// with a single sync user. If disabled, a separate connection is used for each +/// Realm. +/// +/// Session multiplexing reduces resources used and typically improves +/// performance. When multiplexing is enabled, the connection is not immediately +/// closed when the last session is closed, and instead remains open for +/// ``RLMSyncTimeoutOptions.connectionLingerTime`` milliseconds (30 seconds by +/// default). +@property (nonatomic, assign) BOOL enableSessionMultiplexing; + +/** + Options for the assorted types of connection timeouts for sync connections. + + If nil default values for all timeouts are used instead. + */ +@property (nonatomic, nullable, copy) RLMSyncTimeoutOptions *syncTimeouts; + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *)baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *) baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion + defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + /** Create a new Realm App configuration. @param baseURL A custom base URL to request against. @param transport A custom network transport. -@param localAppName A custom app name. -@param localAppVersion A custom app version. */ - (instancetype)initWithBaseURL:(nullable NSString *)baseURL - transport:(nullable id)transport - localAppName:(nullable NSString *)localAppName - localAppVersion:(nullable NSString *)localAppVersion; + transport:(nullable id)transport; /** Create a new Realm App configuration. @param baseURL A custom base URL to request against. @param transport A custom network transport. - @param localAppName A custom app name. - @param localAppVersion A custom app version. @param defaultRequestTimeoutMS A custom default timeout for network requests. */ - (instancetype)initWithBaseURL:(nullable NSString *) baseURL transport:(nullable id)transport - localAppName:(nullable NSString *)localAppName - localAppVersion:(nullable NSString *)localAppVersion defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS; @end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMDictionary.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMDictionary.h index 99f98b92a..9c8cac538 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMDictionary.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMDictionary.h @@ -40,6 +40,8 @@ RLM_HEADER_AUDIT_BEGIN(nullability, sendability) `RLMDictionary`s cannot be created directly. `RLMDictionary` properties on `RLMObject`s are lazily created when accessed, or can be obtained by querying a Realm. + `RLMDictionary` only supports `NSString` as a key. Realm disallows the use of `.` or `$` characters within a dictionary key. + ### Key-Value Observing `RLMDictionary` supports dictionary key-value observing on `RLMDictionary` properties on `RLMObject` diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMError.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMError.h index 795361b2b..514ceee3f 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMError.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMError.h @@ -265,13 +265,7 @@ typedef RLM_ERROR_ENUM(NSInteger, RLMSyncError, RLMSyncErrorDomain) { */ RLMSyncErrorClientResetError = 7, - /** - An error that indicates an authentication error occurred. - - The `kRLMSyncUnderlyingErrorKey` key in the user info dictionary will contain the - underlying error, which is guaranteed to be under the `RLMSyncAuthErrorDomain` - error domain. - */ + /// :nodoc: RLMSyncErrorUnderlyingAuthError = 8, /** @@ -314,56 +308,53 @@ typedef RLM_ERROR_ENUM(NSInteger, RLMSyncError, RLMSyncErrorDomain) { This error is informational and does not require any explicit handling. */ RLMSyncErrorWriteRejected = 11, + + /** + A connection error without a more specific error code occurred. + + Realm internally handles retrying connections with appropriate backoffs, + so connection errors are normally logged and not reported to the error + handler. The exception is if + ``RLMSyncConfiguration.cancelAsyncOpenOnNonFatalErrors`` is set to `true`, + in which case async opens will be canceled on connection failures and the + error will be reported to the completion handler. + + Note that connection timeouts are reported as + (errorDomain: NSPosixErrorDomain, error: ETIMEDOUT) + and not as one of these error codes. + */ + RLMSyncErrorConnectionFailed = 12, + + /** + Connecting to the server failed due to a TLS issue such as an invalid certificate. + */ + RLMSyncErrorTLSHandshakeFailed = 13, }; #pragma mark - RLMSyncAuthError -/// An error which is related to authentication to Atlas App Services. +// NEXT-MAJOR: This was a ROS thing and should have been removed in v10 +/// :nodoc: typedef RLM_ERROR_ENUM(NSInteger, RLMSyncAuthError, RLMSyncAuthErrorDomain) { - /// An error that indicates that the response received from the authentication server was malformed. RLMSyncAuthErrorBadResponse = 1, - - /// An error that indicates that the supplied Realm path was invalid, or could not be resolved by the authentication - /// server. RLMSyncAuthErrorBadRemoteRealmPath = 2, - - /// An error that indicates that the response received from the authentication server was an HTTP error code. The - /// `userInfo` dictionary contains the actual error code value. RLMSyncAuthErrorHTTPStatusCodeError = 3, - - /// An error that indicates a problem with the session (a specific Realm opened for sync). RLMSyncAuthErrorClientSessionError = 4, - - /// An error that indicates that the provided credentials are ill-formed. RLMSyncAuthErrorInvalidParameters = 601, - - /// An error that indicates that no Realm path was included in the URL. RLMSyncAuthErrorMissingPath = 602, - - /// An error that indicates that the provided credentials are invalid. RLMSyncAuthErrorInvalidCredential = 611, - - /// An error that indicates that the user with provided credentials does not exist. RLMSyncAuthErrorUserDoesNotExist = 612, - - /// An error that indicates that the user cannot be registered as it exists already. RLMSyncAuthErrorUserAlreadyExists = 613, - - /// An error that indicates the path is invalid or the user doesn't have access to that Realm. RLMSyncAuthErrorAccessDeniedOrInvalidPath = 614, - - /// An error that indicates the refresh token was invalid. RLMSyncAuthErrorInvalidAccessToken = 615, - - /// An error that indicates the file at the given path can't be shared. RLMSyncAuthErrorFileCannotBeShared = 703, -}; +} __attribute__((deprecated("Errors of this type are no longer reported"))); #pragma mark - RLMSyncAppError /// An error which occurred when making a request to Atlas App Services. typedef RLM_ERROR_ENUM(NSInteger, RLMAppError, RLMAppErrorDomain) { - /// An unknown error has occured + /// An unknown error has occurred RLMAppErrorUnknown = -1, /// A HTTP request completed with an error status code. The failing status diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMMongoDatabase.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMMongoDatabase.h index f700cb87a..177fbc1b8 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMMongoDatabase.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMMongoDatabase.h @@ -44,6 +44,7 @@ RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class /// @param name The name of the collection to return /// @returns The collection - (RLMMongoCollection *)collectionWithName:(NSString *)name; +// NEXT-MAJOR: NS_SWIFT_NAME(collection(named:)) @end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMPlatform.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMPlatform.h deleted file mode 100644 index 2652b2107..000000000 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMPlatform.h +++ /dev/null @@ -1,46 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// -// Copyright 2014 Realm Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////// - -#ifdef REALM_BUILDING_FOR_MACOS -#if !__is_target_os(macosx) -#error Attempting to use Realm's macOS framework in a non-macOS target. -#endif -#endif - -#ifdef REALM_BUILDING_FOR_MACCATALYST -#if !__is_target_os(ios) || !__is_target_environment(macabi) -#error Attempting to use Realm's Catalyst framework in a non-Catalyst target. -#endif -#endif - -#ifdef REALM_BUILDING_FOR_IOS -#if !__is_target_os(ios) || __is_target_environment(macabi) -#error Attempting to use Realm's iOS framework in a non-iOS target. -#endif -#endif - -#if !__is_target_os(tvos) -#error Attempting to use Realm's tvOS framework in a non-tvOS target. -#endif - -#ifdef REALM_BUILDING_FOR_WATCHOS -#if !__is_target_os(watchos) -#error Attempting to use Realm's watchOS framework in a non-watchOS target. -#endif -#endif -#define REALM_IOPLATFORMUUID @"" diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMSyncManager.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMSyncManager.h index d130ebaff..1dee453d0 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMSyncManager.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/RLMSyncManager.h @@ -50,7 +50,7 @@ typedef RLM_CLOSED_ENUM(NSUInteger, RLMSyncLogLevel) { /// /// - warning: Will incur a measurable performance impact. RLMSyncLogLevelAll -} __attribute__((deprecated("Use `RLMLogLevel`/`LogLevel` instead"))); +}; #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" @@ -218,11 +218,6 @@ __attribute__((deprecated("Use `RLMLogger.default`/`Logger.shared` to set/get th /// /// Defaults to 1 minute. @property (nonatomic) NSUInteger fastReconnectLimit; - -/// The app configuration that has initialized this SyncManager. -/// This can be set multiple times. This gives the SyncManager -/// access to necessary app functionality. -@property (nonatomic, readonly) RLMAppConfiguration *appConfiguration; @end RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/Realm.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/Realm.h index 0f980e1b3..245596393 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/Realm.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Headers/Realm.h @@ -29,7 +29,6 @@ #import #import #import -#import #import #import #import diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Info.plist index f618c63f9..54638b8b3 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Info.plist and b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Info.plist differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Modules/module.modulemap b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Modules/module.modulemap index ed5e7fee2..519ddc20b 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Modules/module.modulemap +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Modules/module.modulemap @@ -13,7 +13,6 @@ framework module Realm { header "RLMObject.h" header "RLMObjectId.h" header "RLMObjectSchema.h" - header "RLMPlatform.h" header "RLMProperty.h" header "RLMProviderClient.h" header "RLMRealm+Sync.h" diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/PrivateHeaders/RLMApp_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/PrivateHeaders/RLMApp_Private.h index ea52e9715..5da5c3c7a 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/PrivateHeaders/RLMApp_Private.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/PrivateHeaders/RLMApp_Private.h @@ -36,15 +36,15 @@ typedef void(^RLMAppNotificationBlock)(RLMApp *); /// Subscribe to notifications for this RLMApp. - (RLMAppSubscriptionToken *)subscribe:(RLMAppNotificationBlock)block; -+ (instancetype)appWithId:(NSString *)appId - configuration:(nullable RLMAppConfiguration *)configuration - rootDirectory:(nullable NSURL *)rootDirectory; - -+ (instancetype)uncachedAppWithId:(NSString *)appId - configuration:(RLMAppConfiguration *)configuration - rootDirectory:(nullable NSURL *)rootDirectory; ++ (instancetype)appWithConfiguration:(RLMAppConfiguration *)configuration; + (void)resetAppCache; @end +@interface RLMAppConfiguration () +@property (nonatomic) NSString *appId; +@property (nonatomic) BOOL encryptMetadata; +@property (nonatomic) NSURL *rootDirectory; +@end + RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h index cee1e7fca..3cce89441 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h @@ -18,7 +18,7 @@ #import -#import +#import "RLMRealm_Private.h" RLM_HEADER_AUDIT_BEGIN(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/PrivateHeaders/RLMObjectStore.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/PrivateHeaders/RLMObjectStore.h index 69443c965..6045f1e8e 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/PrivateHeaders/RLMObjectStore.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/PrivateHeaders/RLMObjectStore.h @@ -92,7 +92,7 @@ RLMObjectBase *RLMObjectFromObjLink(RLMRealm *realm, // Create accessors RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, int64_t key) NS_RETURNS_RETAINED; -RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, realm::Obj&& obj) NS_RETURNS_RETAINED; +RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, const realm::Obj& obj) NS_RETURNS_RETAINED; #endif RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Realm b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Realm index dfd95e295..36880b3a8 100755 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Realm and b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64/Realm.framework/Realm differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/CHANGELOG.md b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/CHANGELOG.md index bccff1d05..00cc01244 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/CHANGELOG.md +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/CHANGELOG.md @@ -1,3 +1,222 @@ +10.42.3 Release notes (2023-09-18) +============================================================= + +### Enhancements + +* Update packaging for the Xcode 15.0 release. Carthage release and obj-c + binaries are now built with Xcode 15. + +### Fixed + +* The prebuilt Realm.xcframework for SPM was packaged incorrectly and did not + work ([#8361](https://github.com/realm/realm-swift/issues/8361), since v10.42.1). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 15.0.0. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15.0.0. + +10.42.2 Release notes (2023-09-13) +============================================================= + +### Enhancements + +* Add support for logging messages sent by the server. + ([Core #6476](https://github.com/realm/realm-core/pull/6476)) +* Unknown protocol errors received from the baas server will no longer cause + the application to crash if a valid error action is also received. Unknown + error actions will be treated as an ApplicationBug error action and will + cause sync to fail with an error via the sync error handler. + ([Core #6885](https://github.com/realm/realm-core/pull/6885)) +* Some sync error messages now contain more information about what went wrong. + +### Fixed + +* The `MultipleSyncAgents` exception from opening a synchronized Realm in + multiple processes at once no longer leaves the sync client in an invalid + state. ([Core #6868](https://github.com/realm/realm-core/pull/6868), since v10.36.0) +* Testing the size of a collection of links against zero would sometimes fail + (sometimes = "difficult to explain"). In particular: + ([Core #6850](https://github.com/realm/realm-core/issues/6850), since v10.41.0) +* When async writes triggered a file compaction some internal state could be + corrupted, leading to later crashes in the slab allocator. This typically + resulted in the "ref + size <= next->first" assertion failure, but other + failures were possible. Many issues reported; see [Core #6340](https://github.com/realm/realm-core/issues/6340). + (since 10.35.0) +* `Realm.Configuration.maximumNumberOfActiveVersions` now handles intermediate + versions which have been cleaned up correctly and checks the number of live + versions rather than the number of versions between the oldest live version + and current version (since 10.35.0). +* If the client disconnected between uploading a change to flexible sync + subscriptions and receiving the new object data from the server resulting + from that subscription change, the next connection to the server would + sometimes result in a client reset + ([Core #6966](https://github.com/realm/realm-core/issues/6966), since v10.21.1). + +### Deprecations + +* `RLMApp` has `localAppName` and `localAppVersion` fields which never ended up + being used for anything and are now deprecated. +* `RLMSyncAuthError` has not been used since v10.0.0 and is now deprecated. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +### Internal + +* Upgraded realm-core from 13.17.1 to 13.20.1 + +10.42.1 Release notes (2023-08-28) +============================================================= + +### Fixed + +* The names of the prebuilt zips for SPM have changed to avoid having Carthage + download them instead of the intended Carthage zip + ([#8326](https://github.com/realm/realm-swift/issues/8326), since v10.42.0). +* The prebuild Realm.xcframework for SwiftPM now has all platforms other than + visionOS built with Xcode 14 to comply with app store rules + ([#8339](https://github.com/realm/realm-swift/issues/8339), since 10.42.0). +* Fix visionOS compilation with Xcode beta 7. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +10.42.0 Release notes (2023-07-30) +============================================================= + +### Enhancements + +* Add support for building for visionOS and add Xcode 15 binaries to the + release package. visionOS currently requires installing Realm via either + Swift Package Manager or by using a XCFramework as CocoaPods and Carthage do + not yet support it. +* Zips compatible with SPM's `.binaryTarget()` are now published as part of the + releases on Github. +* Prebuilt XCFrameworks are now built with LTO enabled. This has insignificant + performance benefits, but cuts the size of the library by ~15%. + +### Fixed + +* Fix nested properties observation on a `Projections` not notifying when there is a property change. + ([#8276](https://github.com/realm/realm-swift/issues/8276), since v10.34.0). +* Fix undefined symbol error for `UIKit` when linking Realm to a framework using SPM. + ([#8308](https://github.com/realm/realm-swift/issues/8308), since v10.41.0) +* If the app crashed at exactly the wrong time while opening a freshly + compacted Realm the file could be left in an invalid state + ([Core #6807](https://github.com/realm/realm-core/pull/6807), since v10.33.0). +* Sync progress for DOWNLOAD messages was sometimes stored incorrectly, + resulting in an extra round trip to the server. + ([Core #6827](https://github.com/realm/realm-core/issues/6827), since v10.31.0) + +### Breaking Changes + +* Legacy non-xcframework Carthage installations are no longer supported. Please + ensure you are using `--use-xcframeworks` if installing via Carthage. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 5. + +### Internal + +* Upgraded realm-core from 13.17.0 to 13.17.1 +* Release packages were being uploaded to several static.realm.io URLs which + are no longer linked to anywhere. These are no longer being updated, and + release packages are now only being uploaded to Github. + +10.41.1 Release notes (2023-07-17) +============================================================= + +### Enhancements + +* Filesystem errors now include more information in the error message. +* Sync connection and session reconnect timing/backoff logic has been reworked + and unified into a single implementation. Previously some categories of errors + would cause an hour-long wait before attempting to reconnect, while others + would use an exponential backoff strategy. All errors now result in the sync + client waiting for 1 second before retrying, doubling the wait after each + subsequent failure up to a maximum of five minutes. If the cause of the error + changes, the backoff will be reset. If the sync client voluntarily disconnects, + no backoff will be used. ([Core #6526]((https://github.com/realm/realm-core/pull/6526))) + +### Fixed + +* Removed warnings for deprecated APIs internal use. + ([#8251](https://github.com/realm/realm-swift/issues/8251), since v10.39.0) +* Fix an error during async open and client reset if properties have been added + to the schema. This fix also applies to partition-based to flexible sync + migration if async open is used. ([Core #6707](https://github.com/realm/realm-core/issues/6707), since v10.28.2) + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 4. + +### Internal + +* Upgraded realm-core from 13.15.1 to 13.17.0 +* The location where prebuilt core binaries are published has changed slightly. + If you are using `REALM_BASE_URL` to mirror the binaries, you may need to + adjust your mirroring logic. + +10.41.0 Release notes (2023-06-26) +============================================================= + +### Enhancements + +* Add support for multiplexing sync connections. When enabled (the default), a single + connection is used per sync user rather than one per synchronized Realm. This + reduces resource consumption when multiple Realms are opened and will + typically improve performance ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). +* Sync timeout options can now be set on `RLMAppConfiguration` along with the + other app-wide configuration settings ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Fixed + +* Import as `RLMRealm_Private.h` as a module would cause issues when using Realm as a subdependency. + ([#8164](https://github.com/realm/realm-swift/issues/8164), since 10.37.0) +* Disable setting a custom logger by default on the sync client when the sync manager is created. + This was overriding the default logger set using `RLMLogger.defaultLogger`. (since v10.39.0). + +### Breaking Changes + +* The `RLMSyncTimeouts.appConfiguration` property has been removed. This was an + unimplemented read-only property which did not make any sense on the + containing type ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 2. + +### Internal + +* Upgraded realm-core from 13.15.0 to 13.15.1 + 10.40.2 Release notes (2023-06-09) ============================================================= @@ -15,7 +234,7 @@ * If the order of properties in the local class definitions did not match the order in the server-side schema, the before-reset Realm argument passed to a client reset handler would have an invalid schema and likely crash if any - data was read from it. ([Core 6693](https://github.com/realm/realm-core/issues/6693), since v10.40.0) + data was read from it. ([Core #6693](https://github.com/realm/realm-core/issues/6693), since v10.40.0) ### Compatibility @@ -27,7 +246,7 @@ ### Internal -* Upgraded realm-core from 13.13.0 to 13.16.0. +* Upgraded realm-core from 13.13.0 to 13.15.0. * The prebuilt library used for CocoaPods installations is now built with Xcode 14. This should not have any observable effects other than the download being much smaller due to no longer including bitcode. @@ -3870,10 +4089,6 @@ This release also contains all changes from 5.3.2. * Realm Studio: 10.0.0 or later. * Carthage release for Swift is built with Xcode 11.5. -### Internal -* Upgraded realm-core from ? to ? -* Upgraded realm-sync from ? to ? - 10.0.0-beta.2 Release notes (2020-06-09) ============================================================= Xcode 11.3 and iOS 9 are now the minimum supported versions. diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMApp.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMApp.h index 3aa02c5e1..2228232e8 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMApp.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMApp.h @@ -23,7 +23,7 @@ RLM_HEADER_AUDIT_BEGIN(nullability, sendability) @protocol RLMNetworkTransport, RLMBSON; -@class RLMUser, RLMCredentials, RLMSyncManager, RLMEmailPasswordAuth, RLMPushClient; +@class RLMUser, RLMCredentials, RLMSyncManager, RLMEmailPasswordAuth, RLMPushClient, RLMSyncTimeoutOptions; /// A block type used for APIs which asynchronously vend an `RLMUser`. typedef void(^RLMUserCompletionBlock)(RLMUser * _Nullable, NSError * _Nullable); @@ -35,7 +35,7 @@ typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); /// Properties representing the configuration of a client /// that communicate with a particular Realm application. -@interface RLMAppConfiguration : NSObject +@interface RLMAppConfiguration : NSObject /// A custom base URL to request against. @property (nonatomic, strong, nullable) NSString *baseURL; @@ -43,41 +43,67 @@ typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); /// The custom transport for network calls to the server. @property (nonatomic, strong, nullable) id transport; -/// A custom app name. -@property (nonatomic, strong, nullable) NSString *localAppName; - -/// A custom app version. -@property (nonatomic, strong, nullable) NSString *localAppVersion; +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppName + __attribute__((deprecated("This field is not used"))); +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppVersion + __attribute__((deprecated("This field is not used"))); /// The default timeout for network requests. @property (nonatomic, assign) NSUInteger defaultRequestTimeoutMS; +/// If enabled (the default), a single connection is used for all Realms opened +/// with a single sync user. If disabled, a separate connection is used for each +/// Realm. +/// +/// Session multiplexing reduces resources used and typically improves +/// performance. When multiplexing is enabled, the connection is not immediately +/// closed when the last session is closed, and instead remains open for +/// ``RLMSyncTimeoutOptions.connectionLingerTime`` milliseconds (30 seconds by +/// default). +@property (nonatomic, assign) BOOL enableSessionMultiplexing; + +/** + Options for the assorted types of connection timeouts for sync connections. + + If nil default values for all timeouts are used instead. + */ +@property (nonatomic, nullable, copy) RLMSyncTimeoutOptions *syncTimeouts; + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *)baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *) baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion + defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + /** Create a new Realm App configuration. @param baseURL A custom base URL to request against. @param transport A custom network transport. -@param localAppName A custom app name. -@param localAppVersion A custom app version. */ - (instancetype)initWithBaseURL:(nullable NSString *)baseURL - transport:(nullable id)transport - localAppName:(nullable NSString *)localAppName - localAppVersion:(nullable NSString *)localAppVersion; + transport:(nullable id)transport; /** Create a new Realm App configuration. @param baseURL A custom base URL to request against. @param transport A custom network transport. - @param localAppName A custom app name. - @param localAppVersion A custom app version. @param defaultRequestTimeoutMS A custom default timeout for network requests. */ - (instancetype)initWithBaseURL:(nullable NSString *) baseURL transport:(nullable id)transport - localAppName:(nullable NSString *)localAppName - localAppVersion:(nullable NSString *)localAppVersion defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS; @end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMDictionary.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMDictionary.h index 99f98b92a..9c8cac538 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMDictionary.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMDictionary.h @@ -40,6 +40,8 @@ RLM_HEADER_AUDIT_BEGIN(nullability, sendability) `RLMDictionary`s cannot be created directly. `RLMDictionary` properties on `RLMObject`s are lazily created when accessed, or can be obtained by querying a Realm. + `RLMDictionary` only supports `NSString` as a key. Realm disallows the use of `.` or `$` characters within a dictionary key. + ### Key-Value Observing `RLMDictionary` supports dictionary key-value observing on `RLMDictionary` properties on `RLMObject` diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMError.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMError.h index 795361b2b..514ceee3f 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMError.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMError.h @@ -265,13 +265,7 @@ typedef RLM_ERROR_ENUM(NSInteger, RLMSyncError, RLMSyncErrorDomain) { */ RLMSyncErrorClientResetError = 7, - /** - An error that indicates an authentication error occurred. - - The `kRLMSyncUnderlyingErrorKey` key in the user info dictionary will contain the - underlying error, which is guaranteed to be under the `RLMSyncAuthErrorDomain` - error domain. - */ + /// :nodoc: RLMSyncErrorUnderlyingAuthError = 8, /** @@ -314,56 +308,53 @@ typedef RLM_ERROR_ENUM(NSInteger, RLMSyncError, RLMSyncErrorDomain) { This error is informational and does not require any explicit handling. */ RLMSyncErrorWriteRejected = 11, + + /** + A connection error without a more specific error code occurred. + + Realm internally handles retrying connections with appropriate backoffs, + so connection errors are normally logged and not reported to the error + handler. The exception is if + ``RLMSyncConfiguration.cancelAsyncOpenOnNonFatalErrors`` is set to `true`, + in which case async opens will be canceled on connection failures and the + error will be reported to the completion handler. + + Note that connection timeouts are reported as + (errorDomain: NSPosixErrorDomain, error: ETIMEDOUT) + and not as one of these error codes. + */ + RLMSyncErrorConnectionFailed = 12, + + /** + Connecting to the server failed due to a TLS issue such as an invalid certificate. + */ + RLMSyncErrorTLSHandshakeFailed = 13, }; #pragma mark - RLMSyncAuthError -/// An error which is related to authentication to Atlas App Services. +// NEXT-MAJOR: This was a ROS thing and should have been removed in v10 +/// :nodoc: typedef RLM_ERROR_ENUM(NSInteger, RLMSyncAuthError, RLMSyncAuthErrorDomain) { - /// An error that indicates that the response received from the authentication server was malformed. RLMSyncAuthErrorBadResponse = 1, - - /// An error that indicates that the supplied Realm path was invalid, or could not be resolved by the authentication - /// server. RLMSyncAuthErrorBadRemoteRealmPath = 2, - - /// An error that indicates that the response received from the authentication server was an HTTP error code. The - /// `userInfo` dictionary contains the actual error code value. RLMSyncAuthErrorHTTPStatusCodeError = 3, - - /// An error that indicates a problem with the session (a specific Realm opened for sync). RLMSyncAuthErrorClientSessionError = 4, - - /// An error that indicates that the provided credentials are ill-formed. RLMSyncAuthErrorInvalidParameters = 601, - - /// An error that indicates that no Realm path was included in the URL. RLMSyncAuthErrorMissingPath = 602, - - /// An error that indicates that the provided credentials are invalid. RLMSyncAuthErrorInvalidCredential = 611, - - /// An error that indicates that the user with provided credentials does not exist. RLMSyncAuthErrorUserDoesNotExist = 612, - - /// An error that indicates that the user cannot be registered as it exists already. RLMSyncAuthErrorUserAlreadyExists = 613, - - /// An error that indicates the path is invalid or the user doesn't have access to that Realm. RLMSyncAuthErrorAccessDeniedOrInvalidPath = 614, - - /// An error that indicates the refresh token was invalid. RLMSyncAuthErrorInvalidAccessToken = 615, - - /// An error that indicates the file at the given path can't be shared. RLMSyncAuthErrorFileCannotBeShared = 703, -}; +} __attribute__((deprecated("Errors of this type are no longer reported"))); #pragma mark - RLMSyncAppError /// An error which occurred when making a request to Atlas App Services. typedef RLM_ERROR_ENUM(NSInteger, RLMAppError, RLMAppErrorDomain) { - /// An unknown error has occured + /// An unknown error has occurred RLMAppErrorUnknown = -1, /// A HTTP request completed with an error status code. The failing status diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMMongoDatabase.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMMongoDatabase.h index f700cb87a..177fbc1b8 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMMongoDatabase.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMMongoDatabase.h @@ -44,6 +44,7 @@ RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class /// @param name The name of the collection to return /// @returns The collection - (RLMMongoCollection *)collectionWithName:(NSString *)name; +// NEXT-MAJOR: NS_SWIFT_NAME(collection(named:)) @end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMPlatform.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMPlatform.h deleted file mode 100644 index 2652b2107..000000000 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMPlatform.h +++ /dev/null @@ -1,46 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// -// Copyright 2014 Realm Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////// - -#ifdef REALM_BUILDING_FOR_MACOS -#if !__is_target_os(macosx) -#error Attempting to use Realm's macOS framework in a non-macOS target. -#endif -#endif - -#ifdef REALM_BUILDING_FOR_MACCATALYST -#if !__is_target_os(ios) || !__is_target_environment(macabi) -#error Attempting to use Realm's Catalyst framework in a non-Catalyst target. -#endif -#endif - -#ifdef REALM_BUILDING_FOR_IOS -#if !__is_target_os(ios) || __is_target_environment(macabi) -#error Attempting to use Realm's iOS framework in a non-iOS target. -#endif -#endif - -#if !__is_target_os(tvos) -#error Attempting to use Realm's tvOS framework in a non-tvOS target. -#endif - -#ifdef REALM_BUILDING_FOR_WATCHOS -#if !__is_target_os(watchos) -#error Attempting to use Realm's watchOS framework in a non-watchOS target. -#endif -#endif -#define REALM_IOPLATFORMUUID @"" diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncManager.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncManager.h index d130ebaff..1dee453d0 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncManager.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncManager.h @@ -50,7 +50,7 @@ typedef RLM_CLOSED_ENUM(NSUInteger, RLMSyncLogLevel) { /// /// - warning: Will incur a measurable performance impact. RLMSyncLogLevelAll -} __attribute__((deprecated("Use `RLMLogLevel`/`LogLevel` instead"))); +}; #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" @@ -218,11 +218,6 @@ __attribute__((deprecated("Use `RLMLogger.default`/`Logger.shared` to set/get th /// /// Defaults to 1 minute. @property (nonatomic) NSUInteger fastReconnectLimit; - -/// The app configuration that has initialized this SyncManager. -/// This can be set multiple times. This gives the SyncManager -/// access to necessary app functionality. -@property (nonatomic, readonly) RLMAppConfiguration *appConfiguration; @end RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/Realm.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/Realm.h index 0f980e1b3..245596393 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/Realm.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Headers/Realm.h @@ -29,7 +29,6 @@ #import #import #import -#import #import #import #import diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Info.plist index 1231dee72..8f9a11cd1 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Info.plist and b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Info.plist differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Modules/module.modulemap b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Modules/module.modulemap index ed5e7fee2..519ddc20b 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Modules/module.modulemap +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Modules/module.modulemap @@ -13,7 +13,6 @@ framework module Realm { header "RLMObject.h" header "RLMObjectId.h" header "RLMObjectSchema.h" - header "RLMPlatform.h" header "RLMProperty.h" header "RLMProviderClient.h" header "RLMRealm+Sync.h" diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMApp_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMApp_Private.h index ea52e9715..5da5c3c7a 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMApp_Private.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMApp_Private.h @@ -36,15 +36,15 @@ typedef void(^RLMAppNotificationBlock)(RLMApp *); /// Subscribe to notifications for this RLMApp. - (RLMAppSubscriptionToken *)subscribe:(RLMAppNotificationBlock)block; -+ (instancetype)appWithId:(NSString *)appId - configuration:(nullable RLMAppConfiguration *)configuration - rootDirectory:(nullable NSURL *)rootDirectory; - -+ (instancetype)uncachedAppWithId:(NSString *)appId - configuration:(RLMAppConfiguration *)configuration - rootDirectory:(nullable NSURL *)rootDirectory; ++ (instancetype)appWithConfiguration:(RLMAppConfiguration *)configuration; + (void)resetAppCache; @end +@interface RLMAppConfiguration () +@property (nonatomic) NSString *appId; +@property (nonatomic) BOOL encryptMetadata; +@property (nonatomic) NSURL *rootDirectory; +@end + RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h index cee1e7fca..3cce89441 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h @@ -18,7 +18,7 @@ #import -#import +#import "RLMRealm_Private.h" RLM_HEADER_AUDIT_BEGIN(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectStore.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectStore.h index 69443c965..6045f1e8e 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectStore.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectStore.h @@ -92,7 +92,7 @@ RLMObjectBase *RLMObjectFromObjLink(RLMRealm *realm, // Create accessors RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, int64_t key) NS_RETURNS_RETAINED; -RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, realm::Obj&& obj) NS_RETURNS_RETAINED; +RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, const realm::Obj& obj) NS_RETURNS_RETAINED; #endif RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Realm b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Realm index 1f7ecc31f..04c592cb6 100755 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Realm and b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/Realm differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/_CodeSignature/CodeResources b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/_CodeSignature/CodeResources index 955bcaf1b..bba304ffe 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/_CodeSignature/CodeResources +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/tvos-arm64_x86_64-simulator/Realm.framework/_CodeSignature/CodeResources @@ -6,7 +6,7 @@ CHANGELOG.md - Y8GU8qLvT58gIcC07I5ct6f15yQ= + Zv1aE8lgTnRPKTg4+FZa+hYQQNM= Headers/NSError+RLMSync.h @@ -18,7 +18,7 @@ Headers/RLMApp.h - 6RyMP6TBnOUmBDH2QMQUojyINrk= + Ld28y6nHFgdYCwgko5F6L9mRTCc= Headers/RLMArray.h @@ -54,7 +54,7 @@ Headers/RLMDictionary.h - 7XBEThemlgTLK/fjIZZRYBBY0mw= + J4dcvrLymwvq7wa1sgBJejF2lnk= Headers/RLMEmailPasswordAuth.h @@ -66,7 +66,7 @@ Headers/RLMError.h - 5x4rLGEjGLOQkkDsTvH34k/NNUo= + f/fmbab1ht8EdLMSS3f0NXW1ejg= Headers/RLMFindOneAndModifyOptions.h @@ -94,7 +94,7 @@ Headers/RLMMongoDatabase.h - O7qUDn3s7yS4uxFaQz4juTrU+HY= + 0+ymiybJvLDiWbH4UgOpF5kK7JA= Headers/RLMNetworkTransport.h @@ -120,10 +120,6 @@ yasl78Lq+PvN6f/sBDQAG9IiiwU= - Headers/RLMPlatform.h - - SO7Rli3lPyvxrINeyVGQZarLPYo= - Headers/RLMProperty.h QyE/WKZTEZokOC4HNpIuGWTo3V8= @@ -182,7 +178,7 @@ Headers/RLMSyncManager.h - mXu4dAftvdZCFzVS3ez+96Ek15E= + YkhlSPT2hNZyA//Lf07+5rkaTsc= Headers/RLMSyncSession.h @@ -214,11 +210,11 @@ Headers/Realm.h - 3mbp9c9/HFfHwbrysBEt9iCljqo= + fDREEG2URHEbKjZ2nfKq+7M/7m8= Info.plist - N7j1LOmIzvjiBg+ArZ7OpJm7AiY= + jC4ntFip62i8jcuIoMVm9yp7Z4k= LICENSE @@ -226,7 +222,7 @@ Modules/module.modulemap - qh0tedLfxDFRk+f7aR8LrPdUIRQ= + A28J5rfl2ooZX6nLmKAtWsKyoFg= PrivateHeaders/RLMAccessor.h @@ -234,7 +230,7 @@ PrivateHeaders/RLMApp_Private.h - /TYV5cyQTqtxO1CaqCz8NYEPKiA= + fw57ZhMCNGsWCpB/lCMaKqf0gek= PrivateHeaders/RLMArray_Private.h @@ -242,7 +238,7 @@ PrivateHeaders/RLMAsyncTask_Private.h - LGxSKo8pzwcfSmd1xrmd0iwKHoc= + ayc2eXD44f0/BptRlmZc+ocrzs8= PrivateHeaders/RLMBSON_Private.hpp @@ -282,7 +278,7 @@ PrivateHeaders/RLMObjectStore.h - yzumEKtFJ7A507jAYkj8Z/DGG0I= + LH3NYAHYk37ukx3w36l3VfRkWLY= PrivateHeaders/RLMObject_Private.h @@ -351,7 +347,7 @@ hash2 - YkS7d92nc1CbgkrNj49UJRdpGfHZ4B4jOg0AqFE9EHo= + wt8p9tw4OPVj/LtpO9d+DXFoOnRQ6hRaxf/hS2NxDRg= Headers/NSError+RLMSync.h @@ -372,7 +368,7 @@ hash2 - uLD2KqwHxLTJ/f9mMDT52TZw6QqpvJeb6plXQI4/f1o= + fmHB8oywmfycQqOzXoYB99LpOLE7akGn0ZrJtqviiTs= Headers/RLMArray.h @@ -435,7 +431,7 @@ hash2 - I0iusExV7YvVkdt6MHXOAwNHJ2iVzHJciY0geWG3g5A= + 7zN2nXgEwGfrPRtbgqtfoLrwJbwqohcVvU/OyA/07Lk= Headers/RLMEmailPasswordAuth.h @@ -456,7 +452,7 @@ hash2 - OWjWlN8fXFm/L0glkTwwiNA7HP2SqXfp++r0dCTxccI= + 6duvM3p0FRf6fZ+aS57vHkf7WvV1KPoz7PcIZA48WTU= Headers/RLMFindOneAndModifyOptions.h @@ -505,7 +501,7 @@ hash2 - eMx63OF3EFRqAGsLMEXvv+y0YnKqWOB1RiyzlyW2+IE= + wnJWmMW0z3xO9KVRJKpiE+xkaKkzXBXiH5j+8eaFmcA= Headers/RLMNetworkTransport.h @@ -550,13 +546,6 @@ 8oCJihoGgigIF170SRk/yU5RLDNX9TYQUrXxLjYrtuM= - Headers/RLMPlatform.h - - hash2 - - QTJ/H5fylGP8eHUifgb6M7yMr2yYQGMmVQjVWqP6R9s= - - Headers/RLMProperty.h hash2 @@ -659,7 +648,7 @@ hash2 - mdAe8l7XifP7CmhttYUKNJxUfRFiL6vb+MRO2sXIqpo= + rFV4QDsBonA29YqdZXsYhNSVewEYkrafSLPWBGaEhqI= Headers/RLMSyncSession.h @@ -715,7 +704,7 @@ hash2 - XojGXRDQANLfoU7VwvyqGGmZmf/oNUXjRNXzxcxJZEA= + kjoP0TvFhg49q7sxVEgPoNFg+zqo9bCE2Uh0YOpDpbE= LICENSE @@ -729,7 +718,7 @@ hash2 - UDqXkLimJ+9qpDCcsMjIqR5Qsd7iEaavhqi8J7iEBhI= + KdpbsAGrxax/jx81TZ93YswnCwT1BZTor6VwIHvgRUs= PrivateHeaders/RLMAccessor.h @@ -743,7 +732,7 @@ hash2 - 6KWA9yC7TNQAvVa3VI9qPhSnV6DWxJZkFJHCIRX49u4= + 4pd3636NRX7kQgsEy7dv7IQH/AyZMKjQvA2nmK97Vq0= PrivateHeaders/RLMArray_Private.h @@ -757,7 +746,7 @@ hash2 - iKrJ9TGXoc8UTr44+s8a0yCnhaJeVQNs0mLKA5yBfRs= + vD90SYI5658JDp88stHbsxALdVNhs0Tojcld9hVORHE= PrivateHeaders/RLMBSON_Private.hpp @@ -827,7 +816,7 @@ hash2 - glcepASGexcV1kvpkZeXGcPrdsuxPgyj7HNo6RMGNuQ= + 0KjmazUjg/mYvymGTJ74ChBgvrqN2Lc9O0TqcYF/Mic= PrivateHeaders/RLMObject_Private.h diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/CHANGELOG.md b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/CHANGELOG.md index bccff1d05..00cc01244 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/CHANGELOG.md +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/CHANGELOG.md @@ -1,3 +1,222 @@ +10.42.3 Release notes (2023-09-18) +============================================================= + +### Enhancements + +* Update packaging for the Xcode 15.0 release. Carthage release and obj-c + binaries are now built with Xcode 15. + +### Fixed + +* The prebuilt Realm.xcframework for SPM was packaged incorrectly and did not + work ([#8361](https://github.com/realm/realm-swift/issues/8361), since v10.42.1). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 15.0.0. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15.0.0. + +10.42.2 Release notes (2023-09-13) +============================================================= + +### Enhancements + +* Add support for logging messages sent by the server. + ([Core #6476](https://github.com/realm/realm-core/pull/6476)) +* Unknown protocol errors received from the baas server will no longer cause + the application to crash if a valid error action is also received. Unknown + error actions will be treated as an ApplicationBug error action and will + cause sync to fail with an error via the sync error handler. + ([Core #6885](https://github.com/realm/realm-core/pull/6885)) +* Some sync error messages now contain more information about what went wrong. + +### Fixed + +* The `MultipleSyncAgents` exception from opening a synchronized Realm in + multiple processes at once no longer leaves the sync client in an invalid + state. ([Core #6868](https://github.com/realm/realm-core/pull/6868), since v10.36.0) +* Testing the size of a collection of links against zero would sometimes fail + (sometimes = "difficult to explain"). In particular: + ([Core #6850](https://github.com/realm/realm-core/issues/6850), since v10.41.0) +* When async writes triggered a file compaction some internal state could be + corrupted, leading to later crashes in the slab allocator. This typically + resulted in the "ref + size <= next->first" assertion failure, but other + failures were possible. Many issues reported; see [Core #6340](https://github.com/realm/realm-core/issues/6340). + (since 10.35.0) +* `Realm.Configuration.maximumNumberOfActiveVersions` now handles intermediate + versions which have been cleaned up correctly and checks the number of live + versions rather than the number of versions between the oldest live version + and current version (since 10.35.0). +* If the client disconnected between uploading a change to flexible sync + subscriptions and receiving the new object data from the server resulting + from that subscription change, the next connection to the server would + sometimes result in a client reset + ([Core #6966](https://github.com/realm/realm-core/issues/6966), since v10.21.1). + +### Deprecations + +* `RLMApp` has `localAppName` and `localAppVersion` fields which never ended up + being used for anything and are now deprecated. +* `RLMSyncAuthError` has not been used since v10.0.0 and is now deprecated. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +### Internal + +* Upgraded realm-core from 13.17.1 to 13.20.1 + +10.42.1 Release notes (2023-08-28) +============================================================= + +### Fixed + +* The names of the prebuilt zips for SPM have changed to avoid having Carthage + download them instead of the intended Carthage zip + ([#8326](https://github.com/realm/realm-swift/issues/8326), since v10.42.0). +* The prebuild Realm.xcframework for SwiftPM now has all platforms other than + visionOS built with Xcode 14 to comply with app store rules + ([#8339](https://github.com/realm/realm-swift/issues/8339), since 10.42.0). +* Fix visionOS compilation with Xcode beta 7. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +10.42.0 Release notes (2023-07-30) +============================================================= + +### Enhancements + +* Add support for building for visionOS and add Xcode 15 binaries to the + release package. visionOS currently requires installing Realm via either + Swift Package Manager or by using a XCFramework as CocoaPods and Carthage do + not yet support it. +* Zips compatible with SPM's `.binaryTarget()` are now published as part of the + releases on Github. +* Prebuilt XCFrameworks are now built with LTO enabled. This has insignificant + performance benefits, but cuts the size of the library by ~15%. + +### Fixed + +* Fix nested properties observation on a `Projections` not notifying when there is a property change. + ([#8276](https://github.com/realm/realm-swift/issues/8276), since v10.34.0). +* Fix undefined symbol error for `UIKit` when linking Realm to a framework using SPM. + ([#8308](https://github.com/realm/realm-swift/issues/8308), since v10.41.0) +* If the app crashed at exactly the wrong time while opening a freshly + compacted Realm the file could be left in an invalid state + ([Core #6807](https://github.com/realm/realm-core/pull/6807), since v10.33.0). +* Sync progress for DOWNLOAD messages was sometimes stored incorrectly, + resulting in an extra round trip to the server. + ([Core #6827](https://github.com/realm/realm-core/issues/6827), since v10.31.0) + +### Breaking Changes + +* Legacy non-xcframework Carthage installations are no longer supported. Please + ensure you are using `--use-xcframeworks` if installing via Carthage. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 5. + +### Internal + +* Upgraded realm-core from 13.17.0 to 13.17.1 +* Release packages were being uploaded to several static.realm.io URLs which + are no longer linked to anywhere. These are no longer being updated, and + release packages are now only being uploaded to Github. + +10.41.1 Release notes (2023-07-17) +============================================================= + +### Enhancements + +* Filesystem errors now include more information in the error message. +* Sync connection and session reconnect timing/backoff logic has been reworked + and unified into a single implementation. Previously some categories of errors + would cause an hour-long wait before attempting to reconnect, while others + would use an exponential backoff strategy. All errors now result in the sync + client waiting for 1 second before retrying, doubling the wait after each + subsequent failure up to a maximum of five minutes. If the cause of the error + changes, the backoff will be reset. If the sync client voluntarily disconnects, + no backoff will be used. ([Core #6526]((https://github.com/realm/realm-core/pull/6526))) + +### Fixed + +* Removed warnings for deprecated APIs internal use. + ([#8251](https://github.com/realm/realm-swift/issues/8251), since v10.39.0) +* Fix an error during async open and client reset if properties have been added + to the schema. This fix also applies to partition-based to flexible sync + migration if async open is used. ([Core #6707](https://github.com/realm/realm-core/issues/6707), since v10.28.2) + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 4. + +### Internal + +* Upgraded realm-core from 13.15.1 to 13.17.0 +* The location where prebuilt core binaries are published has changed slightly. + If you are using `REALM_BASE_URL` to mirror the binaries, you may need to + adjust your mirroring logic. + +10.41.0 Release notes (2023-06-26) +============================================================= + +### Enhancements + +* Add support for multiplexing sync connections. When enabled (the default), a single + connection is used per sync user rather than one per synchronized Realm. This + reduces resource consumption when multiple Realms are opened and will + typically improve performance ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). +* Sync timeout options can now be set on `RLMAppConfiguration` along with the + other app-wide configuration settings ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Fixed + +* Import as `RLMRealm_Private.h` as a module would cause issues when using Realm as a subdependency. + ([#8164](https://github.com/realm/realm-swift/issues/8164), since 10.37.0) +* Disable setting a custom logger by default on the sync client when the sync manager is created. + This was overriding the default logger set using `RLMLogger.defaultLogger`. (since v10.39.0). + +### Breaking Changes + +* The `RLMSyncTimeouts.appConfiguration` property has been removed. This was an + unimplemented read-only property which did not make any sense on the + containing type ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 2. + +### Internal + +* Upgraded realm-core from 13.15.0 to 13.15.1 + 10.40.2 Release notes (2023-06-09) ============================================================= @@ -15,7 +234,7 @@ * If the order of properties in the local class definitions did not match the order in the server-side schema, the before-reset Realm argument passed to a client reset handler would have an invalid schema and likely crash if any - data was read from it. ([Core 6693](https://github.com/realm/realm-core/issues/6693), since v10.40.0) + data was read from it. ([Core #6693](https://github.com/realm/realm-core/issues/6693), since v10.40.0) ### Compatibility @@ -27,7 +246,7 @@ ### Internal -* Upgraded realm-core from 13.13.0 to 13.16.0. +* Upgraded realm-core from 13.13.0 to 13.15.0. * The prebuilt library used for CocoaPods installations is now built with Xcode 14. This should not have any observable effects other than the download being much smaller due to no longer including bitcode. @@ -3870,10 +4089,6 @@ This release also contains all changes from 5.3.2. * Realm Studio: 10.0.0 or later. * Carthage release for Swift is built with Xcode 11.5. -### Internal -* Upgraded realm-core from ? to ? -* Upgraded realm-sync from ? to ? - 10.0.0-beta.2 Release notes (2020-06-09) ============================================================= Xcode 11.3 and iOS 9 are now the minimum supported versions. diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMApp.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMApp.h index 3aa02c5e1..2228232e8 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMApp.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMApp.h @@ -23,7 +23,7 @@ RLM_HEADER_AUDIT_BEGIN(nullability, sendability) @protocol RLMNetworkTransport, RLMBSON; -@class RLMUser, RLMCredentials, RLMSyncManager, RLMEmailPasswordAuth, RLMPushClient; +@class RLMUser, RLMCredentials, RLMSyncManager, RLMEmailPasswordAuth, RLMPushClient, RLMSyncTimeoutOptions; /// A block type used for APIs which asynchronously vend an `RLMUser`. typedef void(^RLMUserCompletionBlock)(RLMUser * _Nullable, NSError * _Nullable); @@ -35,7 +35,7 @@ typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); /// Properties representing the configuration of a client /// that communicate with a particular Realm application. -@interface RLMAppConfiguration : NSObject +@interface RLMAppConfiguration : NSObject /// A custom base URL to request against. @property (nonatomic, strong, nullable) NSString *baseURL; @@ -43,41 +43,67 @@ typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); /// The custom transport for network calls to the server. @property (nonatomic, strong, nullable) id transport; -/// A custom app name. -@property (nonatomic, strong, nullable) NSString *localAppName; - -/// A custom app version. -@property (nonatomic, strong, nullable) NSString *localAppVersion; +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppName + __attribute__((deprecated("This field is not used"))); +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppVersion + __attribute__((deprecated("This field is not used"))); /// The default timeout for network requests. @property (nonatomic, assign) NSUInteger defaultRequestTimeoutMS; +/// If enabled (the default), a single connection is used for all Realms opened +/// with a single sync user. If disabled, a separate connection is used for each +/// Realm. +/// +/// Session multiplexing reduces resources used and typically improves +/// performance. When multiplexing is enabled, the connection is not immediately +/// closed when the last session is closed, and instead remains open for +/// ``RLMSyncTimeoutOptions.connectionLingerTime`` milliseconds (30 seconds by +/// default). +@property (nonatomic, assign) BOOL enableSessionMultiplexing; + +/** + Options for the assorted types of connection timeouts for sync connections. + + If nil default values for all timeouts are used instead. + */ +@property (nonatomic, nullable, copy) RLMSyncTimeoutOptions *syncTimeouts; + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *)baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *) baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion + defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + /** Create a new Realm App configuration. @param baseURL A custom base URL to request against. @param transport A custom network transport. -@param localAppName A custom app name. -@param localAppVersion A custom app version. */ - (instancetype)initWithBaseURL:(nullable NSString *)baseURL - transport:(nullable id)transport - localAppName:(nullable NSString *)localAppName - localAppVersion:(nullable NSString *)localAppVersion; + transport:(nullable id)transport; /** Create a new Realm App configuration. @param baseURL A custom base URL to request against. @param transport A custom network transport. - @param localAppName A custom app name. - @param localAppVersion A custom app version. @param defaultRequestTimeoutMS A custom default timeout for network requests. */ - (instancetype)initWithBaseURL:(nullable NSString *) baseURL transport:(nullable id)transport - localAppName:(nullable NSString *)localAppName - localAppVersion:(nullable NSString *)localAppVersion defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS; @end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMDictionary.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMDictionary.h index 99f98b92a..9c8cac538 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMDictionary.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMDictionary.h @@ -40,6 +40,8 @@ RLM_HEADER_AUDIT_BEGIN(nullability, sendability) `RLMDictionary`s cannot be created directly. `RLMDictionary` properties on `RLMObject`s are lazily created when accessed, or can be obtained by querying a Realm. + `RLMDictionary` only supports `NSString` as a key. Realm disallows the use of `.` or `$` characters within a dictionary key. + ### Key-Value Observing `RLMDictionary` supports dictionary key-value observing on `RLMDictionary` properties on `RLMObject` diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMError.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMError.h index 795361b2b..514ceee3f 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMError.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMError.h @@ -265,13 +265,7 @@ typedef RLM_ERROR_ENUM(NSInteger, RLMSyncError, RLMSyncErrorDomain) { */ RLMSyncErrorClientResetError = 7, - /** - An error that indicates an authentication error occurred. - - The `kRLMSyncUnderlyingErrorKey` key in the user info dictionary will contain the - underlying error, which is guaranteed to be under the `RLMSyncAuthErrorDomain` - error domain. - */ + /// :nodoc: RLMSyncErrorUnderlyingAuthError = 8, /** @@ -314,56 +308,53 @@ typedef RLM_ERROR_ENUM(NSInteger, RLMSyncError, RLMSyncErrorDomain) { This error is informational and does not require any explicit handling. */ RLMSyncErrorWriteRejected = 11, + + /** + A connection error without a more specific error code occurred. + + Realm internally handles retrying connections with appropriate backoffs, + so connection errors are normally logged and not reported to the error + handler. The exception is if + ``RLMSyncConfiguration.cancelAsyncOpenOnNonFatalErrors`` is set to `true`, + in which case async opens will be canceled on connection failures and the + error will be reported to the completion handler. + + Note that connection timeouts are reported as + (errorDomain: NSPosixErrorDomain, error: ETIMEDOUT) + and not as one of these error codes. + */ + RLMSyncErrorConnectionFailed = 12, + + /** + Connecting to the server failed due to a TLS issue such as an invalid certificate. + */ + RLMSyncErrorTLSHandshakeFailed = 13, }; #pragma mark - RLMSyncAuthError -/// An error which is related to authentication to Atlas App Services. +// NEXT-MAJOR: This was a ROS thing and should have been removed in v10 +/// :nodoc: typedef RLM_ERROR_ENUM(NSInteger, RLMSyncAuthError, RLMSyncAuthErrorDomain) { - /// An error that indicates that the response received from the authentication server was malformed. RLMSyncAuthErrorBadResponse = 1, - - /// An error that indicates that the supplied Realm path was invalid, or could not be resolved by the authentication - /// server. RLMSyncAuthErrorBadRemoteRealmPath = 2, - - /// An error that indicates that the response received from the authentication server was an HTTP error code. The - /// `userInfo` dictionary contains the actual error code value. RLMSyncAuthErrorHTTPStatusCodeError = 3, - - /// An error that indicates a problem with the session (a specific Realm opened for sync). RLMSyncAuthErrorClientSessionError = 4, - - /// An error that indicates that the provided credentials are ill-formed. RLMSyncAuthErrorInvalidParameters = 601, - - /// An error that indicates that no Realm path was included in the URL. RLMSyncAuthErrorMissingPath = 602, - - /// An error that indicates that the provided credentials are invalid. RLMSyncAuthErrorInvalidCredential = 611, - - /// An error that indicates that the user with provided credentials does not exist. RLMSyncAuthErrorUserDoesNotExist = 612, - - /// An error that indicates that the user cannot be registered as it exists already. RLMSyncAuthErrorUserAlreadyExists = 613, - - /// An error that indicates the path is invalid or the user doesn't have access to that Realm. RLMSyncAuthErrorAccessDeniedOrInvalidPath = 614, - - /// An error that indicates the refresh token was invalid. RLMSyncAuthErrorInvalidAccessToken = 615, - - /// An error that indicates the file at the given path can't be shared. RLMSyncAuthErrorFileCannotBeShared = 703, -}; +} __attribute__((deprecated("Errors of this type are no longer reported"))); #pragma mark - RLMSyncAppError /// An error which occurred when making a request to Atlas App Services. typedef RLM_ERROR_ENUM(NSInteger, RLMAppError, RLMAppErrorDomain) { - /// An unknown error has occured + /// An unknown error has occurred RLMAppErrorUnknown = -1, /// A HTTP request completed with an error status code. The failing status diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMMongoDatabase.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMMongoDatabase.h index f700cb87a..177fbc1b8 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMMongoDatabase.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMMongoDatabase.h @@ -44,6 +44,7 @@ RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class /// @param name The name of the collection to return /// @returns The collection - (RLMMongoCollection *)collectionWithName:(NSString *)name; +// NEXT-MAJOR: NS_SWIFT_NAME(collection(named:)) @end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMPlatform.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMPlatform.h deleted file mode 100644 index 684181261..000000000 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMPlatform.h +++ /dev/null @@ -1,46 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// -// Copyright 2014 Realm Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////// - -#ifdef REALM_BUILDING_FOR_MACOS -#if !__is_target_os(macosx) -#error Attempting to use Realm's macOS framework in a non-macOS target. -#endif -#endif - -#ifdef REALM_BUILDING_FOR_MACCATALYST -#if !__is_target_os(ios) || !__is_target_environment(macabi) -#error Attempting to use Realm's Catalyst framework in a non-Catalyst target. -#endif -#endif - -#ifdef REALM_BUILDING_FOR_IOS -#if !__is_target_os(ios) || __is_target_environment(macabi) -#error Attempting to use Realm's iOS framework in a non-iOS target. -#endif -#endif - -#ifdef REALM_BUILDING_FOR_TVOS -#if !__is_target_os(tvos) -#error Attempting to use Realm's tvOS framework in a non-tvOS target. -#endif -#endif - -#if !__is_target_os(watchos) -#error Attempting to use Realm's watchOS framework in a non-watchOS target. -#endif -#define REALM_IOPLATFORMUUID @"" diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMSyncManager.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMSyncManager.h index d130ebaff..1dee453d0 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMSyncManager.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/RLMSyncManager.h @@ -50,7 +50,7 @@ typedef RLM_CLOSED_ENUM(NSUInteger, RLMSyncLogLevel) { /// /// - warning: Will incur a measurable performance impact. RLMSyncLogLevelAll -} __attribute__((deprecated("Use `RLMLogLevel`/`LogLevel` instead"))); +}; #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" @@ -218,11 +218,6 @@ __attribute__((deprecated("Use `RLMLogger.default`/`Logger.shared` to set/get th /// /// Defaults to 1 minute. @property (nonatomic) NSUInteger fastReconnectLimit; - -/// The app configuration that has initialized this SyncManager. -/// This can be set multiple times. This gives the SyncManager -/// access to necessary app functionality. -@property (nonatomic, readonly) RLMAppConfiguration *appConfiguration; @end RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/Realm.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/Realm.h index 0f980e1b3..245596393 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/Realm.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Headers/Realm.h @@ -29,7 +29,6 @@ #import #import #import -#import #import #import #import diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Info.plist index 600169ea1..1647166d5 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Info.plist and b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Info.plist differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Modules/module.modulemap b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Modules/module.modulemap index ed5e7fee2..519ddc20b 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Modules/module.modulemap +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Modules/module.modulemap @@ -13,7 +13,6 @@ framework module Realm { header "RLMObject.h" header "RLMObjectId.h" header "RLMObjectSchema.h" - header "RLMPlatform.h" header "RLMProperty.h" header "RLMProviderClient.h" header "RLMRealm+Sync.h" diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/PrivateHeaders/RLMApp_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/PrivateHeaders/RLMApp_Private.h index ea52e9715..5da5c3c7a 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/PrivateHeaders/RLMApp_Private.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/PrivateHeaders/RLMApp_Private.h @@ -36,15 +36,15 @@ typedef void(^RLMAppNotificationBlock)(RLMApp *); /// Subscribe to notifications for this RLMApp. - (RLMAppSubscriptionToken *)subscribe:(RLMAppNotificationBlock)block; -+ (instancetype)appWithId:(NSString *)appId - configuration:(nullable RLMAppConfiguration *)configuration - rootDirectory:(nullable NSURL *)rootDirectory; - -+ (instancetype)uncachedAppWithId:(NSString *)appId - configuration:(RLMAppConfiguration *)configuration - rootDirectory:(nullable NSURL *)rootDirectory; ++ (instancetype)appWithConfiguration:(RLMAppConfiguration *)configuration; + (void)resetAppCache; @end +@interface RLMAppConfiguration () +@property (nonatomic) NSString *appId; +@property (nonatomic) BOOL encryptMetadata; +@property (nonatomic) NSURL *rootDirectory; +@end + RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h index cee1e7fca..3cce89441 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h @@ -18,7 +18,7 @@ #import -#import +#import "RLMRealm_Private.h" RLM_HEADER_AUDIT_BEGIN(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/PrivateHeaders/RLMObjectStore.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/PrivateHeaders/RLMObjectStore.h index 69443c965..6045f1e8e 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/PrivateHeaders/RLMObjectStore.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/PrivateHeaders/RLMObjectStore.h @@ -92,7 +92,7 @@ RLMObjectBase *RLMObjectFromObjLink(RLMRealm *realm, // Create accessors RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, int64_t key) NS_RETURNS_RETAINED; -RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, realm::Obj&& obj) NS_RETURNS_RETAINED; +RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, const realm::Obj& obj) NS_RETURNS_RETAINED; #endif RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Realm b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Realm index 60c295118..49fb4952a 100755 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Realm and b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_arm64_32_armv7k/Realm.framework/Realm differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/CHANGELOG.md b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/CHANGELOG.md index bccff1d05..00cc01244 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/CHANGELOG.md +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/CHANGELOG.md @@ -1,3 +1,222 @@ +10.42.3 Release notes (2023-09-18) +============================================================= + +### Enhancements + +* Update packaging for the Xcode 15.0 release. Carthage release and obj-c + binaries are now built with Xcode 15. + +### Fixed + +* The prebuilt Realm.xcframework for SPM was packaged incorrectly and did not + work ([#8361](https://github.com/realm/realm-swift/issues/8361), since v10.42.1). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 15.0.0. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15.0.0. + +10.42.2 Release notes (2023-09-13) +============================================================= + +### Enhancements + +* Add support for logging messages sent by the server. + ([Core #6476](https://github.com/realm/realm-core/pull/6476)) +* Unknown protocol errors received from the baas server will no longer cause + the application to crash if a valid error action is also received. Unknown + error actions will be treated as an ApplicationBug error action and will + cause sync to fail with an error via the sync error handler. + ([Core #6885](https://github.com/realm/realm-core/pull/6885)) +* Some sync error messages now contain more information about what went wrong. + +### Fixed + +* The `MultipleSyncAgents` exception from opening a synchronized Realm in + multiple processes at once no longer leaves the sync client in an invalid + state. ([Core #6868](https://github.com/realm/realm-core/pull/6868), since v10.36.0) +* Testing the size of a collection of links against zero would sometimes fail + (sometimes = "difficult to explain"). In particular: + ([Core #6850](https://github.com/realm/realm-core/issues/6850), since v10.41.0) +* When async writes triggered a file compaction some internal state could be + corrupted, leading to later crashes in the slab allocator. This typically + resulted in the "ref + size <= next->first" assertion failure, but other + failures were possible. Many issues reported; see [Core #6340](https://github.com/realm/realm-core/issues/6340). + (since 10.35.0) +* `Realm.Configuration.maximumNumberOfActiveVersions` now handles intermediate + versions which have been cleaned up correctly and checks the number of live + versions rather than the number of versions between the oldest live version + and current version (since 10.35.0). +* If the client disconnected between uploading a change to flexible sync + subscriptions and receiving the new object data from the server resulting + from that subscription change, the next connection to the server would + sometimes result in a client reset + ([Core #6966](https://github.com/realm/realm-core/issues/6966), since v10.21.1). + +### Deprecations + +* `RLMApp` has `localAppName` and `localAppVersion` fields which never ended up + being used for anything and are now deprecated. +* `RLMSyncAuthError` has not been used since v10.0.0 and is now deprecated. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +### Internal + +* Upgraded realm-core from 13.17.1 to 13.20.1 + +10.42.1 Release notes (2023-08-28) +============================================================= + +### Fixed + +* The names of the prebuilt zips for SPM have changed to avoid having Carthage + download them instead of the intended Carthage zip + ([#8326](https://github.com/realm/realm-swift/issues/8326), since v10.42.0). +* The prebuild Realm.xcframework for SwiftPM now has all platforms other than + visionOS built with Xcode 14 to comply with app store rules + ([#8339](https://github.com/realm/realm-swift/issues/8339), since 10.42.0). +* Fix visionOS compilation with Xcode beta 7. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +10.42.0 Release notes (2023-07-30) +============================================================= + +### Enhancements + +* Add support for building for visionOS and add Xcode 15 binaries to the + release package. visionOS currently requires installing Realm via either + Swift Package Manager or by using a XCFramework as CocoaPods and Carthage do + not yet support it. +* Zips compatible with SPM's `.binaryTarget()` are now published as part of the + releases on Github. +* Prebuilt XCFrameworks are now built with LTO enabled. This has insignificant + performance benefits, but cuts the size of the library by ~15%. + +### Fixed + +* Fix nested properties observation on a `Projections` not notifying when there is a property change. + ([#8276](https://github.com/realm/realm-swift/issues/8276), since v10.34.0). +* Fix undefined symbol error for `UIKit` when linking Realm to a framework using SPM. + ([#8308](https://github.com/realm/realm-swift/issues/8308), since v10.41.0) +* If the app crashed at exactly the wrong time while opening a freshly + compacted Realm the file could be left in an invalid state + ([Core #6807](https://github.com/realm/realm-core/pull/6807), since v10.33.0). +* Sync progress for DOWNLOAD messages was sometimes stored incorrectly, + resulting in an extra round trip to the server. + ([Core #6827](https://github.com/realm/realm-core/issues/6827), since v10.31.0) + +### Breaking Changes + +* Legacy non-xcframework Carthage installations are no longer supported. Please + ensure you are using `--use-xcframeworks` if installing via Carthage. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 5. + +### Internal + +* Upgraded realm-core from 13.17.0 to 13.17.1 +* Release packages were being uploaded to several static.realm.io URLs which + are no longer linked to anywhere. These are no longer being updated, and + release packages are now only being uploaded to Github. + +10.41.1 Release notes (2023-07-17) +============================================================= + +### Enhancements + +* Filesystem errors now include more information in the error message. +* Sync connection and session reconnect timing/backoff logic has been reworked + and unified into a single implementation. Previously some categories of errors + would cause an hour-long wait before attempting to reconnect, while others + would use an exponential backoff strategy. All errors now result in the sync + client waiting for 1 second before retrying, doubling the wait after each + subsequent failure up to a maximum of five minutes. If the cause of the error + changes, the backoff will be reset. If the sync client voluntarily disconnects, + no backoff will be used. ([Core #6526]((https://github.com/realm/realm-core/pull/6526))) + +### Fixed + +* Removed warnings for deprecated APIs internal use. + ([#8251](https://github.com/realm/realm-swift/issues/8251), since v10.39.0) +* Fix an error during async open and client reset if properties have been added + to the schema. This fix also applies to partition-based to flexible sync + migration if async open is used. ([Core #6707](https://github.com/realm/realm-core/issues/6707), since v10.28.2) + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 4. + +### Internal + +* Upgraded realm-core from 13.15.1 to 13.17.0 +* The location where prebuilt core binaries are published has changed slightly. + If you are using `REALM_BASE_URL` to mirror the binaries, you may need to + adjust your mirroring logic. + +10.41.0 Release notes (2023-06-26) +============================================================= + +### Enhancements + +* Add support for multiplexing sync connections. When enabled (the default), a single + connection is used per sync user rather than one per synchronized Realm. This + reduces resource consumption when multiple Realms are opened and will + typically improve performance ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). +* Sync timeout options can now be set on `RLMAppConfiguration` along with the + other app-wide configuration settings ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Fixed + +* Import as `RLMRealm_Private.h` as a module would cause issues when using Realm as a subdependency. + ([#8164](https://github.com/realm/realm-swift/issues/8164), since 10.37.0) +* Disable setting a custom logger by default on the sync client when the sync manager is created. + This was overriding the default logger set using `RLMLogger.defaultLogger`. (since v10.39.0). + +### Breaking Changes + +* The `RLMSyncTimeouts.appConfiguration` property has been removed. This was an + unimplemented read-only property which did not make any sense on the + containing type ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 2. + +### Internal + +* Upgraded realm-core from 13.15.0 to 13.15.1 + 10.40.2 Release notes (2023-06-09) ============================================================= @@ -15,7 +234,7 @@ * If the order of properties in the local class definitions did not match the order in the server-side schema, the before-reset Realm argument passed to a client reset handler would have an invalid schema and likely crash if any - data was read from it. ([Core 6693](https://github.com/realm/realm-core/issues/6693), since v10.40.0) + data was read from it. ([Core #6693](https://github.com/realm/realm-core/issues/6693), since v10.40.0) ### Compatibility @@ -27,7 +246,7 @@ ### Internal -* Upgraded realm-core from 13.13.0 to 13.16.0. +* Upgraded realm-core from 13.13.0 to 13.15.0. * The prebuilt library used for CocoaPods installations is now built with Xcode 14. This should not have any observable effects other than the download being much smaller due to no longer including bitcode. @@ -3870,10 +4089,6 @@ This release also contains all changes from 5.3.2. * Realm Studio: 10.0.0 or later. * Carthage release for Swift is built with Xcode 11.5. -### Internal -* Upgraded realm-core from ? to ? -* Upgraded realm-sync from ? to ? - 10.0.0-beta.2 Release notes (2020-06-09) ============================================================= Xcode 11.3 and iOS 9 are now the minimum supported versions. diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMApp.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMApp.h index 3aa02c5e1..2228232e8 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMApp.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMApp.h @@ -23,7 +23,7 @@ RLM_HEADER_AUDIT_BEGIN(nullability, sendability) @protocol RLMNetworkTransport, RLMBSON; -@class RLMUser, RLMCredentials, RLMSyncManager, RLMEmailPasswordAuth, RLMPushClient; +@class RLMUser, RLMCredentials, RLMSyncManager, RLMEmailPasswordAuth, RLMPushClient, RLMSyncTimeoutOptions; /// A block type used for APIs which asynchronously vend an `RLMUser`. typedef void(^RLMUserCompletionBlock)(RLMUser * _Nullable, NSError * _Nullable); @@ -35,7 +35,7 @@ typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); /// Properties representing the configuration of a client /// that communicate with a particular Realm application. -@interface RLMAppConfiguration : NSObject +@interface RLMAppConfiguration : NSObject /// A custom base URL to request against. @property (nonatomic, strong, nullable) NSString *baseURL; @@ -43,41 +43,67 @@ typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); /// The custom transport for network calls to the server. @property (nonatomic, strong, nullable) id transport; -/// A custom app name. -@property (nonatomic, strong, nullable) NSString *localAppName; - -/// A custom app version. -@property (nonatomic, strong, nullable) NSString *localAppVersion; +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppName + __attribute__((deprecated("This field is not used"))); +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppVersion + __attribute__((deprecated("This field is not used"))); /// The default timeout for network requests. @property (nonatomic, assign) NSUInteger defaultRequestTimeoutMS; +/// If enabled (the default), a single connection is used for all Realms opened +/// with a single sync user. If disabled, a separate connection is used for each +/// Realm. +/// +/// Session multiplexing reduces resources used and typically improves +/// performance. When multiplexing is enabled, the connection is not immediately +/// closed when the last session is closed, and instead remains open for +/// ``RLMSyncTimeoutOptions.connectionLingerTime`` milliseconds (30 seconds by +/// default). +@property (nonatomic, assign) BOOL enableSessionMultiplexing; + +/** + Options for the assorted types of connection timeouts for sync connections. + + If nil default values for all timeouts are used instead. + */ +@property (nonatomic, nullable, copy) RLMSyncTimeoutOptions *syncTimeouts; + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *)baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *) baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion + defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + /** Create a new Realm App configuration. @param baseURL A custom base URL to request against. @param transport A custom network transport. -@param localAppName A custom app name. -@param localAppVersion A custom app version. */ - (instancetype)initWithBaseURL:(nullable NSString *)baseURL - transport:(nullable id)transport - localAppName:(nullable NSString *)localAppName - localAppVersion:(nullable NSString *)localAppVersion; + transport:(nullable id)transport; /** Create a new Realm App configuration. @param baseURL A custom base URL to request against. @param transport A custom network transport. - @param localAppName A custom app name. - @param localAppVersion A custom app version. @param defaultRequestTimeoutMS A custom default timeout for network requests. */ - (instancetype)initWithBaseURL:(nullable NSString *) baseURL transport:(nullable id)transport - localAppName:(nullable NSString *)localAppName - localAppVersion:(nullable NSString *)localAppVersion defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS; @end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMDictionary.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMDictionary.h index 99f98b92a..9c8cac538 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMDictionary.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMDictionary.h @@ -40,6 +40,8 @@ RLM_HEADER_AUDIT_BEGIN(nullability, sendability) `RLMDictionary`s cannot be created directly. `RLMDictionary` properties on `RLMObject`s are lazily created when accessed, or can be obtained by querying a Realm. + `RLMDictionary` only supports `NSString` as a key. Realm disallows the use of `.` or `$` characters within a dictionary key. + ### Key-Value Observing `RLMDictionary` supports dictionary key-value observing on `RLMDictionary` properties on `RLMObject` diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMError.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMError.h index 795361b2b..514ceee3f 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMError.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMError.h @@ -265,13 +265,7 @@ typedef RLM_ERROR_ENUM(NSInteger, RLMSyncError, RLMSyncErrorDomain) { */ RLMSyncErrorClientResetError = 7, - /** - An error that indicates an authentication error occurred. - - The `kRLMSyncUnderlyingErrorKey` key in the user info dictionary will contain the - underlying error, which is guaranteed to be under the `RLMSyncAuthErrorDomain` - error domain. - */ + /// :nodoc: RLMSyncErrorUnderlyingAuthError = 8, /** @@ -314,56 +308,53 @@ typedef RLM_ERROR_ENUM(NSInteger, RLMSyncError, RLMSyncErrorDomain) { This error is informational and does not require any explicit handling. */ RLMSyncErrorWriteRejected = 11, + + /** + A connection error without a more specific error code occurred. + + Realm internally handles retrying connections with appropriate backoffs, + so connection errors are normally logged and not reported to the error + handler. The exception is if + ``RLMSyncConfiguration.cancelAsyncOpenOnNonFatalErrors`` is set to `true`, + in which case async opens will be canceled on connection failures and the + error will be reported to the completion handler. + + Note that connection timeouts are reported as + (errorDomain: NSPosixErrorDomain, error: ETIMEDOUT) + and not as one of these error codes. + */ + RLMSyncErrorConnectionFailed = 12, + + /** + Connecting to the server failed due to a TLS issue such as an invalid certificate. + */ + RLMSyncErrorTLSHandshakeFailed = 13, }; #pragma mark - RLMSyncAuthError -/// An error which is related to authentication to Atlas App Services. +// NEXT-MAJOR: This was a ROS thing and should have been removed in v10 +/// :nodoc: typedef RLM_ERROR_ENUM(NSInteger, RLMSyncAuthError, RLMSyncAuthErrorDomain) { - /// An error that indicates that the response received from the authentication server was malformed. RLMSyncAuthErrorBadResponse = 1, - - /// An error that indicates that the supplied Realm path was invalid, or could not be resolved by the authentication - /// server. RLMSyncAuthErrorBadRemoteRealmPath = 2, - - /// An error that indicates that the response received from the authentication server was an HTTP error code. The - /// `userInfo` dictionary contains the actual error code value. RLMSyncAuthErrorHTTPStatusCodeError = 3, - - /// An error that indicates a problem with the session (a specific Realm opened for sync). RLMSyncAuthErrorClientSessionError = 4, - - /// An error that indicates that the provided credentials are ill-formed. RLMSyncAuthErrorInvalidParameters = 601, - - /// An error that indicates that no Realm path was included in the URL. RLMSyncAuthErrorMissingPath = 602, - - /// An error that indicates that the provided credentials are invalid. RLMSyncAuthErrorInvalidCredential = 611, - - /// An error that indicates that the user with provided credentials does not exist. RLMSyncAuthErrorUserDoesNotExist = 612, - - /// An error that indicates that the user cannot be registered as it exists already. RLMSyncAuthErrorUserAlreadyExists = 613, - - /// An error that indicates the path is invalid or the user doesn't have access to that Realm. RLMSyncAuthErrorAccessDeniedOrInvalidPath = 614, - - /// An error that indicates the refresh token was invalid. RLMSyncAuthErrorInvalidAccessToken = 615, - - /// An error that indicates the file at the given path can't be shared. RLMSyncAuthErrorFileCannotBeShared = 703, -}; +} __attribute__((deprecated("Errors of this type are no longer reported"))); #pragma mark - RLMSyncAppError /// An error which occurred when making a request to Atlas App Services. typedef RLM_ERROR_ENUM(NSInteger, RLMAppError, RLMAppErrorDomain) { - /// An unknown error has occured + /// An unknown error has occurred RLMAppErrorUnknown = -1, /// A HTTP request completed with an error status code. The failing status diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMMongoDatabase.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMMongoDatabase.h index f700cb87a..177fbc1b8 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMMongoDatabase.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMMongoDatabase.h @@ -44,6 +44,7 @@ RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class /// @param name The name of the collection to return /// @returns The collection - (RLMMongoCollection *)collectionWithName:(NSString *)name; +// NEXT-MAJOR: NS_SWIFT_NAME(collection(named:)) @end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMPlatform.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMPlatform.h deleted file mode 100644 index 684181261..000000000 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMPlatform.h +++ /dev/null @@ -1,46 +0,0 @@ -//////////////////////////////////////////////////////////////////////////// -// -// Copyright 2014 Realm Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////// - -#ifdef REALM_BUILDING_FOR_MACOS -#if !__is_target_os(macosx) -#error Attempting to use Realm's macOS framework in a non-macOS target. -#endif -#endif - -#ifdef REALM_BUILDING_FOR_MACCATALYST -#if !__is_target_os(ios) || !__is_target_environment(macabi) -#error Attempting to use Realm's Catalyst framework in a non-Catalyst target. -#endif -#endif - -#ifdef REALM_BUILDING_FOR_IOS -#if !__is_target_os(ios) || __is_target_environment(macabi) -#error Attempting to use Realm's iOS framework in a non-iOS target. -#endif -#endif - -#ifdef REALM_BUILDING_FOR_TVOS -#if !__is_target_os(tvos) -#error Attempting to use Realm's tvOS framework in a non-tvOS target. -#endif -#endif - -#if !__is_target_os(watchos) -#error Attempting to use Realm's watchOS framework in a non-watchOS target. -#endif -#define REALM_IOPLATFORMUUID @"" diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMSyncManager.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMSyncManager.h index d130ebaff..1dee453d0 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMSyncManager.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/RLMSyncManager.h @@ -50,7 +50,7 @@ typedef RLM_CLOSED_ENUM(NSUInteger, RLMSyncLogLevel) { /// /// - warning: Will incur a measurable performance impact. RLMSyncLogLevelAll -} __attribute__((deprecated("Use `RLMLogLevel`/`LogLevel` instead"))); +}; #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" @@ -218,11 +218,6 @@ __attribute__((deprecated("Use `RLMLogger.default`/`Logger.shared` to set/get th /// /// Defaults to 1 minute. @property (nonatomic) NSUInteger fastReconnectLimit; - -/// The app configuration that has initialized this SyncManager. -/// This can be set multiple times. This gives the SyncManager -/// access to necessary app functionality. -@property (nonatomic, readonly) RLMAppConfiguration *appConfiguration; @end RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/Realm.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/Realm.h index 0f980e1b3..245596393 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/Realm.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Headers/Realm.h @@ -29,7 +29,6 @@ #import #import #import -#import #import #import #import diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Info.plist index 7fa210879..f4d2fb36a 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Info.plist and b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Info.plist differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Modules/module.modulemap b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Modules/module.modulemap index ed5e7fee2..519ddc20b 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Modules/module.modulemap +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Modules/module.modulemap @@ -13,7 +13,6 @@ framework module Realm { header "RLMObject.h" header "RLMObjectId.h" header "RLMObjectSchema.h" - header "RLMPlatform.h" header "RLMProperty.h" header "RLMProviderClient.h" header "RLMRealm+Sync.h" diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/PrivateHeaders/RLMApp_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/PrivateHeaders/RLMApp_Private.h index ea52e9715..5da5c3c7a 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/PrivateHeaders/RLMApp_Private.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/PrivateHeaders/RLMApp_Private.h @@ -36,15 +36,15 @@ typedef void(^RLMAppNotificationBlock)(RLMApp *); /// Subscribe to notifications for this RLMApp. - (RLMAppSubscriptionToken *)subscribe:(RLMAppNotificationBlock)block; -+ (instancetype)appWithId:(NSString *)appId - configuration:(nullable RLMAppConfiguration *)configuration - rootDirectory:(nullable NSURL *)rootDirectory; - -+ (instancetype)uncachedAppWithId:(NSString *)appId - configuration:(RLMAppConfiguration *)configuration - rootDirectory:(nullable NSURL *)rootDirectory; ++ (instancetype)appWithConfiguration:(RLMAppConfiguration *)configuration; + (void)resetAppCache; @end +@interface RLMAppConfiguration () +@property (nonatomic) NSString *appId; +@property (nonatomic) BOOL encryptMetadata; +@property (nonatomic) NSURL *rootDirectory; +@end + RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h index cee1e7fca..3cce89441 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h @@ -18,7 +18,7 @@ #import -#import +#import "RLMRealm_Private.h" RLM_HEADER_AUDIT_BEGIN(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectStore.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectStore.h index 69443c965..6045f1e8e 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectStore.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectStore.h @@ -92,7 +92,7 @@ RLMObjectBase *RLMObjectFromObjLink(RLMRealm *realm, // Create accessors RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, int64_t key) NS_RETURNS_RETAINED; -RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, realm::Obj&& obj) NS_RETURNS_RETAINED; +RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, const realm::Obj& obj) NS_RETURNS_RETAINED; #endif RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Realm b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Realm index e02185038..ab72f9b14 100755 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Realm and b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/Realm differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/_CodeSignature/CodeResources b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/_CodeSignature/CodeResources index 63002bc2a..ac831c924 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/_CodeSignature/CodeResources +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/watchos-arm64_i386_x86_64-simulator/Realm.framework/_CodeSignature/CodeResources @@ -6,7 +6,7 @@ CHANGELOG.md - Y8GU8qLvT58gIcC07I5ct6f15yQ= + Zv1aE8lgTnRPKTg4+FZa+hYQQNM= Headers/NSError+RLMSync.h @@ -18,7 +18,7 @@ Headers/RLMApp.h - 6RyMP6TBnOUmBDH2QMQUojyINrk= + Ld28y6nHFgdYCwgko5F6L9mRTCc= Headers/RLMArray.h @@ -54,7 +54,7 @@ Headers/RLMDictionary.h - 7XBEThemlgTLK/fjIZZRYBBY0mw= + J4dcvrLymwvq7wa1sgBJejF2lnk= Headers/RLMEmailPasswordAuth.h @@ -66,7 +66,7 @@ Headers/RLMError.h - 5x4rLGEjGLOQkkDsTvH34k/NNUo= + f/fmbab1ht8EdLMSS3f0NXW1ejg= Headers/RLMFindOneAndModifyOptions.h @@ -94,7 +94,7 @@ Headers/RLMMongoDatabase.h - O7qUDn3s7yS4uxFaQz4juTrU+HY= + 0+ymiybJvLDiWbH4UgOpF5kK7JA= Headers/RLMNetworkTransport.h @@ -120,10 +120,6 @@ yasl78Lq+PvN6f/sBDQAG9IiiwU= - Headers/RLMPlatform.h - - qUyqLxZ+22qIynAmhuA6ai9p2tc= - Headers/RLMProperty.h QyE/WKZTEZokOC4HNpIuGWTo3V8= @@ -182,7 +178,7 @@ Headers/RLMSyncManager.h - mXu4dAftvdZCFzVS3ez+96Ek15E= + YkhlSPT2hNZyA//Lf07+5rkaTsc= Headers/RLMSyncSession.h @@ -214,11 +210,11 @@ Headers/Realm.h - 3mbp9c9/HFfHwbrysBEt9iCljqo= + fDREEG2URHEbKjZ2nfKq+7M/7m8= Info.plist - 9BwNxSRvHvmobBdFc//MDH5SQtM= + Dndq+KQC4u9EujfldvIqZT6MRuo= LICENSE @@ -226,7 +222,7 @@ Modules/module.modulemap - qh0tedLfxDFRk+f7aR8LrPdUIRQ= + A28J5rfl2ooZX6nLmKAtWsKyoFg= PrivateHeaders/RLMAccessor.h @@ -234,7 +230,7 @@ PrivateHeaders/RLMApp_Private.h - /TYV5cyQTqtxO1CaqCz8NYEPKiA= + fw57ZhMCNGsWCpB/lCMaKqf0gek= PrivateHeaders/RLMArray_Private.h @@ -242,7 +238,7 @@ PrivateHeaders/RLMAsyncTask_Private.h - LGxSKo8pzwcfSmd1xrmd0iwKHoc= + ayc2eXD44f0/BptRlmZc+ocrzs8= PrivateHeaders/RLMBSON_Private.hpp @@ -282,7 +278,7 @@ PrivateHeaders/RLMObjectStore.h - yzumEKtFJ7A507jAYkj8Z/DGG0I= + LH3NYAHYk37ukx3w36l3VfRkWLY= PrivateHeaders/RLMObject_Private.h @@ -351,11 +347,11 @@ hash - Y8GU8qLvT58gIcC07I5ct6f15yQ= + Zv1aE8lgTnRPKTg4+FZa+hYQQNM= hash2 - YkS7d92nc1CbgkrNj49UJRdpGfHZ4B4jOg0AqFE9EHo= + wt8p9tw4OPVj/LtpO9d+DXFoOnRQ6hRaxf/hS2NxDRg= Headers/NSError+RLMSync.h @@ -384,11 +380,11 @@ hash - 6RyMP6TBnOUmBDH2QMQUojyINrk= + Ld28y6nHFgdYCwgko5F6L9mRTCc= hash2 - uLD2KqwHxLTJ/f9mMDT52TZw6QqpvJeb6plXQI4/f1o= + fmHB8oywmfycQqOzXoYB99LpOLE7akGn0ZrJtqviiTs= Headers/RLMArray.h @@ -483,11 +479,11 @@ hash - 7XBEThemlgTLK/fjIZZRYBBY0mw= + J4dcvrLymwvq7wa1sgBJejF2lnk= hash2 - I0iusExV7YvVkdt6MHXOAwNHJ2iVzHJciY0geWG3g5A= + 7zN2nXgEwGfrPRtbgqtfoLrwJbwqohcVvU/OyA/07Lk= Headers/RLMEmailPasswordAuth.h @@ -516,11 +512,11 @@ hash - 5x4rLGEjGLOQkkDsTvH34k/NNUo= + f/fmbab1ht8EdLMSS3f0NXW1ejg= hash2 - OWjWlN8fXFm/L0glkTwwiNA7HP2SqXfp++r0dCTxccI= + 6duvM3p0FRf6fZ+aS57vHkf7WvV1KPoz7PcIZA48WTU= Headers/RLMFindOneAndModifyOptions.h @@ -593,11 +589,11 @@ hash - O7qUDn3s7yS4uxFaQz4juTrU+HY= + 0+ymiybJvLDiWbH4UgOpF5kK7JA= hash2 - eMx63OF3EFRqAGsLMEXvv+y0YnKqWOB1RiyzlyW2+IE= + wnJWmMW0z3xO9KVRJKpiE+xkaKkzXBXiH5j+8eaFmcA= Headers/RLMNetworkTransport.h @@ -666,17 +662,6 @@ 8oCJihoGgigIF170SRk/yU5RLDNX9TYQUrXxLjYrtuM= - Headers/RLMPlatform.h - - hash - - qUyqLxZ+22qIynAmhuA6ai9p2tc= - - hash2 - - Ixx4e+wRPzVxxxP9o7dpoAfPgeFPTUuBlkBn6JAiY/M= - - Headers/RLMProperty.h hash @@ -835,11 +820,11 @@ hash - mXu4dAftvdZCFzVS3ez+96Ek15E= + YkhlSPT2hNZyA//Lf07+5rkaTsc= hash2 - mdAe8l7XifP7CmhttYUKNJxUfRFiL6vb+MRO2sXIqpo= + rFV4QDsBonA29YqdZXsYhNSVewEYkrafSLPWBGaEhqI= Headers/RLMSyncSession.h @@ -923,11 +908,11 @@ hash - 3mbp9c9/HFfHwbrysBEt9iCljqo= + fDREEG2URHEbKjZ2nfKq+7M/7m8= hash2 - XojGXRDQANLfoU7VwvyqGGmZmf/oNUXjRNXzxcxJZEA= + kjoP0TvFhg49q7sxVEgPoNFg+zqo9bCE2Uh0YOpDpbE= LICENSE @@ -945,11 +930,11 @@ hash - qh0tedLfxDFRk+f7aR8LrPdUIRQ= + A28J5rfl2ooZX6nLmKAtWsKyoFg= hash2 - UDqXkLimJ+9qpDCcsMjIqR5Qsd7iEaavhqi8J7iEBhI= + KdpbsAGrxax/jx81TZ93YswnCwT1BZTor6VwIHvgRUs= PrivateHeaders/RLMAccessor.h @@ -967,11 +952,11 @@ hash - /TYV5cyQTqtxO1CaqCz8NYEPKiA= + fw57ZhMCNGsWCpB/lCMaKqf0gek= hash2 - 6KWA9yC7TNQAvVa3VI9qPhSnV6DWxJZkFJHCIRX49u4= + 4pd3636NRX7kQgsEy7dv7IQH/AyZMKjQvA2nmK97Vq0= PrivateHeaders/RLMArray_Private.h @@ -989,11 +974,11 @@ hash - LGxSKo8pzwcfSmd1xrmd0iwKHoc= + ayc2eXD44f0/BptRlmZc+ocrzs8= hash2 - iKrJ9TGXoc8UTr44+s8a0yCnhaJeVQNs0mLKA5yBfRs= + vD90SYI5658JDp88stHbsxALdVNhs0Tojcld9hVORHE= PrivateHeaders/RLMBSON_Private.hpp @@ -1099,11 +1084,11 @@ hash - yzumEKtFJ7A507jAYkj8Z/DGG0I= + LH3NYAHYk37ukx3w36l3VfRkWLY= hash2 - glcepASGexcV1kvpkZeXGcPrdsuxPgyj7HNo6RMGNuQ= + 0KjmazUjg/mYvymGTJ74ChBgvrqN2Lc9O0TqcYF/Mic= PrivateHeaders/RLMObject_Private.h diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/CHANGELOG.md b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/CHANGELOG.md new file mode 100644 index 000000000..00cc01244 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/CHANGELOG.md @@ -0,0 +1,9539 @@ +10.42.3 Release notes (2023-09-18) +============================================================= + +### Enhancements + +* Update packaging for the Xcode 15.0 release. Carthage release and obj-c + binaries are now built with Xcode 15. + +### Fixed + +* The prebuilt Realm.xcframework for SPM was packaged incorrectly and did not + work ([#8361](https://github.com/realm/realm-swift/issues/8361), since v10.42.1). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 15.0.0. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15.0.0. + +10.42.2 Release notes (2023-09-13) +============================================================= + +### Enhancements + +* Add support for logging messages sent by the server. + ([Core #6476](https://github.com/realm/realm-core/pull/6476)) +* Unknown protocol errors received from the baas server will no longer cause + the application to crash if a valid error action is also received. Unknown + error actions will be treated as an ApplicationBug error action and will + cause sync to fail with an error via the sync error handler. + ([Core #6885](https://github.com/realm/realm-core/pull/6885)) +* Some sync error messages now contain more information about what went wrong. + +### Fixed + +* The `MultipleSyncAgents` exception from opening a synchronized Realm in + multiple processes at once no longer leaves the sync client in an invalid + state. ([Core #6868](https://github.com/realm/realm-core/pull/6868), since v10.36.0) +* Testing the size of a collection of links against zero would sometimes fail + (sometimes = "difficult to explain"). In particular: + ([Core #6850](https://github.com/realm/realm-core/issues/6850), since v10.41.0) +* When async writes triggered a file compaction some internal state could be + corrupted, leading to later crashes in the slab allocator. This typically + resulted in the "ref + size <= next->first" assertion failure, but other + failures were possible. Many issues reported; see [Core #6340](https://github.com/realm/realm-core/issues/6340). + (since 10.35.0) +* `Realm.Configuration.maximumNumberOfActiveVersions` now handles intermediate + versions which have been cleaned up correctly and checks the number of live + versions rather than the number of versions between the oldest live version + and current version (since 10.35.0). +* If the client disconnected between uploading a change to flexible sync + subscriptions and receiving the new object data from the server resulting + from that subscription change, the next connection to the server would + sometimes result in a client reset + ([Core #6966](https://github.com/realm/realm-core/issues/6966), since v10.21.1). + +### Deprecations + +* `RLMApp` has `localAppName` and `localAppVersion` fields which never ended up + being used for anything and are now deprecated. +* `RLMSyncAuthError` has not been used since v10.0.0 and is now deprecated. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +### Internal + +* Upgraded realm-core from 13.17.1 to 13.20.1 + +10.42.1 Release notes (2023-08-28) +============================================================= + +### Fixed + +* The names of the prebuilt zips for SPM have changed to avoid having Carthage + download them instead of the intended Carthage zip + ([#8326](https://github.com/realm/realm-swift/issues/8326), since v10.42.0). +* The prebuild Realm.xcframework for SwiftPM now has all platforms other than + visionOS built with Xcode 14 to comply with app store rules + ([#8339](https://github.com/realm/realm-swift/issues/8339), since 10.42.0). +* Fix visionOS compilation with Xcode beta 7. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +10.42.0 Release notes (2023-07-30) +============================================================= + +### Enhancements + +* Add support for building for visionOS and add Xcode 15 binaries to the + release package. visionOS currently requires installing Realm via either + Swift Package Manager or by using a XCFramework as CocoaPods and Carthage do + not yet support it. +* Zips compatible with SPM's `.binaryTarget()` are now published as part of the + releases on Github. +* Prebuilt XCFrameworks are now built with LTO enabled. This has insignificant + performance benefits, but cuts the size of the library by ~15%. + +### Fixed + +* Fix nested properties observation on a `Projections` not notifying when there is a property change. + ([#8276](https://github.com/realm/realm-swift/issues/8276), since v10.34.0). +* Fix undefined symbol error for `UIKit` when linking Realm to a framework using SPM. + ([#8308](https://github.com/realm/realm-swift/issues/8308), since v10.41.0) +* If the app crashed at exactly the wrong time while opening a freshly + compacted Realm the file could be left in an invalid state + ([Core #6807](https://github.com/realm/realm-core/pull/6807), since v10.33.0). +* Sync progress for DOWNLOAD messages was sometimes stored incorrectly, + resulting in an extra round trip to the server. + ([Core #6827](https://github.com/realm/realm-core/issues/6827), since v10.31.0) + +### Breaking Changes + +* Legacy non-xcframework Carthage installations are no longer supported. Please + ensure you are using `--use-xcframeworks` if installing via Carthage. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 5. + +### Internal + +* Upgraded realm-core from 13.17.0 to 13.17.1 +* Release packages were being uploaded to several static.realm.io URLs which + are no longer linked to anywhere. These are no longer being updated, and + release packages are now only being uploaded to Github. + +10.41.1 Release notes (2023-07-17) +============================================================= + +### Enhancements + +* Filesystem errors now include more information in the error message. +* Sync connection and session reconnect timing/backoff logic has been reworked + and unified into a single implementation. Previously some categories of errors + would cause an hour-long wait before attempting to reconnect, while others + would use an exponential backoff strategy. All errors now result in the sync + client waiting for 1 second before retrying, doubling the wait after each + subsequent failure up to a maximum of five minutes. If the cause of the error + changes, the backoff will be reset. If the sync client voluntarily disconnects, + no backoff will be used. ([Core #6526]((https://github.com/realm/realm-core/pull/6526))) + +### Fixed + +* Removed warnings for deprecated APIs internal use. + ([#8251](https://github.com/realm/realm-swift/issues/8251), since v10.39.0) +* Fix an error during async open and client reset if properties have been added + to the schema. This fix also applies to partition-based to flexible sync + migration if async open is used. ([Core #6707](https://github.com/realm/realm-core/issues/6707), since v10.28.2) + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 4. + +### Internal + +* Upgraded realm-core from 13.15.1 to 13.17.0 +* The location where prebuilt core binaries are published has changed slightly. + If you are using `REALM_BASE_URL` to mirror the binaries, you may need to + adjust your mirroring logic. + +10.41.0 Release notes (2023-06-26) +============================================================= + +### Enhancements + +* Add support for multiplexing sync connections. When enabled (the default), a single + connection is used per sync user rather than one per synchronized Realm. This + reduces resource consumption when multiple Realms are opened and will + typically improve performance ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). +* Sync timeout options can now be set on `RLMAppConfiguration` along with the + other app-wide configuration settings ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Fixed + +* Import as `RLMRealm_Private.h` as a module would cause issues when using Realm as a subdependency. + ([#8164](https://github.com/realm/realm-swift/issues/8164), since 10.37.0) +* Disable setting a custom logger by default on the sync client when the sync manager is created. + This was overriding the default logger set using `RLMLogger.defaultLogger`. (since v10.39.0). + +### Breaking Changes + +* The `RLMSyncTimeouts.appConfiguration` property has been removed. This was an + unimplemented read-only property which did not make any sense on the + containing type ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 2. + +### Internal + +* Upgraded realm-core from 13.15.0 to 13.15.1 + +10.40.2 Release notes (2023-06-09) +============================================================= + +### Enhancements + +* `Actor.preconditionIsolated()` is now used for runtime actor checking when + available (i.e. building with Xcode 15 and running on iOS 17) rather than the + less reliable workaround. + +### Fixed + +* If downloading the fresh Realm file failed during a client reset on a + flexible sync Realm, the sync client would crash the next time the Realm was + opened. ([Core #6494](https://github.com/realm/realm-core/issues/6494), since v10.28.2) +* If the order of properties in the local class definitions did not match the + order in the server-side schema, the before-reset Realm argument passed to a + client reset handler would have an invalid schema and likely crash if any + data was read from it. ([Core #6693](https://github.com/realm/realm-core/issues/6693), since v10.40.0) + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 1. + +### Internal + +* Upgraded realm-core from 13.13.0 to 13.15.0. +* The prebuilt library used for CocoaPods installations is now built with Xcode + 14. This should not have any observable effects other than the download being + much smaller due to no longer including bitcode. + +10.40.1 Release notes (2023-06-06) +============================================================= + +### Enhancements + +* Fix compilation with Xcode 15. Note that iOS 12 is the minimum supported + deployment target when using Xcode 15. +* Switch to building the Carthage release with Xcode 14.3.1. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 1. + +### Internal + +* Overhauled SDK metrics collection to better drive future development efforts. + +10.40.0 Release notes (2023-05-26) +============================================================= + +Drop support for Xcode 13 and add Xcode 14.3.1. Xcode 14.1 is now the minimum +supported version. + +### Enhancements + +* Adjust the error message for private `Object` subclasses and subclasses + nested inside other types to explain how to make them work rather than state + that it's impossible. ([#5662](https://github.com/realm/realm-cocoa/issues/5662)). +* Improve performance of SectionedResults. With a single section it is now ~10% + faster, and the runtime of sectioning no longer scales significantly with + section count, giving >100% speedups when there are large numbers of sections + ([Core #6606](https://github.com/realm/realm-core/pull/6606)). +* Very slightly improve performance of runtime thread checking on the main + thread. ([Core #6606](https://github.com/realm/realm-core/pull/6606)) + +### Fixed + +* Allow support for implicit boolean queries on Swift's Type Safe Queries API + ([#8212](https://github.com/realm/realm-swift/issues/8212)). +* Fixed a fatal error (reported to the sync error handler) during client reset + or automatic partition-based to flexible sync migration if the reset has been + triggered during an async open and the schema being applied has added new + classes. Due to this bug automatic flexibly sync migration has been disabled + for older releases and this is now the minimum version required. + ([#6601](https://github.com/realm/realm-core/issues/6601), since automatic + client resets were introduced in v10.25.0) +* Dictionaries sometimes failed to map unresolved links to nil. If the target + of a link in a dictionary was deleted by another sync client, reading that + field from the dictionary would sometimes give an invalid object rather than + nil. In addition, queries on dictionaries would sometimes have incorrect + results. ([Core #6644](https://github.com/realm/realm-core/pull/6644), since v10.8.0) +* Older versions of Realm would sometimes fail to properly mark objects as + being the target of an incoming link from another object. When this happened, + deleting the target object would hit an assertion failure due to the + inconsistent state. We now reconstruct a valid state rather than crashing. + ([Core #6585](https://github.com/realm/realm-core/issues/6585), since v5.0.0) +* Fix several UBSan failures which did not appear to result in functional bugs + ([Core #6649](https://github.com/realm/realm-core/pull/6649)). +* Using both synchronous and asynchronous transactions on the same thread or + scheduler could hit the assertion failure "!realm.is_in_transaction()" if one + of the callbacks for an asynchronous transaction happened to be scheduled + during a synchronous transaction + ([Core #6659](https://github.com/realm/realm-core/issues/6659), since v10.26.0) +* The stored deployment location for Apps was not being updated correctly after + receiving a redirect response from the server, resulting in every connection + attempting to connect to the old URL and getting redirected rather than only + the first connection after the deployment location changed. + ([Core #6630](https://github.com/realm/realm-core/issues/6630), since v10.38.2) + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-14.3.1. + +### Internal + +* Upgraded realm-core from 13.10.1 to 13.13.0. + +10.39.1 Release notes (2023-05-05) +============================================================= + +### Enhancements + +* New notifiers can now be registered in write transactions until changes have + actually been made in the write transaction. This makes it so that new + notifications can be registered inside change notifications triggered by + beginning a write transaction (unless a previous callback performed writes). + ([#4818](https://github.com/realm/realm-swift/issues/4818)). +* Reduce the memory footprint of an automatic (discard or recover) client reset + when there are large incoming changes from the server. + ([Core #6567](https://github.com/realm/realm-core/issues/6567)). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3. +* CocoaPods: 1.10 or later. +* Xcode: 13.4-14.3. + +### Internal + +* Upgraded realm-core from 13.10.0 to 13.10.1. + +10.39.0 Release notes (2023-05-03) +============================================================= + +### Enhancements + +* Add support for actor-isolated Realms, opened with `try await Realm(actor: actor)`. + + Rather than being confined to the current thread or a dispatch queue, + actor-isolated Realms are isolated to an actor. This means that they can be + used from any thread as long as it's within a function isolated to that + actor, and they remain valid over suspension points where a task may hop + between threads. Actor-isolated Realms can be used with either global or + local actors: + + ```swift + @MainActor function mainThreadFunction() async throws { + // These are identical: the async init continues to produce a + // MainActor-confined Realm if no actor is supplied + let realm1 = try await Realm() + let realm2 = try await Realm(MainActor.shared) + } + + // A simple example of a custom global actor + @globalActor actor BackgroundActor: GlobalActor { + static var shared = BackgroundActor() + } + + @BackgroundActor backgroundThreadFunction() async throws { + // Explicitly specifying the actor is required for everything but MainActor + let realm = try await Realm(actor: BackgroundActor.shared) + try await realm.write { + _ = realm.create(MyObject.self) + } + // Thread-confined Realms would sometimes throw an exception here, as we + // may end up on a different thread after an `await` + print("\(realm.objects(MyObject.self).count)") + } + + actor MyActor { + // An implicitly-unwrapped optional is used here to let us pass `self` to + // `Realm(actor:)` within `init` + var realm: Realm! + init() async throws { + realm = try await Realm(actor: self) + } + + var count: Int { + realm.objects(MyObject.self).count + } + + func create() async throws { + try await realm.asyncWrite { + realm.create(MyObject.self) + } + } + } + + // This function isn't isolated to the actor, so each operation has to be async + func createObjects() async throws { + let actor = try await MyActor() + for _ in 0..<5 { + await actor.create() + } + print("\(await actor.count)") + } + + // In an isolated function, an actor-isolated Realm can be used synchronously + func createObjects(in actor: isolated MyActor) async throws { + await actor.realm.write { + actor.realm.create(MyObject.self) + } + print("\(actor.realm.objects(MyObject.self).count)") + } + ``` + + Actor-isolated Realms come with a more convenient syntax for asynchronous + writes. `try await realm.write { ... }` will suspend the current task, + acquire the write lock without blocking the current thread, and then invoke + the block. The actual data is then written to disk on a background thread, + and the task is resumed once that completes. As this does not block the + calling thread while waiting to write and does not perform i/o on the calling + thread, this will often be safe to use from `@MainActor` functions without + blocking the UI. Sufficiently large writes may still benefit from being done + on a background thread. + + Asynchronous writes are only supported for actor-isolated Realms or in + `@MainActor` functions. + + Actor-isolated Realms require Swift 5.8 (Xcode 14.3). Enabling both strict + concurrency checking (`SWIFT_STRICT_CONCURRENCY=complete` in Xcode) and + runtime actor data race detection (`OTHER_SWIFT_FLAGS=-Xfrontend + -enable-actor-data-race-checks`) is strongly recommended when using + actor-isolated Realms. +* Add support for automatic partition-based to flexible sync migration. + Connecting to a server-side app configured to use flexible sync with a + client-side partition-based sync configuration is now supported, and will + automatically create the appropriate flexible sync subscriptions to subscribe + to the requested partition. This allows changing the configuration on the + server from partition-based to flexible without breaking existing clients. + ([Core #6554](https://github.com/realm/realm-core/issues/6554)) +* Now you can use an array `[["_id": 1], ["breed": 0]]` as sorting option for a + MongoCollection. This new API fixes the issue where the resulting documents + when using more than one sort parameter were not consistent between calls. + ([#7188](https://github.com/realm/realm-swift/issues/7188), since v10.0.0). +* Add support for adding a user created default logger, which allows implementing your own logging logic + and the log threshold level. + You can define your own logger creating an instance of `Logger` and define the log function which will be + invoked whenever there is a log message. + + ```swift + let logger = Logger(level: .all) { level, message in + print("Realm Log - \(level): \(message)") + } + ``` + + Set this custom logger as Realm default logger using `Logger.shared`. + ```swift + Logger.shared = logger + ``` +* It is now possible to change the default log threshold level at any point of the application's lifetime. + ```swift + Logger.shared.logLevel = .debug + ``` + This will override the log level set anytime before by a user created logger. +* We have set `.info` as the default log threshold level for Realm. You will now see some + log message in your console. To disable use `Logger.shared.level = .off`. + +### Fixed + +* Several schema initialization functions had incorrect `@MainActor` + annotations, resulting in runtime warnings if the first time a Realm was + opened was on a background thread + ([#8222](https://github.com/realm/realm-swift/issues/8222), since v10.34.0). + +### Deprecations + +* `App.SyncManager.logLevel` and `App.SyncManager.logFunction` are deprecated in favour of + setting a default logger. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3. +* CocoaPods: 1.10 or later. +* Xcode: 13.4-14.3. + +### Internal + +* Upgraded realm-core from v13.9.4 to v13.10.0. + +10.38.3 Release notes (2023-04-28) +============================================================= + +### Enhancements + +* Improve performance of cancelling a write transactions after making changes. + If no KVO observers are used this is now constant time rather than taking + time proportional to the number of changes to be rolled back. Cancelling a + write transaction with KVO observers is 10-20% faster. ([Core PR #6513](https://github.com/realm/realm-core/pull/6513)). + +### Fixed + +* Performing a large number of queries without ever performing a write resulted + in steadily increasing memory usage, some of which was never fully freed due + to an unbounded cache ([#7978](https://github.com/realm/realm-swift/issues/7978), since v10.27.0). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3. +* CocoaPods: 1.10 or later. +* Xcode: 13.4-14.3. + +### Internal + +* Upgraded realm-core from 13.9.3 to 13.9.4 + +10.38.2 Release notes (2023-04-25) +============================================================= + +### Enhancements + +* Improve performance of equality queries on a non-indexed AnyRealmValue + property by about 30%. ([Core #6506](https://github.com/realm/realm-core/issues/6506)) + +### Fixed + +* SSL handshake errors were treated as fatal errors rather than errors which + should be retried. ([Core #6434](https://github.com/realm/realm-core/issues/6434), since v10.35.0) + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3. +* CocoaPods: 1.10 or later. +* Xcode: 13.4-14.3. + +### Internal + +* Upgraded realm-core from 13.9.0 to 13.9.3. + +10.38.1 Release notes (2023-04-25) +============================================================= + +### Fixed + +* The error handler set on EventsConfiguration was not actually used (since v10.26.0). + +### Compatibility + +* Realm Studio: 13.0.2 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3. +* CocoaPods: 1.10 or later. +* Xcode: 13.4-14.3. + +10.38.0 Release notes (2023-03-31) +============================================================= + +Switch to building the Carthage release with Xcode 14.3. + +### Enhancements + +* Add Xcode 14.3 binaries to the release package. Note that CocoaPods 1.12.0 + does not support Xcode 14.3. +* Add support for sharing encrypted Realms between multiple processes. + ([Core #1845](https://github.com/realm/realm-core/issues/1845)) + +### Fixed + +* Fix a memory leak reported by Instruments on `URL.path` in + `Realm.Configuration.fileURL` when using a string partition key in Partition + Based Sync ([#8195](https://github.com/realm/realm-swift/pull/8195)), since v10.0.0). +* Fix a data race in version management. If one thread committed a write + transaction which increased the number of live versions above the previous + highest seen during the current session at the same time as another thread + began a read, the reading thread could read from a no-longer-valid memory + mapping. This could potentially result in strange crashes when opening, + refreshing, freezing or thawing a Realm + ([Core #6411](https://github.com/realm/realm-core/pull/6411), since v10.35.0). + +### Compatibility + +* Realm Studio: 13.0.2 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3. +* CocoaPods: 1.10 or later. +* Xcode: 13.4-14.3. + +### Internal + +* Upgraded realm-core from 13.8.0 to 13.9.0. + +10.37.2 Release notes (2023-03-29) +============================================================= + +### Fixed + +* Copying a `RLMRealmConfiguration` failed to copy several fields. This + resulted in migrations being passed the incorrect object type in Swift when + using the default configuration (since v10.34.0) or async open (since + v10.37.0). This also broke using the Events API in those two scenarios (since + v10.26.0 for default configuration and v10.37.0 for async open). ([#8190](https://github.com/realm/realm-swift/issues/8190)) + +### Compatibility + +* Realm Studio: 13.0.2 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.2. +* CocoaPods: 1.10 or later. +* Xcode: 13.3-14.2. + +10.37.1 Release notes (2023-03-27) +============================================================= + +### Enhancements + +* Performance improvement for the following queries ([Core #6376](https://github.com/realm/realm-core/issues/6376)): + * Significant (~75%) improvement when counting (`Results.count`) the number + of exact matches (with no other query conditions) on a + string/int/UUID/ObjectID property that has an index. This improvement + will be especially noticiable if there are a large number of results + returned (duplicate values). + * Significant (~99%) improvement when querying for an exact match on a Date + property that has an index. + * Significant (~99%) improvement when querying for a case insensitive match + on an AnyRealmValue property that has an index. + * Moderate (~25%) improvement when querying for an exact match on a Bool + property that has an index. + * Small (~5%) improvement when querying for a case insensitive match on an + AnyRealmValue property that does not have an index. + +### Fixed + +* Add missing `@Sendable` annotations to several sync and app services related + callbacks ([PR #8169](https://github.com/realm/realm-swift/pull/8169), since v10.34.0). +* Fix some bugs in handling task cancellation for async Realm init. Some very + specific timing windows could cause crashes, and the download would not be + cancelled if the Realm was already open ([PR #8178](https://github.com/realm/realm-swift/pull/8178), since v10.37.0). +* Fix a crash when querying an AnyRealmValue property with a string operator + (contains/like/beginswith/endswith) or with case insensitivity. + ([Core #6376](https://github.com/realm/realm-core/issues/6376), since v10.8.0) +* Querying for case-sensitive equality of a string on an indexed AnyRealmValue + property was returning case insensitive matches. For example querying for + `myIndexedAny == "Foo"` would incorrectly match on values of "foo" or "FOO" etc. + ([Core #6376](https://github.com/realm/realm-core/issues/6376), since v10.8.0) +* Adding an index to an AnyRealmValue property when objects of that type + already existed would crash with an assertion. + ([Core #6376](https://github.com/realm/realm-core/issues/6376), since v10.8.0). +* Fix a bug that may have resulted in arrays being in different orders on + different devices. Some cases of “Invalid prior_size” may be fixed too. + ([Core #6191](https://github.com/realm/realm-core/issues/6191), since v10.25.0). + +### Compatibility + +* Realm Studio: 13.0.2 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.2. +* CocoaPods: 1.10 or later. +* Xcode: 13.3-14.2. + +### Internal + +* Upgraded realm-core from 13.6.0 to 13.8.0 + +10.37.0 Release notes (2023-03-09) +============================================================= + +### Enhancements + +* `MongoCollection.watch().subscribe(on:)` now supports any swift Scheduler + rather than only dispatch queues ([PR #8131](https://github.com/realm/realm-swift/pull/8130)). +* Add an async sequence wrapper for `MongoCollection.watch()`, allowing you to + do `for try await change in collection.changeEvents { ... }` + ([PR #8131](https://github.com/realm/realm-swift/pull/8130)). +* The internals of error handling and reporting have been significantly + reworked. The visible effects of this are that some errors which previously + had unhelpful error messages now include more detail about what went wrong, + and App errors now expose a much more complete set of error codes + ([PR #8002](https://github.com/realm/realm-swift/pull/8002)). +* Expose compensating write error information. When the server rejects a + modification made by the client (such as if the user does not have the + required permissions), a `SyncError` is delivered to the sync error handler + with the code `.writeRejected` and a non-nil `compensatingWriteInfo` field + which contains information about what was rejected and why. This information + is intended primarily for debugging and logging purposes and may not have a + stable format. ([PR #8002](https://github.com/realm/realm-swift/pull/8002)) +* Async `Realm.init()` now handles Task cancellation and will cancel the async + open if the Task is cancelled ([PR #8148](https://github.com/realm/realm-swift/pull/8148)). +* Cancelling async opens now has more consistent behavior. The previously + intended and documented behavior was that cancelling an async open would + result in the callback associated with the specific task that was cancelled + never being called, and all other pending callbacks would be invoked with an + ECANCELED error. This never actually worked correctly, and the callback which + was not supposed to be invoked at all sometimes would be. We now + unconditionally invoke all of the exactly once, passing ECANCELED to all of + them ([PR #8148](https://github.com/realm/realm-swift/pull/8148)). + +### Fixed + +* `UserPublisher` incorrectly bounced all notifications to the main thread instead + of setting up the Combine publisher to correctly receive on the main thread. + ([#8132](https://github.com/realm/realm-swift/issues/8132), since 10.21.0) +* Fix warnings when building with Xcode 14.3 beta 2. +* Errors in async open resulting from invalid queries in `initialSubscriptions` + would result in the callback being invoked with both a non-nil Realm and a + non-nil Error even though the Realm was in an invalid state. Now only the + error is passed to the callback ([PR #8148](https://github.com/realm/realm-swift/pull/8148), since v10.28.0). +* Converting a local realm to a synced realm would crash if an embedded object + was null ([Core #6294](https://github.com/realm/realm-core/issues/6294), since v10.22.0). +* Subqueries on indexed properties performed extremely poorly. ([Core #6327](https://github.com/realm/realm-core/issues/6327), since v5.0.0) +* Fix a crash when a SSL read successfully read a non-zero number of bytes and + also reported an error. ([Core #5435](https://github.com/realm/realm-core/issues/5435), since 10.0.0) +* The sync client could get stuck in an infinite loop if the server sent an + invalid changeset which caused a transform error. This now results in a + client reset instead. ([Core #6051](https://github.com/realm/realm-core/issues/6051), since v10.0.0) +* Strings in queries which contained any characters which required multiple + bytes when encoded as utf-8 were incorrectly encoded as binary data when + serializing the query to send it to the server for a flexible sync + subscription, resulting the server rejecting the query + ([Core #6350](https://github.com/realm/realm-core/issues/6350), since 10.22.0). + +### Compatibility + +* Realm Studio: 13.0.2 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.2. +* CocoaPods: 1.10 or later. +* Xcode: 13.3-14.2. + +### Internal + +* Upgraded realm-core from 13.4.1 to 13.6.0 + +10.36.0 Release notes (2023-02-15) +============================================================= + +### Enhancements + +* Add support for multiple overlapping or nested event scopes. + `Events.beginScope()` now returns a `Scope` object which is used to commit or + cancel that scope, and if more than one scope is active at a time events are + reported to all active scopes. + +### Fixed + +* Fix moving `List` items to a higher index in SwiftUI results in wrong destination index + ([#7956](https://github.com/realm/realm-swift/issues/7956), since v10.6.0). +* Using the `searchable` view modifier with `@ObservedResults` in iOS 16 would + cause the collection observation subscription to cancel. + ([#8096](https://github.com/realm/realm-swift/issues/8096), since 10.21.0) +* Client reset with recovery would sometimes crash if the recovery resurrected + a dangling link ([Core #6292](https://github.com/realm/realm-core/issues/6292), since v10.32.0). + +### Compatibility + +* Realm Studio: 13.0.2 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.2. +* CocoaPods: 1.10 or later. +* Xcode: 13.3-14.2. + +### Internal + +* Upgraded realm-core from 13.4.0 to 13.4.1 + +10.35.1 Release notes (2023-02-10) +============================================================= + +### Fixed + +* Client reset with recovery would crash if a client reset occurred the very + first time the Realm was opened with async open. The client reset callbacks + are now not called if the Realm had never been opened before + ([PR #8125](https://github.com/realm/realm-swift/pull/8125), since 10.32.0). + +### Compatibility + +* Realm Studio: 13.0.2 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.2. +* CocoaPods: 1.10 or later. +* Xcode: 13.3-14.2. + +10.35.0 Release notes (2023-02-07) +============================================================= + +This version bumps the Realm file format version to 23. Realm files written by +this version cannot be read by older versions of Realm. + +### Enhancements + +* The Realm file is now automatically shrunk if the file size is larger than + needed to store all of the data. ([Core PR #5755](https://github.com/realm/realm-core/pull/5755)) +* Pinning old versions (either with frozen Realms or with Realms on background + threads that simply don't get refreshed) now only prevents overwriting the + data needed by that version, rather than the data needed by that version and + all later versions. In addition, frozen Realms no longer pin the transaction + logs used to drive change notifications. This mostly eliminates the file size + growth caused by pinning versions. ([Core PR #5440](https://github.com/realm/realm-core/pull/5440)) +* Rework how Dictionaries/Maps are stored in the Realm file. The new design uses + less space and is typically significantly faster. This changes the iteration + order of Maps, so any code relying on that may be broken. We continue + to make no guarantees about iteration order on Maps ([Core #5764](https://github.com/realm/realm-core/issues/5764)). +* Improve performance of freezing Realms ([Core PR #6211](https://github.com/realm/realm-core/pull/6211)). + +### Fixed + +* Fix a crash when using client reset with recovery and flexible sync with a + single subscription ([Core #6070](https://github.com/realm/realm-core/issues/6070), since v10.28.2) +* Encrypted Realm files could not be opened on devices with a larger page size + than the one which originally wrote the file. + ([#8030](https://github.com/realm/realm-swift/issues/8030), since v10.32.1) +* Creating multiple flexible sync subscriptions at once could hit an assertion + failure if the server reported an error for any of them other than the last + one ([Core #6038](https://github.com/realm/realm-core/issues/6038), since v10.21.1). +* `Set` and `List` considered a string and binary + data containing that string encoded as UTF-8 to be equivalent. This could + result in a List entry not changing type on assignment and for the client be + inconsistent with the server if a string and some binary data with equivalent + content was inserted from Atlas. + ([Core #4860](https://github.com/realm/realm-core/issues/4860) and + [Core #6201](https://github.com/realm/realm-core/issues/6201), since v10.8.0) +* Querying for NaN on Decimal128 properties did not match any objects + ([Core #6182](https://github.com/realm/realm-core/issues/6182), since v10.8.0). +* When client reset with recovery is used and the recovery did not need to + make any changes to the local Realm, the sync client could incorrectly think + the recovery failed and report the error "A fatal error occured during client + reset: 'A previous 'Recovery' mode reset from did not succeed, + giving up on 'Recovery' mode to prevent a cycle'". + ([Core #6195](https://github.com/realm/realm-core/issues/6195), since v10.32.0) +* Fix a crash when using client reset with recovery and flexible sync with a + single subscription ([Core #6070](https://github.com/realm/realm-core/issues/6070), since v10.28.2) +* Writing to newly in-view objects while a flexible sync bootstrap was in + progress would not synchronize those changes to the server + ([Core #5804](https://github.com/realm/realm-core/issues/5804), since v10.21.1). +* If a client reset with recovery or discard local was interrupted while the + "fresh" realm was being downloaded, the sync client could crash with a + MultpleSyncAgents exception ([Core #6217](https://github.com/realm/realm-core/issues/6217), since v10.25.0). +* Sharing Realm files between a Catalyst app and Realm Studio did not properly + synchronize access to the Realm file ([Core #6258](https://github.com/realm/realm-core/pull/6258), since v10.0.0). + +### Compatibility + +* Realm Studio: 13.0.2 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.2. +* CocoaPods: 1.10 or later. +* Xcode: 13.3-14.2. + +### Internal + +* Upgraded realm-core from 12.13.0 to 13.4.0 + +10.34.1 Release notes (2023-01-20) +============================================================= + +### Fixed + +* Add some missing `@preconcurrency` annotations which lead to build failures + with Xcode 14.0 when importing via SPM or CocoaPods + ([#8104](https://github.com/realm/realm-swift/issues/8104), since v10.34.0). + +### Compatibility + +* Realm Studio: 11.0.0 - 12.0.0. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.2. +* CocoaPods: 1.10 or later. +* Xcode: 13.3-14.2. + +10.34.0 Release notes (2023-01-13) +============================================================= + +Swift 5.5 is no longer supported. Swift 5.6 (Xcode 13.3) is now the minimum +supported version. + +The prebuilt binary for Carthage is now build with Xcode 14.2. + +### Enhancements + +* Improve performance of creating Projection objects and of change + notifications on projections ([PR #8050](https://github.com/realm/realm-swift/pull/8050)). +* Allow initialising any sync configuration with `cancelAsyncOpenOnNonFatalErrors`. +* Improve performance of Combine value publishers which do not use the + object/collection changesets a little. +* All public types have been audited for sendability and are now marked as + Sendable when applicable. A few types which were incidentally not thread-safe + but make sense to use from multiple threads are now thread-safe. +* Add support for building Realm with strict concurrency checking enabled. + +### Fixed + +* Fix bad memory access exception that can occur when watching change streams. + [PR #8039](https://github.com/realm/realm-swift/pull/8039). +* Object change notifications on projections only included the first projected + property for each source property ([PR #8050](https://github.com/realm/realm-swift/pull/8050), since v10.21.0). +* `@AutoOpen` failed to open flexible sync Realms while offline + ([#7986](https://github.com/realm/realm-swift/issues/7986), since v10.27.0). +* Fix "Publishing changes from within view updates is not allowed" warnings + when using `@ObservedResults` or `@ObservedSectionedResults` + ([#7908](https://github.com/realm/realm-swift/issues/7908)). +* Fix "Publishing changes from within view updates is not allowed" warnings + when using `@AutoOpen` or `@AsyncOpen`. + ([#7908](https://github.com/realm/realm-swift/issues/7908)). +* Defer `Realm.asyncOpen` execution on `@AsyncOpen` and `@AutoOpen` property + wrappers until all the environment values are set. This will guarantee the + configuration and partition value are set set before opening the realm. + ([#7931](https://github.com/realm/realm-swift/issues/7931), since v10.12.0). +* `@ObservedResults.remove()` could delete the wrong object if a write on a + background thread which changed the index of the object being removed + occurred at a very specific time (since v10.6.0). + +### Compatibility + +* Realm Studio: 11.0.0 - 12.0.0. 13.0.0 is currently incompatible. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.2. +* CocoaPods: 1.10 or later. +* Xcode: 13.3-14.2. + +10.33.0 Release notes (2022-12-01) +============================================================= + +### Enhancements + +* Flexible sync subscription state will change to + `SyncSubscriptionState.pending` (`RLMSyncSubscriptionStatePending`) while + waiting for the server to have sent all pending history after a bootstrap and + before marking a subscription as Complete. + ([#5795](https://github.com/realm/realm-core/pull/5795)) +* Add custom column names API, which allows to set a different column name in the realm + from the one used in your object declaration. + ```swift + class Person: Object { + @Persisted var firstName: String + @Persisted var birthDate: Date + @Persisted var age: Int + + override class public func propertiesMapping() -> [String: String] { + ["firstName": "first_name", + "birthDate": "birth_date"] + } + } + ``` + This is very helpful in cases where you want to name a property differently + from your `Device Sync` JSON schema. + This API is only available for old and modern object declaration syntax on the + `RealmSwift` SDK. +* Flexible sync bootstraps now apply 1MB of changesets per write transaction + rather than applying all of them in a single write transaction. + ([Core PR #5999](https://github.com/realm/realm-core/pull/5999)). + +### Fixed + +* Fix a race condition which could result in "operation cancelled" errors being + delivered to async open callbacks rather than the actual sync error which + caused things to fail ([Core PR #5968](https://github.com/realm/realm-core/pull/5968), since the introduction of async open). +* Fix database corruption issues which could happen if an application was + terminated at a certain point in the process of comitting a write + transaciton. ([Core PR #5993](https://github.com/realm/realm-core/pull/5993), since v10.21.1) +* `@AsyncOpen` and `@AutoOpen` would begin and then cancel a second async open + operation ([PR #8038](https://github.com/realm/realm-swift/pull/8038), since v10.12.0). +* Changing the search text when using the searchable SwiftUI extension would + trigger multiple updates on the View for each change + ([PR #8038](https://github.com/realm/realm-swift/pull/8038), since v10.19.0). +* Changing the filter or search properties of an `@ObservedResults` or + `@ObservedSectionedResults` would trigger up to three updates on the View + ([PR #8038](https://github.com/realm/realm-swift/pull/8038), since v10.6.0). +* Fetching a user's profile while the user logs out would result in an + assertion failure. ([Core PR #6017](https://github.com/realm/realm-core/issues/5571), since v10.8.0) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14.1. + +### Internal + +* Upgraded realm-core from 12.11.0 to 12.13.0 + +10.32.3 Release notes (2022-11-10) +============================================================= + +### Fixed + +* Fix name lookup errors when importing Realm Swift built in library evolution + mode (([#8014](https://github.com/realm/realm-swift/issues/8014)). +* The prebuilt watchOS library in the objective-c release package was missing + an arm64 slice. The Swift release package was uneffected + ([PR #8016](https://github.com/realm/realm-swift/pull/8016)). +* Fix issue where `RLMUserAPIKey.key`/`UserAPIKey.key` incorrectly returned the name of the API + key instead of the key itself. ([#8021](https://github.com/realm/realm-swift/issues/8021), since v10.0.0) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14.1. + +10.32.2 Release notes (2022-11-01) +============================================================= + +Switch to building the Carthage release with Xcode 14.1. + +### Fixed + +* Fix linker errors when building a release build with Xcode 14.1 when + installing via SPM ([#7995](https://github.com/realm/realm-swift/issues/7995)). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14.1. + +10.32.1 Release notes (2022-10-25) +============================================================= + +### Enhancements + +* Improve performance of client reset with automatic recovery and converting + top-level tables into embedded tables ([Core #5897](https://github.com/realm/realm-core/pull/5897)). +* `Realm.Error` is now a typealias for `RLMError` rather than a + manually-defined version of what the automatic bridging produces. This should + have no effect on existing working code, but the manual definition was + missing a few things supplied by the automatic bridging. +* Some sync errors sent by the server include a link to the server-side logs + associated with that error. This link is now exposed in the `serverLogURL` + property on `SyncError` (or `RLMServerLogURLKey` userInfo field when using NSError). + +### Fixed + +* Many sync and app errors were reported using undocumented internal error + codes and/or domains and could not be progammatically handled. Some notable + things which now have public error codes instead of unstable internal ones: + - `Realm.Error.subscriptionFailed`: The server rejected a flexible sync subscription. + - `AppError.invalidPassword`: A login attempt failed due to a bad password. + - `AppError.accountNameInUse`: A registration attempt failed due to the account name being in use. + - `AppError.httpRequestFailed`: A HTTP request to Atlas App Services + completed with an error HTTP code. The failing code is available in the + `httpStatusCode` property. + - Many other less common error codes have been added to `AppError`. + - All sync errors other than `SyncError.clientResetError` reported incorrect + error codes. + (since v10.0.0). +* `UserAPIKey.objectId` was incorrectly bridged to Swift as `RLMObjectId` to + `ObjectId`. This may produce warnings about an unneccesary cast if you were + previously casting it to the correct type (since v10.0.0). +* Fixed an assertion failure when observing change notifications on a sectioned + result, if the first modification was to a linked property that did not cause + the state of the sections to change. + ([Core #5912](https://github.com/realm/realm-core/issues/5912), + since the introduction of sectioned results in v10.29.0) +* Fix a use-after-free if the last external reference to an encrypted + synchronized Realm was closed between when a client reset error was received + and when the download of the new Realm began. + ([Core #5949](https://github.com/realm/realm-core/pull/5949), since 10.28.4). +* Fix an assertion failure during client reset with recovery when recovering + a list operation on an embedded object that has a link column in the path + prefix to the list from the top level object. + ([Core #5957](https://github.com/realm/realm-core/issues/5957), + since introduction of automatic recovery in v10.32.0). +* Creating a write transaction which is rejected by the server due to it + exceeding the maximum transaction size now results in a client reset error + instead of synchronization breaking and becoming stuck forever + ([Core #5209](https://github.com/realm/realm-core/issues/5209), since v10). +* Opening an unencrypted file with an encryption key would sometimes report a + misleading error message that indicated that the problem was something other + than a decryption failure ([Core #5915](https://github.com/realm/realm-core/pull/5915), since 0.89.0). +* Fix a rare deadlock which could occur when closing a synchronized Realm + immediately after committing a write transaction when the sync worker thread + has also just finished processing a changeset from the server + ([Core #5948](https://github.com/realm/realm-core/pull/5948)). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.0.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14.1. + +### Internal + +* Upgraded realm-core from 12.9.0 to 12.11.0. + +10.32.0 Release notes (2022-10-10) +============================================================= + +### Enhancements + +* Add `.recoverUnsyncedChanges` (`RLMClientResetModeRecoverUnsyncedChanges`) and +`.recoverOrDiscardUnsyncedChanges` (`RLMClientResetModeRecoverOrDiscardUnsyncedChanges`) behaviors to `ClientResetMode` (`RLMClientResetMode`). + - The newly added recover modes function by downloading a realm which reflects the latest + state of the server after a client reset. A recovery process is run locally in an + attempt to integrate the server state with any local changes from before the + client reset occurred. + The changes are integrated with the following rules: + 1. Objects created locally that were not synced before client reset, will be integrated. + 2. If an object has been deleted on the server, but was modified on the client, the delete takes precedence and the update is discarded. + 3. If an object was deleted on the client, but not the server, then the client delete instruction is applied. + 4. In the case of conflicting updates to the same field, the client update is applied. + - The client reset process will fallback to `ClientResetMode.discardUnsyncedChanges` if the recovery process fails in `.recoverOrDiscardUnsyncedChanges`. + - The client reset process will fallback to `ClientResetMode.manual` if the recovery process fails in `.recoverUnsyncedChanges`. + - The two new swift recovery modes support client reset callbacks: `.recoverUnsyncedChanges(beforeReset: ((Realm) -> Void)? = nil, afterReset: ((Realm, Realm) -> Void)? = nil)`. + - The two new Obj-C recovery modes support client reset callbacks in `notifyBeforeReset` + and `notifyAfterReset`for both `[RLMUser configurationWithPartitionValue]` and `[RLMUser flexibleSyncConfigurationWithClientResetMode]` + For more detail on client reset callbacks, see `ClientResetMode`, `RLMClientResetBeforeBlock`, + `RLMClientResetAfterBlock`, and the 10.25.0 changelog entry. +* Add two new additional interfaces to define a manual client reset handler: + - Add a manual callback handler to `ClientResetMode.manual` -> `ClientResetMode.manual(ErrorReportingBlock? = nil)`. + - Add the `RLMSyncConfiguration.manualClientResetHandler` property (type `RLMSyncErrorReportingBlock`). + - These error reporting blocks are invoked in the event of a `RLMSyncErrorClientResetError`. + - See `ErrorReportingBlock` (`RLMSyncErrorReportingBlock`), and `ClientResetInfo` for more detail. + - Previously, manual client resets were handled only through the `SyncManager.ErrorHandler`. You have the + option, but not the requirement, to define manual reset handler in these interfaces. + Otherwise, the `SyncManager.ErrorHandler` is still invoked during the manual client reset process. + - These new interfaces are only invoked during a `RLMSyncErrorClientResetError`. All other sync errors + are still handled in the `SyncManager.ErrorHandler`. + - See 'Breaking Changes' for information how these interfaces interact with an already existing + `SyncManager.ErrorHandler`. + +### Breaking Changes + +* The default `clientResetMode` (`RLMClientResetMode`) is switched from `.manual` (`RLMClientResetModeManual`) + to `.recoverUnsyncedChanges` (`RLMClientResetModeRecoverUnsyncedChanges`). + - If you are currently using `.manual` and continue to do so, the only change + you must explicitly make is designating manual mode in + your `Realm.Configuration.SyncConfiguration`s, since they will now default to `.recoverUnsyncedChanges`. + - You may choose to define your manual client reset handler in the newly + introduced `manual(ErrorReportingBlock? = nil)` + or `RLMSyncConfiguration.manualClientResetHandler`, but this is not required. + The `SyncManager.errorHandler` will still be invoked during a client reset if + no callback is passed into these new interfaces. + +### Deprecations + +* `ClientResetMode.discardLocal` is deprecated in favor of `ClientResetMode.discardUnsyncedChanges`. + The reasoning is that the name better reflects the effect of this reset mode. There is no actual + difference in behavior. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.0.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14.1. + +10.31.0 Release notes (2022-10-05) +============================================================= + +The prebuilt binary for Carthage is now build with Xcode 14.0.1. + +### Enhancements + +* Cut the runtime of aggregate operations on large dictionaries in half + ([Core #5864](https://github.com/realm/realm-core/pull/5864)). +* Improve performance of aggregate operations on collections of objects by 2x + to 10x ([Core #5864](https://github.com/realm/realm-core/pull/5864)). + Greatly improve the performance of sorting or distincting a Dictionary's keys + or values. The most expensive operation is now performed O(log N) rather than + O(N log N) times, and large Dictionaries can see upwards of 99% reduction in + time to sort. ([Core #5166](https://github.com/realm/realm-core/pulls/5166)) +* Add support for changing the deployment location for Atlas Apps. Previously + this was assumed to be immutable ([Core #5648](https://github.com/realm/realm-core/issues/5648)). +* The sync client will now yield the write lock to other threads which are + waiting to perform a write transaction even if it still has remaining work to + do, rather than always applying all changesets received from the server even + when other threads are trying to write. ([Core #5844](https://github.com/realm/realm-core/pull/5844)). +* The sync client no longer writes an unused temporary copy of the changesets + received from the server to the Realm file ([Core #5844](https://github.com/realm/realm-core/pull/5844)). + +### Fixed + +* Setting a `List` property with `Results` no longer throws an unrecognized + selector exception (since 10.8.0-beta.2) +* `RLMProgressNotificationToken` and `ProgressNotificationToken` now hold a + strong reference to the sync session, keeping it alive until the token is + deallocated or invalidated, as the other notification tokens do. + ([#7831](https://github.com/realm/realm-swift/issues/7831), since v2.3.0). +* Results permitted some nonsensical aggregate operations on column types which + do not make sense to aggregate, giving garbage results rather than reporting + an error ([Core #5876](https://github.com/realm/realm-core/pull/5876), since v5.0.0). +* Upserting a document in a Mongo collection would crash if the document's id + type was anything other than ObjectId (since v10.0.0). +* Fix a use-after-free when a sync session is closed and the app is destroyed + at the same time ([Core #5752](https://github.com/realm/realm-core/issues/5752), + since v10.19.0). + +### Deprecations + +* `RLMUpdateResult.objectId` has been deprecated in favor of + `RLMUpdateResult.documentId` to support reporting document ids which are not + object ids. +### Breaking Changes +* Private API `_realmColumnNames` has been renamed to a new public API + called `propertiesMapping()`. This change only affects the Swift API + and doesn't have any effects in the obj-c API. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.0.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14.1. + +### Internal + +* Upgraded realm-core from 12.7.0 to 12.9.0 + +10.30.0 Release notes (2022-09-20) +============================================================= + +### Fixed + +* Incoming links from `RealmAny` properties were not handled correctly when + migrating an object type from top-level to embedded. `RealmAny` properties + currently cannot link to embedded objects. + ([Core #5796](https://github.com/realm/realm-core/pull/5796), since 10.8.0). +* `Realm.refresh()` sometimes did not actually advance to the latest version. + It attempted to be semi-non-blocking in a very confusing way which resulted + in it sometimes advancing to a newer version that is not the latest version, + and sometimes blocking until notifiers are ready so that it could advance to + the latest version. This behavior was undocumented and didn't work correctly, + so it now always blocks if needed to advance to the latest version. + ([#7625](https://github.com/realm/realm-swift/issues/7625), since v0.98.0). +* Fix the most common cause of thread priority inversions when performing + writes on the main thread. If beginning the write transaction has to wait for + the background notification calculations to complete, that wait is now done + in a QoS-aware way. ([#7902](https://github.com/realm/realm-swift/issues/7902)) +* Subscribing to link properties in a flexible sync Realm did not work due to a + mismatch between what the client sent and what the server needed. + ([Core #5409](https://github.com/realm/realm-core/issues/5409)) +* Attempting to use `AsymmetricObject` with partition-based sync now reports a + sensible error much earlier in the process. Asymmetric sync requires using + flexible sync. ([Core #5691](https://github.com/realm/realm-core/issues/5691), since 10.29.0). +* Case-insensitive but diacritic-sensitive queries would crash on 4-byte UTF-8 + characters ([Core #5825](https://github.com/realm/realm-core/issues/5825), since v2.2.0) +* Accented characters are now handled by case-insensitive but + diacritic-sensitive queries. ([Core #5825](https://github.com/realm/realm-core/issues/5825), since v2.2.0) + +### Breaking Changes + +* `-[RLMASLoginDelegate authenticationDidCompleteWithError:]` has been renamed + to `-[RLMASLoginDelegate authenticationDidFailWithError:]` to comply with new + app store requirements. This only effects the obj-c API. + ([#7945](https://github.com/realm/realm-swift/issues/7945)) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1 - 14. + +### Internal + +* Upgraded realm-core from 12.6.0 to 12.7.0 + +10.29.0 Release notes (2022-09-09) +============================================================= + +### Enhancements + +* Add support for asymmetric sync. When a class inherits from + `AsymmetricObject`, objects created are synced unidirectionally to the server + and cannot be queried or read locally. + +```swift + class PersonObject: AsymmetricObject { + @Persisted(primaryKey: true) var _id: ObjectId + @Persisted var name: String + @Persisted var age: Int + } + + try realm.write { + // This will create the object on the server but not locally. + realm.create(PersonObject.self, value: ["_id": ObjectId.generate(), + "name": "Dylan", + "age": 20]) + } +``` +* Add ability to section a collection which conforms to `RealmCollection`, `RLMCollection`. + Collections can be sectioned by a unique key retrieved from a keyPath or a callback and will return an instance of `SectionedResults`/`RLMSectionedResults`. + Each section in the collection will be an instance of `ResultsSection`/`RLMSection` which gives access to the elements corresponding to the section key. + `SectionedResults`/`RLMSectionedResults` and `ResultsSection`/`RLMSection` have the ability to be observed. + ```swift + class DemoObject: Object { + @Persisted var title: String + @Persisted var date: Date + var firstLetter: String { + return title.first.map(String.init(_:)) ?? "" + } + } + var sectionedResults: SectionedResults + // ... + sectionedResults = realm.objects(DemoObject.self) + .sectioned(by: \.firstLetter, ascending: true) + ``` +* Add `@ObservedSectionedResults` for SwiftUI support. This property wrapper type retrieves sectioned results + from a Realm using a keyPath or callback to determine the section key. + ```swift + struct DemoView: View { + @ObservedSectionedResults(DemoObject.self, + sectionKeyPath: \.firstLetter) var demoObjects + + var body: some View { + VStack { + List { + ForEach(demoObjects) { section in + Section(header: Text(section.key)) { + ForEach(section) { object in + MyRowView(object: object) + } + } + } + } + } + } + } + ``` +* Add automatic handing for changing top-level objects to embedded objects in + migrations. Any objects of the now-embedded type which have zero incoming + links are deleted, and objects with multiple incoming links are duplicated. + This happens after the migration callback function completes, so there is no + functional change if you already have migration logic which correctly handles + this. ([Core #5737](https://github.com/realm/realm-core/pull/5737)). +* Improve performance when a new Realm file connects to the server for the + first time, especially when significant amounts of data has been written + while offline. ([Core #5772](https://github.com/realm/realm-core/pull/5772)) +* Shift more of the work done on the sync worker thread out of the write + transaction used to apply server changes, reducing how long it blocks other + threads from writing. ([Core #5772](https://github.com/realm/realm-core/pull/5772)) +* Improve the performance of the sync changeset parser, which speeds up + applying changesets from the server. ([Core #5772](https://github.com/realm/realm-core/pull/5772)) + +### Fixed + +* Fix all of the UBSan failures hit by our tests. It is unclear if any of these + manifested as visible bugs. ([Core #5665](https://github.com/realm/realm-core/pull/5665)) +* Upload completion callbacks were sometimes called before the final step of + interally marking the upload as complete, which could result in calling + `Realm.writeCopy()` from the completion callback failing due to there being + unuploaded changes. ([Core #4865](https://github.com/realm/realm-core/issues/4865)). +* Writing to a Realm stored on an exFAT drive threw the exception "fcntl() with + F_BARRIERFSYNC failed: Inappropriate ioctl for device" when a write + transaction needed to expand the file. + ([Core #5789](https://github.com/realm/realm-core/issues/5789), since 10.27.0) +* Syncing a Decimal128 with big significand could result in a crash. + ([Core #5728](https://github.com/realm/realm-core/issues/5728)) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14 RC. + +### Internal + +* Upgraded realm-core from 12.5.1 to 12.6.0 + +10.28.7 Release notes (2022-09-02) +============================================================= + +### Enhancements + +* Add prebuilt binaries for Xcode 14 to the release package. + +### Fixed + +* Fix archiving watchOS release builds with Xcode 14. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14 beta 6. + +10.28.6 Release notes (2022-08-19) +============================================================= + +### Fixed + +* Fixed an issue where having realm-swift as SPM sub-target dependency leads to + missing symbols error during iOS archiving ([Core #7645](https://github.com/realm/realm-core/pull/7645)). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14 beta 5. + +### Internal + +* Upgraded realm-core from 12.5.0 to 12.5.1 + +10.28.5 Release notes (2022-08-09) +============================================================= + +### Enhancements + +* Improve performance of accessing `SubscriptionSet` properties when no writes + have been made to the Realm since the last access. + +### Fixed + +* A use-after-free could occur if a Realm with audit events enabled was + destroyed while processing an upload completion for the events Realm on a + different thread. ([Core PR #5714](https://github.com/realm/realm-core/pull/5714)) +* Opening a read-only synchronized Realm for the first time via asyncOpen did + not set the schema version, which could lead to `m_schema_version != + ObjectStore::NotVersioned` assertion failures later on. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14 beta 4. + +### Internal + +* Upgraded realm-core from 12.4.0 to 12.5.0 + +10.28.4 Release notes (2022-08-03) +============================================================= + +### Enhancements + +* Add support for building arm64 watchOS when installing Realm via CocoaPods. +* Reduce the amount of virtual address space used + ([Core #5645](https://github.com/realm/realm-core/pull/5645)). + +### Fixed + +* Fix some warnings when building with Xcode 14 + ([Core #5577](https://github.com/realm/realm-core/pull/5577)). +* Fix compilation failures on watchOS platforms which do not support thread-local storage. + ([#7694](https://github.com/realm/realm-swift/issues/7694), [#7695](https://github.com/realm/realm-swift/issues/7695) since v10.21.1) +* Fix a data race when committing a transaction while multiple threads are + waiting to begin write transactions. This appears to not have caused any + functional problems. +* Fix a data race when writing audit events which could occur if the sync + client thread was busy with other work when the event Realm was opened. +* Fix some cases of running out of virtual address space (seen/reported as mmap + failures) ([Core #5645](https://github.com/realm/realm-core/pull/5645)). +* Audit event scopes containing only write events and no read events would + occasionally throw a `BadVersion` exception when a write transaction was + committed (since v10.26.0). +* The client reset callbacks for the DiscardLocal mode would be passed invalid + Realm instances if the callback was invoked at a point where the Realm was + not otherwise open. ([Core #5654](https://github.com/realm/realm-core/pull/5654), since the introduction of DiscardLocal reset mode in v10.25.0) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14 beta 4. + +### Internal + +* Upgraded realm-core from 12.3.0 to 12.4.0. + +10.28.3 Release notes (2022-07-27) +============================================================= + +### Enhancements + +* Greatly improve the performance of obtaining cached Realm instances in Swift + when using a sync configuration. + +### Fixed + +* Add missing `initialSubscription` and `rerunOnOpen` to copyWithZone method on + `RLMRealmConfiguration`. This resulted in incorrect values when using + `RLMRealmConfiguration.defaultConfiguration`. +* The sync error handler did not hold a strong reference to the sync session + while dispatching the error from the worker thread to the main thread, + resulting in the session passed to the error handler being invalid if there + were no other remaining strong references elsewhere. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14 beta 3. + +10.28.2 Release notes (2022-06-30) +============================================================= + +### Fixed + +* Using `seedFilePath` threw an exception if the Realm file being opened + already existed ([#7840](https://github.com/realm/realm-swift/issues/7840), + since v10.26.0). +* The `intialSubscriptions` callback was invoked every time a Realm was opened + regardless of the value of `rerunOnOpen` and if the Realm was already open on + another thread (since v10.28.0). +* Allow using `RLMSupport.Swift` from RealmSwift's Cocoapods + ([#6886](https://github.com/realm/realm-swift/pull/6886)). +* Fix a UBSan failure when mapping encrypted pages. Fixing this did not change + the resulting assembly, so there were probably no functional problems + resulting from this (since v5.0.0). +* Improved performance of sync clients during integration of changesets with + many small strings (totalling > 1024 bytes per changeset) on iOS 14, and + devices which have restrictive or fragmented memory. + ([Core #5614](https://github.com/realm/realm-core/issues/5614)) +* Fix a data race when opening a flexible sync Realm (since v10.28.0). +* Add a missing backlink removal when assigning null or a non-link value to an + `AnyRealmValue` property which previously linked to an object. + This could have resulted in "key not found" exceptions or assertion failures + such as `mixed.hpp:165: [realm-core-12.1.0] Assertion failed: m_type` when + removing the destination link object. + ([Core #5574](https://github.com/realm/realm-core/pull/5573), since the introduction of AnyRealmValue in v10.8.0) + +### Compatibility + +* Realm Studio: 12.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14 beta 2. + +### Internal + +* Upgraded realm-core from 12.1.0 to 12.3.0. + +10.28.1 Release notes (2022-06-10) +============================================================= + +### Enhancements + +* Add support for Xcode 14. When building with Xcode 14, the minimum deployment + target is now iOS 11. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14 beta 1. + +10.28.0 Release notes (2022-06-03) +============================================================= + +### Enhancements + +* Replace mentions of 'MongoDB Realm' with 'Atlas App Services' in the documentation and update appropriate links to documentation. +* Allow adding a subscription querying for all documents of a type in swift for flexible sync. +``` + try await subscriptions.update { + subscriptions.append(QuerySubscription(name: "all_people")) + } +``` +* Add Combine API support for flexible sync beta. +* Add an `initialSubscriptions` parameter when retrieving the flexible sync configuration from a user, + which allows to specify a subscription update block, to bootstrap a set of flexible sync subscriptions + when the Realm is first opened. + There is an additional optional parameter flag `rerunOnOpen`, which allows to run this initial + subscriptions on every app startup. + +```swift + let config = user.flexibleSyncConfiguration(initialSubscriptions: { subs in + subs.append(QuerySubscription(name: "people_10") { + $0.age > 10 + }) + }, rerunOnOpen: true) + let realm = try Realm(configuration: config) +``` +* The sync client error handler will report an error, with detailed info about which object caused it, when writing an object to a flexible sync Realm outside of any query subscription. ([#5528](https://github.com/realm/realm-core/pull/5528)) +* Adding an object to a flexible sync Realm for a type that is not within a query subscription will now throw an exception. ([#5488](https://github.com/realm/realm-core/pull/5488)). + +### Fixed + +* Flexible Sync query subscriptions will correctly complete when data is synced to the local Realm. ([#5553](https://github.com/realm/realm-core/pull/5553), since v12.0.0) + +### Breaking Changes + +* Rename `SyncSubscriptionSet.write` to `SyncSubscriptionSet.update` to avoid confusion with `Realm.write`. +* Rename `SyncSubscription.update` to `SyncSubscription.updateQuery` to avoid confusion with `SyncSubscriptionSet.update`. +* Rename `RLMSyncSubscriptionSet.write` to `RLMSyncSubscriptionSet.update` to align it with swift API. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-13.4. + +### Internal + +* Upgraded realm-core from 12.0.0 to 12.1.0. + +10.27.0 Release notes (2022-05-26) +============================================================= + +### Enhancements + +* `@AsyncOpen`/`@AutoOpen` property wrappers can be used with flexible sync. + +### Fixed + +* When installing via SPM, debug builds could potentially hit an assertion + failure during flexible sync bootstrapping. ([Core #5527](https://github.com/realm/realm-core/pull/5527)) +* Flexible sync now only applies bootstrap data if the entire bootstrap is + received. Previously orphaned objects could result from the read snapshot on + the server changing. ([Core #5331](https://github.com/realm/realm-core/pull/5331)) +* Partially fix a performance regression in write performance introduced in + v10.21.1. v10.21.1 fixed a case where a kernel panic or device's battery + dying at the wrong point in a write transaction could potentially result in a + corrected Realm file, but at the cost of a severe performance hit. This + version adjusts how file synchronization is done to provide the same safety + at a much smaller performance hit. ([#7740](https://github.com/realm/realm-swift/issues/7740)). + +### Compatibility + +* Realm Studio: 11.0.0 or later (but see note below). +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-13.4. + +### Internal + +* Upgraded realm-core from 11.17.0 to 12.0.0. +* Bump the version number for the lockfile used for interprocess + synchronization. This has no effect on persistent data, but means that + versions of Realm which use pre-12.0.0 realm-core cannot open Realm files at + the same time as they are opened by this version. Notably this includes Realm + Studio, and v11.1.2 (the latest at the time of this release) cannot open + Realm files which are simultaneously open in the simulator. + +10.26.0 Release notes (2022-05-19) +============================================================= + +Xcode 13.1 is now the minimum supported version of Xcode, as Apple no longer +allows submitting to the app store with Xcode 12. + +### Enhancements + +* Add Xcode 13.4 binaries to the release package. +* Add Swift API for asynchronous transactions +```swift + try? realm.writeAsync { + realm.create(SwiftStringObject.self, value: ["string"]) + } onComplete: { error in + // optional handling on write complete + } + + try? realm.beginAsyncWrite { + realm.create(SwiftStringObject.self, value: ["string"]) + realm.commitAsyncWrite() + } + + let asyncTransactionId = try? realm.beginAsyncWrite { + // ... + } + try! realm.cancelAsyncWrite(asyncTransactionId) +``` +* Add Obj-C API for asynchronous transactions +``` + [realm asyncTransactionWithBlock:^{ + [StringObject createInRealm:realm withValue:@[@"string"]]; + } onComplete:^(NSError *error) { + // optional handling + }]; + + [realm beginAsyncWriteTransaction:^{ + [StringObject createInRealm:realm withValue:@[@"string"]]; + [realm commitAsyncWriteTransaction]; + }]; + + RLMAsyncTransactionId asyncTransactionId = [realm beginAsyncWriteTransaction:^{ + // ... + }]; + [realm cancelAsyncTransaction:asyncTransactionId]; +``` +* Improve performance of opening a Realm with `objectClasses`/`objectTypes` set + in the configuration. +* Implement the Realm event recording API for reporting reads and writes on a + Realm file to Atlas. + +### Fixed + +* Lower minimum OS version for `async` login and FunctionCallables to match the + rest of the `async` functions. ([#7791]https://github.com/realm/realm-swift/issues/7791) +* Consuming a RealmSwift XCFramework with library evolution enabled would give the error + `'Failed to build module 'RealmSwift'; this SDK is not supported by the compiler'` + when the XCFramework was built with an older XCode version and is + then consumed with a later version. ([#7313](https://github.com/realm/realm-swift/issues/7313), since v3.18.0) +* A data race would occur when opening a synchronized Realm with the client + reset mode set to `discardLocal` on one thread at the same time as a client + reset was being processed on another thread. This probably did not cause any + functional problems in practice and the broken timing window was very tight (since 10.25.0). +* If an async open of a Realm triggered a client reset, the callbacks for + `discardLocal` could theoretically fail to be called due to a race condition. + The timing for this was probably not possible to hit in practice (since 10.25.0). +* Calling `[RLMRealm freeze]`/`Realm.freeze` on a Realm which had been created from `writeCopy` + would not produce a frozen Realm. ([#7697](https://github.com/realm/realm-swift/issues/7697), since v5.0.0) +* Using the dynamic subscript API on unmanaged objects before first opening a + Realm or if `objectTypes` was set when opening a Realm would throw an + exception ([#7786](https://github.com/realm/realm-swift/issues/7786)). +* The sync client may have sent a corrupted upload cursor leading to a fatal + error from the server due to an uninitialized variable. + ([#5460](https://github.com/realm/realm-core/pull/5460), since v10.25.1) +* Flexible sync would not correctly resume syncing if a bootstrap was interrupted + ([#5466](https://github.com/realm/realm-core/pull/5466), since v10.21.1). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-13.4. + +### Internal + +* Upgraded realm-core from v11.15.0 to v11.17.0 + +10.25.2 Release notes (2022-04-27) +============================================================= + +### Enhancements + +* Replace Xcode 13.3 binaries with 13.3.1 binaries. + +### Fixed + +* `List` would contain an invalidated object instead of null when + the object linked to was deleted by a difference sync client + ([Core #5215](https://github.com/realm/realm-core/pull/5215), since v10.8.0). +* Adding an object to a Set, deleting the parent object of the Set, and then + deleting the object which was added to the Set would crash + ([Core #5387](https://github.com/realm/realm-core/issues/5387), since v10.8.0). +* Synchronized Realm files which were first created using v10.0.0-beta.3 would + be redownloaded instead of using the existing file, possibly resulting in the + loss of any unsynchronized data in those files (since v10.20.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.3.1. + +### Internal + +* Upgraded realm-core from v11.14.0 to v11.15.0 + +10.25.1 Release notes (2022-04-11) +============================================================= + +### Fixed + +* Fixed various memory corruption bugs when encryption is used caused by not + locking a mutex when needed. + ([#7640](https://github.com/realm/realm-swift/issues/7640), [#7659](https://github.com/realm/realm-swift/issues/7659), since v10.21.1) +* Changeset upload batching did not calculate the accumulated size correctly, + resulting in “error reading body failed to read: read limited at 16777217 + bytes” errors from the server when writing large amounts of data + ([Core #5373](https://github.com/realm/realm-core/pull/5373), since 10.25.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.3. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.3. + +### Internal + +* Upgraded realm-core from v11.13.0 to v11.14.0. + +10.25.0 Release notes (2022-03-29) +============================================================= + +Synchronized Realm files written by this version cannot be opened by older +versions of Realm. Existing files will be automatically upgraded when opened. + +Non-synchronized Realm files remain backwards-compatible. + +### Enhancements + +* Add ability to use Swift Query syntax in `@ObservedResults`, which allows you + to filter results using the `where` parameter. +* Add ability to use `MutableSet` with `StateRealmObject` in SwiftUI. +* Async/Await extensions are now compatible with iOS 13 and above when building + with Xcode 13.3. +* Sync changesets waiting to be uploaded to the server are now compressed, + reducing the disk space needed when large write transactions are performed + while offline or limited in bandwidth.([Core #5260](https://github.com/realm/realm-core/pull/5260)). +* Added new `SyncConfiguration.clientResetMode` and `RLMSyncConfiguration.clientResetMode` properties. + - The values of these properties will dictate client behavior in the event of a [client reset](https://docs.mongodb.com/realm/sync/error-handling/client-resets/). + - See below for information on `ClientResetMode` values. + - `clientResetMode` defaults to `.manual` if not set otherwise. +* Added new `ClientResetMode` and `RLMClientResetMode` enums. + - These enums represent possible client reset behavior for `SyncConfiguration.clientResetMode` and `RLMSyncConfiguration.clientResetMode`, respectively. + - `.manual` and `RLMClientResetModeManual` + - The local copy of the Realm is copied into a recovery + directory for safekeeping, and then deleted from the original location. The next time + the Realm for that partition value is opened, the Realm will automatically be re-downloaded from + MongoDB Realm, and can be used as normal. + - Data written to the Realm after the local copy of the Realm diverged from the backup + remote copy will be present in the local recovery copy of the Realm file. The + re-downloaded Realm will initially contain only the data present at the time the Realm + was backed up on the server. + - `rlmSync_clientResetBackedUpRealmPath` and `SyncError.clientResetInfo()` are used for accessing the recovery directory. + - `.discardLocal` and `RLMClientResetDiscardLocal` + - All unsynchronized local changes are automatically discarded and the local state is + automatically reverted to the most recent state from the server. Unsynchronized changes + can then be recovered in a post-client-reset callback block (See changelog below for more details). + - If RLMClientResetModeDiscardLocal is enabled but the client reset operation is unable to complete + then the client reset process reverts to manual mode. + - The realm's underlying object accessors remain bound so the UI may be updated in a non-disruptive way. +* Added support for client reset notification blocks for `.discardLocal` and `RLMClientResetDiscardLocal` + - **RealmSwift implementation**: `discardLocal(((Realm) -> Void)? = nil, ((Realm, Realm) -> Void)? = nil)` + - RealmSwift client reset blocks are set when initializing the user configuration + ```swift + var configuration = user.configuration(partitionValue: "myPartition", clientResetMode: .discardLocal(beforeClientResetBlock, afterClientResetBlock)) + ``` + - The before client reset block -- `((Realm) -> Void)? = nil` -- is executed prior to a client reset. Possible usage includes: + ```swift + let beforeClientResetBlock: (Realm) -> Void = { beforeRealm in + var recoveryConfig = Realm.Configuration() + recoveryConfig.fileURL = myRecoveryPath + do { + beforeRealm.writeCopy(configuration: recoveryConfig) + /* The copied realm could be used later for recovery, debugging, reporting, etc. */ + } catch { + /* handle error */ + } + } + ``` + - The after client reset block -- `((Realm, Realm) -> Void)? = nil)` -- is executed after a client reset. Possible usage includes: + ```Swift + let afterClientResetBlock: (Realm, Realm) -> Void = { before, after in + /* This block could be used to add custom recovery logic, back-up a realm file, send reporting, etc. */ + for object in before.objects(myClass.self) { + let res = after.objects(myClass.self) + if (res.filter("primaryKey == %@", object.primaryKey).first != nil) { + /* ...custom recovery logic... */ + } else { + /* ...custom recovery logic... */ + } + } + ``` + - **Realm Obj-c implementation**: Both before and after client reset callbacks exist as properties on `RLMSyncConfiguration` and are set at initialization. + ```objective-c + RLMRealmConfiguration *config = [user configurationWithPartitionValue:partitionValue + clientResetMode:RLMClientResetModeDiscardLocal + notifyBeforeReset:beforeBlock + notifyAfterReset:afterBlock]; + ``` + where `beforeBlock` is of type `RLMClientResetBeforeBlock`. And `afterBlock` is of type `RLMClientResetAfterBlock`. + +### Breaking Changes + +* Xcode 13.2 is no longer supported when building with Async/Await functions. Use + Xcode 13.3 to build with Async/Await functionality. + +### Fixed + +* Adding a Realm Object to a `ObservedResults` or a collections using + `StateRealmObject` that is managed by the same Realm would throw if the + Object was frozen and not thawed before hand. +* Setting a Realm Configuration for @ObservedResults using it's initializer + would be overrode by the Realm Configuration stored in + `.environment(\.realmConfiguration, ...)` if they did not match + ([Cocoa #7463](https://github.com/realm/realm-swift/issues/7463), since v10.6.0). +* Fix searchable component filter overriding the initial filter on `@ObservedResults`, (since v10.23.0). +* Comparing `Results`, `LinkingObjects` or `AnyRealmCollection` when using Realm via XCFramework + would result in compile time errors ([Cocoa #7615](https://github.com/realm/realm-swift/issues/7615), since v10.21.0) +* Opening an encrypted Realm while the keychain is locked on macOS would crash + ([#7438](https://github.com/realm/realm-swift/issues/7438)). +* Updating subscriptions while refreshing the access token would crash + ([Core #5343](https://github.com/realm/realm-core/issues/5343), since v10.22.0) +* Fix several race conditions in `SyncSession` related to setting + `customRequestHeaders` while using the `SyncSession` on a different thread. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.3. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.3. + +### Internal + +* Upgraded realm-core from v11.12.0 to v11.13.0 + +10.24.2 Release notes (2022-03-18) +============================================================= + +### Fixed + +* Application would sometimes crash with exceptions like 'KeyNotFound' or + assertion "has_refs()". Other issues indicating file corruption may also be + fixed by this. The one mentioned here is the one that lead to solving the + problem. + ([Core #5283](https://github.com/realm/realm-core/issues/5283), since v5.0.0) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.3. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.3. + +### Internal + +* Upgraded realm-core from 11.11.0 to 11.12.0 + +10.24.1 Release notes (2022-03-14) +============================================================= + +Switch to building the Carthage binary with Xcode 13.3. This release contains +no functional changes from 10.24.0. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.3. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.3. + +10.24.0 Release notes (2022-03-05) +============================================================= + +### Enhancements + +* Add ability to use Swift Query syntax in `@ObservedResults`, which allows you + to filter results using the `where` parameter. + +### Fixed + +* If a list of objects contains links to objects not included in the + synchronized partition, collection change notifications for that list could + be incorrect ([Core #5164](https://github.com/realm/realm-core/issues/5164), since v10.0.0). +* Adding a new flexible sync subscription could crash with + "Assertion failed: !m_unbind_message_sent" in very specific timing scenarios + ([Core #5149](https://github.com/realm/realm-core/pull/5149), since v10.22.0). +* Converting floats/doubles into Decimal128 would yield imprecise results + ([Core #5184](https://github.com/realm/realm-core/pull/5184), since v10.0.0) +* Using accented characters in class and field names in a synchronized Realm + could result in sync errors ([Core #5196](https://github.com/realm/realm-core/pull/5196), since v10.0.0). +* Calling `Realm.invalidate()` from inside a Realm change notification could + result in the write transaction which produced the notification not being + persisted to disk (since v10.22.0). +* When a client reset error which results in the current Realm file being + backed up and then deleted, deletion errors were ignored as long as the copy + succeeded. When this happens the deletion of the old file is now scheduled + for the next launch of the app. ([Core #5180](https://github.com/realm/realm-core/issues/5180), since v2.0.0) +* Fix an error when compiling a watchOS Simulator target not supporting + Thread-local storage ([#7623](https://github.com/realm/realm-swift/issues/7623), since v10.21.0). +* Add a validation check to report a sensible error if a Realm configuration + indicates that an in-memory Realm should be encrypted. ([Core #5195](https://github.com/realm/realm-core/issues/5195)) +* The Swift package set the linker flags on the wrong target, resulting in + linker errors when SPM decides to build the core library as a dynamic library + ([#7266](https://github.com/realm/realm-swift/issues/7266)). +* The download-core task failed if run in an environment without TMPDIR set + ([#7688](https://github.com/realm/realm-swift/issues/7688), since v10.23.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.2.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.3 beta 3. + +### Internal + +* Upgraded realm-core from 11.9.0 to 11.11.0 + +10.23.0 Release notes (2022-02-28) +============================================================= + +### Enhancements + +* Add `Realm.writeCopy(configuration:)`/`[RLMRealm writeCopyForConfiguration:]` which gives the + following functionality: + - Export a local non-sync Realm to be used with MongoDB Realm Sync + when the configuration is derived from a sync `RLMUser`/`User`. + - Write a copy of a local Realm to a destination specified in the configuration. + - Write a copy of a synced Realm in use with user A, and open it with user B. + - Note that migrations may be required when using a local realm configuration to open a realm file that + was copied from a synchronized realm. + + An exception will be thrown if a Realm exists at the destination. +* Add a `seedFilePath` option to `RLMRealmConfiguration` and `Configuration`. If this + option is set then instead of creating an empty Realm, the realm at the `seedFilePath` will + be copied to the `fileURL` of the new Realm. If a Realm file already exists at the + desitnation path, the seed file will not be copied and the already existing Realm + will be opened instead. Note that to use this parameter with a synced Realm configuration + the seed Realm must be appropriately copied to a destination with + `Realm.writeCopy(configuration:)`/`[RLMRealm writeCopyForConfiguration:]` first. +* Add ability to permanently delete a User from a MongoDB Realm app. This can + be invoked with `User.delete()`/`[RLMUser deleteWithCompletion:]`. +* Add `NSCopying` conformance to `RLMDecimal128` and `RLMObjectId`. +* Add Xcode 13.3 binaries to the release package (and remove 13.0). + +### Fixed + +* Add support of arm64 in Carthage build ([#7154](https://github.com/realm/realm-cocoa/issues/7154) +* Adding missing support for `IN` queries to primitives types on Type Safe Queries. + ```swift + let persons = realm.objects(Person.self).where { + let acceptableNames = ["Tom", "James", "Tyler"] + $0.name.in([acceptableNames]) + } + ``` + ([Cocoa #7633](https://github.com/realm/realm-swift/issues/7633), since v10.19.0) +* Work around a compiler crash when building with Swift 5.6 / Xcode 13.3. + CustomPersistable's PersistedType must now always be a built-in type rather + than possibly another CustomPersistable type as Swift 5.6 has removed support + for infinitely-recursive associated types ([#7654](https://github.com/realm/realm-swift/issues/7654)). +* Fix redundant call to filter on `@ObservedResults` from `searchable` + component (since v10.19.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.2.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.3 beta 3. + +10.22.0 Release notes (2022-01-25) +============================================================= + +### Enhancements + +* Add beta support for flexible sync. See the [backend](https://docs.mongodb.com/realm/sync/data-access-patterns/flexible-sync/) and [SDK](https://docs.mongodb.com/realm/sdk/swift/examples/flexible-sync/) documentation for more information. Please report any issues with the beta through Github. + +### Fixed + +* UserIdentity metadata table grows indefinitely. ([#5152](https://github.com/realm/realm-core/issues/5152), since v10.20.0) +* We now report a useful error message when opening a sync Realm in non-sync mode or vice-versa.([#5161](https://github.com/realm/realm-core/pull/5161), since v5.0.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.2.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.2.1. + +### Internal + +* Upgraded realm-core from 11.8.0 to 11.9.0 + +10.21.1 Release notes (2022-01-12) +============================================================= + +### Fixed + +* The sync client will now drain the receive queue when a send fails with + ECONNRESET, ensuring that any error message from the server gets received and + processed. ([#5078](https://github.com/realm/realm-core/pull/5078)) +* Schema validation was missing for embedded objects in sets, resulting in an + unhelpful error being thrown if a Realm object subclass contained one (since v10.0.0). +* Opening a Realm with a schema that has an orphaned embedded object type + performed an extra empty write transaction (since v10.0.0). +* Freezing a Realm with a schema that has orphaned embedded object types threw + a "Wrong transactional state" exception (since v10.19.0). +* `@sum` and `@avg` queries on Dictionaries of floats or doubles used too much + precision for intermediates, resulting in incorrect rounding (since v10.5.0). +* Change the exception message for calling refresh on an immutable Realm from + "Continuous transaction through DB object without history information." to + "Can't refresh a read-only Realm." + ([#5061](https://github.com/realm/realm-core/issues/5061), since v10.8.0). +* Queries of the form "link.collection.@sum = 0" where `link` is null matched + when `collection` was a List or Set, but not a Dictionary + ([#5080](https://github.com/realm/realm-core/pull/5080), since v10.8.0). +* Types which require custom obj-c bridging (such as `PersistableEnum` or + `CustomPersistable`) would crash with exceptions mentioning `__SwiftValue` in + a variety of places on iOS versions older than iOS 14 + ([#7604](https://github.com/realm/realm-swift/issues/7604), since v10.21.0) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.2.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.2.1. + +### Internal + +* Upgraded realm-core from 11.6.1 to 11.8.0. + +10.21.0 Release notes (2022-01-10) +============================================================= + +### Enhancements + +* Add `metadata` property to `RLMUserProfile`/`UserProfile`. +* Add class `Projection` to allow creation of light weight view models out of Realm Objects. +```swift +public class Person: Object { + @Persisted var firstName = "" + @Persisted var lastName = "" + @Persisted var address: Address? = nil + @Persisted var friends = List() +} + +public class Address: EmbeddedObject { + @Persisted var city: String = "" + @Persisted var country = "" +} + +class PersonProjection: Projection { + // `Person.firstName` will have same name and type + @Projected(\Person.firstName) var firstName + // There will be the only String for `city` of the original object `Address` + @Projected(\Person.address.city) var homeCity + // List will be mapped to list of firstNames + @Projected(\Person.friends.projectTo.firstName) var firstFriendsName: ProjectedCollection +} + +// `people` will contain projections for every `Person` object in the `realm` +let people: Results = realm.objects(PersonProjection.self) +``` +* Greatly improve performance of reading AnyRealmValue and enum types from + Realm collections. +* Allow using Swift enums which conform to `PersistableEnum` as the value type + for all Realm collections. +* `AnyRealmCollection` now conforms to `Encodable`. +* AnyRealmValue and PersistableEnum values can now be passed directly to an + NSPredicate used in a filter() call rather than having to pass the rawValue + (the rawValue is still allowed). +* Queries on collections of PersistableEnums can now be performed with `where()`. +* Add support for querying on the rawValue of an enum with `where()`. +* `.count` is supported for Maps of all types rather than just numeric types in `where()`. +* Add support for querying on the properties of objects contained in + dictionaries (e.g. "dictProperty.@allValues.name CONTAINS 'a'"). +* Improve the error message for many types of invalid predicates in queries. +* Add support for comparing `@allKeys` to another property on the same object. +* Add `Numeric` conformance to `Decimal128`. +* Make some invalid property declarations such as `List` a + compile-time error instead of a runtime error. +* Calling `.sorted(byKeyPath:)` on a collection with an Element type which does + not support sorting by keypaths is now a compile-time error instead of a + runtime error. +* `RealmCollection.sorted(ascending:)` can now be called on all + non-Object/EmbeddedObject collections rather than only ones where the + `Element` conforms to `Comparable`. +* Add support for using user-defined types with `@Persistable` and in Realm + collections by defining a mapping to and from a type which Realm knows how to + store. For example, `URL` can be made persistable with: + ```swift + extension URL: FailableCustomPersistable { + // Store URL values as a String in Realm + public typealias PersistedType = String + // Convert a String to a URL + public init?(persistedValue: String) { self.init(string: persistedValue) } + // Convert a URL to a String + public var persistableValue: String { self.absoluteString } + } + ``` + After doing this, `@Persisted var url: URL` is a valid property declaration + on a Realm object. More advanced mappings can be done by mapping to an + EmbeddedObject which can store multiple values. + +### Fixed + +* Accessing a non object collection inside a migration would cause a crash +* [#5633](https://github.com/realm/realm-cocoa/issues/5633). +* Accessing a `Map` of objects dynamically would not handle nulled values correctly (since v10.8.0). +* `where()` allowed constructing some nonsensical queries due to boolean + comparisons returning `Query` rather than `Query` (since v10.19.0). +* `@allValues` queries on dictionaries accidentally did not require "ANY". +* Case-insensitive and diacritic-insensitive modifiers were ignored when + comparing the result of an aggregate operation to another property in a + query. +* `Object.init(value:)` did not allow initializing `RLMDictionary`/`Map` + properties with null values for map entries (since v10.8.0). +* `@ObservedResults` did not refresh when changes were made to the observed + collection. (since v10.6.0) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.2.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.2.1. + +10.20.1 Release notes (2021-12-14) +============================================================= + +Xcode 12.4 is now the minimum supported version of Xcode. + +### Fixed + +* Add missing `Indexable` support for UUID. + ([Cocoa #7545](https://github.com/realm/realm-swift/issues/7545), since v10.10.0) + +### Breaking Changes + +* All `async` functions now require Xcode 13.2 to work around an App + Store/TestFlight bug that results in apps built with 13.0/13.1 which do not + use libConcurrency but link a library which does crashing on startup. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.2. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.2. + +10.20.0 Release notes (2021-11-16) +============================================================= + +### Enhancements + +* Conform `@ThreadSafe` and `ThreadSafeReference` to `Sendable`. +* Allow using Swift enums which conform to `PersistableEnum` as the value type + for all Realm collections. +* `AnyRealmCollection` now conforms to `Encodable`. +* Greatly improve performance of reading AnyRealmValue and enum types from + Realm collections. +* `AnyRealmCollection` now conforms to `Encodable`. + +### Fixed + +* `@AutoOpen` will open the existing local Realm file on any connection error + rather than only when the connection specifically times out. +* Do not allow `progress` state changes for `@AutoOpen` and `@AsyncOpen` after + changing state to `open(let realm)` or `error(let error)`. +* Logging out a sync user failed to remove the local Realm file for partitions + with very long partition values that would have exceeded the maximum path + length. ([Core #4187](https://github.com/realm/realm-core/issues/4187), since v10.0.0) +* Don't keep trying to refresh the access token if the client's clock is more + than 30 minutes fast. ([Core #4941](https://github.com/realm/realm-core/issues/4941)) +* Failed auth requests used a fixed long sleep rather than exponential backoff + like other sync requests, which could result in very delayed reconnects after + a device was offline long enough for the access token to expire (since v10.0.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.1. + +### Internal + +* Upgraded realm-core from 11.6.0 to 11.6.1. + +10.19.0 Release notes (2021-11-04) +============================================================= + +### Enhancements + +* Add `.searchable()` SwiftUI View Modifier which allows filtering + `@ObservedResult` results from a search field component by a key path. + ```swift + List { + ForEach(reminders) { reminder in + ReminderRowView(reminder: reminder) + } + }.searchable(text: $searchFilter, + collection: $reminders, + keyPath: \.name) { + ForEach(reminders) { remindersFiltered in + Text(remindersFiltered.name).searchCompletion(remindersFiltered.name) + } + } + ``` +* Add an API for a type safe query syntax. This allows you to filter a Realm + and collections managed by a Realm with Swift style expressions. Here is a + brief example: + ```swift + class Person: Object { + @Persisted var name: String + @Persisted var hobbies: MutableSet + @Persisted var pets: List + } + class Pet: Object { + @Persisted var name: String + @Persisted var age: Int + } + + let persons = realm.objects(Person.self).where { + $0.hobbies.contains("music") || $0.hobbies.contains("baseball") + } + + persons = realm.objects(Person.self).where { + ($0.pets.age >= 2) && $0.pets.name.starts(with: "L") + } + ``` + ([#7419](https://github.com/realm/realm-swift/pull/7419)) +* Add support for dictionary subscript expressions + (e.g. `"phoneNumbers['Jane'] == '123-3456-123'"`) when querying with an + NSPredicate. +* Add UserProfile to User. This contains metadata from social logins with MongoDB Realm. +* Slightly reduce the peak memory usage when processing sync changesets. + +### Fixed + +* Change default request timeout for `RLMApp` from 6 seconds to 60 seconds. +* Async `Realm` init would often give a Realm instance which could not actually + be used and would throw incorrect thread exceptions. It now is `@MainActor` + and gives a Realm instance which always works on the main actor. The + non-functional `queue:` parameter has been removed (since v10.15.0). +* Restore the pre-v10.12.0 behavior of calling `writeCopy()` on a synchronized + Realm which produced a local non-synchronized Realm + ([#7513](https://github.com/realm/realm-swift/issues/7513)). +* Decimal128 did not properly normalize the value before hashing and so could + have multiple values which are equal but had different hash values (since v10.8.0). +* Fix a rare assertion failure or deadlock when a sync session is racing to + close at the same time that external reference to the Realm is being + released. ([Core #4931](https://github.com/realm/realm-core/issues/4931)) +* Fix a assertion failure when opening a sync Realm with a user who had been + removed. Instead an exception will be thrown. ([Core #4937](https://github.com/realm/realm-core/issues/4937), since v10.0.0) +* Fixed a rare segfault which could trigger if a user was being logged out + while the access token refresh response comes in. + ([Core #4944](https://github.com/realm/realm-core/issues/4944), since v10.0.0) +* Fixed a bug where progress notifiers on an AsyncOpenTask could be called + after the open completed. ([Core #4919](https://github.com/realm/realm-core/issues/4919)) +* SecureTransport was not enabled for macCatalyst builds when installing via + SPM, resulting in `'SSL/TLS protocol not supported'` exceptions when using + Realm Sync. ([#7474](https://github.com/realm/realm-swift/issues/7474)) +* Users were left in the logged in state when their refresh token expired. + ([Core #4882](https://github.com/realm/realm-core/issues/4882), since v10) +* Calling `.count` on a distinct collection would return the total number of + objects in the collection rather than the distinct count the first time it is + called. ([#7481](https://github.com/realm/realm-swift/issues/7481), since v10.8.0). +* `realm.delete(collection.distinct(...))` would delete all objects in the + collection rather than just the first object with each distinct value in the + property being distincted on, unless the distinct Results were read from at + least once first (since v10.8.0). +* Calling `.distinct()` on a collection, accessing the Results, then passing + the Results to `realm.delete()` would delete the correct objects, but + afterwards report a count of zero even if there were still objects in the + Results (since v10.8.0). +* Download compaction could result in non-streaming sync download notifiers + never reporting completion (since v10.0.0, + [Core #4989](https://github.com/realm/realm-core/pull/4989)). +* Fix a deadlock in SyncManager that was probably not possible to hit in + real-world code (since v10.0.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.2. + +### Internal + +* Upgraded realm-core from v11.4.1 to v11.6.0 + +10.18.0 Release notes (2021-10-25) +============================================================= + +### Enhancements + +* Add support for using multiple users with `@AsyncOpen` and `@AutoOpen`. + Setting the current user to a new user will now automatically reopen the + Realm with the new user. +* Add prebuilt binary for Xcode 13.1 to the release package. + +### Fixed + +* Fix `@AsyncOpen` and `@AutoOpen` using `defaultConfiguration` by default if + the user's doesn't provide one, will set an incorrect path which doesn't + correspond to the users configuration one. (since v10.12.0) +* Adding missing subscription completion for `AsyncOpenPublisher` after + successfully returning a realm. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.1. + +10.17.0 Release notes (2021-10-06) +============================================================= + +### Enhancements + +* Add a new `@ThreadSafe` property wrapper. Objects and collections wrapped by `@ThreadSafe` may be passed between threads. It's + intended to allow local variables and function parameters to be used across + threads when needed. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.0. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0. + +10.16.0 Release notes (2021-09-29) +============================================================= + +### Enhancements + +* Add `async` versions of `EmailPasswordAuth.callResetPasswordFunction` and +r `User.linkUser` methods. +* Add `async` version of `MongoCollection` methods. +* Add `async` support for user functions. + +### Fixed + +* A race condition in Realm.asyncOpen() sometimes resulted in subsequent writes + from Realm Sync failing to produce notifications + ([#7447](https://github.com/realm/realm-swift/issues/7447), + [#7453](https://github.com/realm/realm-swift/issues/7453), + [Core #4909](https://github.com/realm/realm-core/issues/4909), since v10.15.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.0. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0. + +10.15.1 Release notes (2021-09-15) +============================================================= + +### Enhancements + +* Switch to building the Carthage release with Xcode 13. + +### Fixed + +* Fix compilation error where Swift 5.5 is available but the macOS 12 SDK was + not. This was notable for the Xcode 13 RC. This fix adds a #canImport check + for the `_Concurrency` module that was not available before the macOS 12 SDK. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.0. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0. + +10.15.0 Release notes (2021-09-10) +============================================================= + +### Enhancements + +* Add `async` versions of the `Realm.asyncOpen` and `App.login` methods. +* ThreadSafeReference no longer pins the source transaction version for + anything other than a Results created by filtering a collection. This means + that holding on to thread-safe references to other things (such as Objects) + will no longer cause file size growth. +* A ThreadSafeReference to a Results backed by a collection can now be created + inside a write transaction as long as the collection was not created in the + current write transaction. +* Synchronized Realms are no longer opened twice, cutting the address space and + file descriptors used in half. + ([Core #4839](https://github.com/realm/realm-core/pull/4839)) +* When using the SwiftUI helper types (@ObservedRealmObject and friends) to + bind to an Equatable property, self-assignment no longer performs a pointless + write transaction. SwiftUI appears to sometimes call a Binding's set function + multiple times for a single UI action, so this results in significantly fewer + writes being performed. + +### Fixed + +* Adding an unmanaged object to a Realm that was declared with + `@StateRealmObject` would throw the exception `"Cannot add an object with + observers to a Realm"`. +* The `RealmCollectionChange` docs refered to indicies in modifications as the + 'new' collection. This is incorrect and the docs now state that modifications + refer to the previous version of the collection. ([Cocoa #7390](https://github.com/realm/realm-swift/issues/7390)) +* Fix crash in `RLMSyncConfiguration.initWithUser` error mapping when a user is disabled/deleted from MongoDB Realm dashboard. + ([Cocoa #7399](https://github.com/realm/realm-swift/issues/7399), since v10.0.0) +* If the application crashed at the wrong point when logging a user in, the + next run of the application could hit the assertion failure "m_state == + SyncUser::State::LoggedIn" when a synchronized Realm is opened with that + user. ([Core #4875](https://github.com/realm/realm-core/issues/4875), since v10.0.0) +* The `keyPaths:` parameter to `@ObservedResults` did not work (since v10.12.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 5. + +### Internal + +* Upgraded realm-core from 11.3.1 to 11.4.1 + +10.14.0 Release notes (2021-09-03) +============================================================= + +### Enhancements + +* Add additional `observe` methods for Objects and RealmCollections which take + a `PartialKeyPath` type key path parameter. +* The release package once again contains Xcode 13 binaries. +* `PersistableEnum` properties can now be indexed or used as the primary key if + the RawValue is an indexable or primary key type. + +### Fixed + +* `Map` did not conform to `Codable`. + ([Cocoa #7418](https://github.com/realm/realm-swift/pull/7418), since v10.8.0) +* Fixed "Invalid data type" assertion failure in the sync client when the + client recieved an AddColumn instruction from the server for an AnyRealmValue + property when that property already exists locally. ([Core #4873](https://github.com/realm/realm-core/issues/4873), since v10.8.0) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 5. + +### Internal + +* Upgraded realm-core from 11.3.0 to 11.3.1. + +10.13.0 Release notes (2021-08-26) +============================================================= + +### Enhancements + +* Sync logs now contain information about what object/changeset was being applied when the exception was thrown. + ([Core #4836](https://github.com/realm/realm-core/issues/4836)) +* Added ServiceErrorCode for wrong username/password when using '`App.login`. + ([Core #7380](https://github.com/realm/realm-swift/issues/7380) + +### Fixed + +* Fix crash in `MongoCollection.findOneDocument(filter:)` that occurred when no results were + found for a given filter. + ([Cocoa #7380](https://github.com/realm/realm-swift/issues/7380), since v10.0.0) +* Some of the SwiftUI property wrappers incorrectly required objects to conform + to ObjectKeyIdentifiable rather than Identifiable. + ([Cocoa #7372](https://github.com/realm/realm-swift/issues/7372), since v10.6.0) +* Work around Xcode 13 beta 3+ shipping a broken swiftinterface file for Combine on 32-bit iOS. + ([Cocoa #7368](https://github.com/realm/realm-swift/issues/7368)) +* Fixes history corruption when replacing an embedded object in a list. + ([Core #4845](https://github.com/realm/realm-core/issues/4845)), since v10.0.0) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 5. + +### Internal + +* Upgraded realm-core from 11.2.0 to 11.3.0 + +10.12.0 Release notes (2021-08-03) +============================================================= + +### Enhancements + +* `Object.observe()` and `RealmCollection.observe()` now include an optional + `keyPaths` parameter which filters change notifications to those only + occurring on the provided key path or key paths. See method documentation + for extended detail on filtering behavior. +* `ObservedResults` now includes an optional `keyPaths` parameter + which filters change notifications to those only occurring on the provided + key path or key paths. ex) `@ObservedResults(MyObject.self, keyPaths: ["myList.property"])` +* Add two new property wrappers for opening a Realm asynchronously in a + SwiftUI View: + - `AsyncOpen` is a property wrapper that initiates Realm.asyncOpen + for the current user, notifying the view when there is a change in Realm asyncOpen state. + - `AutoOpen` behaves similarly to `AsyncOpen`, but in the case of no internet + connection this will return an opened realm. +* Add `EnvironmentValues.partitionValue`. This value can be injected into any view using one of + our new property wrappers `AsyncOpen` and `AutoOpen`: + `MyView().environment(\.partitionValue, "partitionValue")`. +* Shift more of the work done when first initializing a collection notifier to + the background worker thread rather than doing it on the main thread. + +### Fixed + +* `configuration(partitionValue: AnyBSON)` would always set a nil partition value + for the user sync configuration. +* Decoding a `@Persisted` property would incorrectly throw a `DecodingError.keyNotFound` + for an optional property if the key is missing. + ([Cocoa #7358](https://github.com/realm/realm-swift/issues/7358), since v10.10.0) +* Fixed a symlink which prevented Realm from building on case sensitive file systems. + ([#7344](https://github.com/realm/realm-swift/issues/7344), since v10.8.0) +* Removing a change callback from a Results would sometimes block the calling + thread while the query for that Results was running on the background worker + thread (since v10.11.0). +* Object observers did not handle the object being deleted properly, which + could result in assertion failures mentioning "m_table" in ObjectNotifier + ([Core #4824](https://github.com/realm/realm-core/issues/4824), since v10.11.0). +* Fixed a crash when delivering notifications over a nested hierarchy of lists + of Mixed that contain links. ([Core #4803](https://github.com/realm/realm-core/issues/4803), since v10.8.0) +* Fixed a crash when an object which is linked to by a Mixed is deleted via + sync. ([Core #4828](https://github.com/realm/realm-core/pull/4828), since v10.8.0) +* Fixed a rare crash when setting a mixed link for the first time which would + trigger if the link was to the same table and adding the backlink column + caused a BPNode split. ([Core #4828](https://github.com/realm/realm-core/pull/4828), since v10.8.0) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 4. On iOS Xcode 13 beta 2 is the latest supported + version due to betas 3 and 4 having a broken Combine.framework. + +### Internal + +* Upgraded realm-core from v11.1.1 to v11.2.0 + +10.11.0 Release notes (2021-07-22) +============================================================= + +### Enhancements + +* Add type safe methods for: + - `RealmCollection.min(of:)` + - `RealmCollection.max(of:)` + - `RealmCollection.average(of:)` + - `RealmCollection.sum(of:)` + - `RealmCollection.sorted(by:ascending:)` + - `RealmKeyedCollection.min(of:)` + - `RealmKeyedCollection.max(of:)` + - `RealmKeyedCollection.average(of:)` + - `RealmKeyedCollection.sum(of:)` + - `RealmKeyedCollection.sorted(by:ascending:)` + - `Results.distinct(by:)` + - `SortDescriptor(keyPath:ascending:) + + Calling these methods can now be done via Swift keyPaths, like so: + ```swift + class Person: Object { + @Persisted var name: String + @Persisted var age: Int + } + + let persons = realm.objects(Person.self) + persons.min(of: \.age) + persons.max(of: \.age) + persons.average(of: \.age) + persons.sum(of: \.age) + persons.sorted(by: \.age) + persons.sorted(by: [SortDescriptor(keyPath: \Person.age)]) + persons.distinct(by: [\Person.age]) + ``` +* Add `List.objects(at indexes:)` in Swift and `[RLMCollection objectsAtIndexes:]` in Objective-C. + This allows you to select elements in a collection with a given IndexSet ([#7298](https://github.com/realm/realm-swift/issues/7298)). +* Add `App.emailPasswordAuth.retryCustomConfirmation(email:completion:)` and `[App.emailPasswordAuth retryCustomConfirmation:completion:]`. + These functions support retrying a [custom confirmation](https://docs.mongodb.com/realm/authentication/email-password/#run-a-confirmation-function) function. +* Improve performance of creating collection notifiers for Realms with a complex schema. + This means that the first run of a query or first call to observe() on a collection will + do significantly less work on the calling thread. +* Improve performance of calculating changesets for notifications, particularly + for deeply nested object graphs and objects which have List or Set properties + with small numbers of objects in the collection. + +### Fixed + +* `RealmProperty` would crash when decoding a `null` json value. + ([Cocoa #7323](https://github.com/realm/realm-swift/issues/7323), since v10.8.0) +* `@Persisted` would crash when decoding a `null` value. + ([#7332](https://github.com/realm/realm-swift/issues/7332), since v10.10.0). +* Fixed an issue where `Realm.Configuration` would be set after views have been laid out + when using `.environment(\.realmConfiguration, ...)` in SwiftUI. This would cause issues if you are + required to bump your schema version and are using `@ObservedResults`. +* Sync user profiles now correctly persist between runs. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 3. Note that this release does not contain Xcode 13 + beta binaries as beta 3 does not include a working version of + Combine.framework for iOS. + +### Internal + +* Upgraded realm-core from 11.0.4 to 11.1.1 + +10.10.0 Release notes (2021-07-07) +============================================================= + +### Enhancements + +* Add a new property wrapper-based declaration syntax for properties on Realm + Swift object classes. Rather than using `@objc dynamic` or the + `RealmProperty` wrapper type, properties can now be declared with `@Persisted + var property: T`, where `T` is any of the supported property types, including + optional numbers and collections. This has a few benefits: + + - All property types are now declared in the same way. No more remembering + that this type requires `@objc dynamic var` while this other type + requires `let`, and the `RealmProperty` or `RealmOptional` helper is no + longer needed for types not supported by Objective-C. + - No more overriding class methods like `primaryKey()`, + `indexedProperties()` or `ignoredProperties()`. The primary key and + indexed flags are set directly in the property declaration with + `@Persisted(primaryKey: true) var _id: ObjectId` or `@Persisted(indexed: + true) var indexedProperty: Int`. If any `@Persisted` properties are present, + all other properties are implicitly ignored. + - Some performance problems have been fixed. Declaring collection + properties as `let listProp = List()` resulted in the `List` object + being created eagerly when the parent object is read, which could cause + performance problems if a class has a large number of `List` or + `RealmOptional` properties. `@Persisted var list: List` allows us to + defer creating the `List` until it's accessed, improving performance + when looping over objects and using only some of the properties. + + Similarly, `let _id = ObjectId.generate()` was a convenient way to + declare a sync-compatible primary key, but resulted in new ObjectIds + being generated in some scenarios where the value would never actually be + used. `@Persisted var _id: ObjectId` has the same behavior of + automatically generating primary keys, but allows us to only generate it + when actually needed. + - More types of enums are supported. Any `RawRepresentable` enum whose raw + type is a type supported by Realm can be stored in an `@Persisted` + project, rather than just `@objc` enums. Enums must be declared as + conforming to the `PersistableEnum` protocol, and still cannot (yet) be + used in collections. + - `willSet` and `didSet` can be used with `@Persistable` properties, while + they previously did not work on managed Realm objects. + + While we expect the switch to the new syntax to be very simple for most + users, we plan to support the existing objc-based declaration syntax for the + foreseeable future. The new style and old style cannot be mixed within a + single class, but new classes can use the new syntax while existing classes + continue to use the old syntax. Updating an existing class to the new syntax + does not change what data is stored in the Realm file and so does not require + a migration (as long as you don't also change the schema in the process, of + course). +* Add `Map.merge()`, which adds the key-value pairs from another Map or + Dictionary to the map. +* Add `Map.asKeyValueSequence()` which returns an adaptor that can be used with + generic functions that operate on Dictionary-styled sequences. + +### Fixed +* AnyRealmValue enum values are now supported in more places when creating + objects. +* Declaring a property as `RealmProperty` will now report an + error during schema discovery rather than doing broken things when the + property is used. +* Observing the `invalidated` property of `RLMDictionary`/`Map` via KVO did not + set old/new values correctly in the notification (since 10.8.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 2. + +10.9.0 Release notes (2021-07-01) +============================================================= + +### Enhancements + +* Add `App.emailPasswordAuth.retryCustomConfirmation(email:completion:)` and + `[App.emailPasswordAuth retryCustomConfirmation:completion:]`. These + functions support retrying a [custom confirmation](https://docs.mongodb.com/realm/authentication/email-password/#run-a-confirmation-function) + function. +* Improve performance of many Dictionary operations, especially when KVO is being used. + +### Fixed + +* Calling `-[RLMRealm deleteObjects:]` on a `RLMDictionary` cleared the + dictionary but did not actually delete the objects in the dictionary (since v10.8.0). +* Rix an assertion failure when observing a `List` contains + object links. ([Core #4767](https://github.com/realm/realm-core/issues/4767), since v10.8.0) +* Fix an assertion failure when observing a `RLMDictionary`/`Map` which links + to an object which was deleting by a different sync client. + ([Core #4770](https://github.com/realm/realm-core/pull/4770), since v10.8.0) +* Fix an endless recursive loop that could cause a stack overflow when + computing changes on a set of objects which contained cycles. + ([Core #4770](https://github.com/realm/realm-core/pull/4770), since v10.8.0). +* Hash collisions in dictionaries were not handled properly. + ([Core #4776](https://github.com/realm/realm-core/issues/4776), since v10.8.0). +* Fix a crash after clearing a list or set of AnyRealmValue containing links to + objects ([Core #4774](https://github.com/realm/realm-core/issues/4774), since v10.8.0) +* Trying to refresh a user token which had been revoked by an admin lead to an + infinite loop and then a crash. This situation now properly logs the user out + and reports an error. ([Core #4745](https://github.com/realm/realm-core/issues/4745), since v10.0.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 2. + +### Internal + +* Upgraded realm-core from v11.0.3 to v11.0.4 + +10.8.1 Release notes (2021-06-22) +============================================================= + +### Enhancements + +* Update Xcode 12.5 to Xcode 12.5.1. +* Create fewer dynamic classes at runtime, improving memory usage and startup time slightly. + +### Fixed + +* Importing the Realm swift package produced several warnings about excluded + files not existing. Note that one warning will still remain after this change. + ([#7295](https://github.com/realm/realm-swift/issues/7295), since v10.8.0). +* Update the root URL for the API docs so that the links go to the place where + new versions of the docs are being published. + ([#7299](https://github.com/realm/realm-swift/issues/7299), since v10.6.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. Note that this version of Realm Studio has not + yet been released at the time of this release. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 1. + +10.8.0 Release notes (2021-06-14) +============================================================= + +NOTE: This version upgrades the Realm file format version to add support for +the new data types and to adjust how primary keys are handled. Realm files +opened will be automatically upgraded and cannot be read by versions older than +v10.8.0. This upgrade should be a fairly fast one. Note that we now +automatically create a backup of the pre-upgrade Realm. + +### Enhancements + +* Add support for the `UUID` and `NSUUID` data types. These types can be used + for the primary key property of Object classes. +* Add two new collection types to complement the existing `RLMArray`/`List` type: + - `RLMSet` in Objective-C and `MutableSet` in Swift are mutable + unordered collections of distinct objects, similar to the built-in + `NSMutableSet` and `Set`. The values in a set may be any non-collection + type which can be stored as a Realm property. Sets are guaranteed to never + contain two objects which compare equal to each other, including when + conflicting writes are merged by sync. + - `RLMDictionary` in Objective-C and `Map` are + mutable key-value dictionaries, similar to the built-in + `NSMutableDictionary` and `Dictionary`. The values in a dictionary may be + any non-collection type which can be stored as a Realm property. The keys + must currently always be a string. +* Add support for dynamically typed properties which can store a value of any + of the non-collection types supported by Realm, including Object subclasses + (but not EmbeddedObject subclasses). These are declared with + `@property id propertyName;` in Objective-C and + `let propertyName = RealmProperty()` in Swift. + +### Fixed + +* Setting a collection with a nullable value type to null via one of the + dynamic interfaces would hit an assertion failure instead of clearing the + collection. +* Fixed an incorrect detection of multiple incoming links in a migration when + changing a table to embedded and removing a link to it at the same time. + ([#4694](https://github.com/realm/realm-core/issues/4694) since v10.0.0-beta.2) +* Fixed a divergent merge on Set when one client clears the Set and another + client inserts and deletes objects. + ([#4720](https://github.com/realm/realm-core/issues/4720)) +* Partially revert to pre-v5.0.0 handling of primary keys to fix a performance + regression. v5.0.0 made primary keys determine the position in the low-level + table where newly added objects would be inserted, which eliminated the need + for a separate index on the primary key. This made some use patterns slightly + faster, but also made some reasonable things dramatically slower. + ([#4522](https://github.com/realm/realm-core/issues/4522)) +* Fixed an incorrect detection of multiple incoming links in a migration when + changing a table to embedded and removing a link to it at the same time. + ([#4694](https://github.com/realm/realm-core/issues/4694) since v10.0.0-beta.2) +* Fix collection notification reporting for modifications. This could be + observed by receiving the wrong indices of modifications on sorted or + distinct results, or notification blocks sometimes not being called when only + modifications have occured. + ([#4573](https://github.com/realm/realm-core/pull/4573) since v5.0.0). +* Fix incorrect sync instruction emission when replacing an existing embedded + object with another embedded object.([Core #4740](https://github.com/realm/realm-core/issues/4740) + +### Deprecations + +* `RealmOptional` has been deprecated in favor of `RealmProperty`. + `RealmProperty` is functionality identical to `RealmOptional` when storing + optional numeric types, but can also store the new `AnyRealmValue` type. + +### Compatibility + +* Realm Studio: 11.0.0 or later. Note that this version of Realm Studio has not + yet been released at the time of this release. +* Carthage release for Swift is built with Xcode 12.5. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 1. + +### Internal + +* Upgraded realm-core from v10.7.2 to v11.0.3 + +10.8.0-beta.2 Release notes (2021-06-01) +============================================================= + +### Enhancements + +* Add `RLMDictionary`/`Map<>` datatype. This is a Dictionary collection type used for storing key-value pairs in a collection. + +### Compatibility + +* Realm Studio: 11.0.0-beta.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v11.0.0-beta.4 to v11.0.0-beta.6 + +10.8.0-beta.0 Release notes (2021-05-07) +============================================================= + +### Enhancements + +* Add `RLMSet`/`MutableSet<>` datatype. This is a Set collection type used for storing distinct values in a collection. +* Add support for `id`/`AnyRealmValue`. +* Add support for `UUID`/`NSUUID` data type. + +### Fixed + +* None. + +### Deprecations + +* `RealmOptional` has been deprecated in favor of `RealmProperty`. + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.4. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.7.2 to v10.8.0-beta.5 + +10.7.7 Release notes (2021-06-10) +============================================================= + +Xcode 12.2 is now the minimum supported version. + +### Enhancements + +* Add Xcode 13 beta 1 binaries to the release package. + +### Fixed + +* Fix a runtime crash which happens in some Xcode version (Xcode < 12, reported + in Xcode 12.5), where SwiftUI is not weak linked by default. This fix only + works for Cocoapods projects. + ([#7234](https://github.com/realm/realm-swift/issues/7234) +* Fix warnings when building with Xcode 13 beta 1. + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 1. + +10.7.6 Release notes (2021-05-13) +============================================================= + +### Enhancements + +* Realms opened in read-only mode can now be invalidated (although it is + unlikely to be useful to do so). + +### Fixed + +* Fix an availability warning when building Realm. The code path which gave the + warning can not currently be hit, so this did not cause any runtime problems + ([#7219](https://github.com/realm/realm-swift/issues/7219), since 10.7.3). +* Proactively check the expiry time on the access token and refresh it before + attempting to initiate a sync session. This prevents some error logs from + appearing on the client such as: "ERROR: Connection[1]: Websocket: Expected + HTTP response 101 Switching Protocols, but received: HTTP/1.1 401 + Unauthorized" ([RCORE-473](https://jira.mongodb.org/browse/RCORE-473), since v10.0.0) +* Fix a race condition which could result in a skipping notifications failing + to skip if several commits using notification skipping were made in + succession (since v5.0.0). +* Fix a crash on exit inside TableRecycler which could happen if Realms were + open on background threads when the app exited. + ([Core #4600](https://github.com/realm/realm-core/issues/4600), since v5.0.0) +* Fix errors related to "uncaught exception in notifier thread: + N5realm11KeyNotFoundE: No such object" which could happen on sycnronized + Realms if a linked object was deleted by another client. + ([JS #3611](https://github.com/realm/realm-js/issues/3611), since v10.0.0). +* Reading a link to an object which has been deleted by a different client via + a string-based interface (such as value(forKey:) or the subscript operator on + DynamicObject) could return an invalid object rather than nil. + ([Core #4687](https://github.com/realm/realm-core/pull/4687), since v10.0.0) +* Recreate the sync metadata Realm if the encryption key for it is missing from + the keychain rather than crashing. This can happen if a device is restored + from an unencrypted backup, which restores app data but not the app's + keychain entries, and results in all cached logics for sync users being + discarded but no data being lost. + [Core #4285](https://github.com/realm/realm-core/pull/4285) +* Thread-safe references can now be created for read-only Realms. + ([#5475](https://github.com/realm/realm-swift/issues/5475)). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.6.0 to v10.7.2 + +10.7.5 Release notes (2021-05-07) +============================================================= + +### Fixed + +* Iterating over frozen collections on multiple threads at the same time could + throw a "count underflow" NSInternalInconsistencyException. + ([#7237](https://github.com/realm/realm-swift/issues/7237), since v5.0.0). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5. +* CocoaPods: 1.10 or later. + +10.7.4 Release notes (2021-04-26) +============================================================= + +### Enhancements + +* Add Xcode 12.5 binaries to the release package. + +### Fixed + +* Add the Info.plist file to the XCFrameworks in the Carthage xcframwork + package ([#7216](https://github.com/realm/realm-swift/issues/7216), since 10.7.3). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5. +* CocoaPods: 1.10 or later. + +10.7.3 Release notes (2021-04-22) +============================================================= + +### Enhancements + +* Package a prebuilt XCFramework for Carthage. Carthage 0.38 and later will + download this instead of the old frameworks when using `--use-xcframeworks`. +* We now make a backup of the realm file prior to any file format upgrade. The + backup is retained for 3 months. Backups from before a file format upgrade + allows for better analysis of any upgrade failure. We also restore a backup, + if a) an attempt is made to open a realm file whith a "future" file format + and b) a backup file exist that fits the current file format. + ([Core #4166](https://github.com/realm/realm-core/pull/4166)) +* The error message when the intial steps of opening a Realm file fails is now + more descriptive. +* Make conversion of Decimal128 to/from string work for numbers with more than + 19 significant digits. This means that Decimal128's initializer which takes a + string will now never throw, as it previously threw only for out-of-bounds + values. The initializer is still marked as `throws` for + backwards compatibility. + ([#4548](https://github.com/realm/realm-core/issues/4548)) + +### Fixed + +* Adjust the header paths for the podspec to avoid accidentally finding a file + which isn't part of the pod that produced warnings when importing the + framework. ([#7113](https://github.com/realm/realm-swift/issues/7113), since 10.5.2). +* Fixed a crash that would occur when observing unmanaged Objects in multiple + views in SwiftUI. When using `@StateRealmObject` or `@ObservedObject` across + multiple views with an unmanaged object, each view would subscribe to the + object. As each view unsubscribed (generally when trailing back through the + view stack), our propertyWrappers would attempt to remove the KVOs for each + cancellation, when it should only be done once. We now correctly remove KVOs + only once. ([#7131](https://github.com/realm/realm-swift/issues/7131)) +* Fixed `isInvalidated` not returning correct value after object deletion from + Realm when using a custom schema. The object's Object Schema was not updated + when the object was added to the realm. We now correctly update the object + schema when adding it to the realm. + ([#7181](https://github.com/realm/realm-swift/issues/7181)) +* Syncing large Decimal128 values would cause "Assertion failed: cx.w[1] == 0" + ([Core #4519](https://github.com/realm/realm-core/issues/4519), since v10.0.0). +* Potential/unconfirmed fix for crashes associated with failure to memory map + (low on memory, low on virtual address space). For example + ([#4514](https://github.com/realm/realm-core/issues/4514), since v5.0.0). +* Fix assertion failures such as "!m_notifier_skip_version.version" or + "m_notifier_sg->get_version() + 1 == new_version.version" when performing + writes inside change notification callbacks. Previously refreshing the Realm + by beginning a write transaction would skip delivering notifications, leaving + things in an inconsistent state. Notifications are now delivered recursively + when needed instead. ([Cocoa #7165](https://github.com/realm/realm-swift/issues/7165)). +* Fix collection notification reporting for modifications. This could be + observed by receiving the wrong indices of modifications on sorted or + distinct results, or notification blocks sometimes not being called when only + modifications have occured. + ([#4573](https://github.com/realm/realm-core/pull/4573) since v5.0.0). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.4. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.5.5 to v10.6.0 +* Add additional debug validation to file map management that will hopefully + catch cases where we unmap something which is still in use. + +10.7.2 Release notes (2021-03-08) +============================================================= + +### Fixed + +* During integration of a large amount of data from the server, you may get + "Assertion failed: !fields.has_missing_parent_update()" + ([Core #4497](https://github.com/realm/realm-core/issues/4497), since v6.0.0) + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.4. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.5.4 to v10.5.5 + +10.7.1 Release notes (2021-03-05) +============================================================= + +### Fixed + +* Queries of the form "a.b.c == nil" would match objects where `b` is `nil` if + `c` did not have an index and did not if `c` was indexed. Both will now match + to align with NSPredicate's behavior. ([Core #4460]https://github.com/realm/realm-core/pull/4460), since 4.3.0). +* Restore support for upgrading files from file format 5 (Realm Cocoa 1.x). + ([Core #7089](https://github.com/realm/realm-swift/issues/7089), since v5.0.0) +* On 32bit devices you may get exception with "No such object" when upgrading + to v10.* ([Java #7314](https://github.com/realm/realm-java/issues/7314), since v5.0.0) +* The notification worker thread would rerun queries after every commit rather + than only commits which modified tables which could effect the query results + if the table had any outgoing links to tables not used in the query. + ([Core #4456](https://github.com/realm/realm-core/pull/4456), since v5.0.0). +* Fix "Invalid ref translation entry [16045690984833335023, 78187493520]" + assertion failure which could occur when using sync or multiple processes + writing to a single Realm file. + ([#7086](https://github.com/realm/realm-swift/issues/7086), since v5.0.0). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.4. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.5.3 to v10.5.4 + +10.7.0 Release notes (2021-02-23) +============================================================= + +### Enhancements + +* Add support for some missing query operations on data propertys: + - Data properties can be compared to other data properties + (e.g. "dataProperty1 == dataProperty2"). + - Case and diacritic-insensitive queries can be performed on data properties. + This will only have meaningful results if the data property contains UTF-8 + string data. + - Data properties on linked objects can be queried + (e.g. "link.dataProperty CONTAINS %@") +* Implement queries which filter on lists other than object links (lists of + objects were already supported). All supported operators for normal + properties are now supported for lists (e.g. "ANY intList = 5" or "ANY + stringList BEGINSWITH 'prefix'"), as well as aggregate operations on the + lists (such as "intArray.@sum > 100"). +* Performance of sorting on more than one property has been improved. + Especially important if many elements match on the first property. Mitigates + ([#7092](https://github.com/realm/realm-swift/issues/7092)) + +### Fixed + +* Fixed a bug that prevented an object type with incoming links from being + marked as embedded during migrations. ([Core #4414](https://github.com/realm/realm-core/pull/4414)) +* The Realm notification listener thread could sometimes hit the assertion + failure "!skip_version.version" if a write transaction was committed at a + very specific time (since v10.5.0). +* Added workaround for a case where upgrading an old file with illegal string + would crash ([#7111](https://github.com/realm/realm-swift/issues/7111)) +* Fixed a conflict resolution bug related to the ArrayMove instruction, which + could sometimes cause an "Invalid prior_size" exception to prevent + synchronization (since v10.5.0). +* Skipping a change notification in the first write transaction after the + observer was added could potentially fail to skip the notification (since v10.5.1). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.4. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.5.0 to v10.5.3 + +10.6.0 Release notes (2021-02-15) +============================================================= + +### Enhancements + +* Add `@StateRealmObject` for SwiftUI support. This property wrapper type instantiates an observable object on a View. + Use in place of `SwiftUI.StateObject` for Realm `Object`, `List`, and `EmbeddedObject` types. +* Add `@ObservedRealmObject` for SwiftUI support. This property wrapper type subscribes to an observable object + and invalidates a view whenever the observable object changes. Use in place of `SwiftUI.ObservedObject` for + Realm `Object`, `List`, or `EmbeddedObject` types. +* Add `@ObservedResults` for SwiftUI support. This property wrapper type retrieves results from a Realm. + The results use the realm configuration provided by the environment value `EnvironmentValues.realmConfiguration`. +* Add `EnvironmentValues.realm` and `EnvironmentValues.realmConfiguration` for `Realm` + and `Realm.Configuration` types respectively. Values can be injected into views using the `View.environment` method, e.g., `MyView().environment(\.realmConfiguration, Realm.Configuration(fileURL: URL(fileURLWithPath: "myRealmPath.realm")))`. + The value can then be declared on the example `MyView` as `@Environment(\.realm) var realm`. +* Add `SwiftUI.Binding` extensions where `Value` is of type `Object`, `List`, or `EmbeddedObject`. + These extensions expose methods for wrapped write transactions, to avoid boilerplate within + views, e.g., `TextField("name", $personObject.name)` or `$personList.append(Person())`. +* Add `Object.bind` and `EmbeddedObject.bind` for SwiftUI support. This allows you to create + bindings of realm properties when a propertyWrapper is not available for you to do so, e.g., `TextField("name", personObject.bind(\.name))`. +* The Sync client now logs error messages received from server rather than just + the size of the error message. +* Errors returned from the server when sync WebSockets get closed are now + captured and surfaced as a SyncError. +* Improve performance of sequential reads on a Results backed directly by a + Table (i.e. `realm.object(ClasSName.self)` with no filter/sort/etc.) by 50x. +* Orphaned embedded object types which are not linked to by any top-level types + are now better handled. Previously the server would reject the schema, + resulting in delayed and confusing error reporting. Explicitly including an + orphan in `objectTypes` is now immediately reported as an error when opening + the Realm, and orphans are automatically excluded from the auto-discovered + schema when `objectTypes` is not specified. + +### Fixed + +* Reading from a Results backed directly by a Table (i.e. + `realm.object(ClasSName.self)` with no filter/sort/etc.) would give incorrect + results if the Results was constructed and accessed before creating a new + object with a primary key less than the smallest primary key which previously + existed. ([#7014](https://github.com/realm/realm-swift/issues/7014), since v5.0.0). +* During synchronization you might experience crash with + "Assertion failed: ref + size <= next->first". + ([Core #4388](https://github.com/realm/realm-core/issues/4388)) + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.4. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.4.0 to v10.5.0 + +10.5.2 Release notes (2021-02-09) +============================================================= + +### Enhancements + +* Add support for "thawing" objects. `Realm`, `Results`, `List` and `Object` + now have `thaw()` methods which return a live copy of the frozen object. This + enables app behvaior where a frozen object can be made live again in order to + mutate values. For example, first freezing an object passed into UI view, + then thawing the object in the view to update values. +* Add Xcode 12.4 binaries to the release package. + +### Fixed + +* Inserting a date into a synced collection via `AnyBSON.datetime(...)` would + be of type `Timestamp` and not `Date`. This could break synced objects with a + `Date` property. + ([#6654](https://github.com/realm/realm-swift/issues/6654), since v10.0.0). +* Fixed an issue where creating an object after file format upgrade may fail + with assertion "Assertion failed: lo() <= std::numeric_limits::max()" + ([#4295](https://github.com/realm/realm-core/issues/4295), since v5.0.0) +* Allow enumerating objects in migrations with types which are no longer + present in the schema. +* Add `RLMResponse.customStatusCode`. This fixes timeout exceptions that were + occurring with a poor connection. ([#4188](https://github.com/realm/realm-core/issues/4188)) +* Limit availability of ObjectKeyIdentifiable to platforms which support + Combine to match the change made in the Xcode 12.5 SDK. + ([#7083](https://github.com/realm/realm-swift/issues/7083)) + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.4. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.3.3 to v10.4.0 + +10.5.1 Release notes (2021-01-15) +============================================================= + +### Enhancements + +* Add Xcode 12.3 binary to release package. +* Add support for queries which have nil on the left side and a keypath on the + right side (e.g. "nil == name" rather than "name == nil" as was previously + required). + +### Fixed +* Timeouts when calling server functions via App would sometimes crash rather + than report an error. +* Fix a race condition which would lead to "uncaught exception in notifier + thread: N5realm15InvalidTableRefE: transaction_ended" and a crash when the + source Realm was closed or invalidated at a very specific time during the + first run of a collection notifier + ([#3761](https://github.com/realm/realm-core/issues/3761), since v5.0.0). +* Deleting and recreating objects with embedded objects may fail. + ([Core PR #4240](https://github.com/realm/realm-core/pull/4240), since v10.0.0) +* Fast-enumerating a List after deleting the parent object would crash with an + assertion failure rather than a more appropriate exception. + ([Core #4114](https://github.com/realm/realm-core/issues/4114), since v5.0.0). +* Fix an issue where calling a MongoDB Realm Function would never be performed as the reference to the weak `User` was lost. + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.3. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.3.2 to v10.3.3 + +10.5.0 Release notes (2020-12-14) +============================================================= + +### Enhancements + +* MongoDB Realm is now supported when installing Realm via Swift Package Manager. + +### Fixed + +* The user identifier was added to the file path for synchronized Realms twice + and an extra level of escaping was performed on the partition value. This did + not cause functional problems, but made file names more confusing than they + needed to be. Existing Realm files will continue to be located at the old + path, while newly created files will be created at a shorter path. (Since v10.0.0). +* Fix a race condition which could potentially allow queries on frozen Realms + to access an uninitialized structure for search indexes (since v5.0.0). +* Fix several data races in App and SyncSession initialization. These could + possibly have caused strange errors the first time a synchronized Realm was + opened (since v10.0.0). +* Fix a use of a dangling reference when refreshing a user’s custom data that + could lead to a crash (since v10.0.0). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.2. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.1.4 to v10.3.2 + +10.4.0 Release notes (2020-12-10) +============================================================= + +### Enhancements + +* Add Combine support for App and User. These two types now have a + `objectWillChange` property that emits each time the state of the object has + changed (such as due to the user logging in or out). ([PR #6977](https://github.com/realm/realm-swift/pull/6977)). + +### Fixed + +* Integrating changesets from the server would sometimes hit the assertion + failure "n != realm::npos" inside Table::create_object_with_primary_key() + when creating an object with a primary key which previously had been used and + had incoming links. ([Core PR #4180](https://github.com/realm/realm-core/pull/4180), since v10.0.0). +* The arm64 simulator slices were not actually included in the XCFramework + release package. ([PR #6982](https://github.com/realm/realm-swift/pull/6982), since v10.2.0). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.2. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.1.3 to v10.1.4 +* Upgraded realm-sync from v10.1.4 to v10.1.5 + +10.3.0 Release notes (2020-12-08) +============================================================= + +### Enhancements + +* Add Google OpenID Connect Credentials, an alternative login credential to the + Google OAuth 2.0 credential. + +### Fixed + +* Fixed a bug that would prevent eventual consistency during conflict + resolution. Affected clients would experience data divergence and potentially + consistency errors as a result if they experienced conflict resolution + between cycles of Create-Erase-Create for objects with primary keys (since v10.0.0). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.2. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-sync from v10.1.3 to v10.1.4 + +10.2.0 Release notes (2020-12-02) +============================================================= + +### Enhancements + +* The prebuilt binaries are now packaged as XCFrameworks. This adds support for + Catalyst and arm64 simulators when using them to install Realm, removes the + need for the strip-frameworks build step, and should simplify installation. +* The support functionality for using the Objective C API from Swift is now + included in Realm Swift and now includes all of the required wrappers for + MongoDB Realm types. In mixed Objective C/Swift projects, we recommend + continuing to use the Objective C types, but import both Realm and RealmSwift + in your Swift files. + +### Fixed + +* The user identifier was added to the file path for synchronized Realms twice + and an extra level of escaping was performed on the partition value. This did + not cause functional problems, but made file names more confusing than they + needed to be. Existing Realm files will continue to be located at the old + path, while newly created files will be created at a shorter path. (Since v10.0.0). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.2. +* CocoaPods: 1.10 or later. + +10.1.4 Release notes (2020-11-16) +============================================================= + +### Enhancements + +* Add arm64 slices to the macOS builds. + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.2. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.0.1 to v10.1.3 +* Upgraded realm-sync from v10.0.1 to v10.1.3 + +10.1.3 Release notes (2020-11-13) +============================================================= + +### Enhancements + +* Add Xcode 12.2 binaries to the release package. + +### Fixed + +* Disallow setting + `RLMRealmConfiguration.deleteRealmIfMigrationNeeded`/`Realm.Config.deleteRealmIfMigrationNeeded` + when sync is enabled. This did not actually work as it does not delete the + relevant server state and broke in confusing ways ([PR #6931](https://github.com/realm/realm-swift/pull/6931)). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.1. +* CocoaPods: 1.10 or later. + +10.1.2 Release notes (2020-11-06) +============================================================= + +### Enhancements + +* Some error states which previously threw a misleading "NoSuchTable" exception + now throw a more descriptive exception. + +### Fixed + +* One of the Swift packages did not have the minimum deployment target set, + resulting in errors when archiving an app which imported Realm via SPM. +* Reenable filelock emulation on watchOS so that the OS does not kill the app + when it is suspended while a Realm is open on watchOS 7 ([#6861](https://github.com/realm/realm-swift/issues/6861), since v5.4.8 +* Fix crash in case insensitive query on indexed string columns when nothing + matches ([#6836](https://github.com/realm/realm-swift/issues/6836), since v5.0.0). +* Null values in a `List` or `List` were incorrectly treated + as non-null in some places. It is unknown if this caused any functional + problems when using the public API. ([Core PR #3987](https://github.com/realm/realm-core/pull/3987), since v5.0.0). +* Deleting an entry in a list in two different clients could end deleting the + wrong entry in one client when the changes are merged (since v10.0.0). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.1. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.0.0 to v10.1.1 +* Upgraded realm-sync from v10.0.0 to v10.1.1 + +10.1.1 Release notes (2020-10-27) +============================================================= + +### Enhancements + +* Set the minimum CocoaPods version in the podspec so that trying to install + with older versions gives a more useful error ([PR #6892](https://github.com/realm/realm-swift/pull/6892)). + +### Fixed + +* Embedded objects could not be marked as `ObjectKeyIdentifable` + ([PR #6890](https://github.com/realm/realm-swift/pull/6890), since v10.0.0). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.1. +* CocoaPods: 1.10 or later. + +10.1.0 Release notes (2020-10-22) +============================================================= + +CocoaPods 1.10 or later is now required to install Realm. + +### Enhancements + +* Throw an exception for Objects that have none of its properties marked with @objc. +* Mac Catalyst and arm64 simulators are now supported when integrating via Cocoapods. +* Add Xcode 12.1 binaries to the release package. +* Add Combine support for `Realm.asyncOpen()`. + +### Fixed + +* Implement precise and unbatched notification of sync completion events. This + avoids a race condition where an earlier upload completion event will notify + a later waiter whose changes haven't been uploaded yet. + ([#1118](https://github.com/realm/realm-object-store/pull/1118)). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.1. + +10.0.0 Release notes (2020-10-16) +============================================================= + +This release is functionally identical to v10.0.0-rc.2. + +NOTE: This version upgrades the Realm file format version to add support for +new data types. Realm files opened will be automatically upgraded and cannot be +read by versions older than v10.0.0. + +### Breaking Changes + +* Rename Realm.Publishers to RealmPublishers to avoid confusion with Combine.Publishers. +* Remove `[RLMSyncManager shared]`. This is now instatiated as a property on App/RLMApp. +* `RLMSyncManager.pinnedCertificatePaths` has been removed. +* Classes `RLMUserAccountInfo` & `RLMUserInfo` (swift: `UserInfo`, `UserAccountInfo`) have been removed. +* `RLMSyncUser`/`SyncUser` has been renamed to `RLMUser`/`User`. +* We no longer support Realm Cloud (legacy), but instead the new "MongoDB + Realm" Cloud. MongoDB Realm is a serverless platform that enables developers + to quickly build applications without having to set up server infrastructure. + MongoDB Realm is built on top of MongoDB Atlas, automatically integrating the + connection to your database. +* Remove support for Query-based sync, including the configuration parameters + and the `RLMSyncSubscription` and `SyncSubscription` types ([#6437](https://github.com/realm/realm-swift/pull/6437)). +* Remove everything related to sync permissions, including both the path-based + permission system and the object-level privileges for query-based sync. + Permissions are now configured via MongoDB Atlas. + ([#6445](https://github.com/realm/realm-swift/pulls/6445)) +* Remove support for Realm Object Server. +* Non-embedded objects in synchronized Realms must always have a primary key + named "_id". +* All Swift callbacks for asynchronous operations which can fail are now passed + a `Result` parameter instead of two separate `Value?` and + `Error?` parameters. + +### Enhancements + +* Add support for next generation sync. Support for syncing to MongoDB instead + of Realm Object Server. Applications must be created at realm.mongodb.com +* The memory mapping scheme for Realm files has changed to better support + opening very large files. +* Add support for the ObjectId data type. This is an automatically-generated + unique identifier similar to a GUID or a UUID. + ([PR #6450](https://github.com/realm/realm-swift/pull/6450)). +* Add support for the Decimal128 data type. This is a 128-bit IEEE 754 decimal + floating point number similar to NSDecimalNumber. + ([PR #6450](https://github.com/realm/realm-swift/pull/6450)). +* Add support for embedded objects. Embedded objects are objects which are + owned by a single parent object, and are deleted when that parent object is + deleted. They are defined by subclassing `EmbeddedObject` / + `RLMEmbeddedObject` rather than `Object` / `RLMObject`. +* Add `-[RLMUser customData]`/`User.customData`. Custom data is + configured in your MongoDB Realm App. +* Add `-[RLMUser callFunctionNamed:arguments:completion:]`/`User.functions`. + This is the entry point for calling Remote MongoDB Realm functions. Functions + allow you to define and execute server-side logic for your application. + Functions are written in modern JavaScript (ES6+) and execute in a serverless + manner. When you call a function, you can dynamically access components of + the current application as well as information about the request to execute + the function and the logged in user that sent the request. +* Add `-[RLMUser mongoClientWithServiceName:]`/`User.mongoClient`. This is + the entry point for calling your Remote MongoDB Service. The read operations + are `-[RLMMongoCollection findWhere:completion:]`, `-[RLMMongoCollection + countWhere:completion:]`and `-[RLMMongoCollection + aggregateWithPipeline:completion:]`. The write operations are + `-[RLMMongoCollection insertOneDocument:completion:]`, `-[RLMMongoCollection + insertManyDocuments:completion:]`, `-[RLMMongoCollection + updateOneDocument:completion:]`, `-[RLMMongoCollection + updateManyDocuments:completion:]`, `-[RLMMongoCollection + deleteOneDocument:completion:]`, and `-[RLMMongoCollection + deleteManyDocuments:completion:]`. If you are already familiar with MongoDB + drivers, it is important to understand that the remote MongoCollection only + provides access to the operations available in MongoDB Realm. +* Obtaining a Realm configuration from a user is now done with `[RLMUser + configurationWithPartitionValue:]`/`User.configuration(partitionValue:)`. + Partition values can currently be of types `String`, `Int`, or `ObjectId`, + and fill a similar role to Realm URLs did with Realm Cloud. The main + difference is that partitions are meant to be more closely associated with + your data. For example, if you are running a `Dog` kennel, and have a field + `breed` that acts as your partition key, you could open up realms based on + the breed of the dogs. +* Add ability to stream change events on a remote MongoDB collection with + `[RLMMongoCollection watch:delegate:delegateQueue:]`, + `MongoCollection.watch(delegate:)`. When calling `watch(delegate:)` you will be + given a `RLMChangeStream` (`ChangeStream`) which can be used to end watching + by calling `close()`. Change events can also be streamed using the + `MongoCollection.watch` Combine publisher that will stream change events each + time the remote MongoDB collection is updated. +* Add the ability to listen for when a Watch Change Stream is opened when using + Combine. Use `onOpen(event:)` directly after opening a `WatchPublisher` to + register a callback to be invoked once the change stream is opened. +* Objects with integer primary keys no longer require a separate index for the +* primary key column, improving insert performance and slightly reducing file + size. + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* Carthage release for Swift is built with Xcode 12 + +### Internal + +* Upgraded realm-core from v6.1.4 to v10.0.0 +* Upgraded realm-sync from v5.0.29 to v10.0.0 + +10.0.0-rc.2 Release notes (2020-10-15) +============================================================= + +### Enhancements + +* Add the ability to listen for when a Watch Change Stream is opened when using + Combine. Use `onOpen(event:)` directly after opening a `WatchPublisher` to + register a callback to be invoked once the change stream is opened. + +### Breaking Changes + +* The insert operations on Mongo collections now report the inserted documents' + IDs as BSON rather than ObjectId. +* Embedded objects can no longer form cycles at the schema level. For example, + type A can no longer have an object property of type A, or an object property + of type B if type B links to type A. This was always rejected by the server, + but previously was allowed in non-synchronized Realms. +* Primary key properties are once again marked as being indexed. This reflects + an internal change to how primary keys are handled that should not have any + other visible effects. +* Change paired return types from Swift completion handlers to return `Result`. +* Adjust how RealmSwift.Object is defined to add support for Swift Library + Evolution mode. This should normally not have any effect, but you may need to + add `override` to initializers of object subclasses. +* Add `.null` type to AnyBSON. This creates a distinction between null values + and properly absent BSON types. + +### Fixed + +* Set the precision correctly when serializing doubles in extended json. +* Reading the `objectTypes` array from a Realm Configuration would not include + the embedded object types which were set in the array. +* Reject loops in embedded objects as part of local schema validation rather + than as a server error. +* Although MongoClient is obtained from a User, it was actually using the + User's App's current user rather than the User it was obtained from to make + requests. + + +This release also contains the following changes from 5.4.7 - 5.5.0 + +### Enhancements + +* Add the ability to capture a NotificationToken when using a Combine publisher + that observes a Realm Object or Collection. The user will call + `saveToken(on:at:)` directly after invoking the publisher to use the feature. + +### Fixed + +* When using `Realm.write(withoutNotifying:)` there was a chance that the + supplied observation blocks would not be skipped when in a write transaction. + ([Object Store #1103](https://github.com/realm/realm-object-store/pull/1103)) +* Comparing two identical unmanaged `List<>`/`RLMArray` objects would fail. + ([#5665](https://github.com/realm/realm-swift/issues/5665)). +* Case-insensitive equality queries on indexed string properties failed to + clear some internal state when rerunning the query. This could manifest as + duplicate results or "key not found" errors. + ([#6830](https://github.com/realm/realm-swift/issues/6830), [#6694](https://github.com/realm/realm-swift/issues/6694), since 5.0.0). +* Equality queries on indexed string properties would sometimes throw "key not + found" exceptions if the hash of the string happened to have bit 62 set. + ([.NET #2025](https://github.com/realm/realm-dotnet/issues/2025), since v5.0.0). +* Queries comparing non-optional int properties to nil would behave as if they + were comparing against zero instead (since v5.0.0). + +### Compatibility + +* File format: Generates Realms with format v12 (Reads and upgrades all previous formats) +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12. + +### Internal + +* Upgraded realm-core from v10.0.0-beta.9 to v10.0.0 +* Upgraded realm-sync from v10.0.0-beta.14 to v10.0.0 + +10.0.0-rc.1 Release notes (2020-10-01) +============================================================= + +### Breaking Changes + +* Change the following methods on RLMUser to properties: + - `[RLMUser emailPasswordAuth]` => `RLMUser.emailPasswordAuth` + - `[RLMUser identities]` => `RLMUser.identities` + - `[RLMUser allSessions]` => `RLMUser.allSessions` + - `[RLMUser apiKeysAuth]` => `RLMUser.apiKeysAuth` +* Other changes to RLMUser: + - `nullable` has been removed from `RLMUser.identifier` + - `nullable` has been removed from `RLMUser.customData` +* Change the following methods on RLMApp to properties: + - `[RLMApp allUsers]` => `RLMApp.allUsers` + - `[RLMApp currentUser]` => `RLMApp.currentUser` + - `[RLMApp emailPasswordAuth]` => `RLMApp.emailPasswordAuth` +* Define `RealmSwift.Credentials` as an enum instead of a `typealias`. Example + usage has changed from `Credentials(googleAuthCode: "token")` to + `Credentials.google(serverAuthCode: "serverAuthCode")`, and + `Credentials(facebookToken: "token")` to `Credentials.facebook(accessToken: "accessToken")`, etc. +* Remove error parameter and redefine payload in + `+ (instancetype)credentialsWithFunctionPayload:(NSDictionary *)payload error:(NSError **)error;`. + It is now defined as `+ (instancetype)credentialsWithFunctionPayload:(NSDictionary> *)payload;` + +### Compatibility + +* File format: Generates Realms with format v12 (Reads and upgrades all previous formats) +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12. + +10.0.0-beta.6 Release notes (2020-09-30) +============================================================= + +### Breaking Changes + +* Change Google Credential parameter names to better reflect the required auth code: + - `Credentials(googleToken:)` => `Credentials(googleAuthCode:)` + - `[RLMCredentials credentialsWithGoogleToken:]` => `[RLMCredentials credentialsWithGoogleAuthCode:]` +* Rename Realm.Publishers to RealmPublishers to avoid confusion with Combine.Publishers + +### Fixed + +* Deleting objects could sometimes change the ObjectId remaining objects from + null to ObjectId("deaddeaddeaddeaddeaddead") when there are more than 1000 + objects. (Since v10.0.0-alpha.1) +* Fixed an assertion failure when adding an index to a nullable ObjectId + property that contains nulls. (since v10.0.0-alpha.1). + +This release also contains the following changes from 5.4.0 - 5.4.6: + +### Enhancements + +* Add prebuilt binary for Xcode 11.7 to the release package. +* Add prebuilt binary for Xcode 12 to the release package. +* Improve the asymtotic performance of NOT IN queries on indexed properties. It + is now O(Number of Rows) rather than O(Number of Rows \* Number of values in IN clause.) +* Slightly (<5%) improve the performance of most operations which involve + reading from a Realm file. + +### Fixed + +* Upgrading pre-5.x files with string primary keys would result in a file where + `realm.object(ofType:forPrimaryKey:)` would fail to find the object. + ([#6716](https://github.com/realm/realm-swift/issues/6716), since 5.2.0) +* A write transaction which modifies an object with more than 16 managed + properties and causes the Realm file to grow larger than 2 GB could cause an + assertion failure mentioning "m_has_refs". ([JS #3194](https://github.com/realm/realm-js/issues/3194), since 5.0.0). +* Objects with more than 32 properties could corrupt the Realm file and result + in a variety of crashes. ([Java #7057](https://github.com/realm/realm-java/issues/7057), since 5.0.0). +* Fix deadlocks when opening a Realm file in both the iOS simulator and Realm + Studio ([#6743](https://github.com/realm/realm-swift/issues/6743), since 5.3.6). +* Fix Springboard deadlocking when an app is unsuspended while it has an open + Realm file which is stored in an app group on iOS 10-12 + ([#6749](https://github.com/realm/realm-swift/issues/6749), since 5.3.6). +* If you use encryption your application cound crash with a message like + "Opening Realm files of format version 0 is not supported by this version of + Realm". ([#6889](https://github.com/realm/realm-java/issues/6889) among others, since 5.0.0) +* Confining a Realm to a serial queue would throw an error claiming that the + queue was not a serial queue on iOS versions older than 12. + ([#6735](https://github.com/realm/realm-swift/issues/6735), since 5.0.0). +* Results would sometimes give stale results inside a write transaction if a + write which should have updated the Results was made before the first access + of a pre-existing Results object. + ([#6721](https://github.com/realm/realm-swift/issues/6721), since 5.0.0) +* Fix Archiving the Realm and RealmSwift frameworks with Xcode 12. + ([#6774](https://github.com/realm/realm-swift/issues/6774)) +* Fix compilation via Carthage when using Xcode 12 ([#6717](https://github.com/realm/realm-swift/issues/6717)). +* Fix a crash inside `realm::Array(Type)::init_from_mem()` which would + sometimes occur when running a query over links immediately after creating + objects of the queried type. + ([#6789](https://github.com/realm/realm-swift/issues/6789) and possibly others, since 5.0.0). +* Possibly fix problems when changing the type of the primary key of an object + from optional to non-optional. +* Rerunning a equality query on an indexed string property would give incorrect + results if a previous run of the query matched multiple objects and it now + matches one object. This could manifest as either finding a non-matching + object or a "key not found" exception being thrown. + ([#6536](https://github.com/realm/realm-swift/issues/6536), since 5.0.0). + +### Compatibility + +* File format: Generates Realms with format v12 (Reads and upgrades all previous formats) +* Realm Studio: 10.0.0 or later. +* Carthage release for Swift is built with Xcode 12. + +### Internal + +* Upgraded realm-core from v10.0.0-beta.7 to v10.0.0-beta.9 +* Upgraded realm-sync from v10.0.0-beta.11 to v10.0.0-beta.14 + +10.0.0-beta.5 Release notes (2020-09-15) +============================================================= + +### Enhancements + +* Add `User.loggedIn`. +* Add support for multiple Realm Apps. +* Remove `[RLMSyncManager shared]`. This is now instatiated as a property on + the app itself. +* Add Combine support for: + * PushClient + * APIKeyAuth + * User + * MongoCollection + * EmailPasswordAuth + * App.login + +### Fixed + +* Fix `MongoCollection.watch` to consistently deliver events on a given queue. +* Fix `[RLMUser logOutWithCompletion]` and `User.logOut` to now log out the + correct user. +* Fix crash on startup on iOS versions older than 13 (since v10.0.0-beta.3). + +### Breaking Changes + +* `RLMSyncManager.pinnedCertificatePaths` has been removed. +* Classes `RLMUserAccountInfo` & `RLMUserInfo` (swift: `UserInfo`, + `UserAccountInfo`) have been removed. +* The following functionality has been renamed to align Cocoa with the other + Realm SDKs: + +| Old API | New API | +|:-------------------------------------------------------------|:---------------------------------------------------------------| +| `RLMUser.identity` | `RLMUser.identifier` | +| `User.identity` | `User.id` | +| `-[RLMCredentials credentialsWithUsername:password:]` | `-[RLMCredentials credentialsWithEmail:password:]` | +| `Credentials(username:password:)` | `Credentials(email:password:)` | +| -`[RLMUser apiKeyAuth]` | `-[RLMUser apiKeysAuth]` | +| `User.apiKeyAuth()` | `User.apiKeysAuth()` | +| `-[RLMEmailPasswordAuth registerEmail:password:completion:]` | `-[RLMEmailPasswordAuth registerUserWithEmail:password:completion:]` | +| `App.emailPasswordAuth().registerEmail(email:password:)` | `App.emailPasswordAuth().registerUser(email:password:)` | + +### Compatibility + +* File format: Generates Realms with format v12 (Reads and upgrades all previous formats) +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.6. + +### Internal + +* Upgraded realm-core from v10.0.0-beta.6 to v10.0.0-beta.7 +* Upgraded realm-sync from v10.0.0-beta.10 to v10.0.0-beta.11 + +10.0.0-beta.4 Release notes (2020-08-28) +============================================================= + +### Enhancements + +* Add support for the 64-bit watchOS simulator added in Xcode 12. +* Add ability to stream change events on a remote MongoDB collection with + `[RLMMongoCollection watch:delegate:delegateQueue]`, + `MongoCollection.watch(delegate)`. When calling `watch(delegate)` you will be + given a `RLMChangeStream` (`ChangeStream`), this will be used to invalidate + and stop the streaming session by calling `[RLMChangeStream close]` + (`ChangeStream.close()`) when needed. +* Add `MongoCollection.watch`, which is a Combine publisher that will stream + change events each time the remote MongoDB collection is updated. +* Add ability to open a synced Realm with a `nil` partition value. + +### Fixed + +* Realm.Configuration.objectTypes now accepts embedded objects +* Ports fixes from 5.3.5 + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the v10.0.0-beta.x series. +* Carthage release for Swift is built with Xcode 11.5. + +### Internal + +* Upgraded realm-core from v10.0.0-beta.1 to v10.0.0-beta.6 +* Upgraded realm-sync from v10.0.0-beta.2 to v10.0.0-beta.10 + +10.0.0-beta.3 Release notes (2020-08-17) +============================================================= + +This release also contains all changes from 5.3.2. + +### Breaking Changes +* The following classes & aliases have been renamed to align Cocoa with the other Realm SDKs: + +| Old API | New API | +|:------------------------------------------------------------|:---------------------------------------------------------------| +| `RLMSyncUser` | `RLMUser` | +| `SyncUser` | `User` | +| `RLMAppCredential` | `RLMCredential` | +| `AppCredential` | `Credential` | +| `RealmApp` | `App` | +| `RLMUserAPIKeyProviderClient` | `RLMAPIKeyAuth` | +| `RLMUsernamePasswordProviderClient` | `RLMEmailPasswordAuth` | +| `UsernamePasswordProviderClient` | `EmailPasswordAuth` | +| `UserAPIKeyProviderClient` | `APIKeyAuth` | + +* The following functionality has also moved to the User + +| Old API | New API | +|:-------------------------------------------------------------|:--------------------------------------------------------------| +| `[RLMApp callFunctionNamed:]` | `[RLMUser callFunctionNamed:]` | +| `App.functions` | `User.functions` | +| `[RLMApp mongoClientWithServiceName:]` | `[RLMUser mongoClientWithServiceName:]` | +| `App.mongoClient(serviceName)` | `User.mongoClient(serviceName)` | +| `[RLMApp userAPIKeyProviderClient]` | `[RLMUser apiKeyAuth]` | +| `App.userAPIKeyProviderClient` | `App.apiKeyAuth()` | +| `[RLMApp logOut:]` | `[RLMUser logOut]` | +| `App.logOut(user)` | `User.logOut()` | +| `[RLMApp removeUser:]` | `[RLMUser remove]` | +| `App.remove(user)` | `User.remove()` | +| `[RLMApp linkUser:credentials:]` | `[RLMUser linkWithCredentials:]` | +| `App.linkUser(user, credentials)` | `User.link(credentials)` | + +* `refreshCustomData()` on User now returns void and passes the custom data to the callback on success. + +### Compatibility +* This release introduces breaking changes w.r.t some sync classes and MongoDB Realm Cloud functionality. +(See the breaking changes section for the full list) +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Studio: 10.0.0 or later. +* Carthage release for Swift is built with Xcode 11.5. + +10.0.0-beta.2 Release notes (2020-06-09) +============================================================= +Xcode 11.3 and iOS 9 are now the minimum supported versions. + +### Enhancements +* Add support for building with Xcode 12 beta 1. watchOS currently requires + removing x86_64 from the supported architectures. Support for the new 64-bit + watch simulator will come in a future release. + +### Fixed +* Opening a SyncSession with LOCAL app deployments would not use the correct endpoints. +* Linking from embedded objects to top-level objects was incorrectly disallowed. +* Opening a Realm file in file format v6 (created by Realm Cocoa versions + between 2.4 and 2.10) would crash. (Since 5.0.0, [Core #3764](https://github.com/realm/realm-core/issues/3764)). +* Upgrading v9 (pre-5.0) Realm files would create a redundant search index for + primary key properties. This index would then be removed the next time the + Realm was opened, resulting in some extra i/o in the upgrade process. + (Since 5.0.0, [Core #3787](https://github.com/realm/realm-core/issues/3787)). +* Fixed a performance issue with upgrading v9 files with search indexes on + non-primary-key properties. (Since 5.0.0, [Core #3767](https://github.com/realm/realm-core/issues/3767)). + +### Compatibility +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* MongoDB Realm: 84893c5 or later. +* APIs are backwards compatible with all previous releases in the 10.0.0-alpha series. +* Carthage release for Swift is built with Xcode 11.5. + +### Internal +* Upgraded realm-core from v6.0.3 to v10.0.0-beta.1 +* Upgraded realm-sync from v5.0.1 to v10.0.0-beta.2 + +10.0.0-beta.1 Release notes (2020-06-08) +============================================================= + +NOTE: This version bumps the Realm file format to version 11. It is not +possible to downgrade to earlier versions. Older files will automatically be +upgraded to the new file format. Only [Realm Studio +10.0.0](https://github.com/realm/realm-studio/releases/tag/v10.0.0-beta.1) or +later will be able to open the new file format. + +### Enhancements + +* Add support for next generation sync. Support for syncing to MongoDB instead + of Realm Object Server. Applications must be created at realm.mongodb.com +* The memory mapping scheme for Realm files has changed to better support + opening very large files. +* Add support for the ObjectId data type. This is an automatically-generated + unique identifier similar to a GUID or a UUID. + ([PR #6450](https://github.com/realm/realm-swift/pull/6450)). +* Add support for the Decimal128 data type. This is a 128-bit IEEE 754 decimal + floating point number similar to NSDecimalNumber. + ([PR #6450](https://github.com/realm/realm-swift/pull/6450)). +* Add support for embedded objects. Embedded objects are objects which are + owned by a single parent object, and are deleted when that parent object is + deleted. They are defined by subclassing `EmbeddedObject` / + `RLMEmbeddedObject` rather than `Object` / `RLMObject`. +* Add `-[RLMSyncUser customData]`/`SyncUser.customData`. Custom data is + configured in your MongoDB Realm App. +* Add `-[RLMApp callFunctionNamed:arguments]`/`RealmApp.functions`. This is the + entry point for calling Remote MongoDB Realm functions. Functions allow you + to define and execute server-side logic for your application. Functions are + written in modern JavaScript (ES6+) and execute in a serverless manner. When + you call a function, you can dynamically access components of the current + application as well as information about the request to execute the function + and the logged in user that sent the request. +* Add `-[RLMApp mongoClientWithServiceName]`/`RealmApp.mongoClient`. This is + the entry point for calling your Remote MongoDB Service. The read operations + are `-[RLMMongoCollection findWhere:completion:]`, `-[RLMMongoCollection + countWhere:completion:]`and `-[RLMMongoCollection + aggregateWithPipeline:completion:]`. The write operations are + `-[RLMMongoCollection insertOneDocument:completion:]`, `-[RLMMongoCollection + insertManyDocuments:completion:]`, `-[RLMMongoCollection + updateOneDocument:completion:]`, `-[RLMMongoCollection + updateManyDocuments:completion:]`, `-[RLMMongoCollection + deleteOneDocument:completion:]`, and `-[RLMMongoCollection + deleteManyDocuments:completion:]`. If you are already familiar with MongoDB + drivers, it is important to understand that the remote MongoCollection only + provides access to the operations available in MongoDB Realm. +* Change `[RLMSyncUser + configurationWithPartitionValue:]`/`SyncUser.configuration(with:)` to accept + all BSON types. Partition values can currently be of types `String`, `Int`, + or `ObjectId`. Opening a realm by partition value is the equivalent of + previously opening a realm by URL. In this case, partitions are meant to be + more closely associated with your data. E.g., if you are running a `Dog` + kennel, and have a field `breed` that acts as your partition key, you could + open up realms based on the breed of the dogs. + +### Breaking Changes + +* We no longer support Realm Cloud (legacy), but instead the new "MongoDB + Realm" Cloud. MongoDB Realm is a serverless platform that enables developers + to quickly build applications without having to set up server infrastructure. + MongoDB Realm is built on top of MongoDB Atlas, automatically integrating the + connection to your database. +* Remove support for Query-based sync, including the configuration parameters + and the `RLMSyncSubscription` and `SyncSubscription` types ([#6437](https://github.com/realm/realm-swift/pull/6437)). +* Primary key properties are no longer marked as being indexed. This reflects + an internal change to how primary keys are handled that should not have any + other visible effects. ([#6440](https://github.com/realm/realm-swift/pull/6440)). +* Remove everything related to sync permissions, including both the path-based + permission system and the object-level privileges for query-based sync. ([#6445](https://github.com/realm/realm-swift/pulls/6445)) +* Primary key uniqueness is now enforced when creating new objects during + migrations, rather than only at the end of migrations. Previously new objects + could be created with duplicate primary keys during a migration as long as + the property was changed to a unique value before the end of the migration, + but now a unique value must be supplied when creating the object. +* Remove support for Realm Object Server. + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* MongoDB Realm: 84893c5 or later. +* APIs are backwards compatible with all previous releases in the 10.0.0-alpha series. +* Carthage release for Swift is built with Xcode 11.5. + +### Internal + +* Upgraded realm-core from v6.0.3 to v10.0.0-beta.1 +* Upgraded realm-sync from v5.0.1 to v10.0.0-beta.2 + +5.5.0 Release notes (2020-10-12) +============================================================= + +### Enhancements + +* Add the ability to capture a NotificationToken when using a Combine publisher + that observes a Realm Object or Collection. The user will call + `saveToken(on:at:)` directly after invoking the publisher to use the feature. + +### Fixed + +* When using `Realm.write(withoutNotifying:)` there was a chance that the + supplied observation blocks would not be skipped when in a write transaction. + ([Object Store #1103](https://github.com/realm/realm-object-store/pull/1103)) +* Comparing two identical unmanaged `List<>`/`RLMArray` objects would fail. + ([#5665](https://github.com/realm/realm-swift/issues/5665)). + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 5.0.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 12. + +5.4.8 Release notes (2020-10-05) +============================================================= + +### Fixed + +* Case-insensitive equality queries on indexed string properties failed to + clear some internal state when rerunning the query. This could manifest as + duplicate results or "key not found" errors. + ([#6830](https://github.com/realm/realm-swift/issues/6830), [#6694](https://github.com/realm/realm-swift/issues/6694), since 5.0.0). + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 5.0.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 12. + +### Internal + +* Upgraded realm-core from v6.1.3 to v6.1.4 +* Upgraded realm-sync from v5.0.28 to v5.0.29 + +5.4.7 Release notes (2020-09-30) +============================================================= + +### Fixed + +* Equality queries on indexed string properties would sometimes throw "key not + found" exceptions if the hash of the string happened to have bit 62 set. + ([.NET #2025](https://github.com/realm/realm-dotnet/issues/2025), since v5.0.0). +* Queries comparing non-optional int properties to nil would behave as if they + were comparing against zero instead (since v5.0.0). + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 5.0.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 12. + +### Internal + +* Upgraded realm-core from v6.1.2 to v6.1.3 +* Upgraded realm-sync from v5.0.27 to v5.0.28 + +5.4.6 Release notes (2020-09-29) +============================================================= + +5.4.5 failed to actually update the core version for installation methods other +than SPM. All changes listed there actually happened in this version for +non-SPM installation methods. + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 5.0.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 12. + +### Internal + +* Upgraded realm-sync from v5.0.26 to v5.0.27 + +5.4.5 Release notes (2020-09-28) +============================================================= + +### Enhancements + +* Slightly (<5%) improve the performance of most operations which involve + reading from a Realm file. + +### Fixed + +* Rerunning a equality query on an indexed string property would give incorrect + results if a previous run of the query matched multiple objects and it now + matches one object. This could manifest as either finding a non-matching + object or a "key not found" exception being thrown. + ([#6536](https://github.com/realm/realm-swift/issues/6536), since 5.0.0). + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 5.0.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 12. + +### Internal + +* Upgraded realm-core from v6.1.1 to v6.1.2 +* Upgraded realm-sync from v5.0.25 to v5.0.26 + +5.4.4 Release notes (2020-09-25) +============================================================= + +### Enhancements +* Improve the asymtotic performance of NOT IN queries on indexed properties. It + is now O(Number of Rows) rather than O(Number of Rows \* Number of values in IN clause.) + +### Fixed + +* Fix a crash inside `realm::Array(Type)::init_from_mem()` which would + sometimes occur when running a query over links immediately after creating + objects of the queried type. + ([#6789](https://github.com/realm/realm-swift/issues/6789) and possibly others, since 5.0.0). +* Possibly fix problems when changing the type of the primary key of an object + from optional to non-optional. + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 5.0.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 12. + +### Internal + +* Upgraded realm-core from v6.0.26 to v6.1.1 +* Upgraded realm-sync from v5.0.23 to v5.0.25 + +5.4.3 Release notes (2020-09-21) +============================================================= + +### Fixed + +* Fix compilation via Carthage when using Xcode 12 ([#6717](https://github.com/realm/realm-swift/issues/6717)). + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.12 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 12. + +5.4.2 Release notes (2020-09-17) +============================================================= + +### Enhancements + +* Add prebuilt binary for Xcode 12 to the release package. + +### Fixed + +* Fix Archiving the Realm and RealmSwift frameworks with Xcode 12. + ([#6774](https://github.com/realm/realm-swift/issues/6774)) + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.12 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 12. + +5.4.1 Release notes (2020-09-16) +============================================================= + +### Enhancements + +* Add prebuilt binary for Xcode 11.7 to the release package. + +### Fixed + +* Fix deadlocks when opening a Realm file in both the iOS simulator and Realm + Studio ([#6743](https://github.com/realm/realm-swift/issues/6743), since 5.3.6). +* Fix Springboard deadlocking when an app is unsuspended while it has an open + Realm file which is stored in an app group on iOS 10-12 + ([#6749](https://github.com/realm/realm-swift/issues/6749), since 5.3.6). +* If you use encryption your application cound crash with a message like + "Opening Realm files of format version 0 is not supported by this version of + Realm". ([#6889](https://github.com/realm/realm-java/issues/6889) among others, since 5.0.0) +* Confining a Realm to a serial queue would throw an error claiming that the + queue was not a serial queue on iOS versions older than 12. + ([#6735](https://github.com/realm/realm-swift/issues/6735), since 5.0.0). +* Results would sometimes give stale results inside a write transaction if a + write which should have updated the Results was made before the first access + of a pre-existing Results object. + ([#6721](https://github.com/realm/realm-swift/issues/6721), since 5.0.0) + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.12 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.7. + +### Internal + +* Upgraded realm-core from v6.0.25 to v6.0.26 +* Upgraded realm-sync from v5.0.22 to v5.0.23 + +5.4.0 Release notes (2020-09-09) +============================================================= + +This version bumps the Realm file format version. This means that older +versions of Realm will be unable to open Realm files written by this version, +and a new version of Realm Studio will be required. There are no actual format +changes and the version bump is just to force a re-migration of incorrectly +upgraded Realms. + +### Fixed + +* Upgrading pre-5.x files with string primary keys would result in a file where + `realm.object(ofType:forPrimaryKey:)` would fail to find the object. + ([#6716](https://github.com/realm/realm-swift/issues/6716), since 5.2.0) +* A write transaction which modifies an object with more than 16 managed + properties and causes the Realm file to grow larger than 2 GB could cause an + assertion failure mentioning "m_has_refs". ([JS #3194](https://github.com/realm/realm-js/issues/3194), since 5.0.0). +* Objects with more than 32 properties could corrupt the Realm file and result + in a variety of crashes. ([Java #7057](https://github.com/realm/realm-java/issues/7057), since 5.0.0). + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.12 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.6. + +### Internal + +* Upgraded realm-core from v6.0.23 to v6.0.25 +* Upgraded realm-sync from v5.0.20 to v5.0.22 + +5.3.6 Release notes (2020-09-02) +============================================================= + +### Fixed + +* Work around iOS 14 no longer allowing the use of file locks in shared + containers, which resulted in the OS killing an app which entered the + background while a Realm was open ([#6671](https://github.com/realm/realm-swift/issues/6671)). +* If an attempt to upgrade a realm has ended with a crash with "migrate_links()" + in the call stack, the realm was left in an invalid state. The migration + logic now handles this state and can complete upgrading files which were + incompletely upgraded by pre-5.3.4 versions. +* Fix deadlocks when writing to a Realm file on an exFAT partition from macOS. + ([#6691](https://github.com/realm/realm-swift/issues/6691)). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.6. + +### Internal + +* Upgraded realm-core from v6.0.19 to v6.0.23 +* Upgraded realm-sync from v5.0.16 to v5.0.20 + +5.3.5 Release notes (2020-08-20) +============================================================= + +### Fixed + +* Opening Realms on background threads could produce spurious Incorrect Thread + exceptions when a cached Realm existed for a previously existing thread with + the same thread ID as the current thread. + ([#6659](https://github.com/realm/realm-swift/issues/6659), + [#6689](https://github.com/realm/realm-swift/issues/6689), + [#6712](https://github.com/realm/realm-swift/issues/6712), since 5.0.0). +* Upgrading a table with incoming links but no properties would crash. This was + probably not possible to hit in practice as we reject object types with no + properties. +* Upgrading a non-nullable List which nonetheless contained null values would + crash. This was possible due to missing error-checking in some older versions + of Realm. + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.6. + +### Internal + +* Upgraded realm-core from v6.0.18 to v6.0.19 +* Upgraded realm-sync from v5.0.15 to v5.0.16 + +5.3.4 Release notes (2020-08-17) +============================================================= + +### Fixed + +* Accessing a Realm after calling `deleteAll()` would sometimes throw an + exception with the reason 'ConstIterator copy failed'. ([#6597](https://github.com/realm/realm-swift/issues/6597), since 5.0.0). +* Fix an assertion failure inside the `migrate_links()` function when upgrading + a pre-5.0 Realm file. +* Fix a bug in memory mapping management. This bug could result in multiple + different asserts as well as segfaults. In many cases stack backtraces would + include members of the EncyptedFileMapping near the top - even if encryption + was not used at all. In other cases asserts or crashes would be in methods + reading an array header or array element. In all cases the application would + terminate immediately. ([Core #3838](https://github.com/realm/realm-core/pull/3838), since v5.0.0). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.6. + +### Internal + +* Upgraded realm-core from v6.0.14 to v6.0.18 +* Upgraded realm-sync from v5.0.14 to v5.0.15 + +5.3.3 Release notes (2020-07-30) +============================================================= + +### Enhancements + +* Add support for the x86_64 watchOS simulator added in Xcode 12. + +### Fixed + +* (RLM)Results objects would incorrectly pin old read transaction versions + until they were accessed after a Realm was refreshed, resulting in the Realm + file growing to large sizes if a Results was retained but not accessed after + every write. ([#6677](https://github.com/realm/realm-swift/issues/6677), since 5.0.0). +* Fix linker errors when using SwiftUI previews with Xcode 12 when Realm was + installed via Swift Package Manager. ([#6625](https://github.com/realm/realm-swift/issues/6625)) + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.6. + +### Internal + +* Upgraded realm-core from v6.0.12 to v6.0.14 +* Upgraded realm-sync from v5.0.12 to v5.0.14 + +5.3.2 Release notes (2020-07-21) +============================================================= + +### Fixed + +* Fix a file format upgrade bug when opening older Realm files. Could cause + assertions like "Assertion failed: ref != 0" during opning of a Realm. + ([Core #6644](https://github.com/realm/realm-swift/issues/6644), since 5.2.0) +* A use-after-free would occur if a Realm was compacted, opened on multiple + threads prior to the first write, then written to while reads were happening + on other threads. This could result in a variety of crashes, often inside + realm::util::EncryptedFileMapping::read_barrier. + (Since v5.0.0, [#6626](https://github.com/realm/realm-swift/issues/6626), + [#6628](https://github.com/realm/realm-swift/issues/6628), + [#6652](https://github.com/realm/realm-swift/issues/6652), + [#6655](https://github.com/realm/realm-swift/issues/6555), + [#6656](https://github.com/realm/realm-swift/issues/6656)). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.6. + +### Internal + +* Upgraded realm-core from v6.0.11 to v6.0.12 +* Upgraded realm-sync from v5.0.11 to v5.0.12 + +5.3.1 Release notes (2020-07-17) +============================================================= + +### Enhancements + +* Add prebuilt binary for Xcode 11.6 to the release package. + +### Fixed + +* Creating an object inside migration which changed that object type's primary + key would hit an assertion failure mentioning primary_key_col + ([#6613](https://github.com/realm/realm-swift/issues/6613), since 5.0.0). +* Modifying the value of a string primary key property inside a migration with + a Realm file which was upgraded from pre-5.0 would corrupt the property's + index, typically resulting in crashes. ([Core #3765](https://github.com/realm/realm-core/issues/3765), since 5.0.0). +* Some Realm files which hit assertion failures when upgrading from the pre-5.0 + file format should now upgrade correctly (Since 5.0.0). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.6. + +### Internal + +* Upgraded realm-core from v6.0.9 to v6.0.11 +* Upgraded realm-sync from v5.0.8 to v5.0.11 + +5.3.0 Release notes (2020-07-14) +============================================================= + +### Enhancements + +* Add `Realm.objectWillChange`, which is a Combine publisher that will emit a + notification each time the Realm is refreshed or a write transaction is + commited. + +### Fixed + +* Fix the spelling of `ObjectKeyIdentifiable`. The old spelling is available + and deprecated for compatibility. +* Rename `RealmCollection.publisher` to `RealmCollection.collectionPublisher`. + The old name interacted with the `publisher` defined by `Sequence` in very + confusing ways, so we need to use a different name. The `publisher` name is + still available for compatibility. ([#6516](https://github.com/realm/realm-swift/issues/6516)) +* Work around "xcodebuild timed out while trying to read + SwiftPackageManagerExample.xcodeproj" errors when installing Realm via + Carthage. ([#6549](https://github.com/realm/realm-swift/issues/6549)). +* Fix a performance regression when using change notifications. (Since 5.0.0, + [#6629](https://github.com/realm/realm-swift/issues/6629)). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.5. + +### Internal + +* Upgraded realm-core from v6.0.8 to v6.0.9 +* Upgraded realm-sync from v5.0.7 to v5.0.8 + +5.2.0 Release notes (2020-06-30) +============================================================= + +### Fixed +* Opening a SyncSession with LOCAL app deployments would not use the correct endpoints. +This release also contains all changes from 5.0.3 and 5.1.0. + +### Breaking Changes +* The following classes & aliases have been renamed to align Cocoa with the other Realm SDKs: + +| Old API | New API | +|:------------------------------------------------------------|:---------------------------------------------------------------| +| `RLMSyncUser` | `RLMUser` | +| `SyncUser` | `User` | +| `RLMAppCredential` | `RLMCredential` | +| `AppCredential` | `Credential` | +| `RealmApp` | `App` | +| `RLMUserAPIKeyProviderClient` | `RLMAPIKeyAuth` | +| `RLMUsernamePasswordProviderClient` | `RLMEmailPasswordAuth` | +| `UsernamePasswordProviderClient` | `EmailPasswordAuth` | +| `UserAPIKeyProviderClient` | `APIKeyAuth` | + +* The following functionality has also moved to the User: + +| Old API | New API | +|:-------------------------------------------------------------|:--------------------------------------------------------------| +| `[RLMApp callFunctionNamed:]` | `[RLMUser callFunctionNamed:]` | +| `App.functions` | `User.functions` | +| `[RLMApp mongoClientWithServiceName:]` | `[RLMUser mongoClientWithServiceName:]` | +| `App.mongoClient(serviceName)` | `User.mongoClient(serviceName)` | +| `[RLMApp userAPIKeyProviderClient]` | `[RLMUser apiKeyAuth]` | +| `App.userAPIKeyProviderClient` | `App.apiKeyAuth()` | +| `[RLMApp logOut:]` | `[RLMUser logOut]` | +| `App.logOut(user)` | `User.logOut()` | +| `[RLMApp removeUser:]` | `[RLMUser remove]` | +| `App.remove(user)` | `User.remove()` | +| `[RLMApp linkUser:credentials:]` | `[RLMUser linkWithCredentials:]` | +| `App.linkUser(user, credentials)` | `User.link(credentials)` | + +* The argument labels in Swift have changed for several methods: +| Old API | New API | +|:-------------------------------------------------------------|:--------------------------------------------------------------| +| `APIKeyAuth.createApiKey(withName:completion:)` | `APIKeyAuth.createApiKey(named:completion:)` | +| `App.login(withCredential:completion:) | `App.login(credentials:completion:)` | +| `App.pushClient(withServiceName:)` | `App.pushClient(serviceName:)` | +| `MongoClient.database(withName:)` | `MongoClient.database(named:)` | + +* `refreshCustomData()` on User now returns void and passes the custom data to the callback on success. + +### Compatibility +* This release introduces breaking changes w.r.t some sync classes and MongoDB Realm Cloud functionality. + (See the breaking changes section for the full list) +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* MongoDB Realm: 84893c5 or later. +* APIs are backwards compatible with all previous releases in the 10.0.0-alpha series. +* Realm Studio: 10.0.0 or later. +* Carthage release for Swift is built with Xcode 11.5. + +### Internal +* Upgraded realm-core from v6.0.3 to v10.0.0-beta.1 +* Upgraded realm-sync from v5.0.1 to v10.0.0-beta.2 + +10.0.0-beta.2 Release notes (2020-06-09) +============================================================= +Xcode 11.3 and iOS 9 are now the minimum supported versions. + +### Enhancements + +* Add support for building with Xcode 12 beta 1. watchOS currently requires + removing x86_64 from the supported architectures. Support for the new 64-bit + watch simulator will come in a future release. + +### Fixed +* Opening a SyncSession with LOCAL app deployments would not use the correct endpoints. +* Linking from embedded objects to top-level objects was incorrectly disallowed. + +* Opening a Realm file in file format v6 (created by Realm Cocoa versions + between 2.4 and 2.10) would crash. (Since 5.0.0, [Core #3764](https://github.com/realm/realm-core/issues/3764)). +* Upgrading v9 (pre-5.0) Realm files would create a redundant search index for + primary key properties. This index would then be removed the next time the + Realm was opened, resulting in some extra i/o in the upgrade process. + (Since 5.0.0, [Core #3787](https://github.com/realm/realm-core/issues/3787)). +* Fixed a performance issue with upgrading v9 files with search indexes on + non-primary-key properties. (Since 5.0.0, [Core #3767](https://github.com/realm/realm-core/issues/3767)). + +### Compatibility +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* MongoDB Realm: 84893c5 or later. +* APIs are backwards compatible with all previous releases in the 10.0.0-alpha series. +* Carthage release for Swift is built with Xcode 11.5. + +### Internal +* Upgraded realm-core from v6.0.3 to v10.0.0-beta.1 +* Upgraded realm-sync from v5.0.1 to v10.0.0-beta.2 + +10.0.0-beta.1 Release notes (2020-06-08) +============================================================= + +NOTE: This version bumps the Realm file format to version 11. It is not +possible to downgrade to earlier versions. Older files will automatically be +upgraded to the new file format. Only [Realm Studio +10.0.0](https://github.com/realm/realm-studio/releases/tag/v10.0.0-beta.1) or +later will be able to open the new file format. + +### Enhancements + +* Add support for next generation sync. Support for syncing to MongoDB instead + of Realm Object Server. Applications must be created at realm.mongodb.com +* The memory mapping scheme for Realm files has changed to better support + opening very large files. +* Add support for the ObjectId data type. This is an automatically-generated + unique identifier similar to a GUID or a UUID. + ([PR #6450](https://github.com/realm/realm-swift/pull/6450)). +* Add support for the Decimal128 data type. This is a 128-bit IEEE 754 decimal + floating point number similar to NSDecimalNumber. + ([PR #6450](https://github.com/realm/realm-swift/pull/6450)). +* Add support for embedded objects. Embedded objects are objects which are + owned by a single parent object, and are deleted when that parent object is + deleted. They are defined by subclassing `EmbeddedObject` / + `RLMEmbeddedObject` rather than `Object` / `RLMObject`. +* Add `-[RLMSyncUser customData]`/`SyncUser.customData`. Custom data is + configured in your MongoDB Realm App. +* Add `-[RLMApp callFunctionNamed:arguments]`/`RealmApp.functions`. This is the + entry point for calling Remote MongoDB Realm functions. Functions allow you + to define and execute server-side logic for your application. Functions are + written in modern JavaScript (ES6+) and execute in a serverless manner. When + you call a function, you can dynamically access components of the current + application as well as information about the request to execute the function + and the logged in user that sent the request. +* Add `-[RLMApp mongoClientWithServiceName]`/`RealmApp.mongoClient`. This is + the entry point for calling your Remote MongoDB Service. The read operations + are `-[RLMMongoCollection findWhere:completion:]`, `-[RLMMongoCollection + countWhere:completion:]`and `-[RLMMongoCollection + aggregateWithPipeline:completion:]`. The write operations are + `-[RLMMongoCollection insertOneDocument:completion:]`, `-[RLMMongoCollection + insertManyDocuments:completion:]`, `-[RLMMongoCollection + updateOneDocument:completion:]`, `-[RLMMongoCollection + updateManyDocuments:completion:]`, `-[RLMMongoCollection + deleteOneDocument:completion:]`, and `-[RLMMongoCollection + deleteManyDocuments:completion:]`. If you are already familiar with MongoDB + drivers, it is important to understand that the remote MongoCollection only + provides access to the operations available in MongoDB Realm. +* Change `[RLMSyncUser + configurationWithPartitionValue:]`/`SyncUser.configuration(with:)` to accept + all BSON types. Partition values can currently be of types `String`, `Int`, + or `ObjectId`. Opening a realm by partition value is the equivalent of + previously opening a realm by URL. In this case, partitions are meant to be + more closely associated with your data. E.g., if you are running a `Dog` + kennel, and have a field `breed` that acts as your partition key, you could + open up realms based on the breed of the dogs. + +### Breaking Changes + +* We no longer support Realm Cloud (legacy), but instead the new "MongoDB + Realm" Cloud. MongoDB Realm is a serverless platform that enables developers + to quickly build applications without having to set up server infrastructure. + MongoDB Realm is built on top of MongoDB Atlas, automatically integrating the + connection to your database. +* Remove support for Query-based sync, including the configuration parameters + and the `RLMSyncSubscription` and `SyncSubscription` types ([#6437](https://github.com/realm/realm-swift/pull/6437)). +* Primary key properties are no longer marked as being indexed. This reflects + an internal change to how primary keys are handled that should not have any + other visible effects. ([#6440](https://github.com/realm/realm-swift/pull/6440)). +* Remove everything related to sync permissions, including both the path-based + permission system and the object-level privileges for query-based sync. ([#6445](https://github.com/realm/realm-swift/pulls/6445)) +* Primary key uniqueness is now enforced when creating new objects during + migrations, rather than only at the end of migrations. Previously new objects + could be created with duplicate primary keys during a migration as long as + the property was changed to a unique value before the end of the migration, + but now a unique value must be supplied when creating the object. +* Remove support for Realm Object Server. + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* MongoDB Realm: 84893c5 or later. +* APIs are backwards compatible with all previous releases in the 10.0.0-alpha series. +* `List.index(of:)` would give incorrect results if it was the very first thing + called on that List after a Realm was refreshed following a write which + modified the List. (Since 5.0.0, [#6606](https://github.com/realm/realm-swift/issues/6606)). +* If a ThreadSafeReference was the only remaining reference to a Realm, + multiple copies of the file could end up mapped into memory at once. This + probably did not have any symptoms other than increased memory usage. (Since 5.0.0). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.5. + +### Internal + +* Upgraded realm-core from v6.0.3 to v10.0.0-beta.1 +* Upgraded realm-sync from v5.0.1 to v10.0.0-beta.2 +* Upgraded realm-core from v6.0.6 to v6.0.7 +* Upgraded realm-sync from v5.0.5 to v5.0.6 +* Upgraded realm-core from v6.0.6 to v6.0.8 +* Upgraded realm-sync from v5.0.5 to v5.0.7 + +5.1.0 Release notes (2020-06-22) +============================================================= + +### Enhancements + +* Allow opening full-sync Realms in read-only mode. This disables local schema + initialization, which makes it possible to open a Realm which the user does + not have write access to without using asyncOpen. In addition, it will report + errors immediately when an operation would require writing to the Realm + rather than reporting it via the sync error handler only after the server + rejects the write. + +### Fixed + +* Opening a Realm using a configuration object read from an existing Realm + would incorrectly bind the new Realm to the original Realm's thread/queue, + resulting in "Realm accessed from incorrect thread." exceptions. + ([#6574](https://github.com/realm/realm-swift/issues/6574), + [#6559](https://github.com/realm/realm-swift/issues/6559), since 5.0.0). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.5. + +5.0.3 Release notes (2020-06-10) +============================================================= + +### Fixed + +* `-[RLMObject isFrozen]` always returned false. ([#6568](https://github.com/realm/realm-swift/issues/6568), since 5.0.0). +* Freezing an object within the write transaction that the object was created + in now throws an exception rather than crashing when the object is first + used. +* The schema for frozen Realms was not properly initialized, leading to crashes + when accessing a RLMLinkingObjects property. + ([#6568](https://github.com/realm/realm-swift/issues/6568), since 5.0.0). +* Observing `Object.isInvalidated` via a keypath literal would produce a + warning in Swift 5.2 due to the property not being marked as @objc. + ([#6554](https://github.com/realm/realm-swift/issues/6554)) + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.5. + +5.0.2 Release notes (2020-06-02) +============================================================= + +### Fixed + +* Fix errSecDuplicateItem (-25299) errors when opening a synchronized Realm + when upgrading from pre-5.0 versions of Realm. + ([#6538](https://github.com/realm/realm-swift/issues/6538), [#6494](https://github.com/realm/realm-swift/issues/6494), since 5.0.0). +* Opening Realms stored on filesystems which do not support preallocation (such + as ExFAT) would give "Operation not supported" exceptions. + ([#6508](https://github.com/realm/realm-swift/issues/6508), since 3.2.0). +* 'NoSuchTable' exceptions would sometimes be thrown after upgrading a Relam + file to the v10 format. ([Core #3701](https://github.com/realm/realm-core/issues/3701), since 5.0.0) +* If the upgrade process was interrupted/killed for various reasons, the + following run could stop with some assertions failing. No instances of this + happening were reported to us. (Since 5.0.0). +* Queries filtering a `List` where the query was on an indexed property over a + link would sometimes give incomplete results. + ([#6540](https://github.com/realm/realm-swift/issues/6540), since 4.1.0 but + more common since 5.0.0) +* Opening a file in read-only mode would attempt to make a spurious write to + the file, causing errors if the file was in read-only storage (since 5.0.0). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.5. + +### Internal + +* Upgraded realm-core from v6.0.4 to v6.0.6 +* Upgraded realm-sync from v5.0.3 to v5.0.5 + +5.0.1 Release notes (2020-05-27) +============================================================= + +### Enhancements + +* Add prebuilt binary for Xcode 11.5 to the release package. + +### Fixed + +* Fix linker error when building a xcframework for Catalyst. + ([#6511](https://github.com/realm/realm-swift/issues/6511), since 4.3.1). +* Fix building for iOS devices when using Swift Package Manager + ([#6522](https://github.com/realm/realm-swift/issues/6522), since 5.0.0). +* `List` and `RealmOptional` properties on frozen objects were not initialized + correctly and would always report `nil` or an empty list. + ([#6527](https://github.com/realm/realm-swift/issues/6527), since 5.0.0). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.5. + +5.0.0 Release notes (2020-05-15) +============================================================= + +NOTE: This version bumps the Realm file format to version 10. It is not +possible to downgrade version 9 or earlier. Files created with older versions +of Realm will be automatically upgraded. Only +[Studio 3.11](https://github.com/realm/realm-studio/releases/tag/v3.11.0) or later will be able +to open the new file format. + +### Enhancements + +* Storing large binary blobs in Realm files no longer forces the file to be at + least 8x the size of the largest blob. +* Reduce the size of transaction logs stored inside the Realm file, reducing + file size growth from large transactions. +* Add support for frozen objects. `Realm`, `Results`, `List` and `Object` now + have `freeze()` methods which return a frozen copy of the object. These + objects behave similarly to creating unmanaged deep copies of the source + objects. They can be read from any thread and do not update when writes are + made to the Realm, but creating frozen objects does not actually copy data + out of the Realm and so can be much faster and use less memory. Frozen + objects cannot be mutated or observed for changes (as they never change). + ([PR #6427](https://github.com/realm/realm-swift/pull/6427)). +* Add the `isFrozen` property to `Realm`, `Results`, `List` and `Object`. +* Add `Realm.Configuration.maxNumberOfActiveVersions`. Each time a write + transaction is performed, a new version is created inside the Realm, and then + any versions which are no longer in use are cleaned up. If too many versions + are kept alive while performing writes (either due to a background thread + performing a long operation that doesn't let the Realm on that thread + refresh, or due to holding onto frozen versions for a long time) the Realm + file will grow in size, potentially to the point where it is too large to be + opened. Setting this configuration option will make write transactions which + would cause the live version count to exceed the limit to instead fail. +* Add support for queue-confined Realms. Rather than being bound to a specific + thread, queue-confined Realms are bound to a serial dispatch queue and can be + used within blocks dispatched to that queue regardless of what thread they + happen to run on. In addition, change notifications will be delivered to that + queue rather than the thread's run loop. ([PR #6478](https://github.com/realm/realm-swift/pull/6478)). +* Add an option to deliver object and collection notifications to a specific + serial queue rather than the current thread. ([PR #6478](https://github.com/realm/realm-swift/pull/6478)). +* Add Combine publishers for Realm types. Realm collections have a `.publisher` + property which publishes the collection each time it changes, and a + `.changesetPublisher` which publishes a `RealmCollectionChange` each time the + collection changes. Corresponding publishers for Realm Objects can be + obtained with the `publisher()` and `changesetPublisher()` global functions. +* Extend Combine publishers which output Realm types with a `.freeze()` + function which will make the publisher instead output frozen objects. +* String primary keys no longer require a separate index, improving insertion + and deletion performance without hurting lookup performance. +* Reduce the encrypted page reclaimer's impact on battery life when encryption + is used. ([Core #3461](https://github.com/realm/realm-core/pull/3461)). + +### Fixed + +* The uploaded bytes in sync progress notifications was sometimes incorrect and + wouldn't exactly equal the uploadable bytes when the uploaded completed. +* macOS binaries were built with the incorrect deployment target (10.14 rather + than 10.9), resulting in linker warnings. ([#6299](https://github.com/realm/realm-swift/issues/6299), since 3.18.0). +* An internal datastructure for List properties could be double-deleted if the + last reference was released from a thread other than the one which the List + was created on at the wrong time. This would typically manifest as + "pthread_mutex_destroy() failed", but could also result in other kinds of + crashes. ([#6333](https://github.com/realm/realm-swift/issues/6333)). +* Sorting on float or double properties containing NaN values had inconsistent + results and would sometimes crash due to out-of-bounds memory accesses. + ([#6357](https://github.com/realm/realm-swift/issues/6357)). + +### Breaking Changes + +* The ObjectChange type in Swift is now generic and includes a reference to the + object which changed. When using `observe(on:)` to receive notifications on a + dispatch queue, the object will be confined to that queue. +* The Realm instance passed in the callback to asyncOpen() is now confined to + the callback queue passed to asyncOpen() rather than the thread which the + callback happens to be called on. This means that the Realm instance may be + stored and reused in further blocks dispatched to that queue, but the queue + must now be a serial queue. +* Files containing Date properties written by version of Realm prior to 1.0 can + no longer be opened. +* Files containing Any properties can no longer be opened. This property type + was never documented and was deprecated in 1.0. +* Deleting objects now preserves the order of objects reported by unsorted + Results rather than performing a swap operation before the delete. Note that + it is still not safe to assume that the order of objects in an unsorted + Results is the order that the objects were created in. +* The minimum supported deployment target for iOS when using Swift Package + Manager to install Realm is now iOS 11. + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.4.1. + +### Internal + +* Upgraded realm-core from v5.23.8 to v6.0.4 +* Upgraded realm-sync from v4.9.5 to v5.0.3 + +5.0.0-beta.6 Release notes (2020-05-08) +============================================================= + +### Enhancements + +* Add support for queue-confined Realms. Rather than being bound to a specific + thread, queue-confined Realms are bound to a serial dispatch queue and can be + used within blocks dispatched to that queue regardless of what thread they + happen to run on. In addition, change notifications will be delivered to that + queue rather than the thread's run loop. ([PR #6478](https://github.com/realm/realm-swift/pull/6478)). +* Add an option to deliver object and collection notifications to a specific + serial queue rather than the current thread. ([PR #6478](https://github.com/realm/realm-swift/pull/6478)). + +### Fixed + +* The uploaded bytes in sync progress notifications was sometimes incorrect and + wouldn't exactly equal the uploadable bytes when the uploaded completed. + +### Breaking Changes + +* The Realm instance passed in the callback to asyncOpen() is now confined to + the callback queue passed to asyncOpen() rather than the thread which the + callback happens to be called on. This means that the Realm instance may be + stored and reused in further blocks dispatched to that queue, but the queue + must now be a serial queue. + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.4.1. + +### Internal + +* Upgraded realm-core from v6.0.3 to v6.0.4 +* Upgraded realm-sync from v5.0.1 to v5.0.3 + +4.4.1 Release notes (2020-04-16) +============================================================= + +### Enhancements + +* Upgrade Xcode 11.4 binaries to Xcode 11.4.1. + +### Fixed + +* Fix a "previous <= m_schema_transaction_version_max" assertion failure caused + by a race condition that could occur after performing a migration. (Since 3.0.0). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.4.1. + +5.0.0-beta.3 Release notes (2020-02-26) +============================================================= + +Based on 4.3.2 and also includes all changes since 4.3.0. + +### Enhancements + +* Add support for frozen objects. `Realm`, `Results`, `List` and `Object` now + have `freeze()` methods which return a frozen copy of the object. These + objects behave similarly to creating unmanaged deep copies of the source + objects. They can be read from any thread and do not update when writes are + made to the Realm, but creating frozen objects does not actually copy data + out of the Realm and so can be much faster and use less memory. Frozen + objects cannot be mutated or observed for changes (as they never change). + ([PR #6427](https://github.com/realm/realm-swift/pull/6427)). +* Add the `isFrozen` property to `Realm`, `Results`, `List` and `Object`. +* Add `Realm.Configuration.maxNumberOfActiveVersions`. Each time a write + transaction is performed, a new version is created inside the Realm, and then + any versions which are no longer in use are cleaned up. If too many versions + are kept alive while performing writes (either due to a background thread + performing a long operation that doesn't let the Realm on that thread + refresh, or due to holding onto frozen versions for a long time) the Realm + file will grow in size, potentially to the point where it is too large to be + opened. Setting this configuration option will make write transactions which + would cause the live version count to exceed the limit to instead fail. + + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.3. + +### Internal + +* Upgraded realm-core from v6.0.0-beta.3 to v6.0.3 +* Upgraded realm-sync from v5.0.0-beta.2 to v5.0.1 + +5.0.0-beta.2 Release notes (2020-01-13) +============================================================= + +Based on 4.3.0 and also includes all changes since 4.1.1. + +### Fixed + +* Fix compilation when using CocoaPods targeting iOS versions older than 11 (since 5.0.0-alpha). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.3. + +### Internal + +* Upgraded realm-core from v6.0.0-beta.2 to v6.0.0-beta.3 +* Upgraded realm-sync from v5.0.0-beta.1 to v5.0.0-beta.2 + +5.0.0-beta.1 Release notes (2019-12-13) +============================================================= + +Based on 4.1.1 and also includes all changes since 4.1.0. + +NOTE: This version bumps the Realm file format to version 10. It is not possible to downgrade version 9 or earlier. Files created with older versions of Realm will be automatically upgraded. + +### Enhancements + +* String primary keys no longer require a separate index, improving insertion + and deletion performance without hurting lookup performance. +* Reduce the encrypted page reclaimer's impact on battery life when encryption + is used. ([Core #3461](https://github.com/realm/realm-core/pull/3461)). + +### Fixed + +* Fix an error when a table-backed Results was accessed immediately after + deleting the object previously at the index being accessed (since + 5.0.0-alpha.1). +* macOS binaries were built with the incorrect deployment target (10.14 rather + than 10.9), resulting in linker warnings. ([#6299](https://github.com/realm/realm-swift/issues/6299), since 3.18.0). +* An internal datastructure for List properties could be double-deleted if the + last reference was released from a thread other than the one which the List + was created on at the wrong time. This would typically manifest as + "pthread_mutex_destroy() failed", but could also result in other kinds of + crashes. ([#6333](https://github.com/realm/realm-swift/issues/6333)). +* Sorting on float or double properties containing NaN values had inconsistent + results and would sometimes crash due to out-of-bounds memory accesses. + ([#6357](https://github.com/realm/realm-swift/issues/6357)). + +### Known Issues + +* Changing which property of an object is the primary key in a migration will + break incoming links to objects of that type. +* Changing the primary key of an object with Data properties in a migration + will crash. + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.3. + +### Internal + +* Upgraded realm-core from v6.0.0-alpha.24 to v6.0.0-beta.2 +* Upgraded realm-sync from 4.7.1-core6.5 to v5.0.0-beta.1 + +5.0.0-alpha.1 Release notes (2019-11-14) +============================================================= + +Based on 4.1.0. + +### Enhancements + +* Add `-[RLMRealm fileExistsForConfiguration:]`/`Realm.fileExists(for:)`, + which checks if a local Realm file exists for the given configuration. +* Add `-[RLMRealm deleteFilesForConfiguration:]`/`Realm.deleteFiles(for:)` + to delete the Realm file and all auxiliary files for the given configuration. +* Storing large binary blobs in Realm files no longer forces the file to be at + least 8x the size of the largest blob. +* Reduce the size of transaction logs stored inside the Realm file, reducing + file size growth from large transactions. + +NOTE: This version bumps the Realm file format to version 10. It is not +possible to downgrade version 9 or earlier. Files created with older versions +of Realm will be automatically upgraded. This automatic upgrade process is not +yet well tested. Do not open Realm files with data you care about with this +alpha version. + +### Breaking Changes + +* Files containing Date properties written by version of Realm prior to 1.0 can + no longer be opened. +* Files containing Any properties can no longer be opened. This property type + was never documented and was deprecated in 1.0. + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades v9) +* Realm Object Server: 3.21.0 or later. +* APIs are backwards compatible with all previous releases in the 4.x.y series. +* Carthage release for Swift is built with Xcode 11.3. +* Carthage release for Swift is built with Xcode 11.2.1. + +### Internal + +* Upgraded realm-core from 5.23.6 to v6.0.0-alpha.24. +* Upgraded realm-sync from 4.8.2 to 4.7.1-core6.5. + +4.4.0 Release notes (2020-03-26) +============================================================= + +Swift 4.0 and Xcode 10.3 are now the minimum supported versions. + +### Enhancements + +* Allow setting the `fileUrl` for synchronized Realms. An appropriate local + path based on the sync URL will still be used if it is not overridden. + ([PR #6454](https://github.com/realm/realm-swift/pull/6454)). +* Add Xcode 11.4 binaries to the release package. + +### Fixed + +* None. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.4. + +4.3.2 Release notes (2020-02-06) +============================================================= + +### Enhancements + +* Similar to `autoreleasepool()`, `realm.write()` now returns the value which + the block passed to it returns. Returning `Void` from the block is still allowed. + +### Fixed + +* Fix a memory leak attributed to `property_copyAttributeList` the first time a + Realm is opened when using Realm Swift. ([#6409](https://github.com/realm/realm-swift/issues/6409), since 4.0.0). +* Connecting to a `realms:` sync URL would crash at runtime on iOS 11 (and no + other iOS versions) inside the SSL validation code. (Since 4.3.1). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.3. + +### Internal + +* Upgraded realm-sync from 4.9.4 to 4.9.5. + +4.3.1 Release notes (2020-01-16) +============================================================= + +### Enhancements + +* Reduce the encrypted page reclaimer's impact on battery life when encryption + is used. ([Core #3461](https://github.com/realm/realm-core/pull/3461)). + +### Fixed + +* macOS binaries were built with the incorrect deployment target (10.14 rather + than 10.9), resulting in linker warnings. ([#6299](https://github.com/realm/realm-swift/issues/6299), since 3.18.0). +* An internal datastructure for List properties could be double-deleted if the + last reference was released from a thread other than the one which the List + was created on at the wrong time. This would typically manifest as + "pthread_mutex_destroy() failed", but could also result in other kinds of + crashes. ([#6333](https://github.com/realm/realm-swift/issues/6333)). +* Sorting on float or double properties containing NaN values had inconsistent + results and would sometimes crash due to out-of-bounds memory accesses. + ([#6357](https://github.com/realm/realm-swift/issues/6357)). +* A NOT query on a `List` which happened to have the objects in a + different order than the underlying table would sometimes include the object + immediately before an object which matches the query. ([#6289](https://github.com/realm/realm-swift/issues/6289), since 0.90.0). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.3. + +### Internal + +* Upgraded realm-core from 5.23.6 to 5.23.8. +* Upgraded realm-sync from 4.9.0 to 4.9.4. + +4.3.0 Release notes (2019-12-19) +============================================================= + +### Enhancements + +* Add the ability to set a custom logger function on `RLMSyncManager` which is + called instead of the default NSLog-based logger. +* Expose configuration options for the various types of sync connection + timeouts and heartbeat intervals on `RLMSyncManager`. +* Add an option to have `Realm.asyncOpen()` report an error if the connection + times out rather than swallowing the error and attempting to reconnect until + it succeeds. + +### Fixed + +* Fix a crash when using value(forKey:) on a LinkingObjects property (including + when doing so indirectly, such as by querying on that property). + ([#6366](https://github.com/realm/realm-swift/issues/6366), since 4.0.0). +* Fix a rare crash in `ClientHistoryImpl::integrate_server_changesets()` which + would only happen in Debug builds (since v3.0.0). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.3. + +### Internal + +* Upgraded realm-sync from 4.8.2 to 4.9.0. + +4.2.0 Release notes (2019-12-16) +============================================================= + +### Enhancements + +* Add `-[RLMRealm fileExistsForConfiguration:]`/`Realm.fileExists(for:)`, + which checks if a local Realm file exists for the given configuration. +* Add `-[RLMRealm deleteFilesForConfiguration:]`/`Realm.deleteFiles(for:)` + to delete the Realm file and all auxiliary files for the given configuration. + +### Fixed + +* None. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.3. + +4.1.1 Release notes (2019-11-18) +============================================================= + +### Fixed + +* The UpdatePolicy passed to `realm.add()` or `realm.create()` was not properly + propagated when adding objects within a `List`, which could result in + spurious change notifications when using `.modified`. + ([#6321](https://github.com/realm/realm-swift/issues/6321), since v3.16.0) +* Fix a rare deadlock when a Realm collection or object was observed, then + `refresh()` was explicitly called, and then the NotificationToken from the + observation was destroyed on a different thread (since 0.98.0). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.2. + +4.1.0 Release notes (2019-11-13) +============================================================= + +### Enhancements + +* Improve performance of queries over a link where the final target property + has an index. +* Restore support for storing `@objc enum` properties on RealmSwift.Object + subclasses (broken in 4.0.0), and add support for storing them in + RealmOptional properties. + +### Fixed + +* The sync client would fail to reconnect after failing to integrate a + changeset. The bug would lead to further corruption of the client’s Realm + file. ([RSYNC-48](https://jira.mongodb.org/browse/RSYNC-48), since v3.2.0). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.2. + +### Internal + +* Upgraded realm-core from 5.23.5 to 5.23.6. +* Upgraded realm-sync from 4.7.11 to 4.8.2 + +4.0.0 Release notes (2019-11-08) +============================================================= + +### Breaking Changes + +* All previously deprecated functionality has now been removed entirely. +* The schema discovery logic for RealmSwift.Object subclasses has been + rewritten in Swift. This should not have any effect on valid class + definitions, but there may be types of invalid definitions which previously + worked by coincidence and no longer do. +* `SyncSubscription` no longer has a generic type parameter, as the type was + not actually used for anything. +* The following Swift types have changed from `final class` to `struct`: + - AnyRealmCollection + - LinkingObjects + - ObjectiveCSupport + - Realm + - Results + - SyncSubscription + - ThreadSafeReference + There is no intended change in semantics from this, but certain edge cases + may behave differently. +* The designated initializers defined by RLMObject and Object other than + zero-argument `init` have been replaced with convenience initializers. +* The implementation of the path-based permissions API has been redesigned to + accomodate changes to the server. This should be mostly a transparent change, + with two main exceptions: + 1. SyncPermission objects are no longer live Realm objects, and retrieving + permissions gives an Array rather than Results. + Getting up-to-date permissions now requires calling retrievePermissions() again + rather than observing the permissions. + 2. The error codes for permissions functions have changed. Rather than a + separate error type and set of error codes, permission functions now produce + SyncAuthErrors. + +### Enhancements + +* Improve performance of initializing Realm objects with List properties. + +### Fixed + +* None. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.2. + +3.21.0 Release notes (2019-11-04) +============================================================= + +### Enhancements + +* Add prebuilt binaries for Xcode 11.2. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.2. + +3.20.0 Release notes (2019-10-21) +============================================================= + +### Enhancements + +* Add support for custom refresh token authentication. This allows a user to be + authorized with an externally-issued refresh token when ROS is configured to + recognize the external issuer as a refresh token validator. + ([PR #6311](https://github.com/realm/realm-swift/pull/6311)). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11. + +3.19.1 Release notes (2019-10-17) +============================================================= + +### Enhancements + +* Improve performance of sync changeset integration. Transactions involving a + very large number of objects and cheap operations on each object are as much + as 20% faster. + +### Fixed + +* Fix a crash when a RLMArray/List of primitives was observed and then the + containing object was deleted before the first time that the background + notifier could run. + ([Issue #6234](https://github.com/realm/realm-swift/issues/6234, since 3.0.0)). +* Remove an incorrect assertion that would cause crashes inside + `TableInfoCache::get_table_info()`, with messages like "Assertion failed: info.object_id_index == 0 [3, 0]". + (Since 3.18.0, [#6268](https://github.com/realm/realm-swift/issues/6268) and [#6257](https://github.com/realm/realm-swift/issues/6257)). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.0. + +### Internal + +* Upgrade to REALM_SYNC_VERSION=4.7.11 + +3.19.0 Release notes (2019-09-27) +============================================================= + +### Enhancements + +* Expose ObjectSchema.objectClass in Swift as looking up the class via + NSClassFromString() can be complicated for Swift types. + ([PR #6244](https://github.com/realm/realm-swift/pull/6244)). +* Add support for suppressing notifications using closure-based write/transaction methods. + ([PR #6252](https://github.com/realm/realm-swift/pull/6252)). + +### Fixed + +* IN or chained OR equals queries on an unindexed string column would fail to + match some results if any of the strings were 64 bytes or longer. + ([Core #3386](https://github.com/realm/realm-core/pull/3386), since 3.14.2). +* Query Based Sync subscriptions for queries involving a null timestamp were + not sent to the server correctly and would match no objects. + ([Core #3389](https://github.com/realm/realm-core/pull/3388), since 3.17.3). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.0. + +### Internal + +* Upgrade to REALM_CORE_VERSION=5.23.5 +* Upgrade to REALM_SYNC_VERSION=4.7.8 + +3.18.0 Release notes (2019-09-13) +============================================================= + +The file format for synchronized Realms has changed. Old Realms will be +automatically upgraded when they are opened. Once upgraded, the files will not +be openable by older versions of Realm. The upgrade should not take a +significant amount of time to run or run any risk of errors. + +This does not effect non-synchronized Realms. + +### Enhancements + +* Improve performance of queries on Date properties + ([Core #3344](https://github.com/realm/realm-core/pull/3344), [Core #3351](https://github.com/realm/realm-core/pull/3351)). +* Syncronized Realms are now more aggressive about trimming local history that + is no longer needed. This should reduce file size growth in write-heavy + workloads. ([Sync #3007](https://github.com/realm/realm-sync/issues/3007)). +* Add support for building Realm as an xcframework. + ([PR #6238](https://github.com/realm/realm-swift/pull/6238)). +* Add prebuilt libraries for Xcode 11 to the release package. + ([PR #6248](https://github.com/realm/realm-swift/pull/6248)). +* Add a prebuilt library for Catalyst/UIKit For Mac to the release package + ([PR #6248](https://github.com/realm/realm-swift/pull/6248)). + +### Fixed + +* If a signal interrupted a msync() call, Realm would throw an exception and + the write transaction would fail. This behavior has new been changed to retry + the system call instead. ([Core #3352](https://github.com/realm/realm-core/issues/3352)) +* Queries on the sum or average of an integer property would sometimes give + incorrect results. ([Core #3356](https://github.com/realm/realm-core/pull/3356)). +* Opening query-based synchronized Realms with a small number of subscriptions + performed an unneccesary write transaction. ([ObjectStore #815](https://github.com/realm/realm-object-store/pull/815)). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.0 + +### Deprecations + +* `RLMIdentityProviderNickname` has been deprecated in favor of `RLMIdentityProviderUsernamePassword`. +* `+[RLMIdentityProvider credentialsWithNickname]` has been deprecated in favor of `+[RLMIdentityProvider credentialsWithUsername]`. +* `Sync.nickname(String, Bool)` has been deprecated in favor of `Sync.usernamePassword(String, String, Bool)`. + +3.17.3 Release notes (2019-07-24) +============================================================= + +### Enhancements + +* Add Xcode 10.3 binaries to the release package. Remove the Xcode 9.2 and 9.3 binaries. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 10.3. + +3.17.1 Release notes (2019-07-10) +============================================================= + +### Enhancements + +* Add support for canceling asynchronous opens using a new AsyncOpenTask + returned from the asyncOpen() call. ([PR #6193](https://github.com/realm/realm-swift/pull/6193)). +* Importing the Realm SPM package can now be done by pinning to a version + rather than a branch. + +### Fixed + +* Queries on a List/RLMArray which checked an indexed int property would + sometimes give incorrect results. + ([#6154](https://github.com/realm/realm-swift/issues/6154)), since v3.15.0) +* Queries involving an indexed int property had a memory leak if run multiple + times. ([#6186](https://github.com/realm/realm-swift/issues/6186)), since v3.15.0) +* Creating a subscription with `includeLinkingObjects:` performed unneccesary + comparisons, making it extremely slow when large numbers of objects were + involved. ([Core #3311](https://github.com/realm/realm-core/issues/3311), since v3.15.0) + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 10.2.1. + +3.17.0 Release notes (2019-06-28) +============================================================= + +### Enhancements + +* Add support for including Realm via Swift Package Manager. This currently + requires depending on the branch "master" rather than pinning to a version + (i.e. `.package(url: "https://github.com/realm/realm-swift", .branch("master"))`). + ([#6187](https://github.com/realm/realm-swift/pull/6187)). +* Add Codable conformance to RealmOptional and List, and Encodable conformance to Results. + ([PR #6172](https://github.com/realm/realm-swift/pull/6172)). + +### Fixed + +* Attempting to observe an unmanaged LinkingObjects object crashed rather than + throwing an approriate exception (since v0.100.0). +* Opening an encrypted Realm could potentially report that a valid file was + corrupted if the system was low on free memory. + (since 3.14.0, [Core #3267](https://github.com/realm/realm-core/issues/3267)) +* Calling `Realm.asyncOpen()` on multiple Realms at once would sometimes crash + due to a `FileNotFound` exception being thrown on a background worker thread. + (since 3.16.0, [ObjectStore #806](https://github.com/realm/realm-object-store/pull/806)). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 10.2.1. + +3.16.2 Release notes (2019-06-14) +============================================================= + +### Enhancements + +* Add support for Xcode 11 Beta 1. Xcode betas are only supported when building + from source, and not when using a prebuilt framework. + ([PR #6164](https://github.com/realm/realm-swift/pull/6164)). + +### Fixed + +* Using asyncOpen on query-based Realms which didn't already exist on the local + device would fail with error 214. + ([#6178](https://github.com/realm/realm-swift/issues/6178), since 3.16.0). +* asyncOpen on query-based Realms did not wait for the server-created + permission objects to be downloaded, resulting in crashes if modifications to + the permissions were made before creating a subscription for the first time (since 3.0.0). +* EINTR was not handled correctly in the notification worker, which may have + resulted in inconsistent and rare assertion failures in + `ExternalCommitHelper::listen()` when building with assertions enabled. + (PR: [#804](https://github.com/realm/realm-object-store/pull/804), since 0.91.0). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 10.2.1. + +3.16.1 Release notes (2019-05-31) +============================================================= + +### Fixed + +* The static type passed at compile time to `realm.create()` was checked for a + primary key rather than the actual type passed at runtime, resulting in + exceptions like "''RealmSwiftObject' does not have a primary key and can not + be updated'" being thrown even if the object type being created has a primary + key. (since 3.16.0, [#6159](https://github.com/realm/realm-swift/issues/6159)). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 10.2.1. + +3.16.0 Release notes (2019-05-29) +============================================================= + +### Enhancements + +* Add an option to only set the properties which have values different from the + existing ones when updating an existing object with + `Realm.create()`/`-[RLMObject createOrUpdateInRealm:withValue:]`. This makes + notifications report only the properties which have actually changed, and + improves Object Server performance by reducing the number of operations to + merge. (Issue: [#5970](https://github.com/realm/realm-swift/issues/5970), + PR: [#6149](https://github.com/realm/realm-swift/pull/6149)). +* Using `-[RLMRealm asyncOpenWithConfiguration:callbackQueue:]`/`Realm.asyncOpen()` to open a + synchronized Realm which does not exist on the local device now uses an + optimized transfer method to download the initial data for the Realm, greatly + speeding up the first start time for applications which use full + synchronization. This is currently not applicable to query-based + synchronization. (PR: [#6106](https://github.com/realm/realm-swift/pull/6106)). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 10.2.1. + +3.15.0 Release notes (2019-05-06) +============================================================= + +The minimum version of Realm Object Server has been increased to 3.21.0 and +attempting to connect to older versions will produce protocol mismatch errors. +Realm Cloud has already been upgraded to this version, and users using that do +not need to worry about this. + +### Enhancements + +* Add `createdAt`, `updatedAt`, `expiresAt` and `timeToLive` properties to + `RLMSyncSubscription`/`SyncSubscription`. These properties will be `nil` for + subscriptions created with older versions of Realm, but will be automatically + populated for newly-created subscriptions. +* Add support for transient subscriptions by setting the `timeToLive` when + creating the subscription. The next time a subscription is created or updated + after that time has elapsed the subscription will be automatically removed. +* Add support for updating existing subscriptions with a new query or limit. + This is done by passing `update: true` (in swift) or setting + `options.overwriteExisting = YES` (in obj-c) when creating the subscription, + which will make it update the existing subscription with the same name rather + than failing if one already exists with that name. +* Add an option to include the objects from + `RLMLinkingObjects`/`LinkingObjects` properties in sync subscriptions, + similarly to how `RLMArray`/`List` automatically pull in the contained + objects. +* Improve query performance for chains of OR conditions (or an IN condition) on + an unindexed integer or string property. + ([Core PR #2888](https://github.com/realm/realm-core/pull/2888) and + [Core PR #3250](https://github.com/realm/realm-core/pull/3250)). +* Improve query performance for equality conditions on indexed integer properties. + ([Core PR #3272](https://github.com/realm/realm-core/pull/3272)). +* Adjust the file allocation algorithm to reduce fragmentation caused by large + numbers of small blocks. +* Improve file allocator logic to reduce fragmentation and improve commit + performance after many writes. ([Core PR #3278](https://github.com/realm/realm-core/pull/3278)). + +### Fixed + +* Making a query that compares two integer properties could cause a + segmentation fault on x86 (i.e. macOS only). + ([Core PR #3253](https://github.com/realm/realm-core/pull/3256)). +* The `downloadable_bytes` parameter passed to sync progress callbacks reported + a value which correlated to the amount of data left to download, but not + actually the number of bytes which would be downloaded. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 10.2.1. + +3.14.2 Release notes (2019-04-25) +============================================================= + +### Enhancements + +* Updating `RLMSyncManager.customRequestHeaders` will immediately update all + currently active sync session with the new headers rather than requiring + manually closing the Realm and reopening it. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.11.0 or later. +* Carthage release for Swift is built with Xcode 10.2.1. + +3.14.1 Release notes (2019-04-04) +============================================================= + +### Fixed + +* Fix "Cannot find interface declaration for 'RealmSwiftObject', superclass of + 'MyRealmObjectClass'" errors when building for a simulator with Xcode 10.2 + with "Install Objective-C Compatibility Header" enabled. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.11.0 or later. +* Carthage release for Swift is built with Xcode 10.2. + +3.14.0 Release notes (2019-03-27) +============================================================= + +### Enhancements + +* Reduce memory usage when committing write transactions. +* Improve performance of compacting encrypted Realm files. + ([PR #3221](https://github.com/realm/realm-core/pull/3221)). +* Add a Xcode 10.2 build to the release package. + +### Fixed + +* Fix a memory leak whenever Realm makes a HTTP(s) request to the Realm Object + Server (Issue [#6058](https://github.com/realm/realm-swift/issues/6058), since 3.8.0). +* Fix an assertion failure when creating an object in a synchronized Realm + after creating an object with a null int primary key in the same write + transaction. + ([PR #3227](https://github.com/realm/realm-core/pull/3227)). +* Fix some new warnings when building with Xcode 10.2 beta. +* Properly clean up sync sessions when the last Realm object using the session + is deallocated while the session is explicitly suspended (since 3.9.0). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.11.0 or later. +* Carthage release for Swift is built with Xcode 10.2. + +### Internal + +* Throw an exception rather than crashing with an assertion failure in more + cases when opening invalid Realm files. +* Upgrade to REALM_CORE_VERSION=5.14.0 +* Upgrade to REALM_SYNC_VERSION=3.15.1 + +3.13.1 Release notes (2019-01-03) +============================================================= + +### Fixed + +* Fix a crash when iterating over `Realm.subscriptions()` using for-in. + (Since 3.13.0, PR [#6050](https://github.com/realm/realm-swift/pull/6050)). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.11.0 or later. + +3.13.0 Release notes (2018-12-14) +============================================================= + +### Enhancements + +* Add `Realm.subscriptions()`/`-[RLMRealm subscriptions]` and + `Realm.subscription(named:)`/`-[RLMRealm subscriptionWithName:]` to enable + looking up existing query-based sync subscriptions. + (PR: https://github.com/realm/realm-swift/pull/6029). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.11.0 or later. + +3.12.0 Release notes (2018-11-26) +============================================================= + +### Enhancements + +* Add a User-Agent header to HTTP requests made to the Realm Object Server. By + default, this contains information about the Realm library version and your + app's bundle ID. The application identifier can be customized by setting + `RLMSyncManager.sharedManager.userAgent`/`SyncManager.shared.userAgent` prior + to opening a synchronized Realm. + (PR: https://github.com/realm/realm-swift/pull/6007). +* Add Xcode 10.1 binary to the prebuilt package. + +### Fixed + +* None. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.11.0 or later. + +### Internal + +* None. + + +3.11.2 Release notes (2018-11-15) +============================================================= + +### Enhancements + +* Improve the performance of the merge algorithm used for integrating remote + changes from the server. In particular, changesets involving many objects + which all link to a single object should be greatly improved. + +### Fixed + +* Fix a memory leak when removing notification blocks from collections. + PR: [#702](https://github.com/realm/realm-object-store/pull/702), since 1.1.0. +* Fix re-sorting or distincting an already-sorted Results using values from + linked objects. Previously the unsorted order was used to read the values + from the linked objects. + PR [#3102](https://github.com/realm/realm-core/pull/3102), since 3.1.0. +* Fix a set of bugs which could lead to bad changeset assertions when using + sync. The assertions would look something like the following: + `[realm-core-5.10.0] Assertion failed: ndx < size() with (ndx, size()) = [742, 742]`. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.11.0 or later. + +### Internal + +* None. + + +3.11.1 Release notes (2018-10-19) +============================================================= + +### Enhancements + +* None. + +### Fixed + +* Fix `SyncUser.requestEmailConfirmation` not triggering the email confirmation + flow on ROS. (PR [#5953](https://github.com/realm/realm-swift/pull/5953), since 3.5.0) +* Add some missing validation in the getters and setters of properties on + managed Realm objects, which would sometimes result in an application + crashing with a segfault rather than the appropriate exception being thrown + when trying to write to an object which has been deleted. + (PR [#5952](https://github.com/realm/realm-swift/pull/5952), since 2.8.0) + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.11.0 or later. + +### Internal + +* None. + + +3.11.0 Release notes (2018-10-04) +============================================================= + +### Enhancements +* Reduce memory usage when integrating synchronized changes sent by ROS. +* Devices will now report download progress for read-only Realms, allowing the + server to compact Realms more aggressively and reducing the amount of + server-side storage space required. + +### Fixed +* Fix a crash when adding an object with a non-`@objc` `String?` property which + has not been explicitly ignored to a Realm on watchOS 5 (and possibly other + platforms when building with Xcode 10). + (Issue: [5929](https://github.com/realm/realm-swift/issues/5929)). +* Fix some merge algorithm bugs which could result in `BadChangesetError` + being thrown when integrating changes sent by the server. + +### Compatibility +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* **NOTE!!! + You will need to upgrade your Realm Object Server to at least version 3.11.0 + or use [Realm Cloud](https://cloud.realm.io). + If you try to connect to a ROS v3.10.x or previous, you will see an error + like `Wrong protocol version in Sync HTTP request, client protocol version = 25, + server protocol version = 24`.** + +### Internal +* Update to Sync 3.12.2. + + +3.10.0 Release notes (2018-09-19) +============================================================= + +Prebuilt binaries are now built for Xcode 9.2, 9.3, 9.4 and 10.0. + +Older versions of Xcode are still supported when building from source, but you +should be migrating to at least Xcode 9.2 as soon as possible. + +### Enhancements + +* Add support for Watch Series 4 by adding an arm64_32 slice to the library. + +3.9.0 Release notes (2018-09-10) +============================================================= + +### Enhancements + +* Expose RLMSyncUser.refreshToken publicly so that it can be used for custom + HTTP requests to Realm Object Server. +* Add RLMSyncSession.connectionState, which reports whether the session is + currently connected to the Realm Object Server or if it is offline. +* Add `-suspend` and `-resume` methods to `RLMSyncSession` to enable manually + pausing data synchronization. +* Add support for limiting the number of objects matched by a query-based sync + subscription. This requires a server running ROS 3.10.1 or newer. + +### Bugfixes + +* Fix crash when getting the description of a `MigrationObject` which has + `List` properties. +* Fix crash when calling `dynamicList()` on a `MigrationObject`. + +3.8.0 Release notes (2018-09-05) +============================================================= + +### Enhancements + +* Remove some old and no longer applicable migration logic which created an + unencrypted file in the sync metadata directory containing a list of ROS URLs + connected to. +* Add support for pinning SSL certificates used for https and realms + connections by setting `RLMSyncManager.sharedManager.pinnedCertificatePaths` + in obj-c and `SyncManager.shared.pinnedCertificatePaths` in Swift. + +### Bugfixes + +* Fix warnings when building Realm as a static framework with CocoaPods. + +3.7.6 Release notes (2018-08-08) +============================================================= + +### Enhancements + +* Speed up the actual compaction when using compact-on-launch. +* Reduce memory usage when locally merging changes from sync. +* When first connecting to a server, wait to begin uploading changes until + after all changes have been downloaded to reduce the server-side load for + query-based sync. + +3.7.5 Release notes (2018-07-23) +============================================================= + +### Enhancements + +* Improve performance of applying remote changesets from sync. +* Improve performance of creating objects with string primary keys. +* Improve performance of large write transactions. +* Adjust file space allocation strategy to reduce fragmentation, producing + smaller Realm files and typically better performance. +* Close network connections immediately when a sync session is destroyed. +* Report more information in `InvalidDatabase` exceptions. + +### Bugfixes + +* Fix permission denied errors for RLMPlatform.h when building with CocoaPods + and Xcode 10 beta 3. +* Fix a use-after-free when canceling a write transaction which could result in + incorrect "before" values in KVO observations (typically `nil` when a non-nil + value is expected). +* Fix several bugs in the merge algorithm that could lead to memory corruption + and crashes with errors like "bad changeset" and "unreachable code". + +3.7.4 Release notes (2018-06-19) +============================================================= + +### Bugfixes + +* Fix a bug which could potentially flood Realm Object Server with PING + messages after a client device comes back online. + +3.7.3 Release notes (2018-06-18) +============================================================= + +### Enhancements + +* Avoid performing potentially large amounts of pointless background work for + LinkingObjects instances which are accessed and then not immediate deallocated. + +### Bugfixes + +* Fix crashes which could result from extremely fragmented Realm files. +* Fix a bug that could result in a crash with the message "bad changeset error" + when merging changesets from the server. + +3.7.2 Release notes (2018-06-13) +============================================================= + +### Enhancements + +* Add some additional consistency checks that will hopefully produce better + errors when the "prev_ref + prev_size <= ref" assertion failure occurs. + +### Bugfixes + +* Fix a problem in the changeset indexing algorithm that would sometimes + cause "bad permission object" and "bad changeset" errors. +* Fix a large number of linking warnings about symbol visibility by aligning + compiler flags used. +* Fix large increase in size of files produced by `Realm.writeCopy()` introduced in 3.6.0. + +3.7.1 Release notes (2018-06-07) +============================================================= + +* Add support for compiling Realm Swift with Xcode 10 beta 1. + +3.7.0 Release notes (2018-06-06) +============================================================= + +The feature known as Partial Sync has been renamed to Query-based +Synchronization. This has impacted a number of API's. See below for the +details. + +### Deprecations + +* `+[RLMSyncConfiguration initWithUser] has been deprecated in favor of `-[RLMSyncUser configurationWithURL:url]. +* `+[RLMSyncConfiguration automaticConfiguration] has been deprecated in favor of `-[RLMSyncUser configuration]. +* `+[RLMSyncConfiguration automaticConfigurationForUser] has been deprecated in favor of `-[RLMSyncUser configuration]. +* `-[RLMSyncConfiguration isPartial] has been deprecated in favor of `-[RLMSyncConfiguration fullSynchronization]`. + +### Enhancements + +* Add `-[RLMRealm syncSession]` and `Realm.syncSession` to obtain the session used for a synchronized Realm. +* Add `-[RLMSyncUser configuration]`. Query-based sync is the default sync mode for this configuration. +* Add `-[RLMSyncUser configurationWithURL:url]`. Query-based sync is the default sync mode for this configuration. + +3.6.0 Release notes (2018-05-29) +============================================================= + +### Enhancements + +* Improve performance of sync metadata operations and resolving thread-safe + references. +* `shouldCompactOnLaunch` is now supported for compacting the local data of + synchronized Realms. + +### Bugfixes + +* Fix a potential deadlock when a sync session progress callback held the last + strong reference to the sync session. +* Fix some cases where comparisons to `nil` in queries were not properly + serialized when subscribing to a query. +* Don't delete objects added during a migration after a call to `-[RLMMigration + deleteDataForClassName:]`. +* Fix incorrect results and/or crashes when multiple `-[RLMMigration + enumerateObjects:block:]` blocks deleted objects of the same type. +* Fix some edge-cases where `-[RLMMigration enumerateObjects:block:]` + enumerated the incorrect objects following deletions. +* Restore the pre-3.5.0 behavior for Swift optional properties missing an ivar + rather than crashing. + +3.5.0 Release notes (2018-04-25) +============================================================= + +### Enhancements + +* Add wrapper functions for email confirmation and password reset to `SyncUser`. + +### Bugfixes + +* Fix incorrect results when using optional chaining to access a RealmOptional + property in Release builds, or otherwise interacting with a RealmOptional + object after the owning Object has been deallocated. + +3.4.0 Release notes (2018-04-19) +============================================================= + +The prebuilt binary for Carthage is now built for Swift 4.1. + +### Enhancements + +* Expose `RLMSyncManager.authorizationHeaderName`/`SyncManager.authorizationHeaderName` + as a way to override the transport header for Realm Object Server authorization. +* Expose `RLMSyncManager.customRequestHeaders`/`SyncManager.customRequestHeaders` + which allows custom HTTP headers to be appended on requests to the Realm Object Server. +* Expose `RLMSSyncConfiguration.urlPrefix`/`SyncConfiguration.urlPrefix` as a mechanism + to replace the default path prefix in Realm Sync WebSocket requests. + +3.3.2 Release notes (2018-04-03) +============================================================= + +Add a prebuilt binary for Xcode 9.3. + +3.3.1 Release notes (2018-03-28) +============================================================= + +Realm Object Server v3.0.0 or newer is required when using synchronized Realms. + +### Enhancements + +* Expose `RLMObject.object(forPrimaryKey:)` as a factory method for Swift so + that it is callable with recent versions of Swift. + +### Bugfixes + +* Exclude the RLMObject-derived Permissions classes from the types repored by + `Realm.Configuration.defaultConfiguration.objectTypes` to avoid a failed + cast. +* Cancel pending `Realm.asyncOpen()` calls when authentication fails with a + non-transient error such as missing the Realm path in the URL. +* Fix "fcntl() inside prealloc()" errors on APFS. + +3.3.0 Release notes (2018-03-19) +============================================================= + +Realm Object Server v3.0.0 or newer is required when using synchronized Realms. + +### Enhancements + +* Add `Realm.permissions`, `Realm.permissions(forType:)`, and `Realm.permissions(forClassNamed:)` as convenience + methods for accessing the permissions of the Realm or a type. + +### Bugfixes + +* Fix `+[RLMClassPermission objectInRealm:forClass:]` to work for classes that are part of the permissions API, + such as `RLMPermissionRole`. +* Fix runtime errors when applications define an `Object` subclass with the + same name as one of the Permissions object types. + +3.2.0 Release notes (2018-03-15) +============================================================= + +Realm Object Server v3.0.0 or newer is required when using synchronized Realms. + +### Enhancements + +* Added an improved API for adding subscriptions in partially-synchronized Realms. `Results.subscribe()` can be + used to subscribe to any result set, and the returned `SyncSubscription` object can be used to observe the state + of the subscription and ultimately to remove the subscription. See the documentation for more information + (). +* Added a fine-grained permissions system for use with partially-synchronized Realms. This allows permissions to be + defined at the level of individual objects or classes. See the documentation for more information + (). +* Added `SyncConfiguration.automatic()` and `SyncConfiguration.automatic(user:)`. + These methods return a `Realm.Configuration` appropriate for syncing with the default + synced Realm for the current (or specified) user. These should be considered the preferred methods + for accessing synced Realms going forwards. +* Added `+[RLMSyncSession sessionForRealm:]` to retrieve the sync session corresponding to a `RLMRealm`. + +### Bugfixes + +* Fix incorrect initalization of `RLMSyncManager` that made it impossible to + set `errorHandler`. +* Fix compiler warnings when building with Xcode 9.3. +* Fix some warnings when running with UBsan. + +3.2.0-rc.1 Release notes (2018-03-14) +============================================================= + +Realm Object Server v3.0.0-rc.1 or newer is required when using synchronized Realms. + +### Enhancements + +* Added `SyncConfiguration.automatic()` and `SyncConfiguration.automatic(user:)`. + These methods return a `Realm.Configuration` appropriate for syncing with the default + synced Realm for the current (or specified). These should be considered the preferred methods + for accessing synced Realms going forwards. +* A role is now automatically created for each user with that user as its only member. + This simplifies the common use case of restricting access to specific objects to a single user. + This role can be accessed at `PermissionUser.role`. +* Improved error reporting when the server rejects a schema change due to a lack of permissions. + +### Bugfixes + +* Fix incorrect initalization of `RLMSyncManager` that made it impossible to + set `errorHandler`. +* Fix compiler warnings when building with Xcode 9.3. + +3.2.0-beta.3 Release notes (2018-03-01) +============================================================= + +Realm Object Server v3.0.0-alpha.9 or newer is required when using synchronized Realms. + +### Bugfixes + +* Fix a crash that would occur when using partial sync with Realm Object Server v3.0.0-alpha.9. + +3.2.0-beta.2 Release notes (2018-02-28) +============================================================= + +Realm Object Server v3.0.0-alpha.8 or newer is required when using synchronized Realms. + +### Enhancements + +* Added `findOrCreate(forRoleNamed:)` and `findOrCreate(forRole:)` to `List` + to simplify the process of adding permissions for a role. +* Added `+permissionForRoleNamed:inArray:`, `+permissionForRoleNamed:onRealm:`, + `+permissionForRoleNamed:onClass:realm:`, `+permissionForRoleNamed:onClassNamed:realm:`, + and `+permissionForRoleNamed:onObject:` to `RLMSyncPermission` to simplify the process + of adding permissions for a role. +* Added `+[RLMSyncSession sessionForRealm:]` to retrieve the sync session corresponding to a `RLMRealm`. + +### Bugfixes + +* `PermissionRole.users` and `PermissionUser.roles` are now public as intended. +* Fixed the handling of `setPermissions` in `-[RLMRealm privilegesForRealm]` and related methods. + +3.2.0-beta.1 Release notes (2018-02-19) +============================================================= + +### Enhancements + +* Added an improved API for adding subscriptions in partially-synchronized Realms. `Results.subscribe()` can be + used to subscribe to any result set, and the returned `SyncSubscription` object can be used to observe the state + of the subscription and ultimately to remove the subscription. +* Added a fine-grained permissions system for use with partially-synchronized Realms. This allows permissions to be + defined at the level of individual objects or classes. See `Permission` and related types for more information. + +### Bugfixes + +* Fix some warnings when running with UBsan. + +3.1.1 Release notes (2018-02-03) +============================================================= + +Prebuilt Swift frameworks for Carthage are now built with Xcode 9.2. + +### Bugfixes + +* Fix a memory leak when opening Realms with an explicit `objectTypes` array + from Swift. + +3.1.0 Release notes (2018-01-16) +============================================================= + +* Prebuilt frameworks are now included for Swift 3.2.3 and 4.0.3. +* Prebuilt frameworks are no longer included for Swift 3.0.x. +* Building from source with Xcode versions prior to Xcode 8.3 is no longer supported. + +### Enhancements + +* Add `Results.distinct(by:)` / `-[RLMResults distinctResultsUsingKeyPaths:]`, which return a `Results` + containing only objects with unique values at the given key paths. +* Improve performance of change checking for notifications in certain cases. +* Realm Object Server errors not explicitly recognized by the client are now reported to the application + regardless. +* Add support for JSON Web Token as a sync credential source. +* Add support for Nickname and Anonymous Auth as a sync credential source. +* Improve allocator performance when writing to a highly fragmented file. This + should significantly improve performance when inserting large numbers of + objects which have indexed properties. +* Improve write performance for complex object graphs involving many classes + linking to each other. + +### Bugfixes + +* Add a missing check for a run loop in the permission API methods which + require one. +* Fix some cases where non-fatal sync errors were being treated as fatal errors. + +3.0.2 Release notes (2017-11-08) +============================================================= + +Prebuilt frameworks are now included for Swift 3.2.2 and 4.0.2. + +### Bugfixes + +* Fix a crash when a linking objects property is retrieved from a model object instance via + Swift subscripting. +* Fix incorrect behavior if a call to `posix_fallocate` is interrupted. + +3.0.1 Release notes (2017-10-26) +============================================================= + +### Bugfixes + +* Explicitly exclude KVO-generated object subclasses from the schema. +* Fix regression where the type of a Realm model class is not properly determined, causing crashes + when a type value derived at runtime by `type(of:)` is passed into certain APIs. +* Fix a crash when an `Object` subclass has implicitly ignored `let` + properties. +* Fix several cases where adding a notification block from within a + notification callback could produce incorrect results. + +3.0.0 Release notes (2017-10-16) +============================================================= + +### Breaking Changes +* iOS 7 is no longer supported. +* Synchronized Realms require a server running Realm Object Server v2.0 or higher. +* Computed properties on Realm object types are detected and no + longer added to the automatically generated schema. +* The Objective-C and Swift `create(_:, value: update:)` APIs now + correctly nil out nullable properties when updating an existing + object when the `value` argument specifies nil or `NSNull` for + the property value. +* `-[RLMRealm addOrUpdateObjects:]` and `-[RLMRealm deleteObjects:]` now + require their argument to conform to `NSFastEnumeration`, to match similar + APIs that also take collections. +* The way interactive sync errors (client reset and permission denied) + are delivered to the user has been changed. Instead of a block which can + be invoked to immediately delete the offending Realm file, an opaque + token object of type `RLMSyncErrorActionToken` will be returned in the + error object's `userInfo` dictionary. This error object can be passed + into the new `+[RLMSyncSession immediatelyHandleError:]` API to delete + the files. +* The return types of the `SyncError.clientResetInfo()` and + `SyncError.deleteRealmUserInfo()` APIs have been changed. They now return + `RLMSyncErrorActionToken`s or `SyncError.ActionToken`s instead of closures. +* The class methods `Object.className()`, `Object.objectUtilClass()`, and + the property `Object.isInvalidated` can no longer be overriden. +* The callback which runs when a sync user login succeeds or fails + now runs on the main queue by default, or can be explicitly specified + by a new `callbackQueue` parameter on the `{RLM}SyncUser.logIn(...)` API. +* Fix empty strings, binary data, and null on the right side of `BEGINSWITH`, + `ENDSWITH` and `CONTAINS` operators in predicates to match Foundation's + semantics of never matching any strings or data. +* Swift `Object` comparison and hashing behavior now works the same way as + that of `RLMObject` (objects are now only considered equatable if their + model class defines a primary key). +* Fix the way the hash property works on `Object` when the object model has + no primary key. +* Fix an issue where if a Swift model class defined non-generic managed + properties after generic Realm properties (like `List`), the schema + would be constructed incorrectly. Fixes an issue where creating such + models from an array could fail. +* Loosen `RLMArray` and `RLMResults`'s generic constraint from `RLMObject` to + `NSObject`. This may result in having to add some casts to disambiguate + types. +* Remove `RLMSyncPermissionResults`. `RLMSyncPermission`s are now vended out + using a `RLMResults`. This results collection supports all normal collection + operations except for setting values using key-value coding (since + `RLMSyncPermission`s are immutable) and the property aggregation operations. +* `RLMSyncUserInfo` has been significantly enhanced. It now contains metadata + about a user stored on the Realm Object Server, as well as a list of all user account + data associated with that user. +* Starting with Swift 4, `List` now conforms to `MutableCollection` instead of + `RangeReplaceableCollection`. For Swift 4, the empty collection initializer has been + removed, and default implementations of range replaceable collection methods that + make sense for `List` have been added. +* `List.removeLast()` now throws an exception if the list is empty, to more closely match + the behavior of the standard library's `Collection.removeLast()` implementation. +* `RealmCollection`'s associated type `Element` has been renamed `ElementType`. +* The following APIs have been renamed: + +| Old API | New API | +|:------------------------------------------------------------|:---------------------------------------------------------------| +| `NotificationToken.stop()` | `NotificationToken.invalidate()` | +| `-[RLMNotificationToken stop]` | `-[RLMNotificationToken invalidate]` | +| `RealmCollection.addNotificationBlock(_:)` | `RealmCollection.observe(_:)` | +| `RLMSyncProgress` | `RLMSyncProgressMode` | +| `List.remove(objectAtIndex:)` | `List.remove(at:)` | +| `List.swap(_:_:)` | `List.swapAt(_:_:)` | +| `SyncPermissionValue` | `SyncPermission` | +| `RLMSyncPermissionValue` | `RLMSyncPermission` | +| `-[RLMSyncPermission initWithRealmPath:userID:accessLevel]` | `-[RLMSyncPermission initWithRealmPath:identity:accessLevel:]` | +| `RLMSyncPermission.userId` | `RLMSyncPermission.identity` | +| `-[RLMRealm addOrUpdateObjectsInArray:]` | `-[RLMRealm addOrUpdateObjects:]` | + +* The following APIs have been removed: + +| Removed API | Replacement | +|:-------------------------------------------------------------|:------------------------------------------------------------------------------------------| +| `Object.className` | None, was erroneously present. | +| `RLMPropertyTypeArray` | `RLMProperty.array` | +| `PropertyType.array` | `Property.array` | +| `-[RLMArray sortedResultsUsingProperty:ascending:]` | `-[RLMArray sortedResultsUsingKeyPath:ascending:]` | +| `-[RLMCollection sortedResultsUsingProperty:ascending:]` | `-[RLMCollection sortedResultsUsingKeyPath:ascending:]` | +| `-[RLMResults sortedResultsUsingProperty:ascending:]` | `-[RLMResults sortedResultsUsingKeyPath:ascending:]` | +| `+[RLMSortDescriptor sortDescriptorWithProperty:ascending:]` | `+[RLMSortDescriptor sortDescriptorWithKeyPath:ascending:]` | +| `RLMSortDescriptor.property` | `RLMSortDescriptor.keyPath` | +| `AnyRealmCollection.sorted(byProperty:ascending:)` | `AnyRealmCollection.sorted(byKeyPath:ascending:)` | +| `List.sorted(byProperty:ascending:)` | `List.sorted(byKeyPath:ascending:)` | +| `LinkingObjects.sorted(byProperty:ascending:)` | `LinkingObjects.sorted(byKeyPath:ascending:)` | +| `Results.sorted(byProperty:ascending:)` | `Results.sorted(byKeyPath:ascending:)` | +| `SortDescriptor.init(property:ascending:)` | `SortDescriptor.init(keyPath:ascending:)` | +| `SortDescriptor.property` | `SortDescriptor.keyPath` | +| `+[RLMRealm migrateRealm:configuration:]` | `+[RLMRealm performMigrationForConfiguration:error:]` | +| `RLMSyncManager.disableSSLValidation` | `RLMSyncConfiguration.enableSSLValidation` | +| `SyncManager.disableSSLValidation` | `SyncConfiguration.enableSSLValidation` | +| `RLMSyncErrorBadResponse` | `RLMSyncAuthErrorBadResponse` | +| `RLMSyncPermissionResults` | `RLMResults` | +| `SyncPermissionResults` | `Results` | +| `RLMSyncPermissionChange` | `-[RLMSyncUser applyPermission:callback]` / `-[RLMSyncUser deletePermission:callback:]` | +| `-[RLMSyncUser permissionRealmWithError:]` | `-[RLMSyncUser retrievePermissionsWithCallback:]` | +| `RLMSyncPermissionOffer` | `-[RLMSyncUser createOfferForRealmAtURL:accessLevel:expiration:callback:]` | +| `RLMSyncPermissionOfferResponse` | `-[RLMSyncUser acceptOfferForToken:callback:]` | +| `-[NSError rlmSync_clientResetBlock]` | `-[NSError rlmSync_errorActionToken]` / `-[NSError rlmSync_clientResetBackedUpRealmPath]` | +| `-[NSError rlmSync_deleteRealmBlock]` | `-[NSError rlmSync_errorActionToken]` | + +### Enhancements +* `List` can now contain values of types `Bool`, `Int`, `Int8`, `Int16`, + `Int32`, `Int64`, `Float`, `Double`, `String`, `Data`, and `Date` (and + optional versions of all of these) in addition to `Object` subclasses. + Querying `List`s containing values other than `Object` subclasses is not yet + implemented. +* `RLMArray` can now be constrained with the protocols `RLMBool`, `RLMInt`, + `RLMFloat`, `RLMDouble`, `RLMString`, `RLMData`, and `RLMDate` in addition to + protocols defined with `RLM_ARRAY_TYPE`. By default `RLMArray`s of + non-`RLMObject` types can contain null. Indicating that the property is + required (by overriding `+requiredProperties:`) will instead make the values + within the array required. Querying `RLMArray`s containing values other than + `RLMObject` subclasses is not yet implemented. +* Add a new error code to denote 'permission denied' errors when working + with synchronized Realms, as well as an accompanying block that can be + called to inform the binding that the offending Realm's files should be + deleted immediately. This allows recovering from 'permission denied' + errors in a more robust manner. See the documentation for + `RLMSyncErrorPermissionDeniedError` for more information. +* Add Swift `Object.isSameObject(as:_)` API to perform the same function as + the existing Objective-C API `-[RLMObject isEqualToObject:]`. +* Opening a synced Realm whose local copy was created with an older version of + Realm Mobile Platfrom when a migration is not possible to the current version + will result in an `RLMErrorIncompatibleSyncedFile` / `incompatibleSyncedFile` + error. When such an error occurs, the original file is moved to a backup + location, and future attempts to open the synchronized Realm will result in a new + file being created. If you wish to migrate any data from the backup Realm you can + open it using the backup Realm configuration available on the error object. +* Add a preview of partial synchronization. Partial synchronization allows a + synchronized Realm to be opened in such a way that only objects requested by + the user are synchronized to the device. You can use it by setting the + `isPartial` property on a `SyncConfiguration`, opening the Realm, and then + calling `Realm.subscribe(to:where:callback:)` with the type of object you're + interested in, a string containing a query determining which objects you want + to subscribe to, and a callback which will report the results. You may add as + many subscriptions to a synced Realm as necessary. + +### Bugfixes +* Realm no longer throws an "unsupported instruction" exception in some cases + when opening a synced Realm asynchronously. +* Realm Swift APIs that filter or look up the index of an object based on a + format string now properly handle optional arguments in their variadic argument + list. +* `-[RLMResults indexOfObject:]` now properly accounts for access + level. +* Fix a race condition that could lead to a crash accessing to the freed configuration object + if a default configuration was set from a different thread. +* Fixed an issue that crash when enumerating after clearing data during migration. +* Fix a bug where a synced Realm couldn't be reopened even after a successful client reset + in some cases. +* Fix a bug where the sync subsystem waited too long in certain cases to reconnect to the server. +* Fix a bug where encrypted sync-related metadata was incorrectly deleted from upgrading users, + resulting in all users being logged out. +* Fix a bug where permission-related data continued to be synced to a client even after the user + that data belonged to logged out. +* Fix an issue where collection notifications might be delivered inconsistently if a notification + callback was added within another callback for the same collection. + +3.0.0-rc.2 Release notes (2017-10-14) +============================================================= + +### Enhancements +* Reinstate `RLMSyncPermissionSortPropertyUserID` to allow users to sort permissions + to their own Realms they've granted to others. + +### Bugfixes +* `-[RLMResults indexOfObject:]` now properly accounts for access + level. +* Fix a race condition that could lead to a crash accessing to the freed configuration object + if a default configuration was set from a different thread. +* Fixed an issue that crash when enumerating after clearing data during migration. +* Fix a bug where a synced Realm couldn't be reopened even after a successful client reset + in some cases. +* Fix a bug where the sync subsystem waited too long in certain cases to reconnect to the server. +* Fix a bug where encrypted sync-related metadata was incorrectly deleted from upgrading users, + resulting in all users being logged out. +* Fix a bug where permission-related data continued to be synced to a client even after the user + that data belonged to logged out. +* Fix an issue where collection notifications might be delivered inconsistently if a notification + callback was added within another callback for the same collection. + +3.0.0-rc.1 Release notes (2017-10-03) +============================================================= + +### Breaking Changes +* Remove `RLMSyncPermissionSortPropertyUserID` to reflect changes in how the + Realm Object Server reports permissions for a user. +* Remove `RLMSyncPermissionOffer` and `RLMSyncPermissionOfferResponse` classes + and associated helper methods and functions. Use the + `-[RLMSyncUser createOfferForRealmAtURL:accessLevel:expiration:callback:]` + and `-[RLMSyncUser acceptOfferForToken:callback:]` methods instead. + +### Bugfixes + +* The keychain item name used by Realm to manage the encryption keys for + sync-related metadata is now set to a per-app name based on the bundle + identifier. Keys that were previously stored within the single, shared Realm + keychain item will be transparently migrated to the per-application keychain + item. +* Fix downloading of the Realm core binaries when Xcode's command-line tools are + set as the active developer directory for command-line interactions. +* Fix a crash that could occur when resolving a ThreadSafeReference to a `List` + whose parent object had since been deleted. + +3.0.0-beta.4 Release notes (2017-09-22) +============================================================= + +### Breaking Changes + +* Rename `List.remove(objectAtIndex:)` to `List.remove(at:)` to match the name + used by 'RangeReplaceableCollection'. +* Rename `List.swap()` to `List.swapAt()` to match the name used by 'Array'. +* Loosen `RLMArray` and `RLMResults`'s generic constraint from `RLMObject` to + `NSObject`. This may result in having to add some casts to disambiguate + types. +* Remove `RLMPropertyTypeArray` in favor of a separate bool `array` property on + `RLMProperty`/`Property`. +* Remove `RLMSyncPermissionResults`. `RLMSyncPermission`s are now vended out + using a `RLMResults`. This results collection supports all normal collection + operations except for setting values using KVO (since `RLMSyncPermission`s are + immutable) and the property aggregation operations. +* `RealmCollection`'s associated type `Element` has been renamed `ElementType`. +* Realm Swift collection types (`List`, `Results`, `AnyRealmCollection`, and + `LinkingObjects` have had their generic type parameter changed from `T` to + `Element`). +* `RealmOptional`'s generic type parameter has been changed from `T` to `Value`. +* `RLMSyncUserInfo` has been significantly enhanced. It now contains metadata + about a user stored on the Realm Object Server, as well as a list of all user account + data associated with that user. +* Starting with Swift 4, `List` now conforms to `MutableCollection` instead of + `RangeReplaceableCollection`. For Swift 4, the empty collection initializer has been + removed, and default implementations of range replaceable collection methods that + make sense for `List` have been added. +* `List.removeLast()` now throws an exception if the list is empty, to more closely match + the behavior of the standard library's `Collection.removeLast()` implementation. + +### Enhancements + +* `List` can now contain values of types `Bool`, `Int`, `Int8`, `Int16`, + `Int32`, `Int64`, `Float`, `Double`, `String`, `Data`, and `Date` (and + optional versions of all of these) in addition to `Object` subclasses. + Querying `List`s containing values other than `Object` subclasses is not yet + implemented. +* `RLMArray` can now be constrained with the protocols `RLMBool`, `RLMInt`, + `RLMFloat`, `RLMDouble`, `RLMString`, `RLMData`, and `RLMDate` in addition to + protocols defined with `RLM_ARRAY_TYPE`. By default `RLMArray`s of + non-`RLMObject` types can contain null. Indicating that the property is + required (by overriding `+requiredProperties:`) will instead make the values + within the array required. Querying `RLMArray`s containing values other than + `RLMObject` subclasses is not yet implemented. +* Opening a synced Realm whose local copy was created with an older version of + Realm Mobile Platfrom when a migration is not possible to the current version + will result in an `RLMErrorIncompatibleSyncedFile` / `incompatibleSyncedFile` + error. When such an error occurs, the original file is moved to a backup + location, and future attempts to open the synchronized Realm will result in a new + file being created. If you wish to migrate any data from the backup Realm you can + open it using the backup Realm configuration available on the error object. +* Add preview support for partial synchronization. Partial synchronization is + allows a synchronized Realm to be opened in such a way that only objects + requested by the user are synchronized to the device. You can use it by setting + the `isPartial` property on a `SyncConfiguration`, opening the Realm, and then + calling `Realm.subscribe(to:where:callback:)` with the type of object you're + interested in, a string containing a query determining which objects you want + to subscribe to, and a callback which will report the results. You may add as + many subscriptions to a synced Realm as necessary. + +### Bugfixes + +* Realm Swift APIs that filter or look up the index of an object based on a + format string now properly handle optional arguments in their variadic argument + list. + +3.0.0-beta.3 Release notes (2017-08-23) +============================================================= + +### Breaking Changes + +* iOS 7 is no longer supported. +* Computed properties on Realm object types are detected and no + longer added to the automatically generated schema. +* `-[RLMRealm addOrUpdateObjectsInArray:]` has been renamed to + `-[RLMRealm addOrUpdateObjects:]` for consistency with similar methods + that add or delete objects. +* `-[RLMRealm addOrUpdateObjects:]` and `-[RLMRealm deleteObjects:]` now + require their argument to conform to `NSFastEnumeration`, to match similar + APIs that also take collections. +* Remove deprecated `{RLM}SyncPermission` and `{RLM}SyncPermissionChange` + classes. +* `{RLM}SyncPermissionValue` has been renamed to just `{RLM}SyncPermission`. + Its `userId` property has been renamed `identity`, and its + `-initWithRealmPath:userID:accessLevel:` initializer has been renamed + `-initWithRealmPath:identity:accessLevel:`. +* Remove deprecated `-[RLMSyncUser permissionRealmWithError:]` and + `SyncUser.permissionRealm()` APIs. Use the new permissions system. +* Remove deprecated error `RLMSyncErrorBadResponse`. Use + `RLMSyncAuthErrorBadResponse` instead. +* The way interactive sync errors (client reset and permission denied) + are delivered to the user has been changed. Instead of a block which can + be invoked to immediately delete the offending Realm file, an opaque + token object of type `RLMSyncErrorActionToken` will be returned in the + error object's `userInfo` dictionary. This error object can be passed + into the new `+[RLMSyncSession immediatelyHandleError:]` API to delete + the files. +* Remove `-[NSError rlmSync_clientResetBlock]` and + `-[NSError rlmSync_deleteRealmBlock]` APIs. +* The return types of the `SyncError.clientResetInfo()` and + `SyncError.deleteRealmUserInfo()` APIs have been changed. They now return + `RLMSyncErrorActionToken`s or `SyncError.ActionToken`s instead of closures. +* The (erroneously added) instance property `Object.className` has been + removed. +* The class methods `Object.className()`, `Object.objectUtilClass()`, and + the property `Object.isInvalidated` can no longer be overriden. +* The callback which runs when a sync user login succeeds or fails + now runs on the main queue by default, or can be explicitly specified + by a new `callbackQueue` parameter on the `{RLM}SyncUser.logIn(...)` API. +* Rename `{RLM}NotificationToken.stop()` to `invalidate()` and + `{RealmCollection,SyncPermissionResults}.addNotificationBlock(_:)` to + `observe(_:)` to mirror Foundation's new KVO APIs. +* The `RLMSyncProgress` enum has been renamed `RLMSyncProgressMode`. +* Remove deprecated `{RLM}SyncManager.disableSSLValidation` property. Disable + SSL validation on a per-Realm basis by setting the `enableSSLValidation` + property on `{RLM}SyncConfiguration` instead. +* Fix empty strings, binary data, and null on the right side of `BEGINSWITH`, + `ENDSWITH` and `CONTAINS` operators in predicates to match Foundation's + semantics of never matching any strings or data. +* Swift `Object` comparison and hashing behavior now works the same way as + that of `RLMObject` (objects are now only considered equatable if their + model class defines a primary key). +* Fix the way the hash property works on `Object` when the object model has + no primary key. +* Fix an issue where if a Swift model class defined non-generic managed + properties after generic Realm properties (like `List`), the schema + would be constructed incorrectly. Fixes an issue where creating such + models from an array could fail. + +### Enhancements + +* Add Swift `Object.isSameObject(as:_)` API to perform the same function as + the existing Objective-C API `-[RLMObject isEqualToObject:]`. +* Expose additional authentication-related errors that might be reported by + a Realm Object Server. +* An error handler can now be registered on `{RLM}SyncUser`s in order to + report authentication-related errors that affect the user. + +### Bugfixes + +* Sync users are now automatically logged out upon receiving certain types + of errors that indicate they are no longer logged into the server. For + example, users who are authenticated using third-party credentials will find + themselves logged out of the Realm Object Server if the third-party identity + service indicates that their credential is no longer valid. +* Address high CPU usage and hangs in certain cases when processing collection + notifications in highly-connected object graphs. + +3.0.0-beta.2 Release notes (2017-07-26) +============================================================= + +### Breaking Changes + +* Remove the following deprecated Objective-C APIs: + `-[RLMArray sortedResultsUsingProperty:ascending:]`, + `-[RLMCollection sortedResultsUsingProperty:ascending:]`, + `-[RLMResults sortedResultsUsingProperty:ascending:]`, + `+[RLMSortDescriptor sortDescriptorWithProperty:ascending:]`, + `RLMSortDescriptor.property`. + These APIs have been superseded by equivalent APIs that take + or return key paths instead of property names. +* Remove the following deprecated Objective-C API: + `+[RLMRealm migrateRealm:configuration:]`. + Please use `+[RLMRealm performMigrationForConfiguration:error:]` instead. +* Remove the following deprecated Swift APIs: + `AnyRealmCollection.sorted(byProperty:, ascending:)`, + `LinkingObjects.sorted(byProperty:, ascending:)`, + `List.sorted(byProperty:, ascending:)`, + `Results.sorted(byProperty:, ascending:)`, + `SortDescriptor.init(property:, ascending:)`, + `SortDescriptor.property`. + These APIs have been superseded by equivalent APIs that take + or return key paths instead of property names. +* The Objective-C and Swift `create(_:, value: update:)` APIs now + correctly nil out nullable properties when updating an existing + object when the `value` argument specifies nil or `NSNull` for + the property value. + +### Enhancements + +* It is now possible to create and log in multiple Realm Object Server users + with the same identity if they originate from different servers. Note that + if the URLs are different aliases for the same authentication server each + user will still be treated as separate (e.g. they will have their own copy + of each synchronized Realm opened using them). It is highly encouraged that + users defined using the access token credential type be logged in with an + authentication server URL specified; this parameter will become mandatory + in a future version of the SDK. +* Add `-[RLMSyncUser retrieveInfoForUser:identityProvider:completion:]` + API allowing administrator users to retrieve information about a user based + on their provider identity (for example, a username). Requires any edition + of the Realm Object Server 1.8.2 or later. + +### Bugfixes + +* Realm no longer throws an "unsupported instruction" exception in some cases + when opening a synced Realm asynchronously. + +3.0.0-beta Release notes (2017-07-14) +============================================================= + +### Breaking Changes + +* Synchronized Realms require a server running Realm Object Server v2.0 or higher. + +### Enhancements + +* Add a new error code to denote 'permission denied' errors when working + with synchronized Realms, as well as an accompanying block that can be + called to inform the binding that the offending Realm's files should be + deleted immediately. This allows recovering from 'permission denied' + errors in a more robust manner. See the documentation for + `RLMSyncErrorPermissionDeniedError` for more information. +* Add `-[RLMSyncPermissionValue initWithRealmPath:username:accessLevel:]` + API allowing permissions to be applied to a user based on their username + (usually, an email address). Requires any edition of the Realm Object + Server 1.6.0 or later. +* Improve performance of creating Swift objects which contain at least one List + property. + +### Bugfixes + +* `List.description` now reports the correct types for nested lists. +* Fix unmanaged object initialization when a nested property type returned + `false` from `Object.shouldIncludeInDefaultSchema()`. +* Don't clear RLMArrays on self-assignment. + +2.10.2 Release notes (2017-09-27) +============================================================= + +### Bugfixes + +* The keychain item name used by Realm to manage the encryption keys for + sync-related metadata is now set to a per-app name based on the bundle + identifier. Keys that were previously stored within the single, shared Realm + keychain item will be transparently migrated to the per-application keychain + item. +* Fix downloading of the Realm core binaries when Xcode's command-line tools are + set as the active developer directory for command-line interactions. +* Fix a crash that could occur when resolving a ThreadSafeReference to a `List` + whose parent object had since been deleted. + +2.10.1 Release notes (2017-09-14) +============================================================= + +Swift binaries are now produced for Swift 3.0, 3.0.1, 3.0.2, 3.1, 3.2 and 4.0. + +### Enhancements + +* Auxiliary files are excluded from backup by default. + +### Bugfixes + +* Fix more cases where assigning an RLMArray property to itself would clear the + RLMArray. + +2.10.0 Release notes (2017-08-21) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* Expose additional authentication-related errors that might be reported by + a Realm Object Server. +* An error handler can now be registered on `{RLM}SyncUser`s in order to + report authentication-related errors that affect the user. + +### Bugfixes + +* Sorting Realm collection types no longer throws an exception on iOS 7. +* Sync users are now automatically logged out upon receiving certain types + of errors that indicate they are no longer logged into the server. For + example, users who are authenticated using third-party credentials will find + themselves logged out of the Realm Object Server if the third-party identity + service indicates that their credential is no longer valid. +* Address high CPU usage and hangs in certain cases when processing collection + notifications in highly-connected object graphs. + +2.9.1 Release notes (2017-08-01) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* The `shouldCompactOnLaunch` block is no longer invoked if the Realm at that + path is already open on other threads. +* Fix an assertion failure in collection notifications when changes are made to + the schema via sync while the notification block is active. + +2.9.0 Release notes (2017-07-26) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* Add a new error code to denote 'permission denied' errors when working + with synchronized Realms, as well as an accompanying block that can be + called to inform the binding that the offending Realm's files should be + deleted immediately. This allows recovering from 'permission denied' + errors in a more robust manner. See the documentation for + `RLMSyncErrorPermissionDeniedError` for more information. +* Add `-[RLMSyncPermissionValue initWithRealmPath:username:accessLevel:]` + API allowing permissions to be applied to a user based on their username + (usually, an email address). Requires any edition of the Realm Object + Server 1.6.0 or later. +* Improve performance of creating Swift objects which contain at least one List + property. +* It is now possible to create and log in multiple Realm Object Server users + with the same identity if they originate from different servers. Note that + if the URLs are different aliases for the same authentication server each + user will still be treated as separate (e.g. they will have their own copy + of each synchronized Realm opened using them). It is highly encouraged that + users defined using the access token credential type be logged in with an + authentication server URL specified; this parameter will become mandatory + in a future version of the SDK. +* Add `-[RLMSyncUser retrieveInfoForUser:identityProvider:completion:]` + API allowing administrator users to retrieve information about a user based + on their provider identity (for example, a username). Requires any edition + of the Realm Object Server 1.8.2 or later. + +### Bugfixes + +* `List.description` now reports the correct types for nested lists. +* Fix unmanaged object initialization when a nested property type returned + `false` from `Object.shouldIncludeInDefaultSchema()`. +* Don't clear RLMArrays on self-assignment. + +2.8.3 Release notes (2017-06-20) +============================================================= + +### Bugfixes + +* Properly update RealmOptional properties when adding an object with `add(update: true)`. +* Add some missing quotes in error messages. +* Fix a performance regression when creating objects with primary keys. + +2.8.2 Release notes (2017-06-16) +============================================================= + +### Bugfixes + +* Fix an issue where synchronized Realms would eventually disconnect from the + remote server if the user object used to define their sync configuration + was destroyed. +* Restore support for changing primary keys in migrations (broken in 2.8.0). +* Revert handling of adding objects with nil properties to a Realm to the + pre-2.8.0 behavior. + +2.8.1 Release notes (2017-06-12) +============================================================= + +Add support for building with Xcode 9 Beta 1. + +### Bugfixes + +* Fix setting a float property to NaN. +* Fix a crash when using compact on launch in combination with collection + notifications. + +2.8.0 Release notes (2017-06-02) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* Enable encryption on watchOS. +* Add `-[RLMSyncUser changePassword:forUserID:completion:]` API to change an + arbitrary user's password if the current user has administrative privileges + and using Realm's 'password' authentication provider. + Requires any edition of the Realm Object Server 1.6.0 or later. + +### Bugfixes + +* Suppress `-Wdocumentation` warnings in Realm C++ headers when using CocoaPods + with Xcode 8.3.2. +* Throw an appropriate error rather than crashing when an RLMArray is assigned + to an RLMArray property of a different type. +* Fix crash in large (>4GB) encrypted Realm files. +* Improve accuracy of sync progress notifications. +* Fix an issue where synchronized Realms did not connect to the remote server + in certain situations, such as when an application was offline when the Realms + were opened but later regained network connectivity. + +2.7.0 Release notes (2017-05-03) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* Use reachability API to minimize the reconnection delay if the network + connection was lost. +* Add `-[RLMSyncUser changePassword:completion:]` API to change the current + user's password if using Realm's 'password' authentication provider. + Requires any edition of the Realm Object Server 1.4.0 or later. +* `{RLM}SyncConfiguration` now has an `enableSSLValidation` property + (and default parameter in the Swift initializer) to allow SSL validation + to be specified on a per-server basis. +* Transactions between a synced Realm and a Realm Object Server can now + exceed 16 MB in size. +* Add new APIs for changing and retrieving permissions for synchronized Realms. + These APIs are intended to replace the existing Realm Object-based permissions + system. Requires any edition of the Realm Object Server 1.1.0 or later. + +### Bugfixes + +* Support Realm model classes defined in Swift with overridden Objective-C + names (e.g. `@objc(Foo) class SwiftFoo: Object {}`). +* Fix `-[RLMMigration enumerateObjects:block:]` returning incorrect `oldObject` + objects when enumerating a class name after previously deleting a `newObject`. +* Fix an issue where `Realm.asyncOpen(...)` would fail to work when opening a + synchronized Realm for which the user only had read permissions. +* Using KVC to set a `List` property to `nil` now clears it to match the + behavior of `RLMArray` properties. +* Fix crash from `!m_awaiting_pong` assertion failure when using synced Realms. +* Fix poor performance or hangs when performing case-insensitive queries on + indexed string properties that contain many characters that don't differ + between upper and lower case (e.g., numbers, punctuation). + +2.6.2 Release notes (2017-04-21) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix an issue where calling `Realm.asyncOpen(...)` with a synchronized Realm + configuration would fail with an "Operation canceled" error. +* Fix initial collection notification sometimes not being delivered for synced + Realms. +* Fix circular links sometimes resulting in objects not being marked as + modified in change notifications. + +2.6.1 Release notes (2017-04-18) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix an issue where calling `Realm.asyncOpen(...)` with a synchronized Realm + configuration would crash in error cases rather than report the error. + This is a small source breaking change if you were relying on the error + being reported to be a `Realm.Error`. + +2.6.0 Release notes (2017-04-18) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* Add a `{RLM}SyncUser.isAdmin` property indicating whether a user is a Realm + Object Server administrator. +* Add an API to asynchronously open a Realm and deliver it to a block on a + given queue. This performs all work needed to get the Realm to + a usable state (such as running potentially time-consuming migrations) on a + background thread before dispatching to the given queue. In addition, + synchronized Realms wait for all remote content available at the time the + operation began to be downloaded and available locally. +* Add `shouldCompactOnLaunch` block property when configuring a Realm to + determine if it should be compacted before being returned. +* Speed up case-insensitive queries on indexed string properties. +* Add RLMResults's collection aggregate methods to RLMArray. +* Add support for calling the aggregate methods on unmanaged Lists. + +### Bugfixes + +* Fix a deadlock when multiple processes open a Realm at the same time. +* Fix `value(forKey:)`/`value(forKeyPath:)` returning incorrect values for `List` properties. + +2.5.1 Release notes (2017-04-05) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix CocoaPods installation with static libraries and multiple platforms. +* Fix uncaught "Bad version number" exceptions on the notification worker thread + followed by deadlocks when Realms refresh. + +2.5.0 Release notes (2017-03-28) +============================================================= + +Files written by Realm this version cannot be read by earlier versions of Realm. +Old files can still be opened and files open in read-only mode will not be +modified. + +If using synchronized Realms, the Realm Object Server must be running version +1.3.0 or later. + +Swift binaries are now produced for Swift 3.0, 3.0.1, 3.0.2 and 3.1. + +### API Breaking Changes + +* None. + +### Enhancements + +* Add support for multi-level object equality comparisons against `NULL`. +* Add support for the `[d]` modifier on string comparison operators to perform + diacritic-insensitive comparisons. +* Explicitly mark `[[RLMRealm alloc] init]` as unavailable. +* Include the name of the problematic class in the error message when an + invalid property type is marked as the primary key. + +### Bugfixes + +* Fix incorrect column type assertions which could occur after schemas were + merged by sync. +* Eliminate an empty write transaction when opening a synced Realm. +* Support encrypting synchronized Realms by respecting the `encryptionKey` value + of the Realm's configuration. +* Fix crash when setting an `{NS}Data` property close to 16MB. +* Fix for reading `{NS}Data` properties incorrectly returning `nil`. +* Reduce file size growth in cases where Realm versions were pinned while + starting write transactions. +* Fix an assertion failure when writing to large `RLMArray`/`List` properties. +* Fix uncaught `BadTransactLog` exceptions when pulling invalid changesets from + synchronized Realms. +* Fix an assertion failure when an observed `RLMArray`/`List` is deleted after + being modified. + +2.4.4 Release notes (2017-03-13) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* Add `(RLM)SyncPermission` class to allow reviewing access permissions for + Realms. Requires any edition of the Realm Object Server 1.1.0 or later. +* Further reduce the number of files opened per thread-specific Realm on macOS, + iOS and watchOS. + +### Bugfixes + +* Fix a crash that could occur if new Realm instances were created while the + application was exiting. +* Fix a bug that could lead to bad version number errors when delivering + change notifications. +* Fix a potential use-after-free bug when checking validity of results. +* Fix an issue where a sync session might not close properly if it receives + an error while being torn down. +* Fix some issues where a sync session might not reconnect to the server properly + or get into an inconsistent state if revived after invalidation. +* Fix an issue where notifications might not fire when the children of an + observed object are changed. +* Fix an issue where progress notifications on sync sessions might incorrectly + report out-of-date values. +* Fix an issue where multiple threads accessing encrypted data could result in + corrupted data or crashes. +* Fix an issue where certain `LIKE` queries could hang. +* Fix an issue where `-[RLMRealm writeCopyToURL:encryptionKey:error]` could create + a corrupt Realm file. +* Fix an issue where incrementing a synced Realm's schema version without actually + changing the schema could cause a crash. + +2.4.3 Release notes (2017-02-20) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* Avoid copying copy-on-write data structures, which can grow the file, when the + write does not actually change existing values. +* Improve performance of deleting all objects in an RLMResults. +* Reduce the number of files opened per thread-specific Realm on macOS. +* Improve startup performance with large numbers of `RLMObject`/`Object` + subclasses. + +### Bugfixes + +* Fix synchronized Realms not downloading remote changes when an access token + expires and there are no local changes to upload. +* Fix an issue where values set on a Realm object using `setValue(value:, forKey:)` + that were not themselves Realm objects were not properly converted into Realm + objects or checked for validity. +* Fix an issue where `-[RLMSyncUser sessionForURL:]` could erroneously return a + non-nil value when passed in an invalid URL. +* `SyncSession.Progress.fractionTransferred` now returns 1 if there are no + transferrable bytes. +* Fix sync progress notifications registered on background threads by always + dispatching on a dedicated background queue. +* Fix compilation issues with Xcode 8.3 beta 2. +* Fix incorrect sync progress notification values for Realms originally created + using a version of Realm prior to 2.3.0. +* Fix LLDB integration to be able to display summaries of `RLMResults` once more. +* Reject Swift properties with names which cause them to fall in to ARC method + families rather than crashing when they are accessed. +* Fix sorting by key path when the declared property order doesn't match the order + of properties in the Realm file, which can happen when properties are added in + different schema versions. + +2.4.2 Release notes (2017-01-30) +============================================================= + +### Bugfixes + +* Fix an issue where RLMRealm instances could end up in the autorelease pool + for other threads. + +2.4.1 Release notes (2017-01-27) +============================================================= + +### Bugfixes + +* Fix an issue where authentication tokens were not properly refreshed + automatically before expiring. + +2.4.0 Release notes (2017-01-26) +============================================================= + +This release drops support for compiling with Swift 2.x. +Swift 3.0.0 is now the minimum Swift version supported. + +### API Breaking Changes + +* None. + +### Enhancements + +* Add change notifications for individual objects with an API similar to that + of collection notifications. + +### Bugfixes + +* Fix Realm Objective-C compilation errors with Xcode 8.3 beta 1. +* Fix several error handling issues when renewing expired authentication + tokens for synchronized Realms. +* Fix a race condition leading to bad_version exceptions being thrown in + Realm's background worker thread. + +2.3.0 Release notes (2017-01-19) +============================================================= + +### Sync Breaking Changes + +* Make `PermissionChange`'s `id` property a primary key. + +### API Breaking Changes + +* None. + +### Enhancements + +* Add `SyncPermissionOffer` and `SyncPermissionOfferResponse` classes to allow + creating and accepting permission change events to synchronized Realms between + different users. +* Support monitoring sync transfer progress by registering notification blocks + on `SyncSession`. Specify the transfer direction (`.upload`/`.download`) and + mode (`.reportIndefinitely`/`.forCurrentlyOutstandingWork`) to monitor. + +### Bugfixes + +* Fix a call to `commitWrite(withoutNotifying:)` committing a transaction that + would not have triggered a notification incorrectly skipping the next + notification. +* Fix incorrect results and crashes when conflicting object insertions are + merged by the synchronization mechanism when there is a collection + notification registered for that object type. + +2.2.0 Release notes (2017-01-12) +============================================================= + +### Sync Breaking Changes (In Beta) + +* Sync-related error reporting behavior has been changed. Errors not related + to a particular user or session are only reported if they are classed as + 'fatal' by the underlying sync engine. +* Added `RLMSyncErrorClientResetError` to `RLMSyncError` enum. + +### API Breaking Changes + +* The following Objective-C APIs have been deprecated in favor of newer or preferred versions: + +| Deprecated API | New API | +|:------------------------------------------------------------|:------------------------------------------------------------| +| `-[RLMArray sortedResultsUsingProperty:]` | `-[RLMArray sortedResultsUsingKeyPath:]` | +| `-[RLMCollection sortedResultsUsingProperty:]` | `-[RLMCollection sortedResultsUsingKeyPath:]` | +| `-[RLMResults sortedResultsUsingProperty:]` | `-[RLMResults sortedResultsUsingKeyPath:]` | +| `+[RLMSortDescriptor sortDescriptorWithProperty:ascending]` | `+[RLMSortDescriptor sortDescriptorWithKeyPath:ascending:]` | +| `RLMSortDescriptor.property` | `RLMSortDescriptor.keyPath` | + +* The following Swift APIs have been deprecated in favor of newer or preferred versions: + +| Deprecated API | New API | +|:------------------------------------------------------|:-------------------------------------------------| +| `LinkingObjects.sorted(byProperty:ascending:)` | `LinkingObjects.sorted(byKeyPath:ascending:)` | +| `List.sorted(byProperty:ascending:)` | `List.sorted(byKeyPath:ascending:)` | +| `RealmCollection.sorted(byProperty:ascending:)` | `RealmCollection.sorted(byKeyPath:ascending:)` | +| `Results.sorted(byProperty:ascending:)` | `Results.sorted(byKeyPath:ascending:)` | +| `SortDescriptor(property:ascending:)` | `SortDescriptor(keyPath:ascending:)` | +| `SortDescriptor.property` | `SortDescriptor.keyPath` | + +### Enhancements + +* Introduce APIs for safely passing objects between threads. Create a + thread-safe reference to a thread-confined object by passing it to the + `+[RLMThreadSafeReference referenceWithThreadConfined:]`/`ThreadSafeReference(to:)` + constructor, which you can then safely pass to another thread to resolve in + the new Realm with `-[RLMRealm resolveThreadSafeReference:]`/`Realm.resolve(_:)`. +* Realm collections can now be sorted by properties over to-one relationships. +* Optimized `CONTAINS` queries to use Boyer-Moore algorithm + (around 10x speedup on large datasets). + +### Bugfixes + +* Setting `deleteRealmIfMigrationNeeded` now also deletes the Realm if a file + format migration is required, such as when moving from a file last accessed + with Realm 0.x to 1.x, or 1.x to 2.x. +* Fix queries containing nested `SUBQUERY` expressions. +* Fix spurious incorrect thread exceptions when a thread id happens to be + reused while an RLMRealm instance from the old thread still exists. +* Fixed various bugs in aggregate methods (max, min, avg, sum). + +2.1.2 Release notes (2016--12-19) +============================================================= + +This release adds binary versions of Swift 3.0.2 frameworks built with Xcode 8.2. + +### Sync Breaking Changes (In Beta) + +* Rename occurences of "iCloud" with "CloudKit" in APIs and comments to match + naming in the Realm Object Server. + +### API Breaking Changes + +* None. + +### Enhancements + +* Add support for 'LIKE' queries (wildcard matching). + +### Bugfixes + +* Fix authenticating with CloudKit. +* Fix linker warning about "Direct access to global weak symbol". + +2.1.1 Release notes (2016-12-02) +============================================================= + +### Enhancements + +* Add `RealmSwift.ObjectiveCSupport.convert(object:)` methods to help write + code that interoperates between Realm Objective-C and Realm Swift APIs. +* Throw exceptions when opening a Realm with an incorrect configuration, like: + * `readOnly` set with a sync configuration. + * `readOnly` set with a migration block. + * migration block set with a sync configuration. +* Greatly improve performance of write transactions which make a large number of + changes to indexed properties, including the automatic migration when opening + files written by Realm 1.x. + +### Bugfixes + +* Reset sync metadata Realm in case of decryption error. +* Fix issue preventing using synchronized Realms in Xcode Playgrounds. +* Fix assertion failure when migrating a model property from object type to + `RLMLinkingObjects` type. +* Fix a `LogicError: Bad version number` exception when using `RLMResults` with + no notification blocks and explicitly called `-[RLMRealm refresh]` from that + thread. +* Logged-out users are no longer returned from `+[RLMSyncUser currentUser]` or + `+[RLMSyncUser allUsers]`. +* Fix several issues which could occur when the 1001st object of a given type + was created or added to an RLMArray/List, including crashes when rerunning + existing queries and possibly data corruption. +* Fix a potential crash when the application exits due to a race condition in + the destruction of global static variables. +* Fix race conditions when waiting for sync uploads or downloads to complete + which could result in crashes or the callback being called too early. + +2.1.0 Release notes (2016-11-18) +============================================================= + +### Sync Breaking Changes (In Beta) + +* None. + +### API breaking changes + +* None. + +### Enhancements + +* Add the ability to skip calling specific notification blocks when committing + a write transaction. + +### Bugfixes + +* Deliver collection notifications when beginning a write transaction which + advances the read version of a Realm (previously only Realm-level + notifications were sent). +* Fix some scenarios which would lead to inconsistent states when using + collection notifications. +* Fix several race conditions in the notification functionality. +* Don't send Realm change notifications when canceling a write transaction. + +2.0.4 Release notes (2016-11-14) +============================================================= + +### Sync Breaking Changes (In Beta) + +* Remove `RLMAuthenticationActions` and replace + `+[RLMSyncCredential credentialWithUsername:password:actions:]` with + `+[RLMSyncCredential credentialsWithUsername:password:register:]`. +* Rename `+[RLMSyncUser authenticateWithCredential:]` to + `+[RLMSyncUser logInWithCredentials:]`. +* Rename "credential"-related types and methods to + `RLMSyncCredentials`/`SyncCredentials` and consistently refer to credentials + in the plural form. +* Change `+[RLMSyncUser all]` to return a dictionary of identifiers to users and + rename to: + * `+[RLMSyncUser allUsers]` in Objective-C. + * `SyncUser.allUsers()` in Swift 2. + * `SyncUser.all` in Swift 3. +* Rename `SyncManager.sharedManager()` to `SyncManager.shared` in Swift 3. +* Change `Realm.Configuration.syncConfiguration` to take a `SyncConfiguration` + struct rather than a named tuple. +* `+[RLMSyncUser logInWithCredentials:]` now invokes its callback block on a + background queue. + +### API breaking changes + +* None. + +### Enhancements + +* Add `+[RLMSyncUser currentUser]`. +* Add the ability to change read, write and management permissions for + synchronized Realms using the management Realm obtained via the + `-[RLMSyncUser managementRealmWithError:]` API and the + `RLMSyncPermissionChange` class. + +### Bugfixes + +* None. + +2.0.3 Release notes (2016-10-27) +============================================================= + +This release adds binary versions of Swift 3.0.1 frameworks built with Xcode 8.1 +GM seed. + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix a `BadVersion` exception caused by a race condition when delivering + collection change notifications. +* Fix an assertion failure when additional model classes are added and + `deleteRealmIfMigrationNeeded` is enabled. +* Fix a `BadTransactLog` exception when deleting an `RLMResults` in a synced + Realm. +* Fix an assertion failure when a write transaction is in progress at the point + of process termination. +* Fix a crash that could occur when working with a `RLMLinkingObject` property + of an unmanaged object. + +2.0.2 Release notes (2016-10-05) +============================================================= + +This release is not protocol-compatible with previous version of the Realm +Mobile Platform. + +### API breaking changes + +* Rename Realm Swift's `User` to `SyncUser` to make clear that it relates to the + Realm Mobile Platform, and to avoid potential conflicts with other `User` types. + +### Bugfixes + +* Fix Realm headers to be compatible with pre-C++11 dialects of Objective-C++. +* Fix incorrect merging of RLMArray/List changes when objects with the same + primary key are created on multiple devices. +* Fix bad transaction log errors after deleting objects on a different device. +* Fix a BadVersion error when a background worker finishes running while older + results from that worker are being delivered to a different thread. + +2.0.1 Release notes (2016-09-29) +============================================================= + +### Bugfixes + +* Fix an assertion failure when opening a Realm file written by a 1.x version + of Realm which has an indexed nullable int or bool property. + +2.0.0 Release notes (2016-09-27) +============================================================= + +This release introduces support for the Realm Mobile Platform! +See for an overview +of these great new features. + +### API breaking changes + +* By popular demand, `RealmSwift.Error` has been moved from the top-level + namespace into a `Realm` extension and is now `Realm.Error`, so that it no + longer conflicts with `Swift.Error`. +* Files written by Realm 2.0 cannot be read by 1.x or earlier versions. Old + files can still be opened. + +### Enhancements + +* The .log, .log_a and .log_b files no longer exist and the state tracked in + them has been moved to the main Realm file. This reduces the number of open + files needed by Realm, improves performance of both opening and writing to + Realms, and eliminates a small window where committing write transactions + would prevent other processes from opening the file. + +### Bugfixes + +* Fix an assertion failure when sorting by zero properties. +* Fix a mid-commit crash in one process also crashing all other processes with + the same Realm open. +* Properly initialize new nullable float and double properties added to + existing objects to null rather than 0. +* Fix a stack overflow when objects with indexed string properties had very + long common prefixes. +* Fix a race condition which could lead to crashes when using async queries or + collection notifications. +* Fix a bug which could lead to incorrect state when an object which links to + itself is deleted from the Realm. + +1.1.0 Release notes (2016-09-16) +============================================================= + +This release brings official support for Xcode 8, Swift 2.3 and Swift 3.0. +Prebuilt frameworks are now built with Xcode 7.3.1 and Xcode 8.0. + +### API breaking changes + +* Deprecate `migrateRealm:` in favor of new `performMigrationForConfiguration:error:` method + that follows Cocoa's NSError conventions. +* Fix issue where `RLMResults` used `id `instead of its generic type as the return + type of subscript. + +### Enhancements + +* Improve error message when using NSNumber incorrectly in Swift models. +* Further reduce the download size of the prebuilt static libraries. +* Improve sort performance, especially on non-nullable columns. +* Allow partial initialization of object by `initWithValue:`, deferring + required property checks until object is added to Realm. + +### Bugfixes + +* Fix incorrect truncation of the constant value for queries of the form + `column < value` for `float` and `double` columns. +* Fix crash when an aggregate is accessed as an `Int8`, `Int16`, `Int32`, or `Int64`. +* Fix a race condition that could lead to a crash if an RLMArray or List was + deallocated on a different thread than it was created on. +* Fix a crash when the last reference to an observed object is released from + within the observation. +* Fix a crash when `initWithValue:` is used to create a nested object for a class + with an uninitialized schema. +* Enforce uniqueness for `RealmOptional` primary keys when using the `value` setter. + +1.0.2 Release notes (2016-07-13) +============================================================= + +### API breaking changes + +* Attempting to add an object with no properties to a Realm now throws rather than silently + doing nothing. + +### Enhancements + +* Swift: A `write` block may now `throw`, reverting any changes already made in + the transaction. +* Reduce address space used when committing write transactions. +* Significantly reduce the download size of prebuilt binaries and slightly + reduce the final size contribution of Realm to applications. +* Improve performance of accessing RLMArray properties and creating objects + with List properties. + +### Bugfixes + +* Fix a crash when reading the shared schema from an observed Swift object. +* Fix crashes or incorrect results when passing an array of values to + `createOrUpdate` after reordering the class's properties. +* Ensure that the initial call of a Results notification block is always passed + .Initial even if there is a write transaction between when the notification + is added and when the first notification is delivered. +* Fix a crash when deleting all objects in a Realm while fast-enumerating query + results from that Realm. +* Handle EINTR from flock() rather than crashing. +* Fix incorrect behavior following a call to `[RLMRealm compact]`. +* Fix live updating and notifications for Results created from a predicate involving + an inverse relationship to be triggered when an object at the other end of the relationship + is modified. + +1.0.1 Release notes (2016-06-12) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Significantly improve performance of opening Realm files, and slightly + improve performance of committing write transactions. + +### Bugfixes + +* Swift: Fix an error thrown when trying to create or update `Object` instances via + `add(:_update:)` with a primary key property of type `RealmOptional`. +* Xcode playground in Swift release zip now runs successfully. +* The `key` parameter of `Realm.objectForPrimaryKey(_:key:)`/ `Realm.dynamicObjectForPrimaryKey(_:key:)` + is now marked as optional. +* Fix a potential memory leak when closing Realms after a Realm file has been + opened on multiple threads which are running in active run loops. +* Fix notifications breaking on tvOS after a very large number of write + transactions have been committed. +* Fix a "Destruction of mutex in use" assertion failure after an error while + opening a file. +* Realm now throws an exception if an `Object` subclass is defined with a managed Swift `lazy` property. + Objects with ignored `lazy` properties should now work correctly. +* Update the LLDB script to work with recent changes to the implementation of `RLMResults`. +* Fix an assertion failure when a Realm file is deleted while it is still open, + and then a new Realm is opened at the same path. Note that this is still not + a supported scenario, and may break in other ways. + +1.0.0 Release notes (2016-05-25) +============================================================= + +No changes since 0.103.2. + +0.103.2 Release notes (2016-05-24) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Improve the error messages when an I/O error occurs in `writeCopyToURL`. + +### Bugfixes + +* Fix an assertion failure which could occur when opening a Realm after opening + that Realm failed previously in some specific ways in the same run of the + application. +* Reading optional integers, floats, and doubles from within a migration block + now correctly returns `nil` rather than 0 when the stored value is `nil`. + +0.103.1 Release notes (2016-05-19) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix a bug that sometimes resulted in a single object's NSData properties + changing from `nil` to a zero-length non-`nil` NSData when a different object + of the same type was deleted. + +0.103.0 Release notes (2016-05-18) +============================================================= + +### API breaking changes + +* All functionality deprecated in previous releases has been removed entirely. +* Support for Xcode 6.x & Swift prior to 2.2 has been completely removed. +* `RLMResults`/`Results` now become empty when a `RLMArray`/`List` or object + they depend on is deleted, rather than throwing an exception when accessed. +* Migrations are no longer run when `deleteRealmIfMigrationNeeded` is set, + recreating the file instead. + +### Enhancements + +* Added `invalidated` properties to `RLMResults`/`Results`, `RLMLinkingObjects`/`LinkingObjects`, + `RealmCollectionType` and `AnyRealmCollection`. These properties report whether the Realm + the object is associated with has been invalidated. +* Some `NSError`s created by Realm now have more descriptive user info payloads. + +### Bugfixes + +* None. + +0.102.1 Release notes (2016-05-13) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Return `RLMErrorSchemaMismatch` error rather than the more generic `RLMErrorFail` + when a migration is required. +* Improve the performance of allocating instances of `Object` subclasses + that have `LinkingObjects` properties. + +### Bugfixes + +* `RLMLinkingObjects` properties declared in Swift subclasses of `RLMObject` + now work correctly. +* Fix an assertion failure when deleting all objects of a type, inserting more + objects, and then deleting some of the newly inserted objects within a single + write transaction when there is an active notification block for a different + object type which links to the objects being deleted. +* Fix crashes and/or incorrect results when querying over multiple levels of + `LinkingObjects` properties. +* Fix opening read-only Realms on multiple threads at once. +* Fix a `BadTransactLog` exception when storing dates before the unix epoch (1970-01-01). + +0.102.0 Release notes (2016-05-09) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Add a method to rename properties during migrations: + * Swift: `Migration.renamePropertyForClass(_:oldName:newName:)` + * Objective-C: `-[RLMMigration renamePropertyForClass:oldName:newName:]` +* Add `deleteRealmIfMigrationNeeded` to + `RLMRealmConfiguration`/`Realm.Configuration`. When this is set to `true`, + the Realm file will be automatically deleted and recreated when there is a + schema mismatch rather than migrated to the new schema. + +### Bugfixes + +* Fix `BETWEEN` queries that traverse `RLMArray`/`List` properties to ensure that + a single related object satisfies the `BETWEEN` criteria, rather than allowing + different objects in the array to satisfy the lower and upper bounds. +* Fix a race condition when a Realm is opened on one thread while it is in the + middle of being closed on another thread which could result in crashes. +* Fix a bug which could result in changes made on one thread being applied + incorrectly on other threads when those threads are refreshed. +* Fix crash when migrating to the new date format introduced in 0.101.0. +* Fix crash when querying inverse relationships when objects are deleted. + +0.101.0 Release notes (2016-05-04) +============================================================= + +### API breaking changes + +* Files written by this version of Realm cannot be read by older versions of + Realm. Existing files will automatically be upgraded when they are opened. + +### Enhancements + +* Greatly improve performance of collection change calculation for complex + object graphs, especially for ones with cycles. +* NSDate properties now support nanoseconds precision. +* Opening a single Realm file on multiple threads now shares a single memory + mapping of the file for all threads, significantly reducing the memory + required to work with large files. +* Crashing while in the middle of a write transaction no longer blocks other + processes from performing write transactions on the same file. +* Improve the performance of refreshing a Realm (including via autorefresh) + when there are live Results/RLMResults objects for that Realm. + +### Bugfixes + +* Fix an assertion failure of "!more_before || index >= std::prev(it)->second)" + in `IndexSet::do_add()`. +* Fix a crash when an `RLMArray` or `List` object is destroyed from the wrong + thread. + +0.100.0 Release notes (2016-04-29) +============================================================= + +### API breaking changes + +* `-[RLMObject linkingObjectsOfClass:forProperty]` and `Object.linkingObjects(_:forProperty:)` + are deprecated in favor of properties of type `RLMLinkingObjects` / `LinkingObjects`. + +### Enhancements + +* The automatically-maintained inverse direction of relationships can now be exposed as + properties of type `RLMLinkingObjects` / `LinkingObjects`. These properties automatically + update to reflect the objects that link to the target object, can be used in queries, and + can be filtered like other Realm collection types. +* Queries that compare objects for equality now support multi-level key paths. + +### Bugfixes + +* Fix an assertion failure when a second write transaction is committed after a + write transaction deleted the object containing an RLMArray/List which had an + active notification block. +* Queries that compare `RLMArray` / `List` properties using != now give the correct results. + +0.99.1 Release notes (2016-04-26) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix a scenario that could lead to the assertion failure + "m_advancer_sg->get_version_of_current_transaction() == + new_notifiers.front()->version()". + +0.99.0 Release notes (2016-04-22) +============================================================= + +### API breaking changes + +* Deprecate properties of type `id`/`AnyObject`. This type was rarely used, + rarely useful and unsupported in every other Realm binding. +* The block for `-[RLMArray addNotificationBlock:]` and + `-[RLMResults addNotificationBlock:]` now takes another parameter. +* The following Objective-C APIs have been deprecated in favor of newer or preferred versions: + +| Deprecated API | New API | +|:-------------------------------------------------------|:------------------------------------------------------| +| `-[RLMRealm removeNotification:]` | `-[RLMNotificationToken stop]` | +| `RLMRealmConfiguration.path` | `RLMRealmConfiguration.fileURL` | +| `RLMRealm.path` | `RLMRealmConfiguration.fileURL` | +| `RLMRealm.readOnly` | `RLMRealmConfiguration.readOnly` | +| `+[RLMRealm realmWithPath:]` | `+[RLMRealm realmWithURL:]` | +| `+[RLMRealm writeCopyToPath:error:]` | `+[RLMRealm writeCopyToURL:encryptionKey:error:]` | +| `+[RLMRealm writeCopyToPath:encryptionKey:error:]` | `+[RLMRealm writeCopyToURL:encryptionKey:error:]` | +| `+[RLMRealm schemaVersionAtPath:error:]` | `+[RLMRealm schemaVersionAtURL:encryptionKey:error:]` | +| `+[RLMRealm schemaVersionAtPath:encryptionKey:error:]` | `+[RLMRealm schemaVersionAtURL:encryptionKey:error:]` | + +* The following Swift APIs have been deprecated in favor of newer or preferred versions: + +| Deprecated API | New API | +|:----------------------------------------------|:-----------------------------------------| +| `Realm.removeNotification(_:)` | `NotificationToken.stop()` | +| `Realm.Configuration.path` | `Realm.Configuration.fileURL` | +| `Realm.path` | `Realm.Configuration.fileURL` | +| `Realm.readOnly` | `Realm.Configuration.readOnly` | +| `Realm.writeCopyToPath(_:encryptionKey:)` | `Realm.writeCopyToURL(_:encryptionKey:)` | +| `schemaVersionAtPath(_:encryptionKey:error:)` | `schemaVersionAtURL(_:encryptionKey:)` | + +### Enhancements + +* Add information about what rows were added, removed, or modified to the + notifications sent to the Realm collections. +* Improve error when illegally appending to an `RLMArray` / `List` property from a default value + or the standalone initializer (`init()`) before the schema is ready. + +### Bugfixes + +* Fix a use-after-free when an associated object's dealloc method is used to + remove observers from an RLMObject. +* Fix a small memory leak each time a Realm file is opened. +* Return a recoverable `RLMErrorAddressSpaceExhausted` error rather than + crash when there is insufficient available address space on Realm + initialization or write commit. + +0.98.8 Release notes (2016-04-15) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fixed a bug that caused some encrypted files created using + `-[RLMRealm writeCopyToPath:encryptionKey:error:]` to fail to open. + +0.98.7 Release notes (2016-04-13) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Mark further initializers in Objective-C as NS_DESIGNATED_INITIALIZER to prevent that these aren't + correctly defined in Swift Object subclasses, which don't qualify for auto-inheriting the required initializers. +* `-[RLMResults indexOfObjectWithPredicate:]` now returns correct results + for `RLMResults` instances that were created by filtering an `RLMArray`. +* Adjust how RLMObjects are destroyed in order to support using an associated + object on an RLMObject to remove KVO observers from that RLMObject. +* `-[RLMResults indexOfObjectWithPredicate:]` now returns the index of the first matching object for a + sorted `RLMResults`, matching its documented behavior. +* Fix a crash when canceling a transaction that set a relationship. +* Fix a crash when a query referenced a deleted object. + +0.98.6 Release notes (2016-03-25) +============================================================= + +Prebuilt frameworks are now built with Xcode 7.3. + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix running unit tests on iOS simulators and devices with Xcode 7.3. + +0.98.5 Release notes (2016-03-14) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix a crash when opening a Realm on 32-bit iOS devices. + +0.98.4 Release notes (2016-03-10) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Properly report changes made by adding an object to a Realm with + addOrUpdate:/createOrUpdate: to KVO observers for existing objects with that + primary key. +* Fix crashes and assorted issues when a migration which added object link + properties is rolled back due to an error in the migration block. +* Fix assertion failures when deleting objects within a migration block of a + type which had an object link property added in that migration. +* Fix an assertion failure in `Query::apply_patch` when updating certain kinds + of queries after a write transaction is committed. + +0.98.3 Release notes (2016-02-26) +============================================================= + +### Enhancements + +* Initializing the shared schema is 3x faster. + +### Bugfixes + +* Using Realm Objective-C from Swift while having Realm Swift linked no longer causes that the + declared `ignoredProperties` are not taken into account. +* Fix assertion failures when rolling back a migration which added Object link + properties to a class. +* Fix potential errors when cancelling a write transaction which modified + multiple `RLMArray`/`List` properties. +* Report the correct value for inWriteTransaction after attempting to commit a + write transaction fails. +* Support CocoaPods 1.0 beginning from prerelease 1.0.0.beta.4 while retaining + backwards compatibility with 0.39. + +0.98.2 Release notes (2016-02-18) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Aggregate operations (`ANY`, `NONE`, `@count`, `SUBQUERY`, etc.) are now supported for key paths + that begin with an object relationship so long as there is a `RLMArray`/`List` property at some + point in a key path. +* Predicates of the form `%@ IN arrayProperty` are now supported. + +### Bugfixes + +* Use of KVC collection operators on Swift collection types no longer throws an exception. +* Fix reporting of inWriteTransaction in notifications triggered by + `beginWriteTransaction`. +* The contents of `List` and `Optional` properties are now correctly preserved when copying + a Swift object from one Realm to another, and performing other operations that result in a + Swift object graph being recursively traversed from Objective-C. +* Fix a deadlock when queries are performed within a Realm notification block. +* The `ANY` / `SOME` / `NONE` qualifiers are now required in comparisons involving a key path that + traverse a `RLMArray`/`List` property. Previously they were only required if the first key in the + key path was an `RLMArray`/`List` property. +* Fix several scenarios where the default schema would be initialized + incorrectly if the first Realm opened used a restricted class subset (via + `objectClasses`/`objectTypes`). + +0.98.1 Release notes (2016-02-10) +============================================================= + +### Bugfixes + +* Fix crashes when deleting an object containing an `RLMArray`/`List` which had + previously been queried. +* Fix a crash when deleting an object containing an `RLMArray`/`List` with + active notification blocks. +* Fix duplicate file warnings when building via CocoaPods. +* Fix crash or incorrect results when calling `indexOfObject:` on an + `RLMResults` derived from an `RLMArray`. + +0.98.0 Release notes (2016-02-04) +============================================================= + +### API breaking changes + +* `+[RLMRealm realmWithPath:]`/`Realm.init(path:)` now inherits from the default + configuration. +* Swift 1.2 is no longer supported. + +### Enhancements + +* Add `addNotificationBlock` to `RLMResults`, `Results`, `RLMArray`, and + `List`, which calls the given block whenever the collection changes. +* Do a lot of the work for keeping `RLMResults`/`Results` up-to-date after + write transactions on a background thread to help avoid blocking the main + thread. +* `NSPredicate`'s `SUBQUERY` operator is now supported. It has the following limitations: + * `@count` is the only operator that may be applied to the `SUBQUERY` expression. + * The `SUBQUERY(…).@count` expression must be compared with a constant. + * Correlated subqueries are not yet supported. + +### Bugfixes + +* None. + +0.97.1 Release notes (2016-01-29) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Swift: Added `Error` enum allowing to catch errors e.g. thrown on initializing + `RLMRealm`/`Realm` instances. +* Fail with `RLMErrorFileNotFound` instead of the more generic `RLMErrorFileAccess`, + if no file was found when a realm was opened as read-only or if the directory part + of the specified path was not found when a copy should be written. +* Greatly improve performance when deleting objects with one or more indexed + properties. +* Indexing `BOOL`/`Bool` and `NSDate` properties are now supported. +* Swift: Add support for indexing optional properties. + +### Bugfixes + +* Fix incorrect results or crashes when using `-[RLMResults setValue:forKey:]` + on an RLMResults which was filtered on the key being set. +* Fix crashes when an RLMRealm is deallocated from the wrong thread. +* Fix incorrect results from aggregate methods on `Results`/`RLMResults` after + objects which were previously in the results are deleted. +* Fix a crash when adding a new property to an existing class with over a + million objects in the Realm. +* Fix errors when opening encrypted Realm files created with writeCopyToPath. +* Fix crashes or incorrect results for queries that use relationship equality + in cases where the `RLMResults` is kept alive and instances of the target class + of the relationship are deleted. + +0.97.0 Release notes (2015-12-17) +============================================================= + +### API breaking changes + +* All functionality deprecated in previous releases has been removed entirely. +* Add generic type annotations to NSArrays and NSDictionaries in public APIs. +* Adding a Realm notification block on a thread not currently running from + within a run loop throws an exception rather than silently never calling the + notification block. + +### Enhancements + +* Support for tvOS. +* Support for building Realm Swift from source when using Carthage. +* The block parameter of `-[RLMRealm transactionWithBlock:]`/`Realm.write(_:)` is + now marked as `__attribute__((noescape))`/`@noescape`. +* Many forms of queries with key paths on both sides of the comparison operator + are now supported. +* Add support for KVC collection operators in `RLMResults` and `RLMArray`. +* Fail instead of deadlocking in `+[RLMRealm sharedSchema]`, if a Swift property is initialized + to a computed value, which attempts to open a Realm on its own. + +### Bugfixes + +* Fix poor performance when calling `-[RLMRealm deleteObjects:]` on an + `RLMResults` which filtered the objects when there are other classes linking + to the type of the deleted objects. +* An exception is now thrown when defining `Object` properties of an unsupported + type. + +0.96.3 Release notes (2015-12-04) +============================================================= + +### Enhancements + +* Queries are no longer limited to 16 levels of grouping. +* Rework the implementation of encrypted Realms to no longer interfere with + debuggers. + +### Bugfixes + +* Fix crash when trying to retrieve object instances via `dynamicObjects`. +* Throw an exception when querying on a link providing objects, which are from a different Realm. +* Return empty results when querying on a link providing an unattached object. +* Fix crashes or incorrect results when calling `-[RLMRealm refresh]` during + fast enumeration. +* Add `Int8` support for `RealmOptional`, `MinMaxType` and `AddableType`. +* Set the default value for newly added non-optional NSData properties to a + zero-byte NSData rather than nil. +* Fix a potential crash when deleting all objects of a class. +* Fix performance problems when creating large numbers of objects with + `RLMArray`/`List` properties. +* Fix memory leak when using Object(value:) for subclasses with + `List` or `RealmOptional` properties. +* Fix a crash when computing the average of an optional integer property. +* Fix incorrect search results for some queries on integer properties. +* Add error-checking for nil realm parameters in many methods such as + `+[RLMObject allObjectsInRealm:]`. +* Fix a race condition between commits and opening Realm files on new threads + that could lead to a crash. +* Fix several crashes when opening Realm files. +* `-[RLMObject createInRealm:withValue:]`, `-[RLMObject createOrUpdateInRealm:withValue:]`, and + their variants for the default Realm now always match the contents of an `NSArray` against properties + in the same order as they are defined in the model. + +0.96.2 Release notes (2015-10-26) +============================================================= + +Prebuilt frameworks are now built with Xcode 7.1. + +### Bugfixes + +* Fix ignoring optional properties in Swift. +* Fix CocoaPods installation on case-sensitive file systems. + +0.96.1 Release notes (2015-10-20) +============================================================= + +### Bugfixes + +* Support assigning `Results` to `List` properties via KVC. +* Honor the schema version set in the configuration in `+[RLMRealm migrateRealm:]`. +* Fix crash when using optional Int16/Int32/Int64 properties in Swift. + +0.96.0 Release notes (2015-10-14) +============================================================= + +* No functional changes since beta2. + +0.96.0-beta2 Release notes (2015-10-08) +============================================================= + +### Bugfixes + +* Add RLMOptionalBase.h to the podspec. + +0.96.0-beta Release notes (2015-10-07) +============================================================= + +### API breaking changes + +* CocoaPods v0.38 or greater is now required to install Realm and RealmSwift + as pods. + +### Enhancements + +* Functionality common to both `List` and `Results` is now declared in a + `RealmCollectionType` protocol that both types conform to. +* `Results.realm` now returns an `Optional` in order to conform to + `RealmCollectionType`, but will always return `.Some()` since a `Results` + cannot exist independently from a `Realm`. +* Aggregate operations are now available on `List`: `min`, `max`, `sum`, + `average`. +* Committing write transactions (via `commitWrite` / `commitWriteTransaction` and + `write` / `transactionWithBlock`) now optionally allow for handling errors when + the disk is out of space. +* Added `isEmpty` property on `RLMRealm`/`Realm` to indicate if it contains any + objects. +* The `@count`, `@min`, `@max`, `@sum` and `@avg` collection operators are now + supported in queries. + +### Bugfixes + +* Fix assertion failure when inserting NSData between 8MB and 16MB in size. +* Fix assertion failure when rolling back a migration which removed an object + link or `RLMArray`/`List` property. +* Add the path of the file being opened to file open errors. +* Fix a crash that could be triggered by rapidly opening and closing a Realm + many times on multiple threads at once. +* Fix several places where exception messages included the name of the wrong + function which failed. + +0.95.3 Release notes (2015-10-05) +============================================================= + +### Bugfixes + +* Compile iOS Simulator framework architectures with `-fembed-bitcode-marker`. +* Fix crashes when the first Realm opened uses a class subset and later Realms + opened do not. +* Fix inconsistent errors when `Object(value: ...)` is used to initialize the + default value of a property of an `Object` subclass. +* Throw an exception when a class subset has objects with array or object + properties of a type that are not part of the class subset. + +0.95.2 Release notes (2015-09-24) +============================================================= + +* Enable bitcode for iOS and watchOS frameworks. +* Build libraries with Xcode 7 final rather than the GM. + +0.95.1 Release notes (2015-09-23) +============================================================= + +### Enhancements + +* Add missing KVO handling for moving and exchanging objects in `RLMArray` and + `List`. + +### Bugfixes + +* Setting the primary key property on persisted `RLMObject`s / `Object`s + via subscripting or key-value coding will cause an exception to be thrown. +* Fix crash due to race condition in `RLMRealmConfiguration` where the default + configuration was in the process of being copied in one thread, while + released in another. +* Fix crash when a migration which removed an object or array property is + rolled back due to an error. + +0.95.0 Release notes (2015-08-25) +============================================================= + +### API breaking changes + +* The following APIs have been deprecated in favor of the new `RLMRealmConfiguration` class in Realm Objective-C: + +| Deprecated API | New API | +|:------------------------------------------------------------------|:---------------------------------------------------------------------------------| +| `+[RLMRealm realmWithPath:readOnly:error:]` | `+[RLMRealm realmWithConfiguration:error:]` | +| `+[RLMRealm realmWithPath:encryptionKey:readOnly:error:]` | `+[RLMRealm realmWithConfiguration:error:]` | +| `+[RLMRealm setEncryptionKey:forRealmsAtPath:]` | `-[RLMRealmConfiguration setEncryptionKey:]` | +| `+[RLMRealm inMemoryRealmWithIdentifier:]` | `+[RLMRealm realmWithConfiguration:error:]` | +| `+[RLMRealm defaultRealmPath]` | `+[RLMRealmConfiguration defaultConfiguration]` | +| `+[RLMRealm setDefaultRealmPath:]` | `+[RLMRealmConfiguration setDefaultConfiguration:]` | +| `+[RLMRealm setDefaultRealmSchemaVersion:withMigrationBlock]` | `RLMRealmConfiguration.schemaVersion` and `RLMRealmConfiguration.migrationBlock` | +| `+[RLMRealm setSchemaVersion:forRealmAtPath:withMigrationBlock:]` | `RLMRealmConfiguration.schemaVersion` and `RLMRealmConfiguration.migrationBlock` | +| `+[RLMRealm migrateRealmAtPath:]` | `+[RLMRealm migrateRealm:]` | +| `+[RLMRealm migrateRealmAtPath:encryptionKey:]` | `+[RLMRealm migrateRealm:]` | + +* The following APIs have been deprecated in favor of the new `Realm.Configuration` struct in Realm Swift for Swift 1.2: + +| Deprecated API | New API | +|:--------------------------------------------------------------|:-----------------------------------------------------------------------------| +| `Realm.defaultPath` | `Realm.Configuration.defaultConfiguration` | +| `Realm(path:readOnly:encryptionKey:error:)` | `Realm(configuration:error:)` | +| `Realm(inMemoryIdentifier:)` | `Realm(configuration:error:)` | +| `Realm.setEncryptionKey(:forPath:)` | `Realm(configuration:error:)` | +| `setDefaultRealmSchemaVersion(schemaVersion:migrationBlock:)` | `Realm.Configuration.schemaVersion` and `Realm.Configuration.migrationBlock` | +| `setSchemaVersion(schemaVersion:realmPath:migrationBlock:)` | `Realm.Configuration.schemaVersion` and `Realm.Configuration.migrationBlock` | +| `migrateRealm(path:encryptionKey:)` | `migrateRealm(configuration:)` | + +* The following APIs have been deprecated in favor of the new `Realm.Configuration` struct in Realm Swift for Swift 2.0: + +| Deprecated API | New API | +|:--------------------------------------------------------------|:-----------------------------------------------------------------------------| +| `Realm.defaultPath` | `Realm.Configuration.defaultConfiguration` | +| `Realm(path:readOnly:encryptionKey:) throws` | `Realm(configuration:) throws` | +| `Realm(inMemoryIdentifier:)` | `Realm(configuration:) throws` | +| `Realm.setEncryptionKey(:forPath:)` | `Realm(configuration:) throws` | +| `setDefaultRealmSchemaVersion(schemaVersion:migrationBlock:)` | `Realm.Configuration.schemaVersion` and `Realm.Configuration.migrationBlock` | +| `setSchemaVersion(schemaVersion:realmPath:migrationBlock:)` | `Realm.Configuration.schemaVersion` and `Realm.Configuration.migrationBlock` | +| `migrateRealm(path:encryptionKey:)` | `migrateRealm(configuration:)` | + +* `List.extend` in Realm Swift for Swift 2.0 has been replaced with `List.appendContentsOf`, + mirroring changes to `RangeReplaceableCollectionType`. + +* Object properties on `Object` subclasses in Realm Swift must be marked as optional, + otherwise a runtime exception will be thrown. + +### Enhancements + +* Persisted properties of `RLMObject`/`Object` subclasses are now Key-Value + Observing compliant. +* The different options used to create Realm instances have been consolidated + into a single `RLMRealmConfiguration`/`Realm.Configuration` object. +* Enumerating Realm collections (`RLMArray`, `RLMResults`, `List<>`, + `Results<>`) now enumerates over a copy of the collection, making it no + longer an error to modify a collection during enumeration (either directly, + or indirectly by modifying objects to make them no longer match a query). +* Improve performance of object insertion in Swift to bring it roughly in line + with Objective-C. +* Allow specifying a specific list of `RLMObject` / `Object` subclasses to include + in a given Realm via `RLMRealmConfiguration.objectClasses` / `Realm.Configuration.objectTypes`. + +### Bugfixes + +* Subscripting on `RLMObject` is now marked as nullable. + +0.94.1 Release notes (2015-08-10) +============================================================= + +### API breaking changes + +* Building for watchOS requires Xcode 7 beta 5. + +### Enhancements + +* `Object.className` is now marked as `final`. + +### Bugfixes + +* Fix crash when adding a property to a model without updating the schema + version. +* Fix unnecessary redownloading of the core library when building from source. +* Fix crash when sorting by an integer or floating-point property on iOS 7. + +0.94.0 Release notes (2015-07-29) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Reduce the amount of memory used by RLMRealm notification listener threads. +* Avoid evaluating results eagerly when filtering and sorting. +* Add nullability annotations to the Objective-C API to provide enhanced compiler + warnings and bridging to Swift. +* Make `RLMResult`s and `RLMArray`s support Objective-C generics. +* Add support for building watchOS and bitcode-compatible apps. +* Make the exceptions thrown in getters and setters more informative. +* Add `-[RLMArray exchangeObjectAtIndex:withObjectAtIndex]` and `List.swap(_:_:)` + to allow exchanging the location of two objects in the given `RLMArray` / `List`. +* Added anonymous analytics on simulator/debugger runs. +* Add `-[RLMArray moveObjectAtIndex:toIndex:]` and `List.move(from:to:)` to + allow moving objects in the given `RLMArray` / `List`. + +### Bugfixes + +* Processes crashing due to an uncaught exception inside a write transaction will + no longer cause other processes using the same Realm to hang indefinitely. +* Fix incorrect results when querying for < or <= on ints that + require 64 bits to represent with a CPU that supports SSE 4.2. +* An exception will no longer be thrown when attempting to reset the schema + version or encryption key on an open Realm to the current value. +* Date properties on 32 bit devices will retain 64 bit second precision. +* Wrap calls to the block passed to `enumerate` in an autoreleasepool to reduce + memory growth when migrating a large amount of objects. +* In-memory realms no longer write to the Documents directory on iOS or + Application Support on OS X. + +0.93.2 Release notes (2015-06-12) +============================================================= + +### Bugfixes + +* Fixed an issue where the packaged OS X Realm.framework was built with + `GCC_GENERATE_TEST_COVERAGE_FILES` and `GCC_INSTRUMENT_PROGRAM_FLOW_ARCS` + enabled. +* Fix a memory leak when constructing standalone Swift objects with NSDate + properties. +* Throw an exception rather than asserting when an invalidated object is added + to an RLMArray. +* Fix a case where data loss would occur if a device was hard-powered-off + shortly after a write transaction was committed which had to expand the Realm + file. + +0.93.1 Release notes (2015-05-29) +============================================================= + +### Bugfixes + +* Objects are no longer copied into standalone objects during object creation. This fixes an issue where + nested objects with a primary key are sometimes duplicated rather than updated. +* Comparison predicates with a constant on the left of the operator and key path on the right now give + correct results. An exception is now thrown for predicates that do not yet support this ordering. +* Fix some crashes in `index_string.cpp` with int primary keys or indexed int properties. + +0.93.0 Release notes (2015-05-27) +============================================================= + +### API breaking changes + +* Schema versions are now represented as `uint64_t` (Objective-C) and `UInt64` (Swift) so that they have + the same representation on all architectures. + +### Enhancements + +* Swift: `Results` now conforms to `CVarArgType` so it can + now be passed as an argument to `Results.filter(_:...)` + and `List.filter(_:...)`. +* Swift: Made `SortDescriptor` conform to the `Equatable` and + `StringLiteralConvertible` protocols. +* Int primary keys are once again automatically indexed. +* Improve error reporting when attempting to mark a property of a type that + cannot be indexed as indexed. + +### Bugfixes + +* Swift: `RealmSwift.framework` no longer embeds `Realm.framework`, + which now allows apps using it to pass iTunes Connect validation. + +0.92.4 Release notes (2015-05-22) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Swift: Made `Object.init()` a required initializer. +* `RLMObject`, `RLMResults`, `Object` and `Results` can now be safely + deallocated (but still not used) from any thread. +* Improve performance of `-[RLMArray indexOfObjectWhere:]` and `-[RLMArray + indexOfObjectWithPredicate:]`, and implement them for standalone RLMArrays. +* Improved performance of most simple queries. + +### Bugfixes + +* The interprocess notification mechanism no longer uses dispatch worker threads, preventing it from + starving other GCD clients of the opportunity to execute blocks when dozens of Realms are open at once. + +0.92.3 Release notes (2015-05-13) +============================================================= + +### API breaking changes + +* Swift: `Results.average(_:)` now returns an optional, which is `nil` if and only if the results + set is empty. + +### Enhancements + +* Swift: Added `List.invalidated`, which returns if the given `List` is no longer + safe to be accessed, and is analogous to `-[RLMArray isInvalidated]`. +* Assertion messages are automatically logged to Crashlytics if it's loaded + into the current process to make it easier to diagnose crashes. + +### Bugfixes + +* Swift: Enumerating through a standalone `List` whose objects themselves + have list properties won't crash. +* Swift: Using a subclass of `RealmSwift.Object` in an aggregate operator of a predicate + no longer throws a spurious type error. +* Fix incorrect results for when using OR in a query on a `RLMArray`/`List<>`. +* Fix incorrect values from `[RLMResults count]`/`Results.count` when using + `!=` on an int property with no other query conditions. +* Lower the maximum doubling threshold for Realm file sizes from 128MB to 16MB + to reduce the amount of wasted space. + +0.92.2 Release notes (2015-05-08) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Exceptions raised when incorrect object types are used with predicates now contain more detailed information. +* Added `-[RLMMigration deleteDataForClassName:]` and `Migration.deleteData(_:)` + to enable cleaning up after removing object subclasses + +### Bugfixes + +* Prevent debugging of an application using an encrypted Realm to work around + frequent LLDB hangs. Until the underlying issue is addressed you may set + REALM_DISABLE_ENCRYPTION=YES in your application's environment variables to + have requests to open an encrypted Realm treated as a request for an + unencrypted Realm. +* Linked objects are properly updated in `createOrUpdateInRealm:withValue:`. +* List properties on Objects are now properly initialized during fast enumeration. + +0.92.1 Release notes (2015-05-06) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* `-[RLMRealm inWriteTransaction]` is now public. +* Realm Swift is now available on CoocaPods. + +### Bugfixes + +* Force code re-signing after stripping architectures in `strip-frameworks.sh`. + +0.92.0 Release notes (2015-05-05) +============================================================= + +### API breaking changes + +* Migration blocks are no longer called when a Realm file is first created. +* The following APIs have been deprecated in favor of newer method names: + +| Deprecated API | New API | +|:-------------------------------------------------------|:------------------------------------------------------| +| `-[RLMMigration createObject:withObject:]` | `-[RLMMigration createObject:withValue:]` | +| `-[RLMObject initWithObject:]` | `-[RLMObject initWithValue:]` | +| `+[RLMObject createInDefaultRealmWithObject:]` | `+[RLMObject createInDefaultRealmWithValue:]` | +| `+[RLMObject createInRealm:withObject:]` | `+[RLMObject createInRealm:withValue:]` | +| `+[RLMObject createOrUpdateInDefaultRealmWithObject:]` | `+[RLMObject createOrUpdateInDefaultRealmWithValue:]` | +| `+[RLMObject createOrUpdateInRealm:withObject:]` | `+[RLMObject createOrUpdateInRealm:withValue:]` | + +### Enhancements + +* `Int8` properties defined in Swift are now treated as integers, rather than + booleans. +* NSPredicates created using `+predicateWithValue:` are now supported. + +### Bugfixes + +* Compound AND predicates with no subpredicates now correctly match all objects. + +0.91.5 Release notes (2015-04-28) +============================================================= + +### Bugfixes + +* Fix issues with removing search indexes and re-enable it. + +0.91.4 Release notes (2015-04-27) +============================================================= + +### Bugfixes + +* Temporarily disable removing indexes from existing columns due to bugs. + +0.91.3 Release notes (2015-04-17) +============================================================= + +### Bugfixes + +* Fix `Extra argument 'objectClassName' in call` errors when building via + CocoaPods. + +0.91.2 Release notes (2015-04-16) +============================================================= + +* Migration blocks are no longer called when a Realm file is first created. + +### Enhancements + +* `RLMCollection` supports collection KVC operations. +* Sorting `RLMResults` is 2-5x faster (typically closer to 2x). +* Refreshing `RLMRealm` after a write transaction which inserts or modifies + strings or `NSData` is committed on another thread is significantly faster. +* Indexes are now added and removed from existing properties when a Realm file + is opened, rather than only when properties are first added. + +### Bugfixes + +* `+[RLMSchema dynamicSchemaForRealm:]` now respects search indexes. +* `+[RLMProperty isEqualToProperty:]` now checks for equal `indexed` properties. + +0.91.1 Release notes (2015-03-12) +============================================================= + +### Enhancements + +* The browser will automatically refresh when the Realm has been modified + from another process. +* Allow using Realm in an embedded framework by setting + `APPLICATION_EXTENSION_API_ONLY` to YES. + +### Bugfixes + +* Fix a crash in CFRunLoopSourceInvalidate. + +0.91.0 Release notes (2015-03-10) +============================================================= + +### API breaking changes + +* `attributesForProperty:` has been removed from `RLMObject`. You now specify indexed + properties by implementing the `indexedProperties` method. +* An exception will be thrown when calling `setEncryptionKey:forRealmsAtPath:`, + `setSchemaVersion:forRealmAtPath:withMigrationBlock:`, and `migrateRealmAtPath:` + when a Realm at the given path is already open. +* Object and array properties of type `RLMObject` will no longer be allowed. + +### Enhancements + +* Add support for sharing Realm files between processes. +* The browser will no longer show objects that have no persisted properties. +* `RLMSchema`, `RLMObjectSchema`, and `RLMProperty` now have more useful descriptions. +* Opening an encrypted Realm while a debugger is attached to the process no + longer throws an exception. +* `RLMArray` now exposes an `isInvalidated` property to indicate if it can no + longer be accessed. + +### Bugfixes + +* An exception will now be thrown when calling `-beginWriteTransaction` from within a notification + triggered by calling `-beginWriteTransaction` elsewhere. +* When calling `delete:` we now verify that the object being deleted is persisted in the target Realm. +* Fix crash when calling `createOrUpdate:inRealm` with nested linked objects. +* Use the key from `+[RLMRealm setEncryptionKey:forRealmsAtPath:]` in + `-writeCopyToPath:error:` and `+migrateRealmAtPath:`. +* Comparing an RLMObject to a non-RLMObject using `-[RLMObject isEqual:]` or + `-isEqualToObject:` now returns NO instead of crashing. +* Improved error message when an `RLMObject` subclass is defined nested within + another Swift declaration. +* Fix crash when the process is terminated by the OS on iOS while encrypted realms are open. +* Fix crash after large commits to encrypted realms. + +0.90.6 Release notes (2015-02-20) +============================================================= + +### Enhancements + +* Improve compatibility of encrypted Realms with third-party crash reporters. + +### Bugfixes + +* Fix incorrect results when using aggregate functions on sorted RLMResults. +* Fix data corruption when using writeCopyToPath:encryptionKey:. +* Maybe fix some assertion failures. + +0.90.5 Release notes (2015-02-04) +============================================================= + +### Bugfixes + +* Fix for crashes when encryption is enabled on 64-bit iOS devices. + +0.90.4 Release notes (2015-01-29) +============================================================= + +### Bugfixes + +* Fix bug that resulted in columns being dropped and recreated during migrations. + +0.90.3 Release notes (2015-01-27) +============================================================= + +### Enhancements + +* Calling `createInDefaultRealmWithObject:`, `createInRealm:withObject:`, + `createOrUpdateInDefaultRealmWithObject:` or `createOrUpdateInRealm:withObject:` + is a no-op if the argument is an RLMObject of the same type as the receiver + and is already backed by the target realm. + +### Bugfixes + +* Fix incorrect column type assertions when the first Realm file opened is a + read-only file that is missing tables. +* Throw an exception when adding an invalidated or deleted object as a link. +* Throw an exception when calling `createOrUpdateInRealm:withObject:` when the + receiver has no primary key defined. + +0.90.1 Release notes (2015-01-22) +============================================================= + +### Bugfixes + +* Fix for RLMObject being treated as a model object class and showing up in the browser. +* Fix compilation from the podspec. +* Fix for crash when calling `objectsWhere:` with grouping in the query on `allObjects`. + +0.90.0 Release notes (2015-01-21) +============================================================= + +### API breaking changes + +* Rename `-[RLMRealm encryptedRealmWithPath:key:readOnly:error:]` to + `-[RLMRealm realmWithPath:encryptionKey:readOnly:error:]`. +* `-[RLMRealm setSchemaVersion:withMigrationBlock]` is no longer global and must be called + for each individual Realm path used. You can now call `-[RLMRealm setDefaultRealmSchemaVersion:withMigrationBlock]` + for the default Realm and `-[RLMRealm setSchemaVersion:forRealmAtPath:withMigrationBlock:]` for all others; + +### Enhancements + +* Add `-[RLMRealm writeCopyToPath:encryptionKey:error:]`. +* Add support for comparing string columns to other string columns in queries. + +### Bugfixes + +* Roll back changes made when an exception is thrown during a migration. +* Throw an exception if the number of items in a RLMResults or RLMArray changes + while it's being fast-enumerated. +* Also encrypt the temporary files used when encryption is enabled for a Realm. +* Fixed crash in JSONImport example on OS X with non-en_US locale. +* Fixed infinite loop when opening a Realm file in the Browser at the same time + as it is open in a 32-bit simulator. +* Fixed a crash when adding primary keys to older realm files with no primary + keys on any objects. +* Fixed a crash when removing a primary key in a migration. +* Fixed a crash when multiple write transactions with no changes followed by a + write transaction with changes were committed without the main thread + RLMRealm getting a chance to refresh. +* Fixed incomplete results when querying for non-null relationships. +* Improve the error message when a Realm file is opened in multiple processes + at once. + +0.89.2 Release notes (2015-01-02) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix an assertion failure when invalidating a Realm which is in a write + transaction, has already been invalidated, or has never been used. +* Fix an assertion failure when sorting an empty RLMArray property. +* Fix a bug resulting in the browser never becoming visible on 10.9. +* Write UTF-8 when generating class files from a realm file in the Browser. + +0.89.1 Release notes (2014-12-22) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Improve the error message when a Realm can't be opened due to lacking write + permissions. + +### Bugfixes + +* Fix an assertion failure when inserting rows after calling `deleteAllObjects` + on a Realm. +* Separate dynamic frameworks are now built for the simulator and devices to + work around App Store submission errors due to the simulator version not + being automatically stripped from dynamic libraries. + +0.89.0 Release notes (2014-12-18) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Add support for encrypting Realm files on disk. +* Support using KVC-compliant objects without getters or with custom getter + names to initialize RLMObjects with `createObjectInRealm` and friends. + +### Bugfixes + +* Merge native Swift default property values with defaultPropertyValues(). +* Don't leave the database schema partially updated when opening a realm fails + due to a migration being needed. +* Fixed issue where objects with custom getter names couldn't be used to + initialize other objects. +* Fix a major performance regression on queries on string properties. +* Fix a memory leak when circularly linked objects are added to a Realm. + +0.88.0 Release notes (2014-12-02) +============================================================= + +### API breaking changes + +* Deallocating an RLMRealm instance in a write transaction lacking an explicit + commit/cancel will now be automatically cancelled instead of committed. +* `-[RLMObject isDeletedFromRealm]` has been renamed to `-[RLMObject isInvalidated]`. + +### Enhancements + +* Add `-[RLMRealm writeCopyToPath:]` to write a compacted copy of the Realm + another file. +* Add support for case insensitive, BEGINSWITH, ENDSWITH and CONTAINS string + queries on array properties. +* Make fast enumeration of `RLMArray` and `RLMResults` ~30% faster and + `objectAtIndex:` ~55% faster. +* Added a lldb visualizer script for displaying the contents of persisted + RLMObjects when debugging. +* Added method `-setDefaultRealmPath:` to change the default Realm path. +* Add `-[RLMRealm invalidate]` to release data locked by the current thread. + +### Bugfixes + +* Fix for crash when running many simultaneous write transactions on background threads. +* Fix for crashes caused by opening Realms at multiple paths simultaneously which have had + properties re-ordered during migration. +* Don't run the query twice when `firstObject` or `lastObject` are called on an + `RLMResults` which has not had its results accessed already. +* Fix for bug where schema version is 0 for new Realm created at the latest version. +* Fix for error message where no migration block is specified when required. + +0.87.4 Release notes (2014-11-07) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix browser location in release zip. + +0.87.3 Release notes (2014-11-06) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Added method `-linkingObjectsOfClass:forProperty:` to RLMObject to expose inverse + relationships/backlinks. + +### Bugfixes + +* Fix for crash due to missing search index when migrating an object with a string primary key + in a database created using an older versions (0.86.3 and earlier). +* Throw an exception when passing an array containing a + non-RLMObject to -[RLMRealm addObjects:]. +* Fix for crash when deleting an object from multiple threads. + +0.87.0 Release notes (2014-10-21) +============================================================= + +### API breaking changes + +* RLMArray has been split into two classes, `RLMArray` and `RLMResults`. RLMArray is + used for object properties as in previous releases. Moving forward all methods used to + enumerate, query, and sort objects return an instance of a new class `RLMResults`. This + change was made to support diverging apis and the future addition of change notifications + for queries. +* The api for migrations has changed. You now call `setSchemaVersion:withMigrationBlock:` to + register a global migration block and associated version. This block is applied to Realms as + needed when opened for Realms at a previous version. The block can be applied manually if + desired by calling `migrateRealmAtPath:`. +* `arraySortedByProperty:ascending:` was renamed to `sortedResultsUsingProperty:ascending` +* `addObjectsFromArray:` on both `RLMRealm` and `RLMArray` has been renamed to `addObjects:` + and now accepts any container class which implements `NSFastEnumeration` +* Building with Swift support now requires Xcode 6.1 + +### Enhancements + +* Add support for sorting `RLMArray`s by multiple columns with `sortedResultsUsingDescriptors:` +* Added method `deleteAllObjects` on `RLMRealm` to clear a Realm. +* Added method `createObject:withObject:` on `RLMMigration` which allows object creation during migrations. +* Added method `deleteObject:` on `RLMMigration` which allows object deletion during migrations. +* Updating to core library version 0.85.0. +* Implement `objectsWhere:` and `objectsWithPredicate:` for array properties. +* Add `cancelWriteTransaction` to revert all changes made in a write transaction and end the transaction. +* Make creating `RLMRealm` instances on background threads when an instance + exists on another thread take a fifth of the time. +* Support for partial updates when calling `createOrUpdateWithObject:` and `addOrUpdateObject:` +* Re-enable Swift support on OS X + +### Bugfixes + +* Fix exceptions when trying to set `RLMObject` properties after rearranging + the properties in a `RLMObject` subclass. +* Fix crash on IN query with several thousand items. +* Fix crash when querying indexed `NSString` properties. +* Fixed an issue which prevented in-memory Realms from being used accross multiple threads. +* Preserve the sort order when querying a sorted `RLMResults`. +* Fixed an issue with migrations where if a Realm file is deleted after a Realm is initialized, + the newly created Realm can be initialized with an incorrect schema version. +* Fix crash in `RLMSuperSet` when assigning to a `RLMArray` property on a standalone object. +* Add an error message when the protocol for an `RLMArray` property is not a + valid object type. +* Add an error message when an `RLMObject` subclass is defined nested within + another Swift class. + +0.86.3 Release notes (2014-10-09) +============================================================= + +### Enhancements + +* Add support for != in queries on object relationships. + +### Bugfixes + +* Re-adding an object to its Realm no longer throws an exception and is now a no-op + (as it was previously). +* Fix another bug which would sometimes result in subclassing RLMObject + subclasses not working. + +0.86.2 Release notes (2014-10-06) +============================================================= + +### Bugfixes + +* Fixed issues with packaging "Realm Browser.app" for release. + +0.86.1 Release notes (2014-10-03) +============================================================= + +### Bugfixes + +* Fix a bug which would sometimes result in subclassing RLMObject subclasses + not working. + +0.86.0 Release notes (2014-10-03) +============================================================= + +### API breaking changes + +* Xcode 6 is now supported from the main Xcode project `Realm.xcodeproj`. + Xcode 5 is no longer supported. + +### Enhancements + +* Support subclassing RLMObject models. Although you can now persist subclasses, + polymorphic behavior is not supported (i.e. setting a property to an + instance of its subclass). +* Add support for sorting RLMArray properties. +* Speed up inserting objects with `addObject:` by ~20%. +* `readonly` properties are automatically ignored rather than having to be + added to `ignoredProperties`. +* Updating to core library version 0.83.1. +* Return "[deleted object]" rather than throwing an exception when + `-description` is called on a deleted RLMObject. +* Significantly improve performance of very large queries. +* Allow passing any enumerable to IN clauses rather than just NSArray. +* Add `objectForPrimaryKey:` and `objectInRealm:forPrimaryKey:` convenience + methods to fetch an object by primary key. + +### Bugfixes + +* Fix error about not being able to persist property 'hash' with incompatible + type when building for devices with Xcode 6. +* Fix spurious notifications of new versions of Realm. +* Fix for updating nested objects where some types do not have primary keys. +* Fix for inserting objects from JSON with NSNull values when default values + should be used. +* Trying to add a persisted RLMObject to a different Realm now throws an + exception rather than creating an uninitialized object. +* Fix validation errors when using IN on array properties. +* Fix errors when an IN clause has zero items. +* Fix for chained queries ignoring all but the last query's conditions. + +0.85.0 Release notes (2014-09-15) +============================================================= + +### API breaking changes + +* Notifications for a refresh being needed (when autorefresh is off) now send + the notification type RLMRealmRefreshRequiredNotification rather than + RLMRealmDidChangeNotification. + +### Enhancements + +* Updating to core library version 0.83.0. +* Support for primary key properties (for int and string columns). Declaring a property + to be the primary key ensures uniqueness for that property for all objects of a given type. + At the moment indexes on primary keys are not yet supported but this will be added in a future + release. +* Added methods to update or insert (upsert) for objects with primary keys defined. +* `[RLMObject initWithObject:]` and `[RLMObject createInRealmWithObject:]` now support + any object type with kvc properties. +* The Swift support has been reworked to work around Swift not being supported + in Frameworks on iOS 7. +* Improve performance when getting the count of items matching a query but not + reading any of the objects in the results. +* Add a return value to `-[RLMRealm refresh]` that indicates whether or not + there was anything to refresh. +* Add the class name to the error message when an RLMObject is missing a value + for a property without a default. +* Add support for opening Realms in read-only mode. +* Add an automatic check for updates when using Realm in a simulator (the + checker code is not compiled into device builds). This can be disabled by + setting the REALM_DISABLE_UPDATE_CHECKER environment variable to any value. +* Add support for Int16 and Int64 properties in Swift classes. + +### Bugfixes + +* Realm change notifications when beginning a write transaction are now sent + after updating rather than before, to match refresh. +* `-isEqual:` now uses the default `NSObject` implementation unless a primary key + is specified for an RLMObject. When a primary key is specified, `-isEqual:` calls + `-isEqualToObject:` and a corresponding implementation for `-hash` is also implemented. + +0.84.0 Release notes (2014-08-28) +============================================================= + +### API breaking changes + +* The timer used to trigger notifications has been removed. Notifications are now + only triggered by commits made in other threads, and can not currently be triggered + by changes made by other processes. Interprocess notifications will be re-added in + a future commit with an improved design. + +### Enhancements + +* Updating to core library version 0.82.2. +* Add property `deletedFromRealm` to RLMObject to indicate objects which have been deleted. +* Add support for the IN operator in predicates. +* Add support for the BETWEEN operator in link queries. +* Add support for multi-level link queries in predicates (e.g. `foo.bar.baz = 5`). +* Switch to building the SDK from source when using CocoaPods and add a + Realm.Headers subspec for use in targets that should not link a copy of Realm + (such as test targets). +* Allow unregistering from change notifications in the change notification + handler block. +* Significant performance improvements when holding onto large numbers of RLMObjects. +* Realm-Xcode6.xcodeproj now only builds using Xcode6-Beta6. +* Improved performance during RLMArray iteration, especially when mutating + contained objects. + +### Bugfixes + +* Fix crashes and assorted bugs when sorting or querying a RLMArray returned + from a query. +* Notifications are no longer sent when initializing new RLMRealm instances on background + threads. +* Handle object cycles in -[RLMObject description] and -[RLMArray description]. +* Lowered the deployment target for the Xcode 6 projects and Swift examples to + iOS 7.0, as they didn't actually require 8.0. +* Support setting model properties starting with the letter 'z' +* Fixed crashes that could result from switching between Debug and Relase + builds of Realm. + +0.83.0 Release notes (2014-08-13) +============================================================= + +### API breaking changes + +* Realm-Xcode6.xcodeproj now only builds using Xcode6-Beta5. +* Properties to be persisted in Swift classes must be explicitly declared as `dynamic`. +* Subclasses of RLMObject subclasses now throw an exception on startup, rather + than when added to a Realm. + +### Enhancements + +* Add support for querying for nil object properties. +* Improve error message when specifying invalid literals when creating or + initializing RLMObjects. +* Throw an exception when an RLMObject is used from the incorrect thread rather + than crashing in confusing ways. +* Speed up RLMRealm instantiation and array property iteration. +* Allow array and objection relation properties to be missing or null when + creating a RLMObject from a NSDictionary. + +### Bugfixes + +* Fixed a memory leak when querying for objects. +* Fixed initializing array properties on standalone Swift RLMObject subclasses. +* Fix for queries on 64bit integers. + +0.82.0 Release notes (2014-08-05) +============================================================= + +### API breaking changes + +* Realm-Xcode6.xcodeproj now only builds using Xcode6-Beta4. + +### Enhancements + +* Updating to core library version 0.80.5. +* Now support disabling the `autorefresh` property on RLMRealm instances. +* Building Realm-Xcode6 for iOS now builds a universal framework for Simulator & Device. +* Using NSNumber properties (unsupported) now throws a more informative exception. +* Added `[RLMRealm defaultRealmPath]` +* Proper implementation for [RLMArray indexOfObjectWhere:] +* The default Realm path on OS X is now ~/Library/Application Support/[bundle + identifier]/default.realm rather than ~/Documents +* We now check that the correct framework (ios or osx) is used at compile time. + +### Bugfixes + +* Fixed rapid growth of the realm file size. +* Fixed a bug which could cause a crash during RLMArray destruction after a query. +* Fixed bug related to querying on float properties: `floatProperty = 1.7` now works. +* Fixed potential bug related to the handling of array properties (RLMArray). +* Fixed bug where array properties accessed the wrong property. +* Fixed bug that prevented objects with custom getters to be added to a Realm. +* Fixed a bug where initializing a standalone object with an array literal would + trigger an exception. +* Clarified exception messages when using unsupported NSPredicate operators. +* Clarified exception messages when using unsupported property types on RLMObject subclasses. +* Fixed a memory leak when breaking out of a for-in loop on RLMArray. +* Fixed a memory leak when removing objects from a RLMArray property. +* Fixed a memory leak when querying for objects. + + +0.81.0 Release notes (2014-07-22) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Updating to core library version 0.80.3. +* Added support for basic querying of RLMObject and RLMArray properties (one-to-one and one-to-many relationships). + e.g. `[Person objectsWhere:@"dog.name == 'Alfonso'"]` or `[Person objectsWhere:@"ANY dogs.name == 'Alfonso'"]` + Supports all normal operators for numeric and date types. Does not support NSData properties or `BEGINSWITH`, `ENDSWITH`, `CONTAINS` + and other options for string properties. +* Added support for querying for object equality in RLMObject and RLMArray properties (one-to-one and one-to-many relationships). + e.g. `[Person objectsWhere:@"dog == %@", myDog]` `[Person objectsWhere:@"ANY dogs == %@", myDog]` `[Person objectsWhere:@"ANY friends.dog == %@", dog]` + Only supports comparing objects for equality (i.e. ==) +* Added a helper method to RLMRealm to perform a block inside a transaction. +* OSX framework now supported in CocoaPods. + +### Bugfixes + +* Fixed Unicode support in property names and string contents (Chinese, Russian, etc.). Closing #612 and #604. +* Fixed bugs related to migration when properties are removed. +* Fixed keyed subscripting for standalone RLMObjects. +* Fixed bug related to double clicking on a .realm file to launch the Realm Browser (thanks to Dean Moore). + + +0.80.0 Release notes (2014-07-15) +============================================================= + +### API breaking changes + +* Rename migration methods to -migrateDefaultRealmWithBlock: and -migrateRealmAtPath:withBlock: +* Moved Realm specific query methods from RLMRealm to class methods on RLMObject (-allObjects: to +allObjectsInRealm: ect.) + +### Enhancements + +* Added +createInDefaultRealmWithObject: method to RLMObject. +* Added support for array and object literals when calling -createWithObject: and -initWithObject: variants. +* Added method -deleteObjects: to batch delete objects from a Realm +* Support for defining RLMObject models entirely in Swift (experimental, see known issues). +* RLMArrays in Swift support Sequence-style enumeration (for obj in array). +* Implemented -indexOfObject: for RLMArray + +### Known Issues for Swift-defined models + +* Properties other than String, NSData and NSDate require a default value in the model. This can be an empty (but typed) array for array properties. +* The previous caveat also implies that not all models defined in Objective-C can be used for object properties. Only Objective-C models with only implicit (i.e. primitives) or explicit default values can be used. However, any Objective-C model object can be used in a Swift array property. +* Array property accessors don't work until its parent object has been added to a realm. +* Realm-Bridging-Header.h is temporarily exposed as a public header. This is temporary and will be private again once rdar://17633863 is fixed. +* Does not leverage Swift generics and still uses RLM-prefix everywhere. This is coming in #549. + + +0.22.0 Release notes +============================================================= + +### API breaking changes + +* Rename schemaForObject: to schemaForClassName: on RLMSchema +* Removed -objects:where: and -objects:orderedBy:where: from RLMRealm +* Removed -indexOfObjectWhere:, -objectsWhere: and -objectsOrderedBy:where: from RLMArray +* Removed +objectsWhere: and +objectsOrderedBy:where: from RLMObject + +### Enhancements + +* New Xcode 6 project for experimental swift support. +* New Realm Editor app for reading and editing Realm db files. +* Added support for migrations. +* Added support for RLMArray properties on objects. +* Added support for creating in-memory default Realm. +* Added -objectsWithClassName:predicateFormat: and -objectsWithClassName:predicate: to RLMRealm +* Added -indexOfObjectWithPredicateFormat:, -indexOfObjectWithPredicate:, -objectsWithPredicateFormat:, -objectsWithPredi +* Added +objectsWithPredicateFormat: and +objectsWithPredicate: to RLMObject +* Now allows predicates comparing two object properties of the same type. + + +0.20.0 Release notes (2014-05-28) +============================================================= + +Completely rewritten to be much more object oriented. + +### API breaking changes + +* Everything + +### Enhancements + +* None. + +### Bugfixes + +* None. + + +0.11.0 Release notes (not released) +============================================================= + +The Objective-C API has been updated and your code will break! + +### API breaking changes + +* `RLMTable` objects can only be created with an `RLMRealm` object. +* Renamed `RLMContext` to `RLMTransactionManager` +* Renamed `RLMContextDidChangeNotification` to `RLMRealmDidChangeNotification` +* Renamed `contextWithDefaultPersistence` to `managerForDefaultRealm` +* Renamed `contextPersistedAtPath:` to `managerForRealmWithPath:` +* Renamed `realmWithDefaultPersistence` to `defaultRealm` +* Renamed `realmWithDefaultPersistenceAndInitBlock` to `defaultRealmWithInitBlock` +* Renamed `find:` to `firstWhere:` +* Renamed `where:` to `allWhere:` +* Renamed `where:orderBy:` to `allWhere:orderBy:` + +### Enhancements + +* Added `countWhere:` on `RLMTable` +* Added `sumOfColumn:where:` on `RLMTable` +* Added `averageOfColumn:where:` on `RLMTable` +* Added `minOfProperty:where:` on `RLMTable` +* Added `maxOfProperty:where:` on `RLMTable` +* Added `toJSONString` on `RLMRealm`, `RLMTable` and `RLMView` +* Added support for `NOT` operator in predicates +* Added support for default values +* Added validation support in `createInRealm:withObject:` + +### Bugfixes + +* None. + + +0.10.0 Release notes (2014-04-23) +============================================================= + +TightDB is now Realm! The Objective-C API has been updated +and your code will break! + +### API breaking changes + +* All references to TightDB have been changed to Realm. +* All prefixes changed from `TDB` to `RLM`. +* `TDBTransaction` and `TDBSmartContext` have merged into `RLMRealm`. +* Write transactions now take an optional rollback parameter (rather than needing to return a boolean). +* `addColumnWithName:` and variant methods now return the index of the newly created column if successful, `NSNotFound` otherwise. + +### Enhancements + +* `createTableWithName:columns:` has been added to `RLMRealm`. +* Added keyed subscripting for RLMTable's first column if column is of type RLMPropertyTypeString. +* `setRow:atIndex:` has been added to `RLMTable`. +* `RLMRealm` constructors now have variants that take an writable initialization block +* New object interface - tables created/retrieved using `tableWithName:objectClass:` return custom objects + +### Bugfixes + +* None. + + +0.6.0 Release notes (2014-04-11) +============================================================= + +### API breaking changes + +* `contextWithPersistenceToFile:error:` renamed to `contextPersistedAtPath:error:` in `TDBContext` +* `readWithBlock:` renamed to `readUsingBlock:` in `TDBContext` +* `writeWithBlock:error:` renamed to `writeUsingBlock:error:` in `TDBContext` +* `readTable:withBlock:` renamed to `readTable:usingBlock:` in `TDBContext` +* `writeTable:withBlock:error:` renamed to `writeTable:usingBlock:error:` in `TDBContext` +* `findFirstRow` renamed to `indexOfFirstMatchingRow` on `TDBQuery`. +* `findFirstRowFromIndex:` renamed to `indexOfFirstMatchingRowFromIndex:` on `TDBQuery`. +* Return `NSNotFound` instead of -1 when appropriate. +* Renamed `castClass` to `castToTytpedTableClass` on `TDBTable`. +* `removeAllRows`, `removeRowAtIndex`, `removeLastRow`, `addRow` and `insertRow` methods + on table now return void instead of BOOL. + +### Enhancements +* A `TDBTable` can now be queried using `where:` and `where:orderBy:` taking + `NSPredicate` and `NSSortDescriptor` as arguments. +* Added `find:` method on `TDBTable` to find first row matching predicate. +* `contextWithDefaultPersistence` class method added to `TDBContext`. Will create a context persisted + to a file in app/documents folder. +* `renameColumnWithIndex:to:` has been added to `TDBTable`. +* `distinctValuesInColumnWithIndex` has been added to `TDBTable`. +* `dateIsBetween::`, `doubleIsBetween::`, `floatIsBetween::` and `intIsBetween::` + have been added to `TDBQuery`. +* Column names in Typed Tables can begin with non-capital letters too. The generated `addX` + selector can look odd. For example, a table with one column with name `age`, + appending a new row will look like `[table addage:7]`. +* Mixed typed values are better validated when rows are added, inserted, + or modified as object literals. +* `addRow`, `insertRow`, and row updates can be done using objects + derived from `NSObject`. +* `where` has been added to `TDBView`and `TDBViewProtocol`. +* Adding support for "smart" contexts (`TDBSmartContext`). + +### Bugfixes + +* Modifications of a `TDBView` and `TDBQuery` now throw an exception in a readtransaction. + + +0.5.0 Release notes (2014-04-02) +============================================================= + +The Objective-C API has been updated and your code will break! +Of notable changes a fast interface has been added. +This interface includes specific methods to get and set values into Tightdb. +To use these methods import ``. + +### API breaking changes + +* `getTableWithName:` renamed to `tableWithName:` in `TDBTransaction`. +* `addColumnWithName:andType:` renamed to `addColumnWithName:type:` in `TDBTable`. +* `columnTypeOfColumn:` renamed to `columnTypeOfColumnWithIndex` in `TDBTable`. +* `columnNameOfColumn:` renamed to `nameOfColumnWithIndex:` in `TDBTable`. +* `addColumnWithName:andType:` renamed to `addColumnWithName:type:` in `TDBDescriptor`. +* Fast getters and setters moved from `TDBRow.h` to `TDBRowFast.h`. + +### Enhancements + +* Added `minDateInColumnWithIndex` and `maxDateInColumnWithIndex` to `TDBQuery`. +* Transactions can now be started directly on named tables. +* You can create dynamic tables with initial schema. +* `TDBTable` and `TDBView` now have a shared protocol so they can easier be used interchangeably. + +### Bugfixes + +* Fixed bug in 64 bit iOS when inserting BOOL as NSNumber. + + +0.4.0 Release notes (2014-03-26) +============================================================= + +### API breaking changes + +* Typed interface Cursor has now been renamed to Row. +* TDBGroup has been renamed to TDBTransaction. +* Header files are renamed so names match class names. +* Underscore (_) removed from generated typed table classes. +* TDBBinary has been removed; use NSData instead. +* Underscope (_) removed from generated typed table classes. +* Constructor for TDBContext has been renamed to contextWithPersistenceToFile: +* Table findFirstRow and min/max/sum/avg operations has been hidden. +* Table.appendRow has been renamed to addRow. +* getOrCreateTable on Transaction has been removed. +* set*:inColumnWithIndex:atRowIndex: methods have been prefixed with TDB +* *:inColumnWithIndex:atRowIndex: methods have been prefixed with TDB +* addEmptyRow on table has been removed. Use [table addRow:nil] instead. +* TDBMixed removed. Use id and NSObject instead. +* insertEmptyRow has been removed from table. Use insertRow:nil atIndex:index instead. + +#### Enhancements + +* Added firstRow, lastRow selectors on view. +* firstRow and lastRow on table now return nil if table is empty. +* getTableWithName selector added on group. +* getting and creating table methods on group no longer take error argument. +* [TDBQuery parent] and [TDBQuery subtable:] selectors now return self. +* createTable method added on Transaction. Throws exception if table with same name already exists. +* Experimental support for pinning transactions on Context. +* TDBView now has support for object subscripting. + +### Bugfixes + +* None. + + +0.3.0 Release notes (2014-03-14) +============================================================= + +The Objective-C API has been updated and your code will break! + +### API breaking changes + +* Most selectors have been renamed in the binding! +* Prepend TDB-prefix on all classes and types. + +### Enhancements + +* Return types and parameters changed from size_t to NSUInteger. +* Adding setObject to TightdbTable (t[2] = @[@1, @"Hello"] is possible). +* Adding insertRow to TightdbTable. +* Extending appendRow to accept NSDictionary. + +### Bugfixes + +* None. + + +0.2.0 Release notes (2014-03-07) +============================================================= + +The Objective-C API has been updated and your code will break! + +### API breaking changes + +* addRow renamed to addEmptyRow + +### Enhancements + +* Adding a simple class for version numbering. +* Adding get-version and set-version targets to build.sh. +* tableview now supports sort on column with column type bool, date and int +* tableview has method for checking the column type of a specified column +* tableview has method for getting the number of columns +* Adding methods getVersion, getCoreVersion and isAtLeast. +* Adding appendRow to TightdbTable. +* Adding object subscripting. +* Adding method removeColumn on table. + +### Bugfixes + +* None. diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/NSError+RLMSync.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/NSError+RLMSync.h new file mode 100644 index 000000000..5ef323a24 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/NSError+RLMSync.h @@ -0,0 +1,46 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2017 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability) + +@class RLMSyncErrorActionToken; + +/// NSError category extension providing methods to get data out of Realm's +/// "client reset" error. +@interface NSError (RLMSync) + +/** + Given an appropriate Atlas App Services error, return the token that + can be passed into `+[RLMSyncSession immediatelyHandleError:]` to + immediately perform error clean-up work, or nil if the error isn't of + a type that provides a token. + */ +- (nullable RLMSyncErrorActionToken *)rlmSync_errorActionToken NS_REFINED_FOR_SWIFT; + +/** + Given an Atlas App Services client reset error, return the path where the + backup copy of the Realm will be placed once the client reset process is + complete. + */ +- (nullable NSString *)rlmSync_clientResetBackedUpRealmPath NS_SWIFT_UNAVAILABLE(""); + +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMAPIKeyAuth.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMAPIKeyAuth.h new file mode 100644 index 000000000..642bdd95d --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMAPIKeyAuth.h @@ -0,0 +1,95 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMUserAPIKey, RLMObjectId; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/// Provider client for user API keys. +RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class +@interface RLMAPIKeyAuth : RLMProviderClient + +/// A block type used to report an error +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMAPIKeyAuthOptionalErrorBlock)(NSError * _Nullable); + +/// A block type used to return an `RLMUserAPIKey` on success, or an `NSError` on failure +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMOptionalUserAPIKeyBlock)(RLMUserAPIKey * _Nullable, NSError * _Nullable); + +/// A block type used to return an array of `RLMUserAPIKey` on success, or an `NSError` on failure +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMUserAPIKeysBlock)(NSArray * _Nullable, NSError * _Nullable); + +/** + Creates a user API key that can be used to authenticate as the current user. + + @param name The name of the API key to be created. + @param completion A callback to be invoked once the call is complete. +*/ +- (void)createAPIKeyWithName:(NSString *)name + completion:(RLMOptionalUserAPIKeyBlock)completion NS_SWIFT_NAME(createAPIKey(named:completion:)); + +/** + Fetches a user API key associated with the current user. + + @param objectId The ObjectId of the API key to fetch. + @param completion A callback to be invoked once the call is complete. + */ +- (void)fetchAPIKey:(RLMObjectId *)objectId + completion:(RLMOptionalUserAPIKeyBlock)completion; + +/** + Fetches the user API keys associated with the current user. + + @param completion A callback to be invoked once the call is complete. + */ +- (void)fetchAPIKeysWithCompletion:(RLMUserAPIKeysBlock)completion; + +/** + Deletes a user API key associated with the current user. + + @param objectId The ObjectId of the API key to delete. + @param completion A callback to be invoked once the call is complete. + */ +- (void)deleteAPIKey:(RLMObjectId *)objectId + completion:(RLMAPIKeyAuthOptionalErrorBlock)completion; + +/** + Enables a user API key associated with the current user. + + @param objectId The ObjectId of the API key to enable. + @param completion A callback to be invoked once the call is complete. + */ +- (void)enableAPIKey:(RLMObjectId *)objectId + completion:(RLMAPIKeyAuthOptionalErrorBlock)completion; + +/** + Disables a user API key associated with the current user. + + @param objectId The ObjectId of the API key to disable. + @param completion A callback to be invoked once the call is complete. + */ +- (void)disableAPIKey:(RLMObjectId *)objectId + completion:(RLMAPIKeyAuthOptionalErrorBlock)completion; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMApp.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMApp.h new file mode 100644 index 000000000..2228232e8 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMApp.h @@ -0,0 +1,235 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@protocol RLMNetworkTransport, RLMBSON; + +@class RLMUser, RLMCredentials, RLMSyncManager, RLMEmailPasswordAuth, RLMPushClient, RLMSyncTimeoutOptions; + +/// A block type used for APIs which asynchronously vend an `RLMUser`. +typedef void(^RLMUserCompletionBlock)(RLMUser * _Nullable, NSError * _Nullable); + +/// A block type used to report an error +typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); + +#pragma mark RLMAppConfiguration + +/// Properties representing the configuration of a client +/// that communicate with a particular Realm application. +@interface RLMAppConfiguration : NSObject + +/// A custom base URL to request against. +@property (nonatomic, strong, nullable) NSString *baseURL; + +/// The custom transport for network calls to the server. +@property (nonatomic, strong, nullable) id transport; + +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppName + __attribute__((deprecated("This field is not used"))); +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppVersion + __attribute__((deprecated("This field is not used"))); + +/// The default timeout for network requests. +@property (nonatomic, assign) NSUInteger defaultRequestTimeoutMS; + +/// If enabled (the default), a single connection is used for all Realms opened +/// with a single sync user. If disabled, a separate connection is used for each +/// Realm. +/// +/// Session multiplexing reduces resources used and typically improves +/// performance. When multiplexing is enabled, the connection is not immediately +/// closed when the last session is closed, and instead remains open for +/// ``RLMSyncTimeoutOptions.connectionLingerTime`` milliseconds (30 seconds by +/// default). +@property (nonatomic, assign) BOOL enableSessionMultiplexing; + +/** + Options for the assorted types of connection timeouts for sync connections. + + If nil default values for all timeouts are used instead. + */ +@property (nonatomic, nullable, copy) RLMSyncTimeoutOptions *syncTimeouts; + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *)baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *) baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion + defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + +/** +Create a new Realm App configuration. + +@param baseURL A custom base URL to request against. +@param transport A custom network transport. +*/ +- (instancetype)initWithBaseURL:(nullable NSString *)baseURL + transport:(nullable id)transport; + +/** + Create a new Realm App configuration. + + @param baseURL A custom base URL to request against. + @param transport A custom network transport. + @param defaultRequestTimeoutMS A custom default timeout for network requests. + */ +- (instancetype)initWithBaseURL:(nullable NSString *) baseURL + transport:(nullable id)transport + defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS; + +@end + +#pragma mark RLMApp + +/** + The `RLMApp` has the fundamental set of methods for communicating with a Realm + application backend. + + This interface provides access to login and authentication. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // internally thread-safe +@interface RLMApp : NSObject + +/// The configuration for this Realm app. +@property (nonatomic, readonly) RLMAppConfiguration *configuration; + +/// The `RLMSyncManager` for this Realm app. +@property (nonatomic, readonly) RLMSyncManager *syncManager; + +/// Get a dictionary containing all users keyed on id. +@property (nonatomic, readonly) NSDictionary *allUsers; + +/// Get the current user logged into the Realm app. +@property (nonatomic, readonly, nullable) RLMUser *currentUser; + +/// The app ID for this Realm app. +@property (nonatomic, readonly) NSString *appId; + +/** + A client for the email/password authentication provider which + can be used to obtain a credential for logging in. + + Used to perform requests specifically related to the email/password provider. +*/ +@property (nonatomic, readonly) RLMEmailPasswordAuth *emailPasswordAuth; + +/** + Get an application with a given appId and configuration. + + @param appId The unique identifier of your Realm app. + */ ++ (instancetype)appWithId:(NSString *)appId; + +/** + Get an application with a given appId and configuration. + + @param appId The unique identifier of your Realm app. + @param configuration A configuration object to configure this client. + */ ++ (instancetype)appWithId:(NSString *)appId + configuration:(nullable RLMAppConfiguration *)configuration; + +/** + Login to a user for the Realm app. + + @param credentials The credentials identifying the user. + @param completion A callback invoked after completion. + */ +- (void)loginWithCredential:(RLMCredentials *)credentials + completion:(RLMUserCompletionBlock)completion NS_REFINED_FOR_SWIFT; + +/** + Switches the active user to the specified user. + + This sets which user is used by all RLMApp operations which require a user. This is a local operation which does not access the network. + An exception will be throw if the user is not valid. The current user will remain logged in. + + @param syncUser The user to switch to. + @returns The user you intend to switch to + */ +- (RLMUser *)switchToUser:(RLMUser *)syncUser; + +/** + A client which can be used to register devices with the server to receive push notificatons + */ +- (RLMPushClient *)pushClientWithServiceName:(NSString *)serviceName + NS_SWIFT_NAME(pushClient(serviceName:)); + +/** + RLMApp instances are cached internally by Realm and cannot be created directly. + + Use `+[RLMRealm appWithId]` or `+[RLMRealm appWithId:configuration:]` + to obtain a reference to an RLMApp. + */ +- (instancetype)init __attribute__((unavailable("Use +appWithId or appWithId:configuration:."))); + +/** +RLMApp instances are cached internally by Realm and cannot be created directly. + +Use `+[RLMRealm appWithId]` or `+[RLMRealm appWithId:configuration:]` +to obtain a reference to an RLMApp. +*/ ++ (instancetype)new __attribute__((unavailable("Use +appWithId or appWithId:configuration:."))); + +@end + +#pragma mark - Sign In With Apple Extension + +API_AVAILABLE(ios(13.0), macos(10.15), tvos(13.0), watchos(6.0)) +/// Use this delegate to be provided a callback once authentication has succeed or failed +@protocol RLMASLoginDelegate + +/// Callback that is invoked should the authentication fail. +/// @param error An error describing the authentication failure. +- (void)authenticationDidFailWithError:(NSError *)error NS_SWIFT_NAME(authenticationDidComplete(error:)); + +/// Callback that is invoked should the authentication succeed. +/// @param user The newly authenticated user. +- (void)authenticationDidCompleteWithUser:(RLMUser *)user NS_SWIFT_NAME(authenticationDidComplete(user:)); + +@end + +API_AVAILABLE(ios(13.0), macos(10.15), tvos(13.0), watchos(6.0)) +/// Category extension that deals with Sign In With Apple authentication. +/// This is only available on OS's that support `AuthenticationServices` +@interface RLMApp (ASLogin) + +/// Use this delegate to be provided a callback once authentication has succeed or failed. +@property (nonatomic, weak, nullable) id authorizationDelegate; + +/// Sets the ASAuthorizationControllerDelegate to be handled by `RLMApp` +/// @param controller The ASAuthorizationController in which you want `RLMApp` to consume its delegate. +- (void)setASAuthorizationControllerDelegateForController:(ASAuthorizationController *)controller NS_REFINED_FOR_SWIFT; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMArray.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMArray.h new file mode 100644 index 000000000..b2c6c1664 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMArray.h @@ -0,0 +1,652 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMObject, RLMResults; + +/** + `RLMArray` is the container type in Realm used to define to-many relationships. + + Unlike an `NSArray`, `RLMArray`s hold a single type, specified by the `objectClassName` property. + This is referred to in these docs as the “type” of the array. + + When declaring an `RLMArray` property, the type must be marked as conforming to a + protocol by the same name as the objects it should contain (see the + `RLM_COLLECTION_TYPE` macro). In addition, the property can be declared using Objective-C + generics for better compile-time type safety. + + RLM_COLLECTION_TYPE(ObjectType) + ... + @property RLMArray *arrayOfObjectTypes; + + `RLMArray`s can be queried with the same predicates as `RLMObject` and `RLMResult`s. + + `RLMArray`s cannot be created directly. `RLMArray` properties on `RLMObject`s are + lazily created when accessed, or can be obtained by querying a Realm. + + ### Key-Value Observing + + `RLMArray` supports array key-value observing on `RLMArray` properties on `RLMObject` + subclasses, and the `invalidated` property on `RLMArray` instances themselves is + key-value observing compliant when the `RLMArray` is attached to a managed + `RLMObject` (`RLMArray`s on unmanaged `RLMObject`s will never become invalidated). + + Because `RLMArray`s are attached to the object which they are a property of, they + do not require using the mutable collection proxy objects from + `-mutableArrayValueForKey:` or KVC-compatible mutation methods on the containing + object. Instead, you can call the mutation methods on the `RLMArray` directly. + */ + +@interface RLMArray : NSObject + +#pragma mark - Properties + +/** + The number of objects in the array. + */ +@property (nonatomic, readonly, assign) NSUInteger count; + +/** + The type of the objects in the array. + */ +@property (nonatomic, readonly, assign) RLMPropertyType type; + +/** + Indicates whether the objects in the collection can be `nil`. + */ +@property (nonatomic, readonly, getter = isOptional) BOOL optional; + +/** + The class name of the objects contained in the array. + + Will be `nil` if `type` is not RLMPropertyTypeObject. + */ +@property (nonatomic, readonly, copy, nullable) NSString *objectClassName; + +/** + The Realm which manages the array. Returns `nil` for unmanaged arrays. + */ +@property (nonatomic, readonly, nullable) RLMRealm *realm; + +/** + Indicates if the array can no longer be accessed. + */ +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +/** + Indicates if the array is frozen. + + Frozen arrays are immutable and can be accessed from any thread. Frozen arrays + are created by calling `-freeze` on a managed live array. Unmanaged arrays are + never frozen. + */ +@property (nonatomic, readonly, getter = isFrozen) BOOL frozen; + +#pragma mark - Accessing Objects from an Array + +/** + Returns the object at the index specified. + + @param index The index to look up. + + @return An object of the type contained in the array. + */ +- (RLMObjectType)objectAtIndex:(NSUInteger)index; + +/** + Returns an array containing the objects in the array at the indexes specified by a given index set. + `nil` will be returned if the index set contains an index out of the arrays bounds. + + @param indexes The indexes in the array to retrieve objects from. + + @return The objects at the specified indexes. + */ +- (nullable NSArray *)objectsAtIndexes:(NSIndexSet *)indexes; + +/** + Returns the first object in the array. + + Returns `nil` if called on an empty array. + + @return An object of the type contained in the array. + */ +- (nullable RLMObjectType)firstObject; + +/** + Returns the last object in the array. + + Returns `nil` if called on an empty array. + + @return An object of the type contained in the array. + */ +- (nullable RLMObjectType)lastObject; + + + +#pragma mark - Adding, Removing, and Replacing Objects in an Array + +/** + Adds an object to the end of the array. + + @warning This method may only be called during a write transaction. + + @param object An object of the type contained in the array. + */ +- (void)addObject:(RLMObjectType)object; + +/** + Adds an array of objects to the end of the array. + + @warning This method may only be called during a write transaction. + + @param objects An enumerable object such as `NSArray` or `RLMResults` which contains objects of the + same class as the array. + */ +- (void)addObjects:(id)objects; + +/** + Inserts an object at the given index. + + Throws an exception if the index exceeds the bounds of the array. + + @warning This method may only be called during a write transaction. + + @param anObject An object of the type contained in the array. + @param index The index at which to insert the object. + */ +- (void)insertObject:(RLMObjectType)anObject atIndex:(NSUInteger)index; + +/** + Removes an object at the given index. + + Throws an exception if the index exceeds the bounds of the array. + + @warning This method may only be called during a write transaction. + + @param index The array index identifying the object to be removed. + */ +- (void)removeObjectAtIndex:(NSUInteger)index; + +/** + Removes the last object in the array. + + This is a no-op if the array is already empty. + + @warning This method may only be called during a write transaction. +*/ +- (void)removeLastObject; + +/** + Removes all objects from the array. + + @warning This method may only be called during a write transaction. + */ +- (void)removeAllObjects; + +/** + Replaces an object at the given index with a new object. + + Throws an exception if the index exceeds the bounds of the array. + + @warning This method may only be called during a write transaction. + + @param index The index of the object to be replaced. + @param anObject An object (of the same type as returned from the `objectClassName` selector). + */ +- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(RLMObjectType)anObject; + +/** + Moves the object at the given source index to the given destination index. + + Throws an exception if the index exceeds the bounds of the array. + + @warning This method may only be called during a write transaction. + + @param sourceIndex The index of the object to be moved. + @param destinationIndex The index to which the object at `sourceIndex` should be moved. + */ +- (void)moveObjectAtIndex:(NSUInteger)sourceIndex toIndex:(NSUInteger)destinationIndex; + +/** + Exchanges the objects in the array at given indices. + + Throws an exception if either index exceeds the bounds of the array. + + @warning This method may only be called during a write transaction. + + @param index1 The index of the object which should replace the object at index `index2`. + @param index2 The index of the object which should replace the object at index `index1`. + */ +- (void)exchangeObjectAtIndex:(NSUInteger)index1 withObjectAtIndex:(NSUInteger)index2; + +#pragma mark - Querying an Array + +/** + Returns the index of an object in the array. + + Returns `NSNotFound` if the object is not found in the array. + + @param object An object (of the same type as returned from the `objectClassName` selector). + */ +- (NSUInteger)indexOfObject:(RLMObjectType)object; + +/** + Returns the index of the first object in the array matching the predicate. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + + @return The index of the object, or `NSNotFound` if the object is not found in the array. + */ +- (NSUInteger)indexOfObjectWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (NSUInteger)indexOfObjectWhere:(NSString *)predicateFormat args:(va_list)args; + +/** + Returns the index of the first object in the array matching the predicate. + + @param predicate The predicate with which to filter the objects. + + @return The index of the object, or `NSNotFound` if the object is not found in the array. + */ +- (NSUInteger)indexOfObjectWithPredicate:(NSPredicate *)predicate; + +/** + Returns all the objects matching the given predicate in the array. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + + @return An `RLMResults` of objects that match the given predicate. + */ +- (RLMResults *)objectsWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (RLMResults *)objectsWhere:(NSString *)predicateFormat args:(va_list)args; + +/** + Returns all the objects matching the given predicate in the array. + + @param predicate The predicate with which to filter the objects. + + @return An `RLMResults` of objects that match the given predicate + */ +- (RLMResults *)objectsWithPredicate:(NSPredicate *)predicate; + +/** + Returns a sorted `RLMResults` from the array. + + @param keyPath The key path to sort by. + @param ascending The direction to sort in. + + @return An `RLMResults` sorted by the specified key path. + */ +- (RLMResults *)sortedResultsUsingKeyPath:(NSString *)keyPath ascending:(BOOL)ascending; + +/** + Returns a sorted `RLMResults` from the array. + + @param properties An array of `RLMSortDescriptor`s to sort by. + + @return An `RLMResults` sorted by the specified properties. + */ +- (RLMResults *)sortedResultsUsingDescriptors:(NSArray *)properties; + +/** + Returns a distinct `RLMResults` from the array. + + @param keyPaths The key paths to distinct on. + + @return An `RLMResults` with the distinct values of the keypath(s). + */ +- (RLMResults *)distinctResultsUsingKeyPaths:(NSArray *)keyPaths; + +/// :nodoc: +- (RLMObjectType)objectAtIndexedSubscript:(NSUInteger)index; + +/// :nodoc: +- (void)setObject:(RLMObjectType)newValue atIndexedSubscript:(NSUInteger)index; + +#pragma mark - Sectioning an Array + +/** + Sorts and sections this collection from a given property key path, returning the result + as an instance of `RLMSectionedResults`. + + @param keyPath The property key path to sort on. + @param ascending The direction to sort in. + @param keyBlock A callback which is invoked on each element in the Results collection. + This callback is to return the section key for the element in the collection. + + @return An instance of RLMSectionedResults. + */ +- (RLMSectionedResults *)sectionedResultsSortedUsingKeyPath:(NSString *)keyPath + ascending:(BOOL)ascending + keyBlock:(RLMSectionedResultsKeyBlock)keyBlock; + +/** + Sorts and sections this collection from a given array of sort descriptors, returning the result + as an instance of `RLMSectionedResults`. + + @param sortDescriptors An array of `RLMSortDescriptor`s to sort by. + @param keyBlock A callback which is invoked on each element in the Results collection. + This callback is to return the section key for the element in the collection. + + @note The primary sort descriptor must be responsible for determining the section key. + + @return An instance of RLMSectionedResults. + */ +- (RLMSectionedResults *)sectionedResultsUsingSortDescriptors:(NSArray *)sortDescriptors + keyBlock:(RLMSectionedResultsKeyBlock)keyBlock; + + +#pragma mark - Notifications + +/** + Registers a block to be called each time the array changes. + + The block will be asynchronously called with the initial array, and then + called again after each write transaction which changes any of the objects in + the array, which objects are in the results, or the order of the objects in the + array. + + The `changes` parameter will be `nil` the first time the block is called. For + each call after that, it will contain information about which rows in the + array were added, removed or modified. If a write transaction did not modify + any objects in the array, the block is not called at all. See the + `RLMCollectionChange` documentation for information on how the changes are + reported and an example of updating a `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + Person *person = [[Person allObjectsInRealm:realm] firstObject]; + NSLog(@"person.dogs.count: %zu", person.dogs.count); // => 0 + self.token = [person.dogs addNotificationBlock(RLMArray *dogs, + RLMCollectionChange *changes, + NSError *error) { + // Only fired once for the example + NSLog(@"dogs.count: %zu", dogs.count) // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + [person.dogs addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning This method may only be called on a non-frozen managed array. + + @param block The block to be called each time the array changes. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMArray *_Nullable array, + RLMCollectionChange *_Nullable changes, + NSError *_Nullable error))block +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the array changes. + + The block will be asynchronously called with the initial array, and then + called again after each write transaction which changes any of the objects in + the array, which objects are in the results, or the order of the objects in the + array. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the array were added, removed or modified. If a write transaction + did not modify any objects in the array, the block is not called at all. + See the `RLMCollectionChange` documentation for information on how the changes + are reported and an example of updating a `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMArray *_Nullable array, + RLMCollectionChange *_Nullable changes, + NSError *_Nullable error))block + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the array changes. + + The block will be asynchronously called with the initial array, and then + called again after each write transaction which changes any of the objects in + the array, which objects are in the results, or the order of the objects in the + array. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the array were added, removed or modified. If a write transaction + did not modify any objects in the array, the block is not called at all. + See the `RLMCollectionChange` documentation for information on how the changes + are reported and an example of updating a `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMArray *_Nullable array, + RLMCollectionChange *_Nullable changes, + NSError *_Nullable error))block + keyPaths:(nullable NSArray *)keyPaths + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the array changes. + + The block will be asynchronously called with the initial array, and then + called again after each write transaction which changes any of the objects in + the array, which objects are in the results, or the order of the objects in the + array. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the array were added, removed or modified. If a write transaction + did not modify any objects in the array, the block is not called at all. + See the `RLMCollectionChange` documentation for information on how the changes + are reported and an example of updating a `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMArray *_Nullable array, + RLMCollectionChange *_Nullable changes, + NSError *_Nullable error))block + keyPaths:(nullable NSArray *)keyPaths +__attribute__((warn_unused_result)); + +#pragma mark - Aggregating Property Values + +/** + Returns the minimum (lowest) value of the given property among all the objects in the array. + + NSNumber *min = [object.arrayProperty minOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose minimum value is desired. Only properties of + types `int`, `float`, `double`, and `NSDate` are supported. + + @return The minimum value of the property, or `nil` if the array is empty. + */ +- (nullable id)minOfProperty:(NSString *)property; + +/** + Returns the maximum (highest) value of the given property among all the objects in the array. + + NSNumber *max = [object.arrayProperty maxOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose maximum value is desired. Only properties of + types `int`, `float`, `double`, and `NSDate` are supported. + + @return The maximum value of the property, or `nil` if the array is empty. + */ +- (nullable id)maxOfProperty:(NSString *)property; + +/** + Returns the sum of the values of a given property over all the objects in the array. + + NSNumber *sum = [object.arrayProperty sumOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose values should be summed. Only properties of + types `int`, `float`, and `double` are supported. + + @return The sum of the given property. + */ +- (NSNumber *)sumOfProperty:(NSString *)property; + +/** + Returns the average value of a given property over the objects in the array. + + NSNumber *average = [object.arrayProperty averageOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose average value should be calculated. Only + properties of types `int`, `float`, and `double` are supported. + + @return The average value of the given property, or `nil` if the array is empty. + */ +- (nullable NSNumber *)averageOfProperty:(NSString *)property; + +#pragma mark - Freeze + +/** + Returns a frozen (immutable) snapshot of this array. + + The frozen copy is an immutable array which contains the same data as this + array currently contains, but will not update when writes are made to the + containing Realm. Unlike live arrays, frozen arrays can be accessed from any + thread. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning This method may only be called on a managed array. + @warning Holding onto a frozen array for an extended period while performing + write transaction on the Realm may result in the Realm file growing + to large sizes. See `RLMRealmConfiguration.maximumNumberOfActiveVersions` + for more information. + */ +- (instancetype)freeze; + +/** + Returns a live version of this frozen collection. + + This method resolves a reference to a live copy of the same frozen collection. + If called on a live collection, will return itself. +*/ +- (instancetype)thaw; + +#pragma mark - Unavailable Methods + +/** + `-[RLMArray init]` is not available because `RLMArray`s cannot be created directly. + `RLMArray` properties on `RLMObject`s are lazily created when accessed. + */ +- (instancetype)init __attribute__((unavailable("RLMArrays cannot be created directly"))); + +/** + `+[RLMArray new]` is not available because `RLMArray`s cannot be created directly. + `RLMArray` properties on `RLMObject`s are lazily created when accessed. + */ ++ (instancetype)new __attribute__((unavailable("RLMArrays cannot be created directly"))); + +@end + +/// :nodoc: +@interface RLMArray (Swift) +// for use only in Swift class definitions +- (instancetype)initWithObjectClassName:(NSString *)objectClassName; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMAsymmetricObject.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMAsymmetricObject.h new file mode 100644 index 000000000..09deb787e --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMAsymmetricObject.h @@ -0,0 +1,98 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2022 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMObjectSchema, RLMPropertyDescriptor, RLMRealm; +/** + `RLMAsymmetricObject` is a base class used to define asymmetric Realm objects. + + Asymmetric objects can only be created using the `createInRealm:` + function, and cannot be added, removed or queried. + When created, asymmetric objects will be synced unidirectionally to the MongoDB + database and cannot be accessed locally. + + Linking an asymmetric object within an `Object` is not allowed and will throw an error. + + The property types supported on `RLMAsymmetricObject` are the same as for `RLMObject`, + except for that asymmetric objects can only link to embedded objects, so `RLMObject` + and `RLMArray` properties are not supported (`RLMEmbeddedObject` and + `RLMArray` *are*). + */ +@interface RLMAsymmetricObject : RLMObjectBase + +#pragma mark - Creating & Initializing Objects + +/** + Creates an unmanaged instance of a Realm object. + */ +- (instancetype)init NS_DESIGNATED_INITIALIZER; + +/** + Creates an unmanaged instance of a Realm object. + + Pass in an `NSArray` or `NSDictionary` instance to set the values of the object's properties. + */ +- (instancetype)initWithValue:(id)value; + +/** + Returns the class name for a Realm object subclass. + + @warning Do not override. Realm relies on this method returning the exact class + name. + + @return The class name for the model class. + */ ++ (NSString *)className; + +/** + Creates an Asymmetric object, which will be synced unidirectionally and + cannot be queried locally. + + Objects created using this method will not be added to the Realm. + + @warning This method may only be called during a write transaction. + @warning This method always returns nil. + + @param realm The Realm to be used to create the asymmetric object.. + @param value The value used to populate the object. + + @return Returns `nil` + */ ++ (instancetype)createInRealm:(RLMRealm *)realm withValue:(id)value; + +#pragma mark - Properties + +/** + The object schema which lists the managed properties for the object. + */ +@property (nonatomic, readonly) RLMObjectSchema *objectSchema; + +#pragma mark - Dynamic Accessors + +/// :nodoc: +- (nullable id)objectForKeyedSubscript:(NSString *)key; + +/// :nodoc: +- (void)setObject:(nullable id)obj forKeyedSubscript:(NSString *)key; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMAsyncTask.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMAsyncTask.h new file mode 100644 index 000000000..9f7dc58da --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMAsyncTask.h @@ -0,0 +1,67 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2023 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** + A task object which can be used to observe or cancel an async open. + + When a synchronized Realm is opened asynchronously, the latest state of the + Realm is downloaded from the server before the completion callback is invoked. + This task object can be used to observe the state of the download or to cancel + it. This should be used instead of trying to observe the download via the sync + session as the sync session itself is created asynchronously, and may not exist + yet when -[RLMRealm asyncOpenWithConfiguration:completion:] returns. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // is internally thread-safe +@interface RLMAsyncOpenTask : NSObject +/** + Register a progress notification block. + + Each registered progress notification block is called whenever the sync + subsystem has new progress data to report until the task is either cancelled + or the completion callback is called. Progress notifications are delivered on + the main queue. + */ +- (void)addProgressNotificationBlock:(RLMProgressNotificationBlock)block; + +/** + Register a progress notification block which is called on the given queue. + + Each registered progress notification block is called whenever the sync + subsystem has new progress data to report until the task is either cancelled + or the completion callback is called. Progress notifications are delivered on + the supplied queue. + */ +- (void)addProgressNotificationOnQueue:(dispatch_queue_t)queue + block:(RLMProgressNotificationBlock)block; + +/** + Cancel the asynchronous open. + + Any download in progress will be cancelled, and the completion block for this + async open will never be called. If multiple async opens on the same Realm are + happening concurrently, all other opens will fail with the error "operation cancelled". + */ +- (void)cancel; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMBSON.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMBSON.h new file mode 100644 index 000000000..41750fd57 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMBSON.h @@ -0,0 +1,174 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +#pragma mark RLMBSONType + +/** + Allowed BSON types. + */ +typedef NS_ENUM(NSUInteger, RLMBSONType) { + /// BSON Null type + RLMBSONTypeNull, + /// BSON Int32 type + RLMBSONTypeInt32, + /// BSON Int64 type + RLMBSONTypeInt64, + /// BSON Bool type + RLMBSONTypeBool, + /// BSON Double type + RLMBSONTypeDouble, + /// BSON String type + RLMBSONTypeString, + /// BSON Binary type + RLMBSONTypeBinary, + /// BSON Timestamp type + RLMBSONTypeTimestamp, + /// BSON Datetime type + RLMBSONTypeDatetime, + /// BSON ObjectId type + RLMBSONTypeObjectId, + /// BSON Decimal128 type + RLMBSONTypeDecimal128, + /// BSON RegularExpression type + RLMBSONTypeRegularExpression, + /// BSON MaxKey type + RLMBSONTypeMaxKey, + /// BSON MinKey type + RLMBSONTypeMinKey, + /// BSON Document type + RLMBSONTypeDocument, + /// BSON Array type + RLMBSONTypeArray, + /// BSON UUID type + RLMBSONTypeUUID +}; + +#pragma mark RLMBSON + +/** + Protocol representing a BSON value. BSON is a computer data interchange format. + The name "BSON" is based on the term JSON and stands for "Binary JSON". + + The following types conform to RLMBSON: + + `NSNull` + `NSNumber` + `NSString` + `NSData` + `NSDateInterval` + `NSDate` + `RLMObjectId` + `RLMDecimal128` + `NSRegularExpression` + `RLMMaxKey` + `RLMMinKey` + `NSDictionary` + `NSArray` + `NSUUID` + + @see RLMBSONType + @see bsonspec.org + */ +@protocol RLMBSON + +/** + The BSON type for the conforming interface. + */ +@property (readonly) RLMBSONType bsonType NS_REFINED_FOR_SWIFT; + +/** + Whether or not this BSON is equal to another. + + @param other The BSON to compare to + */ +- (BOOL)isEqual:(_Nullable id)other; + +@end + +/// :nodoc: +@interface NSNull (RLMBSON) +@end + +/// :nodoc: +@interface NSNumber (RLMBSON) +@end + +/// :nodoc: +@interface NSString (RLMBSON) +@end + +/// :nodoc: +@interface NSData (RLMBSON) +@end + +/// :nodoc: +@interface NSDateInterval (RLMBSON) +@end + +/// :nodoc: +@interface NSDate (RLMBSON) +@end + +/// :nodoc: +@interface RLMObjectId (RLMBSON) +@end + +/// :nodoc: +@interface RLMDecimal128 (RLMBSON) +@end + +/// :nodoc: +@interface NSRegularExpression (RLMBSON) +@end + +/// MaxKey will always be the greatest value when comparing to other BSON types +RLM_SWIFT_SENDABLE RLM_FINAL +@interface RLMMaxKey : NSObject +@end + +/// MinKey will always be the smallest value when comparing to other BSON types +RLM_SWIFT_SENDABLE RLM_FINAL +@interface RLMMinKey : NSObject +@end + +/// :nodoc: +@interface RLMMaxKey (RLMBSON) +@end + +/// :nodoc: +@interface RLMMinKey (RLMBSON) +@end + +/// :nodoc: +@interface NSDictionary (RLMBSON) +@end + +/// :nodoc: +@interface NSMutableArray (RLMBSON) +@end + +/// :nodoc: +@interface NSArray (RLMBSON) +@end + +/// :nodoc: +@interface NSUUID (RLMBSON) +@end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMCollection.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMCollection.h new file mode 100644 index 000000000..eac117f17 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMCollection.h @@ -0,0 +1,613 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@protocol RLMValue; +@class RLMRealm, RLMResults, RLMSortDescriptor, RLMNotificationToken, RLMCollectionChange, RLMSectionedResults; +typedef RLM_CLOSED_ENUM(int32_t, RLMPropertyType); +/// A callback which is invoked on each element in the Results collection which returns the section key. +typedef id _Nullable(^RLMSectionedResultsKeyBlock)(id); + +/** + A homogenous collection of Realm-managed objects. Examples of conforming types + include `RLMArray`, `RLMSet`, `RLMResults`, and `RLMLinkingObjects`. + */ +@protocol RLMCollection + +#pragma mark - Properties + +/** + The number of objects in the collection. + */ +@property (nonatomic, readonly) NSUInteger count; + +/** + The type of the objects in the collection. + */ +@property (nonatomic, readonly) RLMPropertyType type; + +/** + Indicates whether the objects in the collection can be `nil`. + */ +@property (nonatomic, readonly, getter = isOptional) BOOL optional; + +/** + The class name of the objects contained in the collection. + + Will be `nil` if `type` is not RLMPropertyTypeObject. + */ +@property (nonatomic, readonly, copy, nullable) NSString *objectClassName; + +/** + The Realm which manages this collection, if any. + */ +@property (nonatomic, readonly, nullable) RLMRealm *realm; + +/** + Indicates if the collection is no longer valid. + + The collection becomes invalid if `invalidate` is called on the managing + Realm. Unmanaged collections are never invalidated. + */ +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +#pragma mark - Accessing Objects from a Collection + +/** + Returns the object at the index specified. + + @param index The index to look up. + + @return An object of the type contained in the collection. + */ +- (id)objectAtIndex:(NSUInteger)index; + +@optional + +/** + Returns an array containing the objects in the collection at the indexes + specified by a given index set. `nil` will be returned if the index set + contains an index out of the collections bounds. + + @param indexes The indexes in the collection to retrieve objects from. + + @return The objects at the specified indexes. + */ +- (nullable NSArray *)objectsAtIndexes:(NSIndexSet *)indexes; + +/** + Returns the first object in the collection. + + RLMSet is not ordered, and so for sets this will return an arbitrary object in + the set. It is not guaraneed to be a different object from what `lastObject` + gives even if the set has multiple objects in it. + + Returns `nil` if called on an empty collection. + + @return An object of the type contained in the collection. + */ +- (nullable id)firstObject; + +/** + Returns the last object in the collection. + + RLMSet is not ordered, and so for sets this will return an arbitrary object in + the set. It is not guaraneed to be a different object from what `firstObject` + gives even if the set has multiple objects in it. + + Returns `nil` if called on an empty collection. + + @return An object of the type contained in the collection. + */ +- (nullable id)lastObject; + +/// :nodoc: +- (id)objectAtIndexedSubscript:(NSUInteger)index; + +/** + Returns the index of an object in the collection. + + Returns `NSNotFound` if the object is not found in the collection. + + @param object An object (of the same type as returned from the `objectClassName` selector). + */ +- (NSUInteger)indexOfObject:(id)object; + +/** + Returns the index of the first object in the collection matching the predicate. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + + @return The index of the object, or `NSNotFound` if the object is not found in the collection. + */ +- (NSUInteger)indexOfObjectWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (NSUInteger)indexOfObjectWhere:(NSString *)predicateFormat args:(va_list)args; + +/** + Returns the index of the first object in the collection matching the predicate. + + @param predicate The predicate with which to filter the objects. + + @return The index of the object, or `NSNotFound` if the object is not found in the collection. + */ +- (NSUInteger)indexOfObjectWithPredicate:(NSPredicate *)predicate; + +@required + +#pragma mark - Querying a Collection + +/** + Returns all objects matching the given predicate in the collection. + + This is only supported for managed collections. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + @return An `RLMResults` containing objects that match the given predicate. + */ +- (RLMResults *)objectsWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (RLMResults *)objectsWhere:(NSString *)predicateFormat args:(va_list)args; + +/** + Returns all objects matching the given predicate in the collection. + + This is only supported for managed collections. + + @param predicate The predicate with which to filter the objects. + @return An `RLMResults` containing objects that match the given predicate. + */ +- (RLMResults *)objectsWithPredicate:(NSPredicate *)predicate; + +/** + Returns a sorted `RLMResults` from the collection. + + This is only supported for managed collections. + + @param keyPath The keyPath to sort by. + @param ascending The direction to sort in. + @return An `RLMResults` sorted by the specified key path. + */ +- (RLMResults *)sortedResultsUsingKeyPath:(NSString *)keyPath ascending:(BOOL)ascending; + +/** + Returns a sorted `RLMResults` from the collection. + + This is only supported for managed collections. + + @param properties An array of `RLMSortDescriptor`s to sort by. + @return An `RLMResults` sorted by the specified properties. + */ +- (RLMResults *)sortedResultsUsingDescriptors:(NSArray *)properties; + +/** + Returns a distinct `RLMResults` from the collection. + + This is only supported for managed collections. + + @param keyPaths The key paths used produce distinct results + @return An `RLMResults` made distinct based on the specified key paths + */ +- (RLMResults *)distinctResultsUsingKeyPaths:(NSArray *)keyPaths; + +/** + Returns an `NSArray` containing the results of invoking `valueForKey:` using + `key` on each of the collection's objects. + + @param key The name of the property. + + @return An `NSArray` containing results. + */ +- (nullable id)valueForKey:(NSString *)key; + +/** + Returns the value for the derived property identified by a given key path. + + @param keyPath A key path of the form relationship.property (with one or more relationships). + + @return The value for the derived property identified by keyPath. + */ +- (nullable id)valueForKeyPath:(NSString *)keyPath; + +/** + Invokes `setValue:forKey:` on each of the collection's objects using the specified `value` and `key`. + + @warning This method may only be called during a write transaction. + + @param value The object value. + @param key The name of the property. + */ +- (void)setValue:(nullable id)value forKey:(NSString *)key; + +#pragma mark - Notifications + +/** +Registers a block to be called each time the collection changes. + +The block will be asynchronously called with the initial collection, +and then called again after each write transaction which changes either any +of the objects in the collection, or which objects are in the collection. + +The `change` parameter will be `nil` the first time the block is called. +For each call after that, it will contain information about +which rows in the collection were added, removed or modified. If a +write transaction did not modify any objects in the results collection, +the block is not called at all. See the `RLMCollectionChange` documentation for +information on how the changes are reported and an example of updating a +`UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + +At the time when the block is called, the collection object will be fully +evaluated and up-to-date, and as long as you do not perform a write transaction +on the same thread or explicitly call `-[RLMRealm refresh]`, accessing it will +never perform blocking work. + +Notifications are delivered via the standard run loop, and so can't be +delivered while the run loop is blocked by other activity. When +notifications can't be delivered instantly, multiple notifications may be +coalesced into a single notification. This can include the notification +with the initial results. For example, the following code performs a write +transaction immediately after adding the notification block, so there is no +opportunity for the initial notification to be delivered first. As a +result, the initial notification will reflect the state of the Realm after +the write transaction. + + RLMResults *results = [Dog allObjects]; + NSLog(@"dogs.count: %zu", dogs.count); // => 0 + self.token = [results addNotificationBlock:^(RLMResults *dogs, + RLMCollectionChange *changes, + NSError *error) { + // Only fired once for the example + NSLog(@"dogs.count: %zu", dogs.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + [realm addObject:dog]; + }]; + // end of run loop execution context + +You must retain the returned token for as long as you want updates to continue +to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + +@warning This method cannot be called during a write transaction, or when the + containing Realm is read-only or frozen. + +@param block The block to be called whenever a change occurs. +@return A token which must be held for as long as you want updates to be delivered. +*/ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMResults *_Nullable results, + RLMCollectionChange *_Nullable change, + NSError *_Nullable error))block +__attribute__((warn_unused_result)); + +/** +Registers a block to be called each time the collection changes. + +The block will be asynchronously called with the initial collection, +and then called again after each write transaction which changes either any +of the objects in the collection, or which objects are in the collection. + +The `change` parameter will be `nil` the first time the block is called. +For each call after that, it will contain information about +which rows in the collection were added, removed or modified. If a +write transaction did not modify any objects in the results collection, +the block is not called at all. See the `RLMCollectionChange` documentation for +information on how the changes are reported and an example of updating a +`UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + +At the time when the block is called, the collection object will be fully +evaluated and up-to-date, and as long as you do not perform a write transaction +on the same thread or explicitly call `-[RLMRealm refresh]`, accessing it will +never perform blocking work. + +Notifications are delivered on the given queue. If the queue is blocked and +notifications can't be delivered instantly, multiple notifications may be +coalesced into a single notification. + +You must retain the returned token for as long as you want updates to continue +to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + +@warning This method cannot be called when the containing Realm is read-only or frozen. +@warning The queue must be a serial queue. + +@param block The block to be called whenever a change occurs. +@param queue The serial queue to deliver notifications to. +@return A token which must be held for as long as you want updates to be delivered. +*/ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMResults *_Nullable results, + RLMCollectionChange *_Nullable change, + NSError *_Nullable error))block + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +/** +Registers a block to be called each time the collection changes. + +The block will be asynchronously called with the initial collection, +and then called again after each write transaction which changes either any +of the objects in the collection, or which objects are in the collection. + +The `change` parameter will be `nil` the first time the block is called. +For each call after that, it will contain information about +which rows in the collection were added, removed or modified. If a +write transaction did not modify any objects in the results collection, +the block is not called at all. See the `RLMCollectionChange` documentation for +information on how the changes are reported and an example of updating a +`UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + +At the time when the block is called, the collection object will be fully +evaluated and up-to-date, and as long as you do not perform a write transaction +on the same thread or explicitly call `-[RLMRealm refresh]`, accessing it will +never perform blocking work. + +Notifications are delivered on the given queue. If the queue is blocked and +notifications can't be delivered instantly, multiple notifications may be +coalesced into a single notification. + +You must retain the returned token for as long as you want updates to continue +to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + +@warning This method cannot be called when the containing Realm is read-only or frozen. +@warning The queue must be a serial queue. + +@param block The block to be called whenever a change occurs. +@param queue The serial queue to deliver notifications to. +@param keyPaths The block will be called for changes occurring on these keypaths. If no +key paths are given, notifications are delivered for every property key path. +@return A token which must be held for as long as you want updates to be delivered. +*/ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMResults *_Nullable results, + RLMCollectionChange *_Nullable change, + NSError *_Nullable error))block + keyPaths:(nullable NSArray *)keyPaths + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +#pragma mark - Sectioned Results + +/** + Sorts and sections this collection from a given property key path, returning the result + as an instance of `RLMSectionedResults`. + + @param keyPath The property key path to sort on. + @param ascending The direction to sort in. + @param keyBlock A callback which is invoked on each element in the Results collection. + This callback is to return the section key for the element in the collection. + + @return An instance of RLMSectionedResults. + */ +- (RLMSectionedResults *)sectionedResultsSortedUsingKeyPath:(NSString *)keyPath + ascending:(BOOL)ascending + keyBlock:(RLMSectionedResultsKeyBlock)keyBlock; + +/** + Sorts and sections this collection from a given array of sort descriptors, returning the result + as an instance of `RLMSectionedResults`. + + @param sortDescriptors An array of `RLMSortDescriptor`s to sort by. + @param keyBlock A callback which is invoked on each element in the Results collection. + This callback is to return the section key for the element in the collection. + + @note The primary sort descriptor must be responsible for determining the section key. + + @return An instance of RLMSectionedResults. + */ +- (RLMSectionedResults *)sectionedResultsUsingSortDescriptors:(NSArray *)sortDescriptors + keyBlock:(RLMSectionedResultsKeyBlock)keyBlock; + +#pragma mark - Aggregating Property Values + +/** + Returns the minimum (lowest) value of the given property among all the objects + in the collection. + + NSNumber *min = [results minOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose minimum value is desired. Only properties of + types `int`, `float`, `double`, and `NSDate` are supported. + + @return The minimum value of the property, or `nil` if the Results are empty. + */ +- (nullable id)minOfProperty:(NSString *)property; + +/** + Returns the maximum (highest) value of the given property among all the objects + in the collection. + + NSNumber *max = [results maxOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose maximum value is desired. Only properties of + types `int`, `float`, `double`, and `NSDate` are supported. + + @return The maximum value of the property, or `nil` if the Results are empty. + */ +- (nullable id)maxOfProperty:(NSString *)property; + +/** + Returns the sum of the values of a given property over all the objects in the collection. + + NSNumber *sum = [results sumOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose values should be summed. Only properties of + types `int`, `float`, and `double` are supported. + + @return The sum of the given property. + */ +- (NSNumber *)sumOfProperty:(NSString *)property; + +/** + Returns the average value of a given property over the objects in the collection. + + NSNumber *average = [results averageOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose average value should be calculated. Only + properties of types `int`, `float`, and `double` are supported. + + @return The average value of the given property, or `nil` if the Results are empty. + */ +- (nullable NSNumber *)averageOfProperty:(NSString *)property; + +#pragma mark - Freeze + +/** + Indicates if the collection is frozen. + + Frozen collections are immutable and can be accessed from any thread. The + objects read from a frozen collection will also be frozen. + */ +@property (nonatomic, readonly, getter=isFrozen) BOOL frozen; + +/** + Returns a frozen (immutable) snapshot of this collection. + + The frozen copy is an immutable collection which contains the same data as + this collection currently contains, but will not update when writes are made + to the containing Realm. Unlike live collections, frozen collections can be + accessed from any thread. + + @warning This method cannot be called during a write transaction, or when the containing Realm is read-only. + @warning Holding onto a frozen collection for an extended period while + performing write transaction on the Realm may result in the Realm + file growing to large sizes. See + `RLMRealmConfiguration.maximumNumberOfActiveVersions` + for more information. + */ +- (instancetype)freeze; + +/** + Returns a live version of this frozen collection. + + This method resolves a reference to a live copy of the same frozen collection. + If called on a live collection, will return itself. +*/ +- (instancetype)thaw; + +@end + +/** + An `RLMSortDescriptor` stores a property name and a sort order for use with + `sortedResultsUsingDescriptors:`. It is similar to `NSSortDescriptor`, but supports + only the subset of functionality which can be efficiently run by Realm's query + engine. + + `RLMSortDescriptor` instances are immutable. + */ +RLM_SWIFT_SENDABLE RLM_FINAL +@interface RLMSortDescriptor : NSObject + +#pragma mark - Properties + +/** + The key path which the sort descriptor orders results by. + */ +@property (nonatomic, readonly) NSString *keyPath; + +/** + Whether the descriptor sorts in ascending or descending order. + */ +@property (nonatomic, readonly) BOOL ascending; + +#pragma mark - Methods + +/** + Returns a new sort descriptor for the given key path and sort direction. + */ ++ (instancetype)sortDescriptorWithKeyPath:(NSString *)keyPath ascending:(BOOL)ascending; + +/** + Returns a copy of the receiver with the sort direction reversed. + */ +- (instancetype)reversedSortDescriptor; + +@end + +/** + A `RLMCollectionChange` object encapsulates information about changes to collections + that are reported by Realm notifications. + + `RLMCollectionChange` is passed to the notification blocks registered with + `-addNotificationBlock` on `RLMArray` and `RLMResults`, and reports what rows in the + collection changed since the last time the notification block was called. + + The change information is available in two formats: a simple array of row + indices in the collection for each type of change, and an array of index paths + in a requested section suitable for passing directly to `UITableView`'s batch + update methods. A complete example of updating a `UITableView` named `tv`: + + [tv beginUpdates]; + [tv deleteRowsAtIndexPaths:[changes deletionsInSection:0] withRowAnimation:UITableViewRowAnimationAutomatic]; + [tv insertRowsAtIndexPaths:[changes insertionsInSection:0] withRowAnimation:UITableViewRowAnimationAutomatic]; + [tv reloadRowsAtIndexPaths:[changes modificationsInSection:0] withRowAnimation:UITableViewRowAnimationAutomatic]; + [tv endUpdates]; + + All of the arrays in an `RLMCollectionChange` are always sorted in ascending order. + */ +@interface RLMCollectionChange : NSObject +/// The indices of objects in the previous version of the collection which have +/// been removed from this one. +@property (nonatomic, readonly) NSArray *deletions; + +/// The indices in the new version of the collection which were newly inserted. +@property (nonatomic, readonly) NSArray *insertions; + +/** + The indices in the new version of the collection which were modified. + + For `RLMResults`, this means that one or more of the properties of the object at + that index were modified (or an object linked to by that object was + modified). + + For `RLMArray`, the array itself being modified to contain a + different object at that index will also be reported as a modification. + */ +@property (nonatomic, readonly) NSArray *modifications; + +/// Returns the index paths of the deletion indices in the given section. +- (NSArray *)deletionsInSection:(NSUInteger)section; + +/// Returns the index paths of the insertion indices in the given section. +- (NSArray *)insertionsInSection:(NSUInteger)section; + +/// Returns the index paths of the modification indices in the given section. +- (NSArray *)modificationsInSection:(NSUInteger)section; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMConstants.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMConstants.h new file mode 100644 index 000000000..0bc8db972 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMConstants.h @@ -0,0 +1,156 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#define RLM_HEADER_AUDIT_BEGIN NS_HEADER_AUDIT_BEGIN +#define RLM_HEADER_AUDIT_END NS_HEADER_AUDIT_END + +#define RLM_SWIFT_SENDABLE NS_SWIFT_SENDABLE + +#define RLM_FINAL __attribute__((objc_subclassing_restricted)) + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +// Swift 5 considers NS_ENUM to be "open", meaning there could be values present +// other than the defined cases (which allows adding more cases later without +// it being a breaking change), while older versions consider it "closed". +#ifdef NS_CLOSED_ENUM +#define RLM_CLOSED_ENUM NS_CLOSED_ENUM +#else +#define RLM_CLOSED_ENUM NS_ENUM +#endif + +#if __has_attribute(ns_error_domain) && (!defined(__cplusplus) || !__cplusplus || __cplusplus >= 201103L) +#define RLM_ERROR_ENUM(type, name, domain) \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wignored-attributes\"") \ + NS_ENUM(type, __attribute__((ns_error_domain(domain))) name) \ + _Pragma("clang diagnostic pop") +#else +#define RLM_ERROR_ENUM(type, name, domain) NS_ENUM(type, name) +#endif + +#define RLM_HIDDEN __attribute__((visibility("hidden"))) +#define RLM_VISIBLE __attribute__((visibility("default"))) +#define RLM_HIDDEN_BEGIN _Pragma("GCC visibility push(hidden)") +#define RLM_HIDDEN_END _Pragma("GCC visibility pop") +#define RLM_DIRECT __attribute__((objc_direct)) +#define RLM_DIRECT_MEMBERS __attribute__((objc_direct_members)) + +#pragma mark - Enums + +/** + `RLMPropertyType` is an enumeration describing all property types supported in Realm models. + + For more information, see [Realm Models](https://www.mongodb.com/docs/realm/sdk/swift/fundamentals/object-models-and-schemas/). + */ +typedef RLM_CLOSED_ENUM(int32_t, RLMPropertyType) { + +#pragma mark - Primitive types + /** Integers: `NSInteger`, `int`, `long`, `Int` (Swift) */ + RLMPropertyTypeInt = 0, + /** Booleans: `BOOL`, `bool`, `Bool` (Swift) */ + RLMPropertyTypeBool = 1, + /** Floating-point numbers: `float`, `Float` (Swift) */ + RLMPropertyTypeFloat = 5, + /** Double-precision floating-point numbers: `double`, `Double` (Swift) */ + RLMPropertyTypeDouble = 6, + /** NSUUID, UUID */ + RLMPropertyTypeUUID = 12, + +#pragma mark - Object types + + /** Strings: `NSString`, `String` (Swift) */ + RLMPropertyTypeString = 2, + /** Binary data: `NSData` */ + RLMPropertyTypeData = 3, + /** Any type: `id`, `AnyRealmValue` (Swift) */ + RLMPropertyTypeAny = 9, + /** Dates: `NSDate` */ + RLMPropertyTypeDate = 4, + +#pragma mark - Linked object types + + /** Realm model objects. See [Realm Models](https://www.mongodb.com/docs/realm/sdk/swift/fundamentals/object-models-and-schemas/) for more information. */ + RLMPropertyTypeObject = 7, + /** Realm linking objects. See [Realm Models](https://www.mongodb.com/docs/realm/sdk/swift/fundamentals/relationships/#inverse-relationship) for more information. */ + RLMPropertyTypeLinkingObjects = 8, + + RLMPropertyTypeObjectId = 10, + RLMPropertyTypeDecimal128 = 11 +}; + +#pragma mark - Notification Constants + +/** + A notification indicating that changes were made to a Realm. +*/ +typedef NSString * RLMNotification NS_EXTENSIBLE_STRING_ENUM; + +/** + This notification is posted when a write transaction has been committed to a Realm on a different thread for + the same file. + + It is not posted if `autorefresh` is enabled, or if the Realm is refreshed before the notification has a chance + to run. + + Realms with autorefresh disabled should normally install a handler for this notification which calls + `-[RLMRealm refresh]` after doing some work. Refreshing the Realm is optional, but not refreshing the Realm may lead to + large Realm files. This is because an extra copy of the data must be kept for the stale Realm. + */ +extern RLMNotification const RLMRealmRefreshRequiredNotification NS_SWIFT_NAME(RefreshRequired); + +/** + This notification is posted by a Realm when a write transaction has been + committed to a Realm on a different thread for the same file. + + It is not posted if `-[RLMRealm autorefresh]` is enabled, or if the Realm is + refreshed before the notification has a chance to run. + + Realms with autorefresh disabled should normally install a handler for this + notification which calls `-[RLMRealm refresh]` after doing some work. Refreshing + the Realm is optional, but not refreshing the Realm may lead to large Realm + files. This is because Realm must keep an extra copy of the data for the stale + Realm. + */ +extern RLMNotification const RLMRealmDidChangeNotification NS_SWIFT_NAME(DidChange); + +#pragma mark - Error keys + +/** Key to identify the associated backup Realm configuration in an error's `userInfo` dictionary */ +extern NSString * const RLMBackupRealmConfigurationErrorKey; + +#pragma mark - Other Constants + +/** The schema version used for uninitialized Realms */ +extern const uint64_t RLMNotVersioned; + +/** The corresponding value is the name of an exception thrown by Realm. */ +extern NSString * const RLMExceptionName; + +/** The corresponding value is a Realm file version. */ +extern NSString * const RLMRealmVersionKey; + +/** The corresponding key is the version of the underlying database engine. */ +extern NSString * const RLMRealmCoreVersionKey; + +/** The corresponding key is the Realm invalidated property name. */ +extern NSString * const RLMInvalidatedKey; + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMCredentials.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMCredentials.h new file mode 100644 index 000000000..adff4e7e9 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMCredentials.h @@ -0,0 +1,126 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) +@protocol RLMBSON; + +/// A token representing an identity provider's credentials. +typedef NSString *RLMCredentialsToken; + +/// A type representing the unique identifier of an Atlas App Services identity provider. +typedef NSString *RLMIdentityProvider NS_EXTENSIBLE_STRING_ENUM; + +/// The username/password identity provider. User accounts are handled by Atlas App Services directly without the +/// involvement of a third-party identity provider. +extern RLMIdentityProvider const RLMIdentityProviderUsernamePassword; + +/// A Facebook account as an identity provider. +extern RLMIdentityProvider const RLMIdentityProviderFacebook; + +/// A Google account as an identity provider. +extern RLMIdentityProvider const RLMIdentityProviderGoogle; + +/// An Apple account as an identity provider. +extern RLMIdentityProvider const RLMIdentityProviderApple; + +/// A JSON Web Token as an identity provider. +extern RLMIdentityProvider const RLMIdentityProviderJWT; + +/// An Anonymous account as an identity provider. +extern RLMIdentityProvider const RLMIdentityProviderAnonymous; + +/// An Realm Cloud function as an identity provider. +extern RLMIdentityProvider const RLMIdentityProviderFunction; + +/// A user api key as an identity provider. +extern RLMIdentityProvider const RLMIdentityProviderUserAPIKey; + +/// A server api key as an identity provider. +extern RLMIdentityProvider const RLMIdentityProviderServerAPIKey; + +/** + Opaque credentials representing a specific Realm App user. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class +@interface RLMCredentials : NSObject + +/// The name of the identity provider which generated the credentials token. +@property (nonatomic, readonly) RLMIdentityProvider provider; + +/** + Construct and return credentials from a Facebook account token. + */ ++ (instancetype)credentialsWithFacebookToken:(RLMCredentialsToken)token; + +/** + Construct and return credentials from a Google account token. + */ ++ (instancetype)credentialsWithGoogleAuthCode:(RLMCredentialsToken)token; + +/** + Construct and return credentials from a Google id token. + */ ++ (instancetype)credentialsWithGoogleIdToken:(RLMCredentialsToken)token; + +/** + Construct and return credentials from an Apple account token. + */ ++ (instancetype)credentialsWithAppleToken:(RLMCredentialsToken)token; + +/** + Construct and return credentials for an Atlas App Services function using a mongodb document as a json payload. +*/ ++ (instancetype)credentialsWithFunctionPayload:(NSDictionary> *)payload; + +/** + Construct and return credentials from a user api key. +*/ ++ (instancetype)credentialsWithUserAPIKey:(NSString *)apiKey; + +/** + Construct and return credentials from a server api key. +*/ ++ (instancetype)credentialsWithServerAPIKey:(NSString *)apiKey; + +/** + Construct and return Atlas App Services credentials from an email and password. + */ ++ (instancetype)credentialsWithEmail:(NSString *)email + password:(NSString *)password; + +/** + Construct and return credentials from a JSON Web Token. + */ ++ (instancetype)credentialsWithJWT:(NSString *)token; + +/** + Construct and return anonymous credentials + */ ++ (instancetype)anonymousCredentials; + +/// :nodoc: +- (instancetype)init __attribute__((unavailable("RLMAppCredentials cannot be created directly"))); + +/// :nodoc: ++ (instancetype)new __attribute__((unavailable("RLMAppCredentials cannot be created directly"))); + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMDecimal128.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMDecimal128.h new file mode 100644 index 000000000..f6224bbf2 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMDecimal128.h @@ -0,0 +1,110 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** + A 128-bit IEEE 754-2008 decimal floating point number. + + This type is similar to Swift's built-in Decimal type, but allocates bits + differently, resulting in a different representable range. (NS)Decimal stores a + significand of up to 38 digits long and an exponent from -128 to 127, while + this type stores up to 34 digits of significand and an exponent from -6143 to + 6144. + */ +RLM_SWIFT_SENDABLE // immutable +@interface RLMDecimal128 : NSObject +/// Creates a new zero-initialized decimal128. +- (instancetype)init; + +/// Converts the given value to a RLMDecimal128. +/// +/// The following types can be converted to RLMDecimal128: +/// - NSNumber +/// - NSString +/// - NSDecimalNumber +/// +/// Passing a value with a type not in this list is a fatal error. Passing a +/// string which cannot be parsed as a valid Decimal128 is a fatal error. +- (instancetype)initWithValue:(id)value; + +/// Converts the given number to a RLMDecimal128. +- (instancetype)initWithNumber:(NSNumber *)number; + +/// Parses the given string to a RLMDecimal128. +/// +/// Returns a decimal where `isNaN` is `YES` if the string cannot be parsed as a decimal. `error` is never set +/// and this will never actually return `nil`. +- (nullable instancetype)initWithString:(NSString *)string error:(NSError **)error; + +/// Converts the given number to a RLMDecimal128. ++ (instancetype)decimalWithNumber:(NSNumber *)number; + +/// The minimum value for RLMDecimal128. +@property (class, readonly, copy) RLMDecimal128 *minimumDecimalNumber NS_REFINED_FOR_SWIFT; + +/// The maximum value for RLMDecimal128. +@property (class, readonly, copy) RLMDecimal128 *maximumDecimalNumber NS_REFINED_FOR_SWIFT; + +/// Convert this value to a double. This is a lossy conversion. +@property (nonatomic, readonly) double doubleValue; + +/// Convert this value to a NSDecimal. This may be a lossy conversion. +@property (nonatomic, readonly) NSDecimal decimalValue; + +/// Convert this value to a string. +@property (nonatomic, readonly) NSString *stringValue; + +/// Gets if this Decimal128 represents a NaN value. +@property (nonatomic, readonly) BOOL isNaN; + +/// The magnitude of this RLMDecimal128. +@property (nonatomic, readonly) RLMDecimal128 *magnitude NS_REFINED_FOR_SWIFT; + +/// Replaces this RLMDecimal128 value with its additive inverse. +- (void)negate; + +/// Adds the right hand side to the current value and returns the result. +- (RLMDecimal128 *)decimalNumberByAdding:(RLMDecimal128 *)decimalNumber; + +/// Divides the right hand side to the current value and returns the result. +- (RLMDecimal128 *)decimalNumberByDividingBy:(RLMDecimal128 *)decimalNumber; + +/// Subtracts the right hand side to the current value and returns the result. +- (RLMDecimal128 *)decimalNumberBySubtracting:(RLMDecimal128 *)decimalNumber; + +/// Multiply the right hand side to the current value and returns the result. +- (RLMDecimal128 *)decimalNumberByMultiplyingBy:(RLMDecimal128 *)decimalNumber; + +/// Comparision operator to check if the right hand side is greater than the current value. +- (BOOL)isGreaterThan:(nullable RLMDecimal128 *)decimalNumber; + +/// Comparision operator to check if the right hand side is greater than or equal to the current value. +- (BOOL)isGreaterThanOrEqualTo:(nullable RLMDecimal128 *)decimalNumber; + +/// Comparision operator to check if the right hand side is less than the current value. +- (BOOL)isLessThan:(nullable RLMDecimal128 *)decimalNumber; + +/// Comparision operator to check if the right hand side is less than or equal to the current value. +- (BOOL)isLessThanOrEqualTo:(nullable RLMDecimal128 *)decimalNumber; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMDictionary.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMDictionary.h new file mode 100644 index 000000000..9c8cac538 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMDictionary.h @@ -0,0 +1,559 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2021 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMObject, RLMResults, RLMDictionaryChange; + +/** + `RLMDictionary` is a container type in Realm representing a dynamic collection of key-value pairs. + + Unlike `NSDictionary`, `RLMDictionary`s hold a single key and value type. + This is referred to in these docs as the “type” and “keyType” of the dictionary. + + When declaring an `RLMDictionary` property, the object type and keyType must be marked as conforming to a + protocol by the same name as the objects it should contain. + + RLM_COLLECTION_TYPE(ObjectType) + ... + @property RLMDictionary *objectTypeDictionary; + + `RLMDictionary`s can be queried with the same predicates as `RLMObject` and `RLMResult`s. + + `RLMDictionary`s cannot be created directly. `RLMDictionary` properties on `RLMObject`s are + lazily created when accessed, or can be obtained by querying a Realm. + + `RLMDictionary` only supports `NSString` as a key. Realm disallows the use of `.` or `$` characters within a dictionary key. + + ### Key-Value Observing + + `RLMDictionary` supports dictionary key-value observing on `RLMDictionary` properties on `RLMObject` + subclasses, and the `invalidated` property on `RLMDictionary` instances themselves is + key-value observing compliant when the `RLMDictionary` is attached to a managed + `RLMObject` (`RLMDictionary`s on unmanaged `RLMObject`s will never become invalidated). + */ +@interface RLMDictionary: NSObject + +#pragma mark - Properties + +/** + The number of entries in the dictionary. + */ +@property (nonatomic, readonly, assign) NSUInteger count; + +/** + The type of the objects in the dictionary. + */ +@property (nonatomic, readonly, assign) RLMPropertyType type; + +/** + The type of the key used in this dictionary. + */ +@property (nonatomic, readonly, assign) RLMPropertyType keyType; + +/** + Indicates whether the objects in the collection can be `nil`. + */ +@property (nonatomic, readonly, getter = isOptional) BOOL optional; + +/** + The class name of the objects contained in the dictionary. + + Will be `nil` if `type` is not RLMPropertyTypeObject. + */ +@property (nonatomic, readonly, copy, nullable) NSString *objectClassName; + +/** + The Realm which manages the dictionary. Returns `nil` for unmanaged dictionary. + */ +@property (nonatomic, readonly, nullable) RLMRealm *realm; + +/** + Indicates if the dictionary can no longer be accessed. + */ +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +/** + Indicates if the dictionary is frozen. + + Frozen dictionaries are immutable and can be accessed from any thread. Frozen dictionaries + are created by calling `-freeze` on a managed live dictionary. Unmanaged dictionaries are + never frozen. + */ +@property (nonatomic, readonly, getter = isFrozen) BOOL frozen; + +#pragma mark - Accessing Objects from a Dictionary + +/** + Returns the value associated with a given key. + + @param key The name of the property. + + @discussion If key does not start with “@”, invokes object(forKey:). If key does start + with “@”, strips the “@” and invokes [super valueForKey:] with the rest of the key. + + @return A value associated with a given key or `nil`. + */ +- (nullable id)valueForKey:(nonnull RLMKeyType)key; + +/** + Returns an array containing the dictionary’s keys. + + @note The order of the elements in the array is not defined. + */ +@property(readonly, copy) NSArray *allKeys; + +/** + Returns an array containing the dictionary’s values. + + @note The order of the elements in the array is not defined. + */ +@property(readonly, copy) NSArray *allValues; + +/** + Returns the value associated with a given key. + + @note `nil` will be returned if no value is associated with a given key. NSNull will be returned + where null is associated with the key. + + @param key The key for which to return the corresponding value. + + @return The value associated with key. + */ +- (nullable RLMObjectType)objectForKey:(nonnull RLMKeyType)key; + +/** + Returns the value associated with a given key. + + @note `nil` will be returned if no value is associated with a given key. NSNull will be returned + where null is associated with the key. + + @param key The key for which to return the corresponding value. + + @return The value associated with key. + */ +- (nullable RLMObjectType)objectForKeyedSubscript:(RLMKeyType)key; + +/** + Applies a given block object to the each key-value pair of the dictionary. + + @param block A block object to operate on entries in the dictionary. + + @note If the block sets *stop to YES, the enumeration stops. + */ +- (void)enumerateKeysAndObjectsUsingBlock:(void (^)(RLMKeyType key, RLMObjectType obj, BOOL *stop))block; + +#pragma mark - Adding, Removing, and Replacing Objects in a Dictionary + +/** + Replace the contents of a dictionary with the contents of another dictionary - NSDictionary or RLMDictionary. + + This will remove all elements in this dictionary and then apply each element from the given dictionary. + + @warning This method may only be called during a write transaction. + @warning If otherDictionary is self this will result in an empty dictionary. + */ +- (void)setDictionary:(id)otherDictionary; + +/** + Removes all contents in the dictionary. + + @warning This method may only be called during a write transaction. + */ +- (void)removeAllObjects; + +/** + Removes from the dictionary entries specified by elements in a given array. If a given key does not + exist, no mutation will happen for that key. + + @warning This method may only be called during a write transaction. + */ +- (void)removeObjectsForKeys:(NSArray *)keyArray; + +/** + Removes a given key and its associated value from the dictionary. If the key does not exist the dictionary + will not be modified. + + @warning This method may only be called during a write transaction. + */ +- (void)removeObjectForKey:(RLMKeyType)key; + +/** + Adds a given key-value pair to the dictionary if the key is not present, or updates the value for the given key + if the key already present. + + @warning This method may only be called during a write transaction. + */ +- (void)setObject:(nullable RLMObjectType)obj forKeyedSubscript:(RLMKeyType)key; + +/** + Adds a given key-value pair to the dictionary if the key is not present, or updates the value for the given key + if the key already present. + + @warning This method may only be called during a write transaction. + */ +- (void)setObject:(nullable RLMObjectType)anObject forKey:(RLMKeyType)aKey; + +/** + Adds to the receiving dictionary the entries from another dictionary. + + @note If the receiving dictionary contains the same key(s) as the otherDictionary, then + the receiving dictionary will update each key-value pair for the matching key. + + @warning This method may only be called during a write transaction. + + @param otherDictionary An enumerable object such as `NSDictionary` or `RLMDictionary` which contains objects of the + same type as the receiving dictionary. + */ +- (void)addEntriesFromDictionary:(id )otherDictionary; + +#pragma mark - Querying a Dictionary + +/** + Returns all the values matching the given predicate in the dictionary. + + @note The keys in the dictionary are ignored when quering values, and they will not be returned in the `RLMResults`. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + + @return An `RLMResults` of objects that match the given predicate. + */ +- (RLMResults *)objectsWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (RLMResults *)objectsWhere:(NSString *)predicateFormat args:(va_list)args; + +/** + Returns all the values matching the given predicate in the dictionary. + + @note The keys in the dictionary are ignored when quering values, and they will not be returned in the `RLMResults`. + + @param predicate The predicate with which to filter the objects. + + @return An `RLMResults` of objects that match the given predicate + */ +- (RLMResults *)objectsWithPredicate:(NSPredicate *)predicate; + +/** + Returns a sorted RLMResults of all values in the dictionary. + + @note The keys in the dictionary are ignored when sorting values, and they will not be returned in the `RLMResults`. + + @param keyPath The key path to sort by. + @param ascending The direction to sort in. + + @return An `RLMResults` sorted by the specified key path. + */- (RLMResults *)sortedResultsUsingKeyPath:(NSString *)keyPath ascending:(BOOL)ascending; + +/** + Returns a sorted RLMResults of all values in the dictionary. + + @note The keys in the dictionary are ignored when sorting values, and they will not be returned in the `RLMResults`. + + @param properties An array of `RLMSortDescriptor`s to sort by. + + @return An `RLMResults` sorted by the specified properties. + */ +- (RLMResults *)sortedResultsUsingDescriptors:(NSArray *)properties; + +/** + Returns a distinct `RLMResults` from all values in the dictionary. + + @note The keys in the dictionary are ignored, and they will not be returned in the `RLMResults`. + + @param keyPaths The key paths to distinct on. + + @return An `RLMResults` with the distinct values of the keypath(s). + */ +- (RLMResults *)distinctResultsUsingKeyPaths:(NSArray *)keyPaths; + +#pragma mark - Aggregating Property Values + +/** + Returns the minimum (lowest) value of the given property among all the values in the dictionary. + + NSNumber *min = [object.dictionaryProperty minOfProperty:@"age"]; + + @param property The property whose minimum value is desired. Only properties of + types `int`, `float`, `double`, `NSDate`, `RLMValue` and `RLMDecimal128` are supported. + + @return The minimum value of the property, or `nil` if the dictionary is empty. + */ +- (nullable id)minOfProperty:(NSString *)property; + +/** + Returns the maximum (highest) value of the given property among all the objects in the dictionary. + + NSNumber *max = [object.dictionaryProperty maxOfProperty:@"age"]; + + @param property The property whose minimum value is desired. Only properties of + types `int`, `float`, `double`, `NSDate`, `RLMValue` and `RLMDecimal128` are supported. + + @return The maximum value of the property, or `nil` if the dictionary is empty. + */ +- (nullable id)maxOfProperty:(NSString *)property; + +/** + Returns the sum of distinct values of a given property over all the objects in the dictionary. + + NSNumber *sum = [object.dictionaryProperty sumOfProperty:@"age"]; + + @param property The property whose minimum value is desired. Only properties of + types `int`, `float`, `double`, `RLMValue` and `RLMDecimal128` are supported. + + @return The sum of the given property. + */ +- (NSNumber *)sumOfProperty:(NSString *)property; + +/** + Returns the average value of a given property over the objects in the dictionary. + + NSNumber *average = [object.dictionaryProperty averageOfProperty:@"age"]; + + @param property The property whose minimum value is desired. Only properties of + types `int`, `float`, `double`, `NSDate`, `RLMValue` and `RLMDecimal128` are supported. + + @return The average value of the given property, or `nil` if the dictionary is empty. + */ +- (nullable NSNumber *)averageOfProperty:(NSString *)property; + +#pragma mark - Notifications + +/** + Registers a block to be called each time the dictionary changes. + + The block will be asynchronously called with the initial dictionary, and then + called again after each write transaction which changes any of the keys or values + within the dictionary. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which keys in the dictionary were added, modified or deleted. If a write transaction + did not modify any keys or values in the dictionary, the block is not called at all. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + Person *person = [[Person allObjectsInRealm:realm] firstObject]; + NSLog(@"person.dogs.count: %zu", person.dogs.count); // => 0 + self.token = [person.dogs addNotificationBlock(RLMDictionary *dogs, + RLMDictionaryChange *changes, + NSError *error) { + // Only fired once for the example + NSLog(@"dogs.count: %zu", dogs.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + person.dogs[@"frenchBulldog"] = dog; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning This method may only be called on a non-frozen managed dictionary. + + @param block The block to be called each time the dictionary changes. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMDictionary *_Nullable dictionary, + RLMDictionaryChange *_Nullable changes, + NSError *_Nullable error))block +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the dictionary changes. + + The block will be asynchronously called with the initial dictionary, and then + called again after each write transaction which changes any of the key-value in + the dictionary or which objects are in the results. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which keys in the dictionary were added or modified. If a write transaction + did not modify any objects in the dictionary, the block is not called at all. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMDictionary *_Nullable dictionary, + RLMDictionaryChange *_Nullable changes, + NSError *_Nullable error))block + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the dictionary changes. + + The block will be asynchronously called with the initial dictionary, and then + called again after each write transaction which changes any of the key-value in + the dictionary or which objects are in the results. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which keys in the dictionary were added or modified. If a write transaction + did not modify any objects in the dictionary, the block is not called at all. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMDictionary *_Nullable dictionary, + RLMDictionaryChange *_Nullable changes, + NSError *_Nullable error))block + keyPaths:(nullable NSArray *)keyPaths + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the dictionary changes. + + The block will be asynchronously called with the initial dictionary, and then + called again after each write transaction which changes any of the key-value in + the dictionary or which objects are in the results. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which keys in the dictionary were added or modified. If a write transaction + did not modify any objects in the dictionary, the block is not called at all. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMDictionary *_Nullable dictionary, + RLMDictionaryChange *_Nullable changes, + NSError *_Nullable error))block + keyPaths:(nullable NSArray *)keyPaths +__attribute__((warn_unused_result)); + +#pragma mark - Freeze + +/** + Returns a frozen (immutable) snapshot of a dictionary. + + The frozen copy is an immutable dictionary which contains the same data as this + dictionary currently contains, but will not update when writes are made to the + containing Realm. Unlike live dictionaries, frozen dictionaries can be accessed from any + thread. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning This method may only be called on a managed dictionary. + @warning Holding onto a frozen dictionary for an extended period while performing + write transaction on the Realm may result in the Realm file growing + to large sizes. See `RLMRealmConfiguration.maximumNumberOfActiveVersions` + for more information. + */ +- (instancetype)freeze; + +/** + Returns a live version of this frozen collection. + + This method resolves a reference to a live copy of the same frozen collection. + If called on a live collection, will return itself. +*/ +- (instancetype)thaw; + +#pragma mark - Unavailable Methods +/** + `-[RLMDictionary init]` is not available because `RLMDictionary`s cannot be created directly. + `RLMDictionary` properties on `RLMObject`s are lazily created when accessed. + */ +- (instancetype)init __attribute__((unavailable("RLMDictionary cannot be created directly"))); +/** + `+[RLMDictionary new]` is not available because `RLMDictionary`s cannot be created directly. + `RLMDictionary` properties on `RLMObject`s are lazily created when accessed. + */ ++ (instancetype)new __attribute__((unavailable("RLMDictionary cannot be created directly"))); + +@end + +/** + A `RLMDictionaryChange` object encapsulates information about changes to dictionaries + that are reported by Realm notifications. + + `RLMDictionaryChange` is passed to the notification blocks registered with + `-addNotificationBlock` on `RLMDictionary`, and reports what keys in the + dictionary changed since the last time the notification block was called. + */ +@interface RLMDictionaryChange : NSObject +/// The keys in the new version of the dictionary which were newly inserted. +@property (nonatomic, readonly) NSArray *insertions; + +/// The keys in the new version of the dictionary which were modified. +@property (nonatomic, readonly) NSArray *modifications; + +/// The keys which were deleted from the old version. +@property (nonatomic, readonly) NSArray *deletions; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMEmailPasswordAuth.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMEmailPasswordAuth.h new file mode 100644 index 000000000..748eb26af --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMEmailPasswordAuth.h @@ -0,0 +1,120 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@protocol RLMBSON; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/// A block type used to report an error +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMEmailPasswordAuthOptionalErrorBlock)(NSError * _Nullable); + +/** + A client for the email/password authentication provider which + can be used to obtain a credential for logging in, + and to perform requests specifically related to the email/password provider. +*/ +RLM_SWIFT_SENDABLE RLM_FINAL // is internally thread-safe +@interface RLMEmailPasswordAuth : RLMProviderClient + +/** + Registers a new email identity with the email/password provider, + and sends a confirmation email to the provided address. + + @param email The email address of the user to register. + @param password The password that the user created for the new email/password identity. + @param completionHandler A callback to be invoked once the call is complete. +*/ + +- (void)registerUserWithEmail:(NSString *)email + password:(NSString *)password + completion:(RLMEmailPasswordAuthOptionalErrorBlock)completionHandler NS_SWIFT_NAME(registerUser(email:password:completion:)); + +/** + Confirms an email identity with the email/password provider. + + @param token The confirmation token that was emailed to the user. + @param tokenId The confirmation token id that was emailed to the user. + @param completionHandler A callback to be invoked once the call is complete. +*/ +- (void)confirmUser:(NSString *)token + tokenId:(NSString *)tokenId + completion:(RLMEmailPasswordAuthOptionalErrorBlock)completionHandler; + +/** + Re-sends a confirmation email to a user that has registered but + not yet confirmed their email address. + + @param email The email address of the user to re-send a confirmation for. + @param completionHandler A callback to be invoked once the call is complete. +*/ +- (void)resendConfirmationEmail:(NSString *)email + completion:(RLMEmailPasswordAuthOptionalErrorBlock)completionHandler; + +/** + Retries custom confirmation function for a given email address. + + @param email The email address of the user to retry custom confirmation logic. + @param completionHandler A callback to be invoked once the call is complete. + */ +- (void)retryCustomConfirmation:(NSString *)email + completion:(RLMEmailPasswordAuthOptionalErrorBlock)completionHandler; + +/** + Sends a password reset email to the given email address. + + @param email The email address of the user to send a password reset email for. + @param completionHandler A callback to be invoked once the call is complete. +*/ +- (void)sendResetPasswordEmail:(NSString *)email + completion:(RLMEmailPasswordAuthOptionalErrorBlock)completionHandler; + +/** + Resets the password of an email identity using the + password reset token emailed to a user. + + @param password The new password. + @param token The password reset token that was emailed to the user. + @param tokenId The password reset token id that was emailed to the user. + @param completionHandler A callback to be invoked once the call is complete. +*/ +- (void)resetPasswordTo:(NSString *)password + token:(NSString *)token + tokenId:(NSString *)tokenId + completion:(RLMEmailPasswordAuthOptionalErrorBlock)completionHandler; + +/** + Resets the password of an email identity using the + password reset function set up in the application. + + @param email The email address of the user. + @param password The desired new password. + @param args A list of arguments passed in as a BSON array. + @param completionHandler A callback to be invoked once the call is complete. +*/ +- (void)callResetPasswordFunction:(NSString *)email + password:(NSString *)password + args:(NSArray> *)args + completion:(RLMEmailPasswordAuthOptionalErrorBlock)completionHandler NS_REFINED_FOR_SWIFT; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) + diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMEmbeddedObject.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMEmbeddedObject.h new file mode 100644 index 000000000..4db6248ca --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMEmbeddedObject.h @@ -0,0 +1,367 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMObjectSchema, RLMPropertyDescriptor, RLMRealm, RLMNotificationToken, RLMPropertyChange; +typedef void (^RLMObjectChangeBlock)(BOOL deleted, + NSArray *_Nullable changes, + NSError *_Nullable error); +/** + `RLMEmbeddedObject` is a base class used to define Realm model objects. + + Embedded objects work similarly to normal objects, but are owned by a single + parent Object (which itself may be embedded). Unlike normal top-level objects, + embedded objects cannot be directly created in or added to a Realm. Instead, + they can only be created as part of a parent object, or by assigning an + unmanaged object to a parent object's property. Embedded objects are + automatically deleted when the parent object is deleted or when the parent is + modified to no longer point at the embedded object, either by reassigning an + RLMObject property or by removing the embedded object from the array containing + it. + + Embedded objects can only ever have a single parent object which links to them, + and attempting to link to an existing managed embedded object will throw an + exception. + + The property types supported on `RLMEmbeddedObject` are the same as for + `RLMObject`, except for that embedded objects cannot link to top-level objects, + so `RLMObject` and `RLMArray` properties are not supported + (`RLMEmbeddedObject` and `RLMArray` *are*). + + Embedded objects cannot have primary keys or indexed properties. + */ + +@interface RLMEmbeddedObject : RLMObjectBase + +#pragma mark - Creating & Initializing Objects + +/** + Creates an unmanaged instance of a Realm object. + + Unmanaged embedded objects can be added to a Realm by assigning them to an + object property of a managed Realm object or by adding them to a managed + RLMArray. + */ +- (instancetype)init NS_DESIGNATED_INITIALIZER; + +/** + Creates an unmanaged instance of a Realm object. + + Pass in an `NSArray` or `NSDictionary` instance to set the values of the object's properties. + + Unmanaged embedded objects can be added to a Realm by assigning them to an + object property of a managed Realm object or by adding them to a managed + RLMArray. + */ +- (instancetype)initWithValue:(id)value; + +/** + Returns the class name for a Realm object subclass. + + @warning Do not override. Realm relies on this method returning the exact class + name. + + @return The class name for the model class. + */ ++ (NSString *)className; + +#pragma mark - Properties + +/** + The Realm which manages the object, or `nil` if the object is unmanaged. + */ +@property (nonatomic, readonly, nullable) RLMRealm *realm; + +/** + The object schema which lists the managed properties for the object. + */ +@property (nonatomic, readonly) RLMObjectSchema *objectSchema; + +/** + Indicates if the object can no longer be accessed because it is now invalid. + + An object can no longer be accessed if the object has been deleted from the Realm that manages it, or + if `invalidate` is called on that Realm. + */ +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +/** + Indicates if this object is frozen. + + @see `-[RLMEmbeddedObject freeze]` + */ +@property (nonatomic, readonly, getter = isFrozen) BOOL frozen; + +#pragma mark - Customizing your Objects + +/** + Override this method to specify the default values to be used for each property. + + @return A dictionary mapping property names to their default values. + */ ++ (nullable NSDictionary *)defaultPropertyValues; + +/** + Override this method to specify the names of properties to ignore. These properties will not be managed by the Realm + that manages the object. + + @return An array of property names to ignore. + */ ++ (nullable NSArray *)ignoredProperties; + +/** + Override this method to specify the names of properties that are non-optional (i.e. cannot be assigned a `nil` value). + + By default, all properties of a type whose values can be set to `nil` are + considered optional properties. To require that an object in a Realm always + store a non-`nil` value for a property, add the name of the property to the + array returned from this method. + + Properties of `RLMEmbeddedObject` type cannot be non-optional. Array and + `NSNumber` properties can be non-optional, but there is no reason to do so: + arrays do not support storing nil, and if you want a non-optional number you + should instead use the primitive type. + + @return An array of property names that are required. + */ ++ (NSArray *)requiredProperties; + +/** + Override this method to provide information related to properties containing linking objects. + + Each property of type `RLMLinkingObjects` must have a key in the dictionary returned by this method consisting + of the property name. The corresponding value must be an instance of `RLMPropertyDescriptor` that describes the class + and property that the property is linked to. + + return @{ @"owners": [RLMPropertyDescriptor descriptorWithClass:Owner.class propertyName:@"dogs"] }; + + @return A dictionary mapping property names to `RLMPropertyDescriptor` instances. + */ ++ (NSDictionary *)linkingObjectsProperties; + +#pragma mark - Notifications + +/** + Registers a block to be called each time the object changes. + + The block will be asynchronously called after each write transaction which + deletes the object or modifies any of the managed properties of the object, + including self-assignments that set a property to its existing value. + + For write transactions performed on different threads or in differen + processes, the block will be called when the managing Realm is + (auto)refreshed to a version including the changes, while for local write + transactions it will be called at some point in the future after the write + transaction is committed. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When notifications + can't be delivered instantly, multiple notifications may be coalesced into a + single notification. + + Unlike with `RLMArray` and `RLMResults`, there is no "initial" callback made + after you add a new notification block. + + Only objects which are managed by a Realm can be observed in this way. You + must retain the returned token for as long as you want updates to be sent to + the block. To stop receiving updates, call `-invalidate` on the token. + + It is safe to capture a strong reference to the observed object within the + callback block. There is no retain cycle due to that the callback is retained + by the returned token and not by the object itself. + + @warning This method cannot be called during a write transaction, when the + containing Realm is read-only, or on an unmanaged object. + + @param block The block to be called whenever a change occurs. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(RLMObjectChangeBlock)block; + +/** + Registers a block to be called each time the object changes. + + The block will be asynchronously called after each write transaction which + deletes the object or modifies any of the managed properties of the object, + including self-assignments that set a property to its existing value. + + For write transactions performed on different threads or in different + processes, the block will be called when the managing Realm is + (auto)refreshed to a version including the changes, while for local write + transactions it will be called at some point in the future after the write + transaction is committed. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + Unlike with `RLMArray` and `RLMResults`, there is no "initial" callback made + after you add a new notification block. + + Only objects which are managed by a Realm can be observed in this way. You + must retain the returned token for as long as you want updates to be sent to + the block. To stop receiving updates, call `-invalidate` on the token. + + It is safe to capture a strong reference to the observed object within the + callback block. There is no retain cycle due to that the callback is retained + by the returned token and not by the object itself. + + @warning This method cannot be called during a write transaction, when the + containing Realm is read-only, or on an unmanaged object. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(RLMObjectChangeBlock)block queue:(dispatch_queue_t)queue; + +/** + Registers a block to be called each time the object changes. + + The block will be asynchronously called after each write transaction which + deletes the object or modifies any of the managed properties of the object, + including self-assignments that set a property to its existing value. + + For write transactions performed on different threads or in different + processes, the block will be called when the managing Realm is + (auto)refreshed to a version including the changes, while for local write + transactions it will be called at some point in the future after the write + transaction is committed. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + Unlike with `RLMArray` and `RLMResults`, there is no "initial" callback made + after you add a new notification block. + + Only objects which are managed by a Realm can be observed in this way. You + must retain the returned token for as long as you want updates to be sent to + the block. To stop receiving updates, call `-invalidate` on the token. + + It is safe to capture a strong reference to the observed object within the + callback block. There is no retain cycle due to that the callback is retained + by the returned token and not by the object itself. + + @warning This method cannot be called during a write transaction, when the + containing Realm is read-only, or on an unmanaged object. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(RLMObjectChangeBlock)block keyPaths:(NSArray *)keyPaths queue:(dispatch_queue_t)queue; + +/** + Registers a block to be called each time the object changes. + + The block will be asynchronously called after each write transaction which + deletes the object or modifies any of the managed properties of the object, + including self-assignments that set a property to its existing value. + + For write transactions performed on different threads or in different + processes, the block will be called when the managing Realm is + (auto)refreshed to a version including the changes, while for local write + transactions it will be called at some point in the future after the write + transaction is committed. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + Unlike with `RLMArray` and `RLMResults`, there is no "initial" callback made + after you add a new notification block. + + Only objects which are managed by a Realm can be observed in this way. You + must retain the returned token for as long as you want updates to be sent to + the block. To stop receiving updates, call `-invalidate` on the token. + + It is safe to capture a strong reference to the observed object within the + callback block. There is no retain cycle due to that the callback is retained + by the returned token and not by the object itself. + + @warning This method cannot be called during a write transaction, when the + containing Realm is read-only, or on an unmanaged object. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(RLMObjectChangeBlock)block keyPaths:(NSArray *)keyPaths; + +#pragma mark - Other Instance Methods + +/** + Returns YES if another Realm object instance points to the same object as the + receiver in the Realm managing the receiver. + + For frozen objects and object types with a primary key, `isEqual:` is + overridden to use the same logic as this method (along with a corresponding + implementation for `hash`). Non-frozen objects without primary keys use + pointer identity for `isEqual:` and `hash`. + + @param object The object to compare the receiver to. + + @return Whether the object represents the same object as the receiver. + */ +- (BOOL)isEqualToObject:(RLMEmbeddedObject *)object; + +/** + Returns a frozen (immutable) snapshot of this object. + + The frozen copy is an immutable object which contains the same data as this + object currently contains, but will not update when writes are made to the + containing Realm. Unlike live objects, frozen objects can be accessed from any + thread. + + - warning: Holding onto a frozen object for an extended period while performing write + transaction on the Realm may result in the Realm file growing to large sizes. See + `Realm.Configuration.maximumNumberOfActiveVersions` for more information. + - warning: This method can only be called on a managed object. + */ +- (instancetype)freeze NS_RETURNS_RETAINED; + +/** + Returns a live (mutable) reference of this object. + + This method creates a managed accessor to a live copy of the same frozen object. + Will return self if called on an already live object. + */ +- (instancetype)thaw; + +#pragma mark - Dynamic Accessors + +/// :nodoc: +- (nullable id)objectForKeyedSubscript:(NSString *)key; + +/// :nodoc: +- (void)setObject:(nullable id)obj forKeyedSubscript:(NSString *)key; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMError.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMError.h new file mode 100644 index 000000000..514ceee3f --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMError.h @@ -0,0 +1,442 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2022 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@protocol RLMValue; + +#pragma mark - Error Domains + +/** Error code is a value from the RLMError enum. */ +extern NSString *const RLMErrorDomain; + +/** An error domain identifying non-specific system errors. */ +extern NSString *const RLMUnknownSystemErrorDomain; + +/** + The error domain string for all SDK errors related to errors reported + by the synchronization manager error handler, as well as general sync + errors that don't fall into any of the other categories. + */ +extern NSString *const RLMSyncErrorDomain; + +/** + The error domain string for all SDK errors related to the authentication + endpoint. + */ +extern NSString *const RLMSyncAuthErrorDomain; + +/** +The error domain string for all SDK errors related to the Atlas App Services +endpoint. +*/ +extern NSString *const RLMAppErrorDomain; + +#pragma mark - RLMError + +/// A user info key containing the error code. This is provided for backwards +/// compatibility only and should not be used. +extern NSString *const RLMErrorCodeKey __attribute((deprecated("use -[NSError code]"))); + +/// A user info key containing the name of the error code. This is for +/// debugging purposes only and should not be relied on. +extern NSString *const RLMErrorCodeNameKey; + +/// A user info key present in sync errors which originate from the server, +/// containing the URL of the server-side logs associated with the error. +extern NSString * const RLMServerLogURLKey; + +/// A user info key containing a HTTP status code. Some ``RLMAppError`` codes +/// include this, most notably ``RLMAppErrorHttpRequestFailed``. +extern NSString * const RLMHTTPStatusCodeKey; + +/// A user info key containing a `RLMCompensatingWriteInfo` which includes +/// further details about what was reverted by the server. +extern NSString *const RLMCompensatingWriteInfoKey; + +/** + `RLMError` is an enumeration representing all recoverable errors. It is + associated with the Realm error domain specified in `RLMErrorDomain`. + */ +typedef RLM_ERROR_ENUM(NSInteger, RLMError, RLMErrorDomain) { + /** Denotes a general error that occurred when trying to open a Realm. */ + RLMErrorFail = 1, + + /** Denotes a file I/O error that occurred when trying to open a Realm. */ + RLMErrorFileAccess = 2, + + /** + Denotes a file permission error that occurred when trying to open a Realm. + + This error can occur if the user does not have permission to open or create + the specified file in the specified access mode when opening a Realm. + */ + RLMErrorFilePermissionDenied = 3, + + /** + Denotes an error where a file was to be written to disk, but another + file with the same name already exists. + */ + RLMErrorFileExists = 4, + + /** + Denotes an error that occurs if a file could not be found. + + This error may occur if a Realm file could not be found on disk when + trying to open a Realm as read-only, or if the directory part of the + specified path was not found when trying to write a copy. + */ + RLMErrorFileNotFound = 5, + + /** + Denotes an error that occurs if a file format upgrade is required to open + the file, but upgrades were explicitly disabled or the file is being open + in read-only mode. + */ + RLMErrorFileFormatUpgradeRequired = 6, + + /** + Denotes an error that occurs if the database file is currently open in + another process which cannot share with the current process due to an + architecture mismatch. + + This error may occur if trying to share a Realm file between an i386 + (32-bit) iOS Simulator and the Realm Studio application. In this case, + please use the 64-bit version of the iOS Simulator. + */ + RLMErrorIncompatibleLockFile = 8, + + /** + Denotes an error that occurs when there is insufficient available address + space to mmap the Realm file. + */ + RLMErrorAddressSpaceExhausted = 9, + + /** + Denotes an error that occurs if there is a schema version mismatch and a + migration is required. + */ + RLMErrorSchemaMismatch = 10, + + /** + Denotes an error where an operation was requested which cannot be + performed on an open file. + */ + RLMErrorAlreadyOpen = 12, + + /// Denotes an error where an input value was invalid. + RLMErrorInvalidInput = 13, + + /// Denotes an error where a write failed due to insufficient disk space. + RLMErrorOutOfDiskSpace = 14, + + /** + Denotes an error where a Realm file could not be opened because another + process has opened the same file in a way incompatible with inter-process + sharing. For example, this can result from opening the backing file for an + in-memory Realm in non-in-memory mode. + */ + RLMErrorIncompatibleSession = 15, + + /** + Denotes an error that occurs if the file is a valid Realm file, but has a + file format version which is not supported by this version of Realm. This + typically means that the file was written by a newer version of Realm, but + may also mean that it is from a pre-1.0 version of Realm (or for + synchronized files, pre-10.0). + */ + RLMErrorUnsupportedFileFormatVersion = 16, + + /** + Denotes an error that occurs if a synchronized Realm is opened in more + than one process at once. + */ + RLMErrorMultipleSyncAgents = 17, + + /// A subscription was rejected by the server. + RLMErrorSubscriptionFailed = 18, + + /// A file operation failed in a way which does not have a more specific error code. + RLMErrorFileOperationFailed = 19, + + /** + Denotes an error that occurs if the file being opened is not a valid Realm + file. Some of the possible causes of this are: + 1. The file at the given URL simply isn't a Realm file at all. + 2. The wrong encryption key was given. + 3. The Realm file is encrypted and no encryption key was given. + 4. The Realm file isn't encrypted but an encryption key was given. + 5. The file on disk has become corrupted. + */ + RLMErrorInvalidDatabase = 20, + + /** + Denotes an error that occurs if a Realm is opened in the wrong history + mode. Typically this means that either a local Realm is being opened as a + synchronized Realm or vice versa. + */ + RLMErrorIncompatibleHistories = 21, + + /** + Denotes an error that occurs if objects were written to a flexible sync + Realm without any active subscriptions for that object type. All objects + created in flexible sync Realms must match at least one active + subscription or the server will reject the write. + */ + RLMErrorNoSubscriptionForWrite = 22, +}; + +#pragma mark - RLMSyncError + +/// A user info key for use with `RLMSyncErrorClientResetError`. +extern NSString *const kRLMSyncPathOfRealmBackupCopyKey; + +/// A user info key for use with certain error types. +extern NSString *const kRLMSyncErrorActionTokenKey; + +/** + An error related to a problem that might be reported by the synchronization manager + error handler, or a callback on a sync-related API that performs asynchronous work. + */ +typedef RLM_ERROR_ENUM(NSInteger, RLMSyncError, RLMSyncErrorDomain) { + /// An error that indicates a problem with the session (a specific Realm opened for sync). + RLMSyncErrorClientSessionError = 4, + + /// An error that indicates a problem with a specific user. + RLMSyncErrorClientUserError = 5, + + /** + An error that indicates an internal, unrecoverable problem + with the underlying synchronization engine. + */ + RLMSyncErrorClientInternalError = 6, + + /** + An error that indicates the Realm needs to be reset. + + A synced Realm may need to be reset because Atlas App Services encountered an + error and had to be restored from a backup. If the backup copy of the remote Realm + is of an earlier version than the local copy of the Realm, the server will ask the + client to reset the Realm. + + The reset process is as follows: the local copy of the Realm is copied into a recovery + directory for safekeeping, and then deleted from the original location. The next time + the Realm for that partition value is opened, the Realm will automatically be re-downloaded from + Atlas App Services, and can be used as normal. + + Data written to the Realm after the local copy of the Realm diverged from the backup + remote copy will be present in the local recovery copy of the Realm file. The + re-downloaded Realm will initially contain only the data present at the time the Realm + was backed up on the server. + + The client reset process can be initiated in one of two ways. + + The `userInfo` dictionary contains an opaque token object under the key + `kRLMSyncErrorActionTokenKey`. This token can be passed into + `+[RLMSyncSession immediatelyHandleError:]` in order to immediately perform the client + reset process. This should only be done after your app closes and invalidates every + instance of the offending Realm on all threads (note that autorelease pools may make this + difficult to guarantee). + + If `+[RLMSyncSession immediatelyHandleError:]` is not called, the client reset process + will be automatically carried out the next time the app is launched and the + `RLMSyncManager` is accessed. + + The value for the `kRLMSyncPathOfRealmBackupCopyKey` key in the `userInfo` dictionary + describes the path of the recovered copy of the Realm. This copy will not actually be + created until the client reset process is initiated. + + @see `-[NSError rlmSync_errorActionToken]`, `-[NSError rlmSync_clientResetBackedUpRealmPath]` + */ + RLMSyncErrorClientResetError = 7, + + /// :nodoc: + RLMSyncErrorUnderlyingAuthError = 8, + + /** + An error that indicates the user does not have permission to perform an operation + upon a synced Realm. For example, a user may receive this error if they attempt to + open a Realm they do not have at least read access to, or write to a Realm they only + have read access to. + + This error may also occur if a user incorrectly opens a Realm they have read-only + permissions to without using the `asyncOpen()` APIs. + + A Realm that suffers a permission denied error is, by default, flagged so that its + local copy will be deleted the next time the application starts. + + The `userInfo` dictionary contains an opaque token object under the key + `kRLMSyncErrorActionTokenKey`. This token can be passed into + `+[RLMSyncSession immediatelyHandleError:]` in order to immediately delete the local + copy. This should only be done after your app closes and invalidates every instance + of the offending Realm on all threads (note that autorelease pools may make this + difficult to guarantee). + + @warning It is strongly recommended that, if a Realm has encountered a permission denied + error, its files be deleted before attempting to re-open it. + + @see `-[NSError rlmSync_errorActionToken]` + */ + RLMSyncErrorPermissionDeniedError = 9, + + /** + An error that indicates that the server has rejected the requested flexible sync subscriptions. + */ + RLMSyncErrorInvalidFlexibleSyncSubscriptions = 10, + + /** + An error that indicates that the server has reverted a write made by this + client. This can happen due to not having write permission, or because an + object was created in a flexible sync Realm which does not match any + active subscriptions. + + This error is informational and does not require any explicit handling. + */ + RLMSyncErrorWriteRejected = 11, + + /** + A connection error without a more specific error code occurred. + + Realm internally handles retrying connections with appropriate backoffs, + so connection errors are normally logged and not reported to the error + handler. The exception is if + ``RLMSyncConfiguration.cancelAsyncOpenOnNonFatalErrors`` is set to `true`, + in which case async opens will be canceled on connection failures and the + error will be reported to the completion handler. + + Note that connection timeouts are reported as + (errorDomain: NSPosixErrorDomain, error: ETIMEDOUT) + and not as one of these error codes. + */ + RLMSyncErrorConnectionFailed = 12, + + /** + Connecting to the server failed due to a TLS issue such as an invalid certificate. + */ + RLMSyncErrorTLSHandshakeFailed = 13, +}; + +#pragma mark - RLMSyncAuthError + +// NEXT-MAJOR: This was a ROS thing and should have been removed in v10 +/// :nodoc: +typedef RLM_ERROR_ENUM(NSInteger, RLMSyncAuthError, RLMSyncAuthErrorDomain) { + RLMSyncAuthErrorBadResponse = 1, + RLMSyncAuthErrorBadRemoteRealmPath = 2, + RLMSyncAuthErrorHTTPStatusCodeError = 3, + RLMSyncAuthErrorClientSessionError = 4, + RLMSyncAuthErrorInvalidParameters = 601, + RLMSyncAuthErrorMissingPath = 602, + RLMSyncAuthErrorInvalidCredential = 611, + RLMSyncAuthErrorUserDoesNotExist = 612, + RLMSyncAuthErrorUserAlreadyExists = 613, + RLMSyncAuthErrorAccessDeniedOrInvalidPath = 614, + RLMSyncAuthErrorInvalidAccessToken = 615, + RLMSyncAuthErrorFileCannotBeShared = 703, +} __attribute__((deprecated("Errors of this type are no longer reported"))); + +#pragma mark - RLMSyncAppError + +/// An error which occurred when making a request to Atlas App Services. +typedef RLM_ERROR_ENUM(NSInteger, RLMAppError, RLMAppErrorDomain) { + /// An unknown error has occurred + RLMAppErrorUnknown = -1, + + /// A HTTP request completed with an error status code. The failing status + /// code can be found in the ``RLMHTTPStatusCodeKey`` key of the userInfo + /// dictionary. + RLMAppErrorHttpRequestFailed = 1, + + /// A user's session is in an invalid state. Logging out and back in may rectify this. + RLMAppErrorInvalidSession, + /// A request sent to the server was malformed in some way. + RLMAppErrorBadRequest, + /// A request was made using a nonexistent user. + RLMAppErrorUserNotFound, + /// A request was made against an App using a User which does not belong to that App. + RLMAppErrorUserAppDomainMismatch, + /// The auth provider has limited the domain names which can be used for email addresses, and the given one is not allowed. + RLMAppErrorDomainNotAllowed, + /// The request body size exceeded a server-configured limit. + RLMAppErrorReadSizeLimitExceeded, + /// A request had an invalid parameter. + RLMAppErrorInvalidParameter, + /// A request was missing a required parameter. + RLMAppErrorMissingParameter, + /// Executing the requested server function failed with an error. + RLMAppErrorFunctionExecutionError, + /// The server encountered an internal error. + RLMAppErrorInternalServerError, + /// Authentication failed due to the request auth provider not existing. + RLMAppErrorAuthProviderNotFound, + /// The requested value does not exist. + RLMAppErrorValueNotFound, + /// The value being created already exists. + RLMAppErrorValueAlreadyExists, + /// A value with the same name as the value being created already exists. + RLMAppErrorValueDuplicateName, + /// The called server function does not exist. + RLMAppErrorFunctionNotFound, + /// The called server function has a syntax error. + RLMAppErrorFunctionSyntaxError, + /// The called server function is invalid in some way. + RLMAppErrorFunctionInvalid, + /// Registering an API key with the auth provider failed due to it already existing. + RLMAppErrorAPIKeyAlreadyExists, + /// The operation failed due to exceeding the server-configured time limit. + RLMAppErrorExecutionTimeLimitExceeded, + /// The body of the called function does not define a callable thing. + RLMAppErrorNotCallable, + /// Email confirmation failed for a user because the user has already confirmed their email. + RLMAppErrorUserAlreadyConfirmed, + /// The user cannot be used because it has been disabled. + RLMAppErrorUserDisabled, + /// An auth error occurred which does not have a more specific error code. + RLMAppErrorAuthError, + /// Account registration failed due to the user name already being taken. + RLMAppErrorAccountNameInUse, + /// A login request failed due to an invalid password. + RLMAppErrorInvalidPassword, + /// Operation failed due to server-side maintenance. + RLMAppErrorMaintenanceInProgress, + /// Operation failed due to an error reported by MongoDB. + RLMAppErrorMongoDBError, +}; + +/// Extended information about a write which was rejected by the server. +/// +/// The server will sometimes reject writes made by the client for reasons such +/// as permissions, additional server-side validation failing, or because the +/// object didn't match any flexible sync subscriptions. When this happens, a +/// ``RLMSyncErrorWriteRejected`` error is reported which contains an array of +/// `RLMCompensatingWriteInfo` objects in the ``RLMCompensatingWriteInfoKey`` +/// userInfo key with information about what writes were rejected and why. +/// +/// This information is intended for debugging and logging purposes only. The +/// `reason` strings are generated by the server and are not guaranteed to be +/// stable, so attempting to programmatically do anything with them will break +/// without warning. +RLM_SWIFT_SENDABLE RLM_FINAL +@interface RLMCompensatingWriteInfo : NSObject +/// The class name of the object being written to. +@property (nonatomic, readonly) NSString *objectType; +/// The primary key of the object being written to. +@property (nonatomic, readonly) id primaryKey NS_REFINED_FOR_SWIFT; +/// A human-readable string describing why the write was rejected. +@property (nonatomic, readonly) NSString *reason; +@end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMFindOneAndModifyOptions.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMFindOneAndModifyOptions.h new file mode 100644 index 000000000..3cce99f23 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMFindOneAndModifyOptions.h @@ -0,0 +1,80 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) +@protocol RLMBSON; +@class RLMSortDescriptor; + +/// Options to use when executing a `findOneAndUpdate`, `findOneAndReplace`, +/// or `findOneAndDelete` command on a `RLMMongoCollection`. +@interface RLMFindOneAndModifyOptions : NSObject + +/// Limits the fields to return for all matching documents. +@property (nonatomic, nullable) id projection NS_REFINED_FOR_SWIFT; + +/// The order in which to return matching documents. +@property (nonatomic, nullable) id sort NS_REFINED_FOR_SWIFT +__attribute__((deprecated("Use `sorting` instead, which correctly sort more than one sort attribute", "sorting"))); + +/// The order in which to return matching documents. +@property (nonatomic) NSArray> *sorting NS_REFINED_FOR_SWIFT; + + +/// Whether or not to perform an upsert, default is false +/// (only available for find_one_and_replace and find_one_and_update) +@property (nonatomic) BOOL upsert; + +/// When true then the new document is returned, +/// Otherwise the old document is returned (default) +/// (only available for findOneAndReplace and findOneAndUpdate) +@property (nonatomic) BOOL shouldReturnNewDocument; + +/// Options to use when executing a `findOneAndUpdate`, `findOneAndReplace`, +/// or `findOneAndDelete` command on a `RLMMongoCollection`. +/// @param projection Limits the fields to return for all matching documents. +/// @param sort The order in which to return matching documents. +/// @param upsert Whether or not to perform an upsert, default is false +/// (only available for findOneAndReplace and findOneAndUpdate) +/// @param shouldReturnNewDocument When true then the new document is returned, +/// Otherwise the old document is returned (default), +/// (only available for findOneAndReplace and findOneAndUpdate) +- (instancetype)initWithProjection:(id _Nullable)projection + sort:(id _Nullable)sort + upsert:(BOOL)upsert + shouldReturnNewDocument:(BOOL)shouldReturnNewDocument +__attribute__((deprecated("Please use `initWithProjection:sorting:upsert:shouldReturnNewDocument:`"))) + NS_SWIFT_UNAVAILABLE("Please see FindOneAndModifyOptions"); + +/// Options to use when executing a `findOneAndUpdate`, `findOneAndReplace`, +/// or `findOneAndDelete` command on a `RLMMongoCollection`. +/// @param projection Limits the fields to return for all matching documents. +/// @param sorting The order in which to return matching documents. +/// @param upsert Whether or not to perform an upsert, default is false +/// (only available for findOneAndReplace and findOneAndUpdate) +/// @param shouldReturnNewDocument When true then the new document is returned, +/// Otherwise the old document is returned (default), +/// (only available for findOneAndReplace and findOneAndUpdate) +- (instancetype)initWithProjection:(id _Nullable)projection + sorting:(NSArray> *)sorting + upsert:(BOOL)upsert + shouldReturnNewDocument:(BOOL)shouldReturnNewDocument; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMFindOptions.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMFindOptions.h new file mode 100644 index 000000000..043a85374 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMFindOptions.h @@ -0,0 +1,77 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@protocol RLMBSON; + +/// Options to use when executing a `find` command on a `RLMMongoCollection`. +@interface RLMFindOptions : NSObject + +/// The maximum number of documents to return. Specifying 0 will return all documents. +@property (nonatomic) NSInteger limit; + +/// Limits the fields to return for all matching documents. +@property (nonatomic, nullable) id projection NS_REFINED_FOR_SWIFT; + +/// The order in which to return matching documents. +@property (nonatomic, nullable) id sort NS_REFINED_FOR_SWIFT +__attribute__((deprecated("Use `sorting` instead, which correctly sort more than one sort attribute", "sorting"))); + +/// The order in which to return matching documents. +@property (nonatomic) NSArray> *sorting NS_REFINED_FOR_SWIFT; + +/// Options to use when executing a `find` command on a `RLMMongoCollection`. +/// @param limit The maximum number of documents to return. Specifying 0 will return all documents. +/// @param projection Limits the fields to return for all matching documents. +/// @param sort The order in which to return matching documents. +- (instancetype)initWithLimit:(NSInteger)limit + projection:(id _Nullable)projection + sort:(id _Nullable)sort +__attribute__((deprecated("Please use `initWithLimit:projection:sorting:`"))) + NS_SWIFT_UNAVAILABLE("Please see FindOption"); + + +/// Options to use when executing a `find` command on a `RLMMongoCollection`. +/// @param projection Limits the fields to return for all matching documents. +/// @param sort The order in which to return matching documents. +- (instancetype)initWithProjection:(id _Nullable)projection + sort:(id _Nullable)sort __deprecated +__attribute__((deprecated("Please use `initWithProjection:sorting:`"))) + NS_SWIFT_UNAVAILABLE("Please see FindOption"); + + +/// Options to use when executing a `find` command on a `RLMMongoCollection`. +/// @param limit The maximum number of documents to return. Specifying 0 will return all documents. +/// @param projection Limits the fields to return for all matching documents. +/// @param sorting The order in which to return matching documents. +- (instancetype)initWithLimit:(NSInteger)limit + projection:(id _Nullable)projection + sorting:(NSArray> *)sorting; + +/// Options to use when executing a `find` command on a `RLMMongoCollection`. +/// @param projection Limits the fields to return for all matching documents. +/// @param sorting The order in which to return matching documents. +- (instancetype)initWithProjection:(id _Nullable)projection + sorting:(NSArray> *)sorting; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMLogger.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMLogger.h new file mode 100644 index 000000000..96ab91967 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMLogger.h @@ -0,0 +1,99 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2023 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability) + +/// An enum representing different levels of sync-related logging that can be configured. +typedef RLM_CLOSED_ENUM(NSUInteger, RLMLogLevel) { + /// Nothing will ever be logged. + RLMLogLevelOff, + /// Only fatal errors will be logged. + RLMLogLevelFatal, + /// Only errors will be logged. + RLMLogLevelError, + /// Warnings and errors will be logged. + RLMLogLevelWarn, + /// Information about sync events will be logged. Fewer events will be logged in order to avoid overhead. + RLMLogLevelInfo, + /// Information about sync events will be logged. More events will be logged than with `RLMLogLevelInfo`. + RLMLogLevelDetail, + /// Log information that can aid in debugging. + /// + /// - warning: Will incur a measurable performance impact. + RLMLogLevelDebug, + /// Log information that can aid in debugging. More events will be logged than with `RLMLogLevelDebug`. + /// + /// - warning: Will incur a measurable performance impact. + RLMLogLevelTrace, + /// Log information that can aid in debugging. More events will be logged than with `RLMLogLevelTrace`. + /// + /// - warning: Will incur a measurable performance impact. + RLMLogLevelAll +} NS_SWIFT_NAME(LogLevel); + +/// A log callback function which can be set on RLMLogger. +/// +/// The log function may be called from multiple threads simultaneously, and is +/// responsible for performing its own synchronization if any is required. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void (^RLMLogFunction)(RLMLogLevel level, NSString *message); + +/** + `RLMLogger` is used for creating your own custom logging logic. + + You can define your own logger creating an instance of `RLMLogger` and define the log function which will be + invoked whenever there is a log message. + Set this custom logger as you default logger using `setDefaultLogger`. + + RLMLogger.defaultLogger = [[RLMLogger alloc] initWithLevel:RLMLogLevelDebug + logFunction:^(RLMLogLevel level, NSString * message) { + NSLog(@"Realm Log - %lu, %@", (unsigned long)level, message); + }]; + + @note By default default log threshold level is `RLMLogLevelInfo`, and logging strings are output to Apple System Logger. +*/ +@interface RLMLogger : NSObject + +/** + Gets the logging threshold level used by the logger. + */ +@property (nonatomic) RLMLogLevel level; + +/// :nodoc: +- (instancetype)init NS_UNAVAILABLE; + +/** + Creates a logger with the associated log level and the logic function to define your own logging logic. + + @param level The log level to be set for the logger. + @param logFunction The log function which will be invoked whenever there is a log message. +*/ +- (instancetype)initWithLevel:(RLMLogLevel)level logFunction:(RLMLogFunction)logFunction; + +#pragma mark RLMLogger Default Logger API + +/** + The current default logger. When setting a logger as default, this logger will be used whenever information must be logged. + */ +@property (class) RLMLogger *defaultLogger NS_SWIFT_NAME(shared); + +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMMigration.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMMigration.h new file mode 100644 index 000000000..4a6652a19 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMMigration.h @@ -0,0 +1,129 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMSchema; +@class RLMArray; +@class RLMObject; + +/** + A block type which provides both the old and new versions of an object in the Realm. Object + properties can only be accessed using keyed subscripting. + + @see `-[RLMMigration enumerateObjects:block:]` + + @param oldObject The object from the original Realm (read-only). + @param newObject The object from the migrated Realm (read-write). +*/ +typedef void (^RLMObjectMigrationBlock)(RLMObject * __nullable oldObject, RLMObject * __nullable newObject); + +/** + `RLMMigration` instances encapsulate information intended to facilitate a schema migration. + + A `RLMMigration` instance is passed into a user-defined `RLMMigrationBlock` block when updating + the version of a Realm. This instance provides access to the old and new database schemas, the + objects in the Realm, and provides functionality for modifying the Realm during the migration. + */ +@interface RLMMigration : NSObject + +#pragma mark - Properties + +/** + Returns the old `RLMSchema`. This is the schema which describes the Realm before the + migration is applied. + */ +@property (nonatomic, readonly) RLMSchema *oldSchema NS_REFINED_FOR_SWIFT; + +/** + Returns the new `RLMSchema`. This is the schema which describes the Realm after the + migration is applied. + */ +@property (nonatomic, readonly) RLMSchema *newSchema NS_REFINED_FOR_SWIFT; + + +#pragma mark - Altering Objects during a Migration + +/** + Enumerates all the objects of a given type in the Realm, providing both the old and new versions + of each object. Within the block, object properties can only be accessed using keyed subscripting. + + @param className The name of the `RLMObject` class to enumerate. + + @warning All objects returned are of a type specific to the current migration and should not be cast + to `className`. Instead, treat them as `RLMObject`s and use keyed subscripting to access + properties. + */ +- (void)enumerateObjects:(NSString *)className + block:(__attribute__((noescape)) RLMObjectMigrationBlock)block NS_REFINED_FOR_SWIFT; + +/** + Creates and returns an `RLMObject` instance of type `className` in the Realm being migrated. + + The `value` argument is used to populate the object. It can be a key-value coding compliant object, an array or + dictionary returned from the methods in `NSJSONSerialization`, or an array containing one element for each managed + property. An exception will be thrown if any required properties are not present and those properties were not defined + with default values. + + When passing in an `NSArray` as the `value` argument, all properties must be present, valid and in the same order as + the properties defined in the model. + + @param className The name of the `RLMObject` class to create. + @param value The value used to populate the object. + */ +- (RLMObject *)createObject:(NSString *)className withValue:(id)value NS_REFINED_FOR_SWIFT; + +/** + Deletes an object from a Realm during a migration. + + It is permitted to call this method from within the block passed to `-[enumerateObjects:block:]`. + + @param object Object to be deleted from the Realm being migrated. + */ +- (void)deleteObject:(RLMObject *)object NS_REFINED_FOR_SWIFT; + +/** + Deletes the data for the class with the given name. + + All objects of the given class will be deleted. If the `RLMObject` subclass no longer exists in your program, + any remaining metadata for the class will be removed from the Realm file. + + @param name The name of the `RLMObject` class to delete. + + @return A Boolean value indicating whether there was any data to delete. + */ +- (BOOL)deleteDataForClassName:(NSString *)name NS_REFINED_FOR_SWIFT; + +/** + Renames a property of the given class from `oldName` to `newName`. + + @param className The name of the class whose property should be renamed. This class must be present + in both the old and new Realm schemas. + @param oldName The old persisted property name for the property to be renamed. There must not be a property with this name in the + class as defined by the new Realm schema. + @param newName The new persisted property name for the property to be renamed. There must not be a property with this name in the + class as defined by the old Realm schema. + */ +- (void)renamePropertyForClass:(NSString *)className oldName:(NSString *)oldName + newName:(NSString *)newName NS_REFINED_FOR_SWIFT; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMMongoClient.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMMongoClient.h new file mode 100644 index 000000000..50a1c226d --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMMongoClient.h @@ -0,0 +1,47 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMApp; + +/// The `RLMMongoClient` enables reading and writing on a MongoDB database via the Realm Cloud service. +/// +/// It provides access to instances of `RLMMongoDatabase`, which in turn provide access to specific +/// `RLMMongoCollection`s that hold your data. +/// +/// - Note: +/// Before you can read or write data, a user must log in. +/// +/// - SeeAlso: +/// `RLMApp`, `RLMMongoDatabase`, `RLMMongoCollection` +RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class +@interface RLMMongoClient : NSObject + +/// The name of the client +@property (nonatomic, readonly) NSString *name; + +/// Gets a `RLMMongoDatabase` instance for the given database name. +/// @param name the name of the database to retrieve +- (RLMMongoDatabase *)databaseWithName:(NSString *)name NS_SWIFT_NAME(database(named:)); + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMMongoCollection.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMMongoCollection.h new file mode 100644 index 000000000..0feae60ac --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMMongoCollection.h @@ -0,0 +1,330 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) +@protocol RLMBSON; + +@class RLMFindOptions, RLMFindOneAndModifyOptions, RLMUpdateResult, RLMChangeStream, RLMObjectId; + +/// Delegate which is used for subscribing to changes on a `[RLMMongoCollection watch]` stream. +@protocol RLMChangeEventDelegate +/// The stream was opened. +/// @param changeStream The RLMChangeStream subscribing to the stream changes. +- (void)changeStreamDidOpen:(RLMChangeStream *)changeStream; +/// The stream has been closed. +/// @param error If an error occured when closing the stream, an error will be passed. +- (void)changeStreamDidCloseWithError:(nullable NSError *)error; +/// A error has occured while streaming. +/// @param error The streaming error. +- (void)changeStreamDidReceiveError:(NSError *)error; +/// Invoked when a change event has been received. +/// @param changeEvent The change event in BSON format. +- (void)changeStreamDidReceiveChangeEvent:(id)changeEvent; +@end + +/// Acts as a middleman and processes events with WatchStream +RLM_SWIFT_SENDABLE RLM_FINAL // is internally thread-safe +@interface RLMChangeStream : NSObject +/// Stops a watch streaming session. +- (void)close; +/// :nodoc: +- (instancetype)init NS_UNAVAILABLE; +@end + +/// The `RLMMongoCollection` represents a MongoDB collection. +/// +/// You can get an instance from a `RLMMongoDatabase`. +/// +/// Create, read, update, and delete methods are available. +/// +/// Operations against the Realm Cloud server are performed asynchronously. +/// +/// - Note: +/// Before you can read or write data, a user must log in. +/// - Usage: +/// RLMMongoClient *client = [self.app mongoClient:@"mongodb1"]; +/// RLMMongoDatabase *database = [client databaseWithName:@"test_data"]; +/// RLMMongoCollection *collection = [database collectionWithName:@"Dog"]; +/// [collection insertOneDocument:@{@"name": @"fido", @"breed": @"cane corso"} completion:...]; +/// +/// - SeeAlso: +/// `RLMMongoClient`, `RLMMongoDatabase` +RLM_SWIFT_SENDABLE RLM_FINAL // is internally thread-safe +@interface RLMMongoCollection : NSObject +/// Block which returns an object id on a successful insert, or an error should one occur. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMMongoInsertBlock)(id _Nullable, NSError * _Nullable); +/// Block which returns an array of object ids on a successful insertMany, or an error should one occur. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMMongoInsertManyBlock)(NSArray> * _Nullable, NSError * _Nullable); +/// Block which returns an array of Documents on a successful find operation, or an error should one occur. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMMongoFindBlock)(NSArray> *> * _Nullable, + NSError * _Nullable); +/// Block which returns a Document on a successful findOne operation, or an error should one occur. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMMongoFindOneBlock)(NSDictionary> * _Nullable_result, + NSError * _Nullable); +/// Block which returns the number of Documents in a collection on a successful count operation, or an error should one occur. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMMongoCountBlock)(NSInteger, NSError * _Nullable); +/// Block which returns an RLMUpdateResult on a successful update operation, or an error should one occur. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMMongoUpdateBlock)(RLMUpdateResult * _Nullable, NSError * _Nullable); +/// Block which returns the deleted Document on a successful delete operation, or an error should one occur. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMMongoDeleteBlock)(NSDictionary> * _Nullable_result, + NSError * _Nullable); + +/// The name of this mongodb collection. +@property (nonatomic, readonly) NSString *name; + +/// Encodes the provided value to BSON and inserts it. If the value is missing an identifier, one will be +/// generated for it. +/// @param document A `Document` value to insert. +/// @param completion The result of attempting to perform the insert. An Id will be returned for the inserted object on sucess +- (void)insertOneDocument:(NSDictionary> *)document + completion:(RLMMongoInsertBlock)completion NS_REFINED_FOR_SWIFT; + +/// Encodes the provided values to BSON and inserts them. If any values are missing identifiers, +/// they will be generated. +/// @param documents The `Document` values in a bson array to insert. +/// @param completion The result of the insert, returns an array inserted document ids in order +- (void)insertManyDocuments:(NSArray> *> *)documents + completion:(RLMMongoInsertManyBlock)completion NS_REFINED_FOR_SWIFT; + +/// Finds the documents in this collection which match the provided filter. +/// @param filterDocument A `Document` as bson that should match the query. +/// @param options `RLMFindOptions` to use when executing the command. +/// @param completion The resulting bson array of documents or error if one occurs +- (void)findWhere:(NSDictionary> *)filterDocument + options:(RLMFindOptions *)options + completion:(RLMMongoFindBlock)completion NS_REFINED_FOR_SWIFT; + +/// Finds the documents in this collection which match the provided filter. +/// @param filterDocument A `Document` as bson that should match the query. +/// @param completion The resulting bson array as a string or error if one occurs +- (void)findWhere:(NSDictionary> *)filterDocument + completion:(RLMMongoFindBlock)completion NS_REFINED_FOR_SWIFT; + +/// Returns one document from a collection or view which matches the +/// provided filter. If multiple documents satisfy the query, this method +/// returns the first document according to the query's sort order or natural +/// order. +/// @param filterDocument A `Document` as bson that should match the query. +/// @param options `RLMFindOptions` to use when executing the command. +/// @param completion The resulting bson or error if one occurs +- (void)findOneDocumentWhere:(NSDictionary> *)filterDocument + options:(RLMFindOptions *)options + completion:(RLMMongoFindOneBlock)completion NS_REFINED_FOR_SWIFT; + +/// Returns one document from a collection or view which matches the +/// provided filter. If multiple documents satisfy the query, this method +/// returns the first document according to the query's sort order or natural +/// order. +/// @param filterDocument A `Document` as bson that should match the query. +/// @param completion The resulting bson or error if one occurs +- (void)findOneDocumentWhere:(NSDictionary> *)filterDocument + completion:(RLMMongoFindOneBlock)completion NS_REFINED_FOR_SWIFT; + +/// Runs an aggregation framework pipeline against this collection. +/// @param pipeline A bson array made up of `Documents` containing the pipeline of aggregation operations to perform. +/// @param completion The resulting bson array of documents or error if one occurs +- (void)aggregateWithPipeline:(NSArray> *> *)pipeline + completion:(RLMMongoFindBlock)completion NS_REFINED_FOR_SWIFT; + +/// Counts the number of documents in this collection matching the provided filter. +/// @param filterDocument A `Document` as bson that should match the query. +/// @param limit The max amount of documents to count +/// @param completion Returns the count of the documents that matched the filter. +- (void)countWhere:(NSDictionary> *)filterDocument + limit:(NSInteger)limit + completion:(RLMMongoCountBlock)completion NS_REFINED_FOR_SWIFT; + +/// Counts the number of documents in this collection matching the provided filter. +/// @param filterDocument A `Document` as bson that should match the query. +/// @param completion Returns the count of the documents that matched the filter. +- (void)countWhere:(NSDictionary> *)filterDocument + completion:(RLMMongoCountBlock)completion NS_REFINED_FOR_SWIFT; + +/// Deletes a single matching document from the collection. +/// @param filterDocument A `Document` as bson that should match the query. +/// @param completion The result of performing the deletion. Returns the count of deleted objects +- (void)deleteOneDocumentWhere:(NSDictionary> *)filterDocument + completion:(RLMMongoCountBlock)completion NS_REFINED_FOR_SWIFT; + +/// Deletes multiple documents +/// @param filterDocument Document representing the match criteria +/// @param completion The result of performing the deletion. Returns the count of the deletion +- (void)deleteManyDocumentsWhere:(NSDictionary> *)filterDocument + completion:(RLMMongoCountBlock)completion NS_REFINED_FOR_SWIFT; + +/// Updates a single document matching the provided filter in this collection. +/// @param filterDocument A bson `Document` representing the match criteria. +/// @param updateDocument A bson `Document` representing the update to be applied to a matching document. +/// @param upsert When true, creates a new document if no document matches the query. +/// @param completion The result of the attempt to update a document. +- (void)updateOneDocumentWhere:(NSDictionary> *)filterDocument + updateDocument:(NSDictionary> *)updateDocument + upsert:(BOOL)upsert + completion:(RLMMongoUpdateBlock)completion NS_REFINED_FOR_SWIFT; + +/// Updates a single document matching the provided filter in this collection. +/// @param filterDocument A bson `Document` representing the match criteria. +/// @param updateDocument A bson `Document` representing the update to be applied to a matching document. +/// @param completion The result of the attempt to update a document. +- (void)updateOneDocumentWhere:(NSDictionary> *)filterDocument + updateDocument:(NSDictionary> *)updateDocument + completion:(RLMMongoUpdateBlock)completion NS_REFINED_FOR_SWIFT; + +/// Updates multiple documents matching the provided filter in this collection. +/// @param filterDocument A bson `Document` representing the match criteria. +/// @param updateDocument A bson `Document` representing the update to be applied to a matching document. +/// @param upsert When true, creates a new document if no document matches the query. +/// @param completion The result of the attempt to update a document. +- (void)updateManyDocumentsWhere:(NSDictionary> *)filterDocument + updateDocument:(NSDictionary> *)updateDocument + upsert:(BOOL)upsert + completion:(RLMMongoUpdateBlock)completion NS_REFINED_FOR_SWIFT; + +/// Updates multiple documents matching the provided filter in this collection. +/// @param filterDocument A bson `Document` representing the match criteria. +/// @param updateDocument A bson `Document` representing the update to be applied to a matching document. +/// @param completion The result of the attempt to update a document. +- (void)updateManyDocumentsWhere:(NSDictionary> *)filterDocument + updateDocument:(NSDictionary> *)updateDocument + completion:(RLMMongoUpdateBlock)completion NS_REFINED_FOR_SWIFT; + +/// Updates a single document in a collection based on a query filter and +/// returns the document in either its pre-update or post-update form. Unlike +/// `updateOneDocument`, this action allows you to atomically find, update, and +/// return a document with the same command. This avoids the risk of other +/// update operations changing the document between separate find and update +/// operations. +/// @param filterDocument A bson `Document` representing the match criteria. +/// @param updateDocument A bson `Document` representing the update to be applied to a matching document. +/// @param options `RemoteFindOneAndModifyOptions` to use when executing the command. +/// @param completion The result of the attempt to update a document. +- (void)findOneAndUpdateWhere:(NSDictionary> *)filterDocument + updateDocument:(NSDictionary> *)updateDocument + options:(RLMFindOneAndModifyOptions *)options + completion:(RLMMongoFindOneBlock)completion NS_REFINED_FOR_SWIFT; + +/// Updates a single document in a collection based on a query filter and +/// returns the document in either its pre-update or post-update form. Unlike +/// `updateOneDocument`, this action allows you to atomically find, update, and +/// return a document with the same command. This avoids the risk of other +/// update operations changing the document between separate find and update +/// operations. +/// @param filterDocument A bson `Document` representing the match criteria. +/// @param updateDocument A bson `Document` representing the update to be applied to a matching document. +/// @param completion The result of the attempt to update a document. +- (void)findOneAndUpdateWhere:(NSDictionary> *)filterDocument + updateDocument:(NSDictionary> *)updateDocument + completion:(RLMMongoFindOneBlock)completion NS_REFINED_FOR_SWIFT; + +/// Overwrites a single document in a collection based on a query filter and +/// returns the document in either its pre-replacement or post-replacement +/// form. Unlike `updateOneDocument`, this action allows you to atomically find, +/// replace, and return a document with the same command. This avoids the +/// risk of other update operations changing the document between separate +/// find and update operations. +/// @param filterDocument A `Document` that should match the query. +/// @param replacementDocument A `Document` describing the replacement. +/// @param options `RLMFindOneAndModifyOptions` to use when executing the command. +/// @param completion The result of the attempt to replace a document. +- (void)findOneAndReplaceWhere:(NSDictionary> *)filterDocument + replacementDocument:(NSDictionary> *)replacementDocument + options:(RLMFindOneAndModifyOptions *)options + completion:(RLMMongoFindOneBlock)completion NS_REFINED_FOR_SWIFT; + +/// Overwrites a single document in a collection based on a query filter and +/// returns the document in either its pre-replacement or post-replacement +/// form. Unlike `updateOneDocument`, this action allows you to atomically find, +/// replace, and return a document with the same command. This avoids the +/// risk of other update operations changing the document between separate +/// find and update operations. +/// @param filterDocument A `Document` that should match the query. +/// @param replacementDocument A `Document` describing the update. +/// @param completion The result of the attempt to replace a document. +- (void)findOneAndReplaceWhere:(NSDictionary> *)filterDocument + replacementDocument:(NSDictionary> *)replacementDocument + completion:(RLMMongoFindOneBlock)completion NS_REFINED_FOR_SWIFT; + +/// Removes a single document from a collection based on a query filter and +/// returns a document with the same form as the document immediately before +/// it was deleted. Unlike `deleteOneDocument`, this action allows you to atomically +/// find and delete a document with the same command. This avoids the risk of +/// other update operations changing the document between separate find and +/// delete operations. +/// @param filterDocument A `Document` that should match the query. +/// @param options `RLMFindOneAndModifyOptions` to use when executing the command. +/// @param completion The result of the attempt to delete a document. +- (void)findOneAndDeleteWhere:(NSDictionary> *)filterDocument + options:(RLMFindOneAndModifyOptions *)options + completion:(RLMMongoDeleteBlock)completion NS_REFINED_FOR_SWIFT; + +/// Removes a single document from a collection based on a query filter and +/// returns a document with the same form as the document immediately before +/// it was deleted. Unlike `deleteOneDocument`, this action allows you to atomically +/// find and delete a document with the same command. This avoids the risk of +/// other update operations changing the document between separate find and +/// delete operations. +/// @param filterDocument A `Document` that should match the query. +/// @param completion The result of the attempt to delete a document. +- (void)findOneAndDeleteWhere:(NSDictionary> *)filterDocument + completion:(RLMMongoDeleteBlock)completion NS_REFINED_FOR_SWIFT; + +/// Opens a MongoDB change stream against the collection to watch for changes. The resulting stream will be notified +/// of all events on this collection that the active user is authorized to see based on the configured MongoDB +/// rules. +/// @param delegate The delegate that will react to events and errors from the resulting change stream. +/// @param queue Dispatches streaming events to an optional queue, if no queue is provided the main queue is used +- (RLMChangeStream *)watchWithDelegate:(id)delegate + delegateQueue:(nullable dispatch_queue_t)queue NS_REFINED_FOR_SWIFT; + +/// Opens a MongoDB change stream against the collection to watch for changes +/// made to specific documents. The documents to watch must be explicitly +/// specified by their _id. +/// @param filterIds The list of _ids in the collection to watch. +/// @param delegate The delegate that will react to events and errors from the resulting change stream. +/// @param queue Dispatches streaming events to an optional queue, if no queue is provided the main queue is used +- (RLMChangeStream *)watchWithFilterIds:(NSArray *)filterIds + delegate:(id)delegate + delegateQueue:(nullable dispatch_queue_t)queue NS_REFINED_FOR_SWIFT; + +/// Opens a MongoDB change stream against the collection to watch for changes. The provided BSON document will be +/// used as a match expression filter on the change events coming from the stream. +/// +/// See https://docs.mongodb.com/manual/reference/operator/aggregation/match/ for documentation around how to define +/// a match filter. +/// +/// Defining the match expression to filter ChangeEvents is similar to defining the match expression for triggers: +/// https://docs.mongodb.com/realm/triggers/database-triggers/ +/// @param matchFilter The $match filter to apply to incoming change events +/// @param delegate The delegate that will react to events and errors from the resulting change stream. +/// @param queue Dispatches streaming events to an optional queue, if no queue is provided the main queue is used +- (RLMChangeStream *)watchWithMatchFilter:(NSDictionary> *)matchFilter + delegate:(id)delegate + delegateQueue:(nullable dispatch_queue_t)queue NS_REFINED_FOR_SWIFT; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMMongoDatabase.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMMongoDatabase.h new file mode 100644 index 000000000..177fbc1b8 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMMongoDatabase.h @@ -0,0 +1,51 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMMongoCollection; + +/// The `RLMMongoDatabase` represents a MongoDB database, which holds a group +/// of collections that contain your data. +/// +/// It can be retrieved from the `RLMMongoClient`. +/// +/// Use it to get `RLMMongoCollection`s for reading and writing data. +/// +/// - Note: +/// Before you can read or write data, a user must log in`. +/// +/// - SeeAlso: +/// `RLMMongoClient`, `RLMMongoCollection` +RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class +@interface RLMMongoDatabase : NSObject + +/// The name of this database +@property (nonatomic, readonly) NSString *name; + +/// Gets a collection. +/// @param name The name of the collection to return +/// @returns The collection +- (RLMMongoCollection *)collectionWithName:(NSString *)name; +// NEXT-MAJOR: NS_SWIFT_NAME(collection(named:)) + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMNetworkTransport.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMNetworkTransport.h new file mode 100644 index 000000000..2884b4296 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMNetworkTransport.h @@ -0,0 +1,132 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/// Allowed HTTP methods to be used with `RLMNetworkTransport`. +typedef RLM_CLOSED_ENUM(int32_t, RLMHTTPMethod) { + /// GET is used to request data from a specified resource. + RLMHTTPMethodGET = 0, + /// POST is used to send data to a server to create/update a resource. + RLMHTTPMethodPOST = 1, + /// PATCH is used to send data to a server to update a resource. + RLMHTTPMethodPATCH = 2, + /// PUT is used to send data to a server to create/update a resource. + RLMHTTPMethodPUT = 3, + /// The DELETE method deletes the specified resource. + RLMHTTPMethodDELETE = 4 +}; + +/// An HTTP request that can be made to an arbitrary server. +@interface RLMRequest : NSObject + +/// The HTTP method of this request. +@property (nonatomic, assign) RLMHTTPMethod method; + +/// The URL to which this request will be made. +@property (nonatomic, strong) NSString *url; + +/// The number of milliseconds that the underlying transport should spend on an +/// HTTP round trip before failing with an error. +@property (nonatomic, assign) NSTimeInterval timeout; + +/// The HTTP headers of this request. +@property (nonatomic, strong) NSDictionary* headers; + +/// The body of the request. +@property (nonatomic, strong) NSString* body; + +@end + +/// The contents of an HTTP response. +@interface RLMResponse : NSObject + +/// The status code of the HTTP response. +@property (nonatomic, assign) NSInteger httpStatusCode; + +/// A custom status code provided by the SDK. +@property (nonatomic, assign) NSInteger customStatusCode; + +/// The headers of the HTTP response. +@property (nonatomic, strong) NSDictionary* headers; + +/// The body of the HTTP response. +@property (nonatomic, strong) NSString *body; + +@end + +/// Delegate which is used for subscribing to changes. +@protocol RLMEventDelegate +/// Invoked when a change event has been received. +/// @param event The change event encoded as NSData +- (void)didReceiveEvent:(NSData *)event; +/// A error has occurred while subscribing to changes. +/// @param error The error that has occurred. +- (void)didReceiveError:(NSError *)error; +/// The stream was opened. +- (void)didOpen; +/// The stream has been closed. +/// @param error The error that has occurred. +- (void)didCloseWithError:(NSError *_Nullable)error; +@end + +/// A block for receiving an `RLMResponse` from the `RLMNetworkTransport`. +RLM_SWIFT_SENDABLE // invoked on a backgroun thread +typedef void(^RLMNetworkTransportCompletionBlock)(RLMResponse *); + +/// Transporting protocol for foreign interfaces. Allows for custom +/// request/response handling. +RLM_SWIFT_SENDABLE // used from multiple threads so must be internally thread-safe +@protocol RLMNetworkTransport + +/** + Sends a request to a given endpoint. + + @param request The request to send. + @param completionBlock A callback invoked on completion of the request. +*/ +- (void)sendRequestToServer:(RLMRequest *)request + completion:(RLMNetworkTransportCompletionBlock)completionBlock; + +/// Starts an event stream request. +/// @param request The RLMRequest to start. +/// @param subscriber The RLMEventDelegate which will subscribe to changes from the server. +- (NSURLSession *)doStreamRequest:(RLMRequest *)request + eventSubscriber:(id)subscriber; + +@end + +/// Transporting protocol for foreign interfaces. Allows for custom +/// request/response handling. +RLM_SWIFT_SENDABLE // is internally thread-safe +@interface RLMNetworkTransport : NSObject + +/** + Sends a request to a given endpoint. + + @param request The request to send. + @param completionBlock A callback invoked on completion of the request. +*/ +- (void)sendRequestToServer:(RLMRequest *) request + completion:(RLMNetworkTransportCompletionBlock)completionBlock; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMObject.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMObject.h new file mode 100644 index 000000000..9bcfbe310 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMObject.h @@ -0,0 +1,811 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMNotificationToken; +@class RLMObjectSchema; +@class RLMPropertyChange; +@class RLMPropertyDescriptor; +@class RLMRealm; +@class RLMResults; + +/** + `RLMObject` is a base class for model objects representing data stored in Realms. + + Define your model classes by subclassing `RLMObject` and adding properties to be managed. + Then instantiate and use your custom subclasses instead of using the `RLMObject` class directly. + + // Dog.h + @interface Dog : RLMObject + @property NSString *name; + @property BOOL adopted; + @end + + // Dog.m + @implementation Dog + @end //none needed + + ### Supported property types + + - `NSString` + - `NSInteger`, `int`, `long`, `float`, and `double` + - `BOOL` or `bool` + - `NSDate` + - `NSData` + - `NSNumber`, where `X` is one of `RLMInt`, `RLMFloat`, `RLMDouble` or `RLMBool`, for optional number properties + - `RLMObject` subclasses, to model many-to-one relationships. + - `RLMArray`, where `X` is an `RLMObject` subclass, to model many-to-many relationships. + + ### Querying + + You can initiate queries directly via the class methods: `allObjects`, `objectsWhere:`, and `objectsWithPredicate:`. + These methods allow you to easily query a custom subclass for instances of that class in the default Realm. + + To search in a Realm other than the default Realm, use the `allObjectsInRealm:`, `objectsInRealm:where:`, + and `objectsInRealm:withPredicate:` class methods. + + @see `RLMRealm` + + ### Relationships + + See our [Realm Swift Documentation](https://www.mongodb.com/docs/realm/sdk/swift/fundamentals/relationships/#relationships) for more details. + + ### Key-Value Observing + + All `RLMObject` properties (including properties you create in subclasses) are + [Key-Value Observing compliant](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html), + except for `realm` and `objectSchema`. + + Keep the following tips in mind when observing Realm objects: + + 1. Unlike `NSMutableArray` properties, `RLMArray` properties do not require + using the proxy object returned from `-mutableArrayValueForKey:`, or defining + KVC mutation methods on the containing class. You can simply call methods on + the `RLMArray` directly; any changes will be automatically observed by the containing + object. + 2. Unmanaged `RLMObject` instances cannot be added to a Realm while they have any + observed properties. + 3. Modifying managed `RLMObject`s within `-observeValueForKeyPath:ofObject:change:context:` + is not recommended. Properties may change even when the Realm is not in a write + transaction (for example, when `-[RLMRealm refresh]` is called after changes + are made on a different thread), and notifications sent prior to the change + being applied (when `NSKeyValueObservingOptionPrior` is used) may be sent at + times when you *cannot* begin a write transaction. + */ + +@interface RLMObject : RLMObjectBase + +#pragma mark - Creating & Initializing Objects + +/** + Creates an unmanaged instance of a Realm object. + + Call `addObject:` on an `RLMRealm` instance to add an unmanaged object into that Realm. + + @see `[RLMRealm addObject:]` + */ +- (instancetype)init NS_DESIGNATED_INITIALIZER; + + +/** + Creates an unmanaged instance of a Realm object. + + Pass in an `NSArray` or `NSDictionary` instance to set the values of the object's properties. + + Call `addObject:` on an `RLMRealm` instance to add an unmanaged object into that Realm. + + @see `[RLMRealm addObject:]` + */ +- (instancetype)initWithValue:(id)value; + + +/** + Returns the class name for a Realm object subclass. + + @warning Do not override. Realm relies on this method returning the exact class + name. + + @return The class name for the model class. + */ ++ (NSString *)className; + +/** + Creates an instance of a Realm object with a given value, and adds it to the default Realm. + + If nested objects are included in the argument, `createInDefaultRealmWithValue:` will be recursively called + on them. + + The `value` argument can be a key-value coding compliant object, an array or dictionary returned from the methods in + `NSJSONSerialization`, or an array containing one element for each managed property. + + An exception will be thrown if any required properties are not present and those properties + were not defined with default values. + + If the `value` argument is an array, all properties must be present, valid and in the same + order as the properties defined in the model. + + @param value The value used to populate the object. + + @see `defaultPropertyValues` + */ ++ (instancetype)createInDefaultRealmWithValue:(id)value; + +/** + Creates an instance of a Realm object with a given value, and adds it to the specified Realm. + + If nested objects are included in the argument, `createInRealm:withValue:` will be recursively called + on them. + + The `value` argument can be a key-value coding compliant object, an array or dictionary returned from the methods in + `NSJSONSerialization`, or an array containing one element for each managed property. + + An exception will be thrown if any required properties are not present and those properties + were not defined with default values. + + If the `value` argument is an array, all properties must be present, valid and in the same + order as the properties defined in the model. + + @param realm The Realm which should manage the newly-created object. + @param value The value used to populate the object. + + @see `defaultPropertyValues` + */ ++ (instancetype)createInRealm:(RLMRealm *)realm withValue:(id)value; + +/** + Creates or updates a Realm object within the default Realm. + + This method may only be called on Realm object types with a primary key defined. If there is already + an object with the same primary key value in the default Realm, its values are updated and the object + is returned. Otherwise, this method creates and populates a new instance of the object in the default Realm. + + If nested objects are included in the argument, `createOrUpdateInDefaultRealmWithValue:` will be + recursively called on them if they have primary keys, `createInDefaultRealmWithValue:` if they do not. + + The `value` argument is used to populate the object. It can be a Realm object, a key-value coding + compliant object, an array or dictionary returned from the methods in `NSJSONSerialization`, or an + array containing one element for each managed property. + + If the object is being created, an exception will be thrown if any required properties + are not present and those properties were not defined with default values. + + If the `value` argument is a Realm object already managed by the default Realm, the + argument's type is the same as the receiver, and the objects have identical values for + their managed properties, this method does nothing. + + If the object is being updated, each property defined in its schema will be set by copying from + `value` using key-value coding. If the `value` argument does not respond to `valueForKey:` for a + given property name (or getter name, if defined), that value will remain untouched. + Nullable properties on the object can be set to nil by using `NSNull` as the updated value. + Each property is set even if the existing value is the same as the new value being set, and + notifications will report them all being changed. See `createOrUpdateModifiedInDefaultRealmWithValue:` + for a version of this function which only sets the values which have changed. + + If the `value` argument is an array, all properties must be present, valid and in the same + order as the properties defined in the model. + + @param value The value used to populate the object. + + @see `defaultPropertyValues`, `primaryKey` + */ ++ (instancetype)createOrUpdateInDefaultRealmWithValue:(id)value; + +/** + Creates or updates a Realm object within the default Realm. + + This method may only be called on Realm object types with a primary key defined. If there is already + an object with the same primary key value in the default Realm, its values are updated and the object + is returned. Otherwise, this method creates and populates a new instance of the object in the default Realm. + + If nested objects are included in the argument, `createOrUpdateModifiedInDefaultRealmWithValue:` will be + recursively called on them if they have primary keys, `createInDefaultRealmWithValue:` if they do not. + + The `value` argument is used to populate the object. It can be a Realm object, a key-value coding + compliant object, an array or dictionary returned from the methods in `NSJSONSerialization`, or an + array containing one element for each managed property. + + If the object is being created, an exception will be thrown if any required properties + are not present and those properties were not defined with default values. + + If the `value` argument is a Realm object already managed by the default Realm, the + argument's type is the same as the receiver, and the objects have identical values for + their managed properties, this method does nothing. + + If the object is being updated, each property defined in its schema will be set by copying from + `value` using key-value coding. If the `value` argument does not respond to `valueForKey:` for a + given property name (or getter name, if defined), that value will remain untouched. + Nullable properties on the object can be set to nil by using `NSNull` as the updated value. + Unlike `createOrUpdateInDefaultRealmWithValue:`, only properties which have changed in value are + set, and any change notifications produced by this call will report only which properies have + actually changed. + + Checking which properties have changed imposes a small amount of overhead, and so this method + may be slower when all or nearly all of the properties being set have changed. If most or all + of the properties being set have not changed, this method will be much faster than unconditionally + setting all of them, and will also reduce how much data has to be written to the Realm, saving + both i/o time and disk space. + + If the `value` argument is an array, all properties must be present, valid and in the same + order as the properties defined in the model. + + @param value The value used to populate the object. + + @see `defaultPropertyValues`, `primaryKey` + */ ++ (instancetype)createOrUpdateModifiedInDefaultRealmWithValue:(id)value; + +/** + Creates or updates an Realm object within a specified Realm. + + This method may only be called on Realm object types with a primary key defined. If there is already + an object with the same primary key value in the given Realm, its values are updated and the object + is returned. Otherwise this method creates and populates a new instance of this object in the given Realm. + + If nested objects are included in the argument, `createOrUpdateInRealm:withValue:` will be + recursively called on them if they have primary keys, `createInRealm:withValue:` if they do not. + + The `value` argument is used to populate the object. It can be a Realm object, a key-value coding + compliant object, an array or dictionary returned from the methods in `NSJSONSerialization`, or an + array containing one element for each managed property. + + If the object is being created, an exception will be thrown if any required properties + are not present and those properties were not defined with default values. + + If the `value` argument is a Realm object already managed by the given Realm, the + argument's type is the same as the receiver, and the objects have identical values for + their managed properties, this method does nothing. + + If the object is being updated, each property defined in its schema will be set by copying from + `value` using key-value coding. If the `value` argument does not respond to `valueForKey:` for a + given property name (or getter name, if defined), that value will remain untouched. + Nullable properties on the object can be set to nil by using `NSNull` as the updated value. + Each property is set even if the existing value is the same as the new value being set, and + notifications will report them all being changed. See `createOrUpdateModifiedInRealm:withValue:` + for a version of this function which only sets the values which have changed. + + If the `value` argument is an array, all properties must be present, valid and in the same + order as the properties defined in the model. + + @param realm The Realm which should own the object. + @param value The value used to populate the object. + + @see `defaultPropertyValues`, `primaryKey` + */ ++ (instancetype)createOrUpdateInRealm:(RLMRealm *)realm withValue:(id)value; + +/** + Creates or updates an Realm object within a specified Realm. + + This method may only be called on Realm object types with a primary key defined. If there is already + an object with the same primary key value in the given Realm, its values are updated and the object + is returned. Otherwise this method creates and populates a new instance of this object in the given Realm. + + If nested objects are included in the argument, `createOrUpdateInRealm:withValue:` will be + recursively called on them if they have primary keys, `createInRealm:withValue:` if they do not. + + The `value` argument is used to populate the object. It can be a Realm object, a key-value coding + compliant object, an array or dictionary returned from the methods in `NSJSONSerialization`, or an + array containing one element for each managed property. + + If the object is being created, an exception will be thrown if any required properties + are not present and those properties were not defined with default values. + + If the `value` argument is a Realm object already managed by the given Realm, the + argument's type is the same as the receiver, and the objects have identical values for + their managed properties, this method does nothing. + + If the object is being updated, each property defined in its schema will be set by copying from + `value` using key-value coding. If the `value` argument does not respond to `valueForKey:` for a + given property name (or getter name, if defined), that value will remain untouched. + Nullable properties on the object can be set to nil by using `NSNull` as the updated value. + Unlike `createOrUpdateInRealm:withValue:`, only properties which have changed in value are + set, and any change notifications produced by this call will report only which properies have + actually changed. + + Checking which properties have changed imposes a small amount of overhead, and so this method + may be slower when all or nearly all of the properties being set have changed. If most or all + of the properties being set have not changed, this method will be much faster than unconditionally + setting all of them, and will also reduce how much data has to be written to the Realm, saving + both i/o time and disk space. + + If the `value` argument is an array, all properties must be present, valid and in the same + order as the properties defined in the model. + + @param realm The Realm which should own the object. + @param value The value used to populate the object. + + @see `defaultPropertyValues`, `primaryKey` + */ ++ (instancetype)createOrUpdateModifiedInRealm:(RLMRealm *)realm withValue:(id)value; + +#pragma mark - Properties + +/** + The Realm which manages the object, or `nil` if the object is unmanaged. + */ +@property (nonatomic, readonly, nullable) RLMRealm *realm; + +/** + The object schema which lists the managed properties for the object. + */ +@property (nonatomic, readonly) RLMObjectSchema *objectSchema; + +/** + Indicates if the object can no longer be accessed because it is now invalid. + + An object can no longer be accessed if the object has been deleted from the Realm that manages it, or + if `invalidate` is called on that Realm. + */ +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +/** + Indicates if this object is frozen. + + @see `-[RLMObject freeze]` + */ +@property (nonatomic, readonly, getter = isFrozen) BOOL frozen; + + +#pragma mark - Customizing your Objects + +/** + Returns an array of property names for properties which should be indexed. + + Only string, integer, boolean, and `NSDate` properties are supported. + + @return An array of property names. + */ ++ (NSArray *)indexedProperties; + +/** + Override this method to specify the default values to be used for each property. + + @return A dictionary mapping property names to their default values. + */ ++ (nullable NSDictionary *)defaultPropertyValues; + +/** + Override this method to specify the name of a property to be used as the primary key. + + Only properties of types `RLMPropertyTypeString` and `RLMPropertyTypeInt` can be designated as the primary key. + Primary key properties enforce uniqueness for each value whenever the property is set, which incurs minor overhead. + Indexes are created automatically for primary key properties. + + @return The name of the property designated as the primary key. + */ ++ (nullable NSString *)primaryKey; + +/** + Override this method to specify the names of properties to ignore. These properties will not be managed by the Realm + that manages the object. + + @return An array of property names to ignore. + */ ++ (nullable NSArray *)ignoredProperties; + +/** + Override this method to specify the names of properties that are non-optional (i.e. cannot be assigned a `nil` value). + + By default, all properties of a type whose values can be set to `nil` are considered optional properties. + To require that an object in a Realm always store a non-`nil` value for a property, + add the name of the property to the array returned from this method. + + Properties of `RLMObject` type cannot be non-optional. Array and `NSNumber` properties + can be non-optional, but there is no reason to do so: arrays do not support storing nil, and + if you want a non-optional number you should instead use the primitive type. + + @return An array of property names that are required. + */ ++ (NSArray *)requiredProperties; + +/** + Override this method to provide information related to properties containing linking objects. + + Each property of type `RLMLinkingObjects` must have a key in the dictionary returned by this method consisting + of the property name. The corresponding value must be an instance of `RLMPropertyDescriptor` that describes the class + and property that the property is linked to. + + return @{ @"owners": [RLMPropertyDescriptor descriptorWithClass:Owner.class propertyName:@"dogs"] }; + + @return A dictionary mapping property names to `RLMPropertyDescriptor` instances. + */ ++ (NSDictionary *)linkingObjectsProperties; + +#pragma mark - Getting & Querying Objects from the Default Realm + +/** + Returns all objects of this object type from the default Realm. + + @return An `RLMResults` containing all objects of this type in the default Realm. + */ ++ (RLMResults *)allObjects; + +/** + Returns all objects of this object type matching the given predicate from the default Realm. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + + @return An `RLMResults` containing all objects of this type in the default Realm that match the given predicate. + */ ++ (RLMResults *)objectsWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: ++ (RLMResults<__kindof RLMObject *> *)objectsWhere:(NSString *)predicateFormat args:(va_list)args; + + +/** + Returns all objects of this object type matching the given predicate from the default Realm. + + @param predicate The predicate with which to filter the objects. + + @return An `RLMResults` containing all objects of this type in the default Realm that match the given predicate. + */ ++ (RLMResults *)objectsWithPredicate:(nullable NSPredicate *)predicate; + +/** + Retrieves the single instance of this object type with the given primary key from the default Realm. + + Returns the object from the default Realm which has the given primary key, or + `nil` if the object does not exist. This is slightly faster than the otherwise + equivalent `[[SubclassName objectsWhere:@"primaryKeyPropertyName = %@", key] firstObject]`. + + This method requires that `primaryKey` be overridden on the receiving subclass. + + @return An object of this object type, or `nil` if an object with the given primary key does not exist. + @see `-primaryKey` + */ ++ (nullable instancetype)objectForPrimaryKey:(nullable id)primaryKey NS_SWIFT_NAME(object(forPrimaryKey:)); + + +#pragma mark - Querying Specific Realms + +/** + Returns all objects of this object type from the specified Realm. + + @param realm The Realm to query. + + @return An `RLMResults` containing all objects of this type in the specified Realm. + */ ++ (RLMResults *)allObjectsInRealm:(RLMRealm *)realm; + +/** + Returns all objects of this object type matching the given predicate from the specified Realm. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + @param realm The Realm to query. + + @return An `RLMResults` containing all objects of this type in the specified Realm that match the given predicate. + */ ++ (RLMResults *)objectsInRealm:(RLMRealm *)realm where:(NSString *)predicateFormat, ...; + +/// :nodoc: ++ (RLMResults<__kindof RLMObject *> *)objectsInRealm:(RLMRealm *)realm where:(NSString *)predicateFormat args:(va_list)args; + +/** + Returns all objects of this object type matching the given predicate from the specified Realm. + + @param predicate A predicate to use to filter the elements. + @param realm The Realm to query. + + @return An `RLMResults` containing all objects of this type in the specified Realm that match the given predicate. + */ ++ (RLMResults *)objectsInRealm:(RLMRealm *)realm withPredicate:(nullable NSPredicate *)predicate; + +/** + Retrieves the single instance of this object type with the given primary key from the specified Realm. + + Returns the object from the specified Realm which has the given primary key, or + `nil` if the object does not exist. This is slightly faster than the otherwise + equivalent `[[SubclassName objectsInRealm:realm where:@"primaryKeyPropertyName = %@", key] firstObject]`. + + This method requires that `primaryKey` be overridden on the receiving subclass. + + @return An object of this object type, or `nil` if an object with the given primary key does not exist. + @see `-primaryKey` + */ ++ (nullable instancetype)objectInRealm:(RLMRealm *)realm forPrimaryKey:(nullable id)primaryKey NS_SWIFT_NAME(object(in:forPrimaryKey:)); + +#pragma mark - Notifications + +/** + A callback block for `RLMObject` notifications. + + If the object is deleted from the managing Realm, the block is called with + `deleted` set to `YES` and the other two arguments are `nil`. The block will + never be called again after this. + + If the object is modified, the block will be called with `deleted` set to + `NO`, a `nil` error, and an array of `RLMPropertyChange` objects which + indicate which properties of the objects were modified. + + `error` is always `nil` and will be removed in a future version. + */ +typedef void (^RLMObjectChangeBlock)(BOOL deleted, + NSArray *_Nullable changes, + NSError *_Nullable error); + +/** + Registers a block to be called each time the object changes. + + The block will be asynchronously called after each write transaction which + deletes the object or modifies any of the managed properties of the object, + including self-assignments that set a property to its existing value. + + For write transactions performed on different threads or in different + processes, the block will be called when the managing Realm is + (auto)refreshed to a version including the changes, while for local write + transactions it will be called at some point in the future after the write + transaction is committed. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When notifications + can't be delivered instantly, multiple notifications may be coalesced into a + single notification. + + Unlike with `RLMArray` and `RLMResults`, there is no "initial" callback made + after you add a new notification block. + + Only objects which are managed by a Realm can be observed in this way. You + must retain the returned token for as long as you want updates to be sent to + the block. To stop receiving updates, call `-invalidate` on the token. + + It is safe to capture a strong reference to the observed object within the + callback block. There is no retain cycle due to that the callback is retained + by the returned token and not by the object itself. + + @warning This method cannot be called during a write transaction, when the + containing Realm is read-only, or on an unmanaged object. + + @param block The block to be called whenever a change occurs. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(RLMObjectChangeBlock)block; + +/** + Registers a block to be called each time the object changes. + + The block will be asynchronously called after each write transaction which + deletes the object or modifies any of the managed properties of the object, + including self-assignments that set a property to its existing value. + + For write transactions performed on different threads or in different + processes, the block will be called when the managing Realm is + (auto)refreshed to a version including the changes, while for local write + transactions it will be called at some point in the future after the write + transaction is committed. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + Unlike with `RLMArray` and `RLMResults`, there is no "initial" callback made + after you add a new notification block. + + Only objects which are managed by a Realm can be observed in this way. You + must retain the returned token for as long as you want updates to be sent to + the block. To stop receiving updates, call `-invalidate` on the token. + + It is safe to capture a strong reference to the observed object within the + callback block. There is no retain cycle due to that the callback is retained + by the returned token and not by the object itself. + + @warning This method cannot be called during a write transaction, when the + containing Realm is read-only, or on an unmanaged object. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(RLMObjectChangeBlock)block queue:(dispatch_queue_t)queue; + +/** + Registers a block to be called each time the object changes. + + The block will be asynchronously called after each write transaction which + deletes the object or modifies any of the managed properties of the object, + including self-assignments that set a property to its existing value. + + For write transactions performed on different threads or in different + processes, the block will be called when the managing Realm is + (auto)refreshed to a version including the changes, while for local write + transactions it will be called at some point in the future after the write + transaction is committed. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + Unlike with `RLMArray` and `RLMResults`, there is no "initial" callback made + after you add a new notification block. + + Only objects which are managed by a Realm can be observed in this way. You + must retain the returned token for as long as you want updates to be sent to + the block. To stop receiving updates, call `-invalidate` on the token. + + It is safe to capture a strong reference to the observed object within the + callback block. There is no retain cycle due to that the callback is retained + by the returned token and not by the object itself. + + @warning This method cannot be called during a write transaction, when the + containing Realm is read-only, or on an unmanaged object. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(RLMObjectChangeBlock)block keyPaths:(NSArray *)keyPaths queue:(dispatch_queue_t)queue; + +/** + Registers a block to be called each time the object changes. + + The block will be asynchronously called after each write transaction which + deletes the object or modifies any of the managed properties of the object, + including self-assignments that set a property to its existing value. + + For write transactions performed on different threads or in different + processes, the block will be called when the managing Realm is + (auto)refreshed to a version including the changes, while for local write + transactions it will be called at some point in the future after the write + transaction is committed. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + Unlike with `RLMArray` and `RLMResults`, there is no "initial" callback made + after you add a new notification block. + + Only objects which are managed by a Realm can be observed in this way. You + must retain the returned token for as long as you want updates to be sent to + the block. To stop receiving updates, call `-invalidate` on the token. + + It is safe to capture a strong reference to the observed object within the + callback block. There is no retain cycle due to that the callback is retained + by the returned token and not by the object itself. + + @warning This method cannot be called during a write transaction, when the + containing Realm is read-only, or on an unmanaged object. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(RLMObjectChangeBlock)block keyPaths:(NSArray *)keyPaths; + + +#pragma mark - Other Instance Methods + +/** + Returns YES if another Realm object instance points to the same object as the receiver in the Realm managing + the receiver. + + For frozen objects and object types with a primary key, `isEqual:` is + overridden to use the same logic as this method (along with a corresponding + implementation for `hash`). Non-frozen objects without primary keys use + pointer identity for `isEqual:` and `hash`. + + @param object The object to compare the receiver to. + + @return Whether the object represents the same object as the receiver. + */ +- (BOOL)isEqualToObject:(RLMObject *)object; + +/** + Returns a frozen (immutable) snapshot of this object. + + The frozen copy is an immutable object which contains the same data as this + object currently contains, but will not update when writes are made to the + containing Realm. Unlike live objects, frozen objects can be accessed from any + thread. + + - warning: Holding onto a frozen object for an extended period while performing write + transaction on the Realm may result in the Realm file growing to large sizes. See + `Realm.Configuration.maximumNumberOfActiveVersions` for more information. + - warning: This method can only be called on a managed object. + */ +- (instancetype)freeze NS_RETURNS_RETAINED; + +/** + Returns a live (mutable) reference of this object. + + This method creates a managed accessor to a live copy of the same frozen object. + Will return self if called on an already live object. + */ +- (instancetype)thaw; + +#pragma mark - Dynamic Accessors + +/// :nodoc: +- (nullable id)objectForKeyedSubscript:(NSString *)key; + +/// :nodoc: +- (void)setObject:(nullable id)obj forKeyedSubscript:(NSString *)key; + +@end + +/** + Information about a specific property which changed in an `RLMObject` change notification. + */ +@interface RLMPropertyChange : NSObject + +/** + The name of the property which changed. + */ +@property (nonatomic, readonly, strong) NSString *name; + +/** + The value of the property before the change occurred. This will always be `nil` + if the change happened on the same thread as the notification and for `RLMArray` + properties. + + For object properties this will give the object which was previously linked to, + but that object will have its new values and not the values it had before the + changes. This means that `previousValue` may be a deleted object, and you will + need to check `invalidated` before accessing any of its properties. + */ +@property (nonatomic, readonly, strong, nullable) id previousValue; + +/** + The value of the property after the change occurred. This will always be `nil` + for `RLMArray` properties. + */ +@property (nonatomic, readonly, strong, nullable) id value; +@end + +#pragma mark - RLMArray Property Declaration + +/** + Properties on `RLMObject`s of type `RLMArray` must have an associated type. A type is associated + with an `RLMArray` property by defining a protocol for the object type that the array should contain. + To define the protocol for an object, you can use the macro RLM_ARRAY_TYPE: + + RLM_ARRAY_TYPE(ObjectType) + ... + @property RLMArray *arrayOfObjectTypes; + */ +#define RLM_ARRAY_TYPE(RLM_OBJECT_SUBCLASS)\ +__attribute__((deprecated("RLM_ARRAY_TYPE has been deprecated. Use RLM_COLLECTION_TYPE instead."))) \ +@protocol RLM_OBJECT_SUBCLASS \ +@end + +/** + Properties on `RLMObject`s of type `RLMSet` / `RLMArray` must have an associated type. A type is associated + with an `RLMSet` / `RLMArray` property by defining a protocol for the object type that the array should contain. + To define the protocol for an object, you can use the macro RLM_COLLECTION_TYPE: + + RLM_COLLECTION_TYPE(ObjectType) + ... + @property RLMSet *setOfObjectTypes; + @property RLMArray *arrayOfObjectTypes; + */ +#define RLM_COLLECTION_TYPE(RLM_OBJECT_SUBCLASS)\ +@protocol RLM_OBJECT_SUBCLASS \ +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMObjectBase.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMObjectBase.h new file mode 100644 index 000000000..7e9c83c8f --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMObjectBase.h @@ -0,0 +1,40 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/// :nodoc: +@interface RLMObjectBase : NSObject + +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +- (instancetype)init NS_DESIGNATED_INITIALIZER; + ++ (NSString *)className; + +// Returns whether the class is included in the default set of classes managed by a Realm. ++ (BOOL)shouldIncludeInDefaultSchema; + ++ (nullable NSString *)_realmObjectName; ++ (nullable NSDictionary *)_realmColumnNames; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMObjectBase_Dynamic.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMObjectBase_Dynamic.h new file mode 100644 index 000000000..fb74a5b27 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMObjectBase_Dynamic.h @@ -0,0 +1,82 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMObjectSchema, RLMRealm; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +/** + Returns the Realm that manages the object, if one exists. + + @warning This function is useful only in specialized circumstances, for example, when building components + that integrate with Realm. If you are simply building an app on Realm, it is + recommended to retrieve the Realm that manages the object via `RLMObject`. + + @param object An `RLMObjectBase` obtained via a Swift `Object` or `RLMObject`. + + @return The Realm which manages this object. Returns `nil `for unmanaged objects. + */ +FOUNDATION_EXTERN RLMRealm * _Nullable RLMObjectBaseRealm(RLMObjectBase * _Nullable object); + +/** + Returns an `RLMObjectSchema` which describes the managed properties of the object. + + @warning This function is useful only in specialized circumstances, for example, when building components + that integrate with Realm. If you are simply building an app on Realm, it is + recommended to retrieve `objectSchema` via `RLMObject`. + + @param object An `RLMObjectBase` obtained via a Swift `Object` or `RLMObject`. + + @return The object schema which lists the managed properties for the object. + */ +FOUNDATION_EXTERN RLMObjectSchema * _Nullable RLMObjectBaseObjectSchema(RLMObjectBase * _Nullable object); + +/** + Returns the object corresponding to a key value. + + @warning This function is useful only in specialized circumstances, for example, when building components + that integrate with Realm. If you are simply building an app on Realm, it is + recommended to retrieve key values via `RLMObject`. + + @warning Will throw an `NSUndefinedKeyException` if `key` is not present on the object. + + @param object An `RLMObjectBase` obtained via a Swift `Object` or `RLMObject`. + @param key The name of the property. + + @return The object for the property requested. + */ +FOUNDATION_EXTERN id _Nullable RLMObjectBaseObjectForKeyedSubscript(RLMObjectBase * _Nullable object, NSString *key); + +/** + Sets a value for a key on the object. + + @warning This function is useful only in specialized circumstances, for example, when building components + that integrate with Realm. If you are simply building an app on Realm, it is + recommended to set key values via `RLMObject`. + + @warning Will throw an `NSUndefinedKeyException` if `key` is not present on the object. + + @param object An `RLMObjectBase` obtained via a Swift `Object` or `RLMObject`. + @param key The name of the property. + @param obj The object to set as the value of the key. + */ +FOUNDATION_EXTERN void RLMObjectBaseSetObjectForKeyedSubscript(RLMObjectBase * _Nullable object, NSString *key, id _Nullable obj); + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMObjectId.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMObjectId.h new file mode 100644 index 000000000..32ef7b047 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMObjectId.h @@ -0,0 +1,79 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** + A 12-byte (probably) unique object identifier. + + ObjectIds are similar to a GUID or a UUID, and can be used to uniquely identify + objects without a centralized ID generator. An ObjectID consists of: + + 1. A 4 byte timestamp measuring the creation time of the ObjectId in seconds + since the Unix epoch. + 2. A 5 byte random value + 3. A 3 byte counter, initialized to a random value. + + ObjectIds are intended to be fast to generate. Sorting by an ObjectId field + will typically result in the objects being sorted in creation order. + */ +RLM_SWIFT_SENDABLE // immutable +@interface RLMObjectId : NSObject +/// Creates a new randomly-initialized ObjectId. ++ (nonnull instancetype)objectId NS_SWIFT_NAME(generate()); + +/// Creates a new zero-initialized ObjectId. +- (instancetype)init; + +/// Creates a new ObjectId from the given 24-byte hexadecimal string. +/// +/// Returns `nil` and sets `error` if the string is not 24 characters long or +/// contains any characters other than 0-9a-fA-F. +/// +/// @param string The string to parse. +- (nullable instancetype)initWithString:(NSString *)string + error:(NSError **)error; + +/// Creates a new ObjectId using the given date, machine identifier, process identifier. +/// +/// @param timestamp A timestamp as NSDate. +/// @param machineIdentifier The machine identifier. +/// @param processIdentifier The process identifier. +- (instancetype)initWithTimestamp:(NSDate *)timestamp + machineIdentifier:(int)machineIdentifier + processIdentifier:(int)processIdentifier; + +/// Comparision operator to check if the right hand side is greater than the current value. +- (BOOL)isGreaterThan:(nullable RLMObjectId *)objectId; +/// Comparision operator to check if the right hand side is greater than or equal to the current value. +- (BOOL)isGreaterThanOrEqualTo:(nullable RLMObjectId *)objectId; +/// Comparision operator to check if the right hand side is less than the current value. +- (BOOL)isLessThan:(nullable RLMObjectId *)objectId; +/// Comparision operator to check if the right hand side is less than or equal to the current value. +- (BOOL)isLessThanOrEqualTo:(nullable RLMObjectId *)objectId; + +/// Get the ObjectId as a 24-character hexadecimal string. +@property (nonatomic, readonly) NSString *stringValue; +/// Get the timestamp for the RLMObjectId +@property (nonatomic, readonly) NSDate *timestamp; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMObjectSchema.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMObjectSchema.h new file mode 100644 index 000000000..9c4666b7c --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMObjectSchema.h @@ -0,0 +1,83 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMProperty; + +/** + This class represents Realm model object schemas. + + When using Realm, `RLMObjectSchema` instances allow performing migrations and + introspecting the database's schema. + + Object schemas map to tables in the core database. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // not actually immutable, but the public API kinda is +@interface RLMObjectSchema : NSObject + +#pragma mark - Properties + +/** + An array of `RLMProperty` instances representing the managed properties of a class described by the schema. + + @see `RLMProperty` + */ +@property (nonatomic, readonly, copy) NSArray *properties; + +/** + The name of the class the schema describes. + */ +@property (nonatomic, readonly) NSString *className; + +/** + The property which serves as the primary key for the class the schema describes, if any. + */ +@property (nonatomic, readonly, nullable) RLMProperty *primaryKeyProperty; + +/** + Whether this object type is embedded. + */ +@property (nonatomic, readonly) BOOL isEmbedded; + +/** + Whether this object is asymmetric. + */ +@property (nonatomic, readonly) BOOL isAsymmetric; + +#pragma mark - Methods + +/** + Retrieves an `RLMProperty` object by the property name. + + @param propertyName The property's name. + + @return An `RLMProperty` object, or `nil` if there is no property with the given name. + */ +- (nullable RLMProperty *)objectForKeyedSubscript:(NSString *)propertyName; + +/** + Returns whether two `RLMObjectSchema` instances are equal. + */ +- (BOOL)isEqualToObjectSchema:(RLMObjectSchema *)objectSchema; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMProperty.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMProperty.h new file mode 100644 index 000000000..7f2594d3b --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMProperty.h @@ -0,0 +1,149 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/// :nodoc: +@protocol RLMInt @end +/// :nodoc: +@protocol RLMBool @end +/// :nodoc: +@protocol RLMDouble @end +/// :nodoc: +@protocol RLMFloat @end +/// :nodoc: +@protocol RLMString @end +/// :nodoc: +@protocol RLMDate @end +/// :nodoc: +@protocol RLMData @end +/// :nodoc: +@protocol RLMDecimal128 @end +/// :nodoc: +@protocol RLMObjectId @end +/// :nodoc: +@protocol RLMUUID @end + +/// :nodoc: +@interface NSNumber () +@end + +/** + `RLMProperty` instances represent properties managed by a Realm in the context + of an object schema. Such properties may be persisted to a Realm file or + computed from other data from the Realm. + + When using Realm, `RLMProperty` instances allow performing migrations and + introspecting the database's schema. + + These property instances map to columns in the core database. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // not actually immutable, but the public API kinda is +@interface RLMProperty : NSObject + +#pragma mark - Properties + +/** + The name of the property. + */ +@property (nonatomic, readonly) NSString *name; + +/** + The type of the property. + + @see `RLMPropertyType` + */ +@property (nonatomic, readonly) RLMPropertyType type; + +/** + Indicates whether this property is indexed. + + @see `RLMObject` + */ +@property (nonatomic, readonly) BOOL indexed; + +/** + For `RLMObject` and `RLMCollection` properties, the name of the class of object stored in the property. + */ +@property (nonatomic, readonly, copy, nullable) NSString *objectClassName; + +/** + For linking objects properties, the property name of the property the linking objects property is linked to. + */ +@property (nonatomic, readonly, copy, nullable) NSString *linkOriginPropertyName; + +/** + Indicates whether this property is optional. + */ +@property (nonatomic, readonly) BOOL optional; + +/** + Indicates whether this property is an array. + */ +@property (nonatomic, readonly) BOOL array; + +/** + Indicates whether this property is a set. + */ +@property (nonatomic, readonly) BOOL set; + +/** + Indicates whether this property is a dictionary. + */ +@property (nonatomic, readonly) BOOL dictionary; + +/** + Indicates whether this property is an array or set. + */ +@property (nonatomic, readonly) BOOL collection; + +#pragma mark - Methods + +/** + Returns whether a given property object is equal to the receiver. + */ +- (BOOL)isEqualToProperty:(RLMProperty *)property; + +@end + + +/** + An `RLMPropertyDescriptor` instance represents a specific property on a given class. + */ +RLM_SWIFT_SENDABLE RLM_FINAL +@interface RLMPropertyDescriptor : NSObject + +/** + Creates and returns a property descriptor. + + @param objectClass The class of this property descriptor. + @param propertyName The name of this property descriptor. + */ ++ (instancetype)descriptorWithClass:(Class)objectClass propertyName:(NSString *)propertyName; + +/// The class of the property. +@property (nonatomic, readonly) Class objectClass; + +/// The name of the property. +@property (nonatomic, readonly) NSString *propertyName; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMProviderClient.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMProviderClient.h new file mode 100644 index 000000000..ac649960a --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMProviderClient.h @@ -0,0 +1,40 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMApp; + +/// Base provider client interface. +RLM_SWIFT_SENDABLE +@interface RLMProviderClient : NSObject + +/// The app associated with this provider client. +@property (nonatomic, strong, readonly) RLMApp *app; + +/** + Initialize a provider client with a given app. + @param app The app for this provider client. + */ +- (instancetype)initWithApp:(RLMApp *)app; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMPushClient.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMPushClient.h new file mode 100644 index 000000000..0628c3ada --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMPushClient.h @@ -0,0 +1,47 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMApp, RLMUser; + +/// A block type used to report an error +RLM_SWIFT_SENDABLE // invoked on a backgroun thread +typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); + +/// A client which can be used to register devices with the server to receive push notificatons +RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class +@interface RLMPushClient : NSObject + +/// The push notification service name the device will be registered with on the server +@property (nonatomic, readonly, nonnull) NSString *serviceName; + +/// Request to register device token to the server +- (void)registerDeviceWithToken:(NSString *)token + user:(RLMUser *)user + completion:(RLMOptionalErrorBlock)completion NS_SWIFT_NAME(registerDevice(token:user:completion:)); + +/// Request to deregister a device for a user +- (void)deregisterDeviceForUser:(RLMUser *)user + completion:(RLMOptionalErrorBlock)completion NS_SWIFT_NAME(deregisterDevice(user:completion:)); + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMRealm+Sync.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMRealm+Sync.h new file mode 100644 index 000000000..ff20e43c2 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMRealm+Sync.h @@ -0,0 +1,38 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2017 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import + +@class RLMResults, RLMSyncSession; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +/// +@interface RLMRealm (Sync) + +/** + Get the RLMSyncSession used by this Realm. Will be nil if this is not a + synchronized Realm. +*/ +@property (nonatomic, nullable, readonly) RLMSyncSession *syncSession; + +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMRealm.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMRealm.h new file mode 100644 index 000000000..0935e5301 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMRealm.h @@ -0,0 +1,962 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMRealmConfiguration, RLMRealm, RLMObject, RLMSchema, RLMMigration, RLMNotificationToken, RLMThreadSafeReference, RLMAsyncOpenTask, RLMSyncSubscriptionSet; + +/** + A callback block for opening Realms asynchronously. + + Returns the Realm if the open was successful, or an error otherwise. + */ +typedef void(^RLMAsyncOpenRealmCallback)(RLMRealm * _Nullable realm, NSError * _Nullable error); + +/// The Id of the asynchronous transaction. +typedef unsigned RLMAsyncTransactionId; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** + An `RLMRealm` instance (also referred to as "a Realm") represents a Realm + database. + + Realms can either be stored on disk (see `+[RLMRealm realmWithURL:]`) or in + memory (see `RLMRealmConfiguration`). + + `RLMRealm` instances are cached internally, and constructing equivalent `RLMRealm` + objects (for example, by using the same path or identifier) multiple times on a single thread + within a single iteration of the run loop will normally return the same + `RLMRealm` object. + + If you specifically want to ensure an `RLMRealm` instance is + destroyed (for example, if you wish to open a Realm, check some property, and + then possibly delete the Realm file and re-open it), place the code which uses + the Realm within an `@autoreleasepool {}` and ensure you have no other + strong references to it. + + @warning Non-frozen `RLMRealm` instances are thread-confined and cannot be + shared across threads or dispatch queues. Trying to do so will cause an + exception to be thrown. You must call this method on each thread you want to + interact with the Realm on. For dispatch queues, this means that you must call + it in each block which is dispatched, as a queue is not guaranteed to run all + of its blocks on the same thread. + */ + +@interface RLMRealm : NSObject + +#pragma mark - Creating & Initializing a Realm + +/** + Obtains an instance of the default Realm. + + The default Realm is used by the `RLMObject` class methods + which do not take an `RLMRealm` parameter, but is otherwise not special. The + default Realm is persisted as *default.realm* under the *Documents* directory of + your Application on iOS, in your application's *Application Support* + directory on macOS, and in the *Cache* directory on tvOS. + + The default Realm is created using the default `RLMRealmConfiguration`, which + can be changed via `+[RLMRealmConfiguration setDefaultConfiguration:]`. + + @return The default `RLMRealm` instance for the current thread. + */ ++ (instancetype)defaultRealm; + +/** + Obtains an instance of the default Realm bound to the given queue. + + Rather than being confined to the thread they are opened on, queue-bound + RLMRealms are confined to the given queue. They can be accessed from any + thread as long as it is from within a block dispatch to the queue, and + notifications will be delivered to the queue instead of a thread's run loop. + + Realms can only be confined to a serial queue. Queue-confined RLMRealm + instances can be obtained when not on that queue, but attempting to do + anything with that instance without first dispatching to the queue will throw + an incorrect thread exception. + + The default Realm is created using the default `RLMRealmConfiguration`, which + can be changed via `+[RLMRealmConfiguration setDefaultConfiguration:]`. + + @param queue A serial dispatch queue to confine the Realm to. + @return The default `RLMRealm` instance for the given queue. + */ ++ (instancetype)defaultRealmForQueue:(dispatch_queue_t)queue; + +/** + Obtains an `RLMRealm` instance with the given configuration. + + @param configuration A configuration object to use when creating the Realm. + @param error If an error occurs, upon return contains an `NSError` object + that describes the problem. If you are not interested in + possible errors, pass in `NULL`. + + @return An `RLMRealm` instance. + */ ++ (nullable instancetype)realmWithConfiguration:(RLMRealmConfiguration *)configuration error:(NSError **)error; + +/** + Obtains an `RLMRealm` instance with the given configuration bound to the given queue. + + Rather than being confined to the thread they are opened on, queue-bound + RLMRealms are confined to the given queue. They can be accessed from any + thread as long as it is from within a block dispatch to the queue, and + notifications will be delivered to the queue instead of a thread's run loop. + + Realms can only be confined to a serial queue. Queue-confined RLMRealm + instances can be obtained when not on that queue, but attempting to do + anything with that instance without first dispatching to the queue will throw + an incorrect thread exception. + + @param configuration A configuration object to use when creating the Realm. + @param queue A serial dispatch queue to confine the Realm to. + @param error If an error occurs, upon return contains an `NSError` object + that describes the problem. If you are not interested in + possible errors, pass in `NULL`. + + @return An `RLMRealm` instance. + */ ++ (nullable instancetype)realmWithConfiguration:(RLMRealmConfiguration *)configuration + queue:(nullable dispatch_queue_t)queue + error:(NSError **)error; + +/** + Obtains an `RLMRealm` instance persisted at a specified file URL. + + @param fileURL The local URL of the file the Realm should be saved at. + + @return An `RLMRealm` instance. + */ ++ (instancetype)realmWithURL:(NSURL *)fileURL; + +/** + Asynchronously open a Realm and deliver it to a block on the given queue. + + Opening a Realm asynchronously will perform all work needed to get the Realm to + a usable state (such as running potentially time-consuming migrations) on a + background thread before dispatching to the given queue. In addition, + synchronized Realms wait for all remote content available at the time the + operation began to be downloaded and available locally. + + The Realm passed to the callback function is confined to the callback queue as + if `-[RLMRealm realmWithConfiguration:queue:error]` was used. + + @param configuration A configuration object to use when opening the Realm. + @param callbackQueue The serial dispatch queue on which the callback should be run. + @param callback A callback block. If the Realm was successfully opened, + it will be passed in as an argument. + Otherwise, an `NSError` describing what went wrong will be + passed to the block instead. + */ ++ (RLMAsyncOpenTask *)asyncOpenWithConfiguration:(RLMRealmConfiguration *)configuration + callbackQueue:(dispatch_queue_t)callbackQueue + callback:(RLMAsyncOpenRealmCallback)callback; + +/** + The `RLMSchema` used by the Realm. + */ +@property (nonatomic, readonly) RLMSchema *schema; + +/** + Indicates if the Realm is currently engaged in a write transaction. + + @warning Do not simply check this property and then start a write transaction whenever an object needs to be + created, updated, or removed. Doing so might cause a large number of write transactions to be created, + degrading performance. Instead, always prefer performing multiple updates during a single transaction. + */ +@property (nonatomic, readonly) BOOL inWriteTransaction; + +/** + The `RLMRealmConfiguration` object that was used to create this `RLMRealm` instance. + */ +@property (nonatomic, readonly) RLMRealmConfiguration *configuration; + +/** + Indicates if this Realm contains any objects. + */ +@property (nonatomic, readonly) BOOL isEmpty; + +/** + Indicates if this Realm is frozen. + + @see `-[RLMRealm freeze]` + */ +@property (nonatomic, readonly, getter=isFrozen) BOOL frozen; + +/** + Returns a frozen (immutable) snapshot of this Realm. + + A frozen Realm is an immutable snapshot view of a particular version of a + Realm's data. Unlike normal RLMRealm instances, it does not live-update to + reflect writes made to the Realm, and can be accessed from any thread. Writing + to a frozen Realm is not allowed, and attempting to begin a write transaction + will throw an exception. + + All objects and collections read from a frozen Realm will also be frozen. + */ +- (RLMRealm *)freeze NS_RETURNS_RETAINED; + +/** + Returns a live reference of this Realm. + + All objects and collections read from the returned Realm will no longer be frozen. + This method will return `self` if it is not already frozen. + */ +- (RLMRealm *)thaw; + +#pragma mark - File Management + +/** + Writes a compacted and optionally encrypted copy of the Realm to the given local URL. + + The destination file cannot already exist. + + Note that if this method is called from within a write transaction, the + *current* data is written, not the data from the point when the previous write + transaction was committed. + + @param fileURL Local URL to save the Realm to. + @param key Optional 64-byte encryption key to encrypt the new file with. + @param error If an error occurs, upon return contains an `NSError` object + that describes the problem. If you are not interested in + possible errors, pass in `NULL`. + + @return `YES` if the Realm was successfully written to disk, `NO` if an error occurred. + */ +- (BOOL)writeCopyToURL:(NSURL *)fileURL encryptionKey:(nullable NSData *)key error:(NSError **)error; + +/** + Writes a copy of the Realm to a given location specified by a given configuration. + + If the configuration supplied is derived from a `RLMUser` then this Realm will be copied with + sync functionality enabled. + + The destination file cannot already exist. + + @param configuration A Realm Configuration. + @param error If an error occurs, upon return contains an `NSError` object + that describes the problem. If you are not interested in + possible errors, pass in `NULL`. + + @return `YES` if the Realm was successfully written to disk, `NO` if an error occurred. + */ +- (BOOL)writeCopyForConfiguration:(RLMRealmConfiguration *)configuration error:(NSError **)error; + +/** + Checks if the Realm file for the given configuration exists locally on disk. + + For non-synchronized, non-in-memory Realms, this is equivalent to + `-[NSFileManager.defaultManager fileExistsAtPath:config.path]`. For + synchronized Realms, it takes care of computing the actual path on disk based + on the server, virtual path, and user as is done when opening the Realm. + + @param config A Realm configuration to check the existence of. + @return YES if the Realm file for the given configuration exists on disk, NO otherwise. + */ ++ (BOOL)fileExistsForConfiguration:(RLMRealmConfiguration *)config; + +/** + Deletes the local Realm file and associated temporary files for the given configuration. + + This deletes the ".realm", ".note" and ".management" files which would be + created by opening the Realm with the given configuration. It does not delete + the ".lock" file (which contains no persisted data and is recreated from + scratch every time the Realm file is opened). + + The Realm must not be currently open on any thread or in another process. If + it is, this will return NO and report the error RLMErrorAlreadyOpen. Attempting to open + the Realm on another thread while the deletion is happening will block (and + then create a new Realm and open that afterwards). + + If the Realm already does not exist this will return `NO` and report the error NSFileNoSuchFileError; + + @param config A Realm configuration identifying the Realm to be deleted. + @return YES if any files were deleted, NO otherwise. + */ ++ (BOOL)deleteFilesForConfiguration:(RLMRealmConfiguration *)config error:(NSError **)error + __attribute__((swift_error(nonnull_error))); + +#pragma mark - Notifications + +/** + The type of a block to run whenever the data within the Realm is modified. + + @see `-[RLMRealm addNotificationBlock:]` + */ +typedef void (^RLMNotificationBlock)(RLMNotification notification, RLMRealm *realm); + +#pragma mark - Receiving Notification when a Realm Changes + +/** + Adds a notification handler for changes in this Realm, and returns a notification token. + + Notification handlers are called after each write transaction is committed, + either on the current thread or other threads. + + Handler blocks are called on the same thread that they were added on, and may + only be added on threads which are currently within a run loop. Unless you are + specifically creating and running a run loop on a background thread, this will + normally only be the main thread. + + The block has the following definition: + + typedef void(^RLMNotificationBlock)(RLMNotification notification, RLMRealm *realm); + + It receives the following parameters: + + - `NSString` \***notification**: The name of the incoming notification. See + `RLMRealmNotification` for information on what + notifications are sent. + - `RLMRealm` \***realm**: The Realm for which this notification occurred. + + @param block A block which is called to process Realm notifications. + + @return A token object which must be retained as long as you wish to continue + receiving change notifications. + */ +- (RLMNotificationToken *)addNotificationBlock:(RLMNotificationBlock)block __attribute__((warn_unused_result)); + +#pragma mark - Writing to a Realm + +/** + Begins a write transaction on the Realm. + + Only one write transaction can be open at a time for each Realm file. Write + transactions cannot be nested, and trying to begin a write transaction on a + Realm which is already in a write transaction will throw an exception. Calls to + `beginWriteTransaction` from `RLMRealm` instances for the same Realm file in + other threads or other processes will block until the current write transaction + completes or is cancelled. + + Before beginning the write transaction, `beginWriteTransaction` updates the + `RLMRealm` instance to the latest Realm version, as if `refresh` had been + called, and generates notifications if applicable. This has no effect if the + Realm was already up to date. + + It is rarely a good idea to have write transactions span multiple cycles of + the run loop, but if you do wish to do so you will need to ensure that the + Realm participating in the write transaction is kept alive until the write + transaction is committed. + */ +- (void)beginWriteTransaction; + +/** + Commits all write operations in the current write transaction, and ends the + transaction. + + After saving the changes, all notification blocks registered on this specific + `RLMRealm` instance are invoked synchronously. Notification blocks registered + on other threads or on collections are invoked asynchronously. If you do not + want to receive a specific notification for this write tranaction, see + `commitWriteTransactionWithoutNotifying:error:`. + + This method can fail if there is insufficient disk space available to save the + writes made, or due to unexpected i/o errors. This version of the method throws + an exception when errors occur. Use the version with a `NSError` out parameter + instead if you wish to handle errors. + + @warning This method may only be called during a write transaction. + */ +- (void)commitWriteTransaction NS_SWIFT_UNAVAILABLE(""); + +/** + Commits all write operations in the current write transaction, and ends the + transaction. + + After saving the changes, all notification blocks registered on this specific + `RLMRealm` instance are invoked synchronously. Notification blocks registered + on other threads or on collections are invoked asynchronously. If you do not + want to receive a specific notification for this write tranaction, see + `commitWriteTransactionWithoutNotifying:error:`. + + This method can fail if there is insufficient disk space available to save the + writes made, or due to unexpected i/o errors. + + @warning This method may only be called during a write transaction. + + @param error If an error occurs, upon return contains an `NSError` object + that describes the problem. If you are not interested in + possible errors, pass in `NULL`. + + @return Whether the transaction succeeded. + */ +- (BOOL)commitWriteTransaction:(NSError **)error; + +/** + Commits all write operations in the current write transaction, without + notifying specific notification blocks of the changes. + + After saving the changes, all notification blocks registered on this specific + `RLMRealm` instance are invoked synchronously. Notification blocks registered + on other threads or on collections are scheduled to be invoked asynchronously. + + You can skip notifiying specific notification blocks about the changes made + in this write transaction by passing in their associated notification tokens. + This is primarily useful when the write transaction is saving changes already + made in the UI and you do not want to have the notification block attempt to + re-apply the same changes. + + The tokens passed to this method must be for notifications for this specific + `RLMRealm` instance. Notifications for different threads cannot be skipped + using this method. + + This method can fail if there is insufficient disk space available to save the + writes made, or due to unexpected i/o errors. + + @warning This method may only be called during a write transaction. + + @param tokens An array of notification tokens which were returned from adding + callbacks which you do not want to be notified for the changes + made in this write transaction. + @param error If an error occurs, upon return contains an `NSError` object + that describes the problem. If you are not interested in + possible errors, pass in `NULL`. + + @return Whether the transaction succeeded. + */ +- (BOOL)commitWriteTransactionWithoutNotifying:(NSArray *)tokens error:(NSError **)error; + +/** + Reverts all writes made during the current write transaction and ends the transaction. + + This rolls back all objects in the Realm to the state they were in at the + beginning of the write transaction, and then ends the transaction. + + This restores the data for deleted objects, but does not revive invalidated + object instances. Any `RLMObject`s which were added to the Realm will be + invalidated rather than becoming unmanaged. + Given the following code: + + ObjectType *oldObject = [[ObjectType objectsWhere:@"..."] firstObject]; + ObjectType *newObject = [[ObjectType alloc] init]; + + [realm beginWriteTransaction]; + [realm addObject:newObject]; + [realm deleteObject:oldObject]; + [realm cancelWriteTransaction]; + + Both `oldObject` and `newObject` will return `YES` for `isInvalidated`, + but re-running the query which provided `oldObject` will once again return + the valid object. + + KVO observers on any objects which were modified during the transaction will + be notified about the change back to their initial values, but no other + notifications are produced by a cancelled write transaction. + + @warning This method may only be called during a write transaction. + */ +- (void)cancelWriteTransaction; + +/** + Performs actions contained within the given block inside a write transaction. + + @see `[RLMRealm transactionWithoutNotifying:block:error:]` + */ +- (void)transactionWithBlock:(__attribute__((noescape)) void(^)(void))block NS_SWIFT_UNAVAILABLE(""); + +/** + Performs actions contained within the given block inside a write transaction. + + @see `[RLMRealm transactionWithoutNotifying:block:error:]` + */ +- (BOOL)transactionWithBlock:(__attribute__((noescape)) void(^)(void))block error:(NSError **)error; + +/** + Performs actions contained within the given block inside a write transaction. + + @see `[RLMRealm transactionWithoutNotifying:block:error:]` + */ +- (void)transactionWithoutNotifying:(NSArray *)tokens block:(__attribute__((noescape)) void(^)(void))block; + +/** + Performs actions contained within the given block inside a write transaction. + + Write transactions cannot be nested, and trying to execute a write transaction + on a Realm which is already participating in a write transaction will throw an + exception. Calls to `transactionWithBlock:` from `RLMRealm` instances in other + threads will block until the current write transaction completes. + + Before beginning the write transaction, `transactionWithBlock:` updates the + `RLMRealm` instance to the latest Realm version, as if `refresh` had been called, and + generates notifications if applicable. This has no effect if the Realm + was already up to date. + + You can skip notifiying specific notification blocks about the changes made + in this write transaction by passing in their associated notification tokens. + This is primarily useful when the write transaction is saving changes already + made in the UI and you do not want to have the notification block attempt to + re-apply the same changes. + + The tokens passed to this method must be for notifications for this specific + `RLMRealm` instance. Notifications for different threads cannot be skipped + using this method. + + @param tokens An array of notification tokens which were returned from adding + callbacks which you do not want to be notified for the changes + made in this write transaction. + @param block The block containing actions to perform. + @param error If an error occurs, upon return contains an `NSError` object + that describes the problem. If you are not interested in + possible errors, pass in `NULL`. + + @return Whether the transaction succeeded. + */ +- (BOOL)transactionWithoutNotifying:(NSArray *)tokens block:(__attribute__((noescape)) void(^)(void))block error:(NSError **)error; + +/** + Indicates if the Realm is currently performing async write operations. + This becomes YES following a call to `beginAsyncWriteTransaction`, + `commitAsyncWriteTransaction`, or `asyncTransactionWithBlock:`, and remains so + until all scheduled async write work has completed. + + @warning If this is `YES`, closing or invalidating the Realm will block until scheduled work has completed. + */ +@property (nonatomic, readonly) BOOL isPerformingAsynchronousWriteOperations; + +/** + Begins an asynchronous write transaction. + This function asynchronously begins a write transaction on a background + thread, and then invokes the block on the original thread or queue once the + transaction has begun. Unlike `beginWriteTransaction`, this does not block the + calling thread if another thread is current inside a write transaction, and + will always return immediately. + Multiple calls to this function (or the other functions which perform + asynchronous write transactions) will queue the blocks to be called in the + same order as they were queued. This includes calls from inside a write + transaction block, which unlike with synchronous transactions are allowed. + + @param block The block containing actions to perform inside the write transaction. + `block` should end by calling `commitAsyncWriteTransaction`, + `commitWriteTransaction` or `cancelWriteTransaction`. + Returning without one of these calls is equivalent to calling `cancelWriteTransaction`. + + @return An id identifying the asynchronous transaction which can be passed to + `cancelAsyncTransaction:` prior to the block being called to cancel + the pending invocation of the block. + */ +- (RLMAsyncTransactionId)beginAsyncWriteTransaction:(void(^)(void))block; + +/** + Asynchronously commits a write transaction. + The call returns immediately allowing the caller to proceed while the I/O is + performed on a dedicated background thread. This can be used regardless of if + the write transaction was begun with `beginWriteTransaction` or + `beginAsyncWriteTransaction`. + + @param completionBlock A block which will be called on the source thread or + queue once the commit has either completed or failed + with an error. + + @param allowGrouping If `YES`, multiple sequential calls to + `commitAsyncWriteTransaction:` may be batched together + and persisted to stable storage in one group. This + improves write performance, particularly when the + individual transactions being batched are small. In the + event of a crash or power failure, either all of the + grouped transactions will be lost or none will, rather + than the usual guarantee that data has been persisted as + soon as a call to commit has returned. + + @return An id identifying the asynchronous transaction commit can be passed to + `cancelAsyncTransaction:` prior to the completion block being called + to cancel the pending invocation of the block. Note that this does + *not* cancel the commit itself. +*/ +- (RLMAsyncTransactionId)commitAsyncWriteTransaction:(nullable void(^)(NSError *_Nullable))completionBlock + allowGrouping:(BOOL)allowGrouping; + +/** + Asynchronously commits a write transaction. + The call returns immediately allowing the caller to proceed while the I/O is + performed on a dedicated background thread. This can be used regardless of if + the write transaction was begun with `beginWriteTransaction` or + `beginAsyncWriteTransaction`. + + @param completionBlock A block which will be called on the source thread or + queue once the commit has either completed or failed + with an error. + + @return An id identifying the asynchronous transaction commit can be passed to + `cancelAsyncTransaction:` prior to the completion block being called + to cancel the pending invocation of the block. Note that this does + *not* cancel the commit itself. +*/ +- (RLMAsyncTransactionId)commitAsyncWriteTransaction:(void(^)(NSError *_Nullable))completionBlock; + +/** + Asynchronously commits a write transaction. + The call returns immediately allowing the caller to proceed while the I/O is + performed on a dedicated background thread. This can be used regardless of if + the write transaction was begun with `beginWriteTransaction` or + `beginAsyncWriteTransaction`. + + @return An id identifying the asynchronous transaction commit can be passed to + `cancelAsyncTransaction:` prior to the completion block being called + to cancel the pending invocation of the block. Note that this does + *not* cancel the commit itself. +*/ +- (RLMAsyncTransactionId)commitAsyncWriteTransaction; + +/** + Cancels a queued block for an asynchronous transaction. + This can cancel a block passed to either an asynchronous begin or an + asynchronous commit. Canceling a begin cancels that transaction entirely, + while canceling a commit merely cancels the invocation of the completion + callback, and the commit will still happen. + Transactions can only be canceled before the block is invoked, and calling + `cancelAsyncTransaction:` from within the block is a no-op. + + @param asyncTransactionId A transaction id from either `beginAsyncWriteTransaction:` or `commitAsyncWriteTransaction:`. +*/ +- (void)cancelAsyncTransaction:(RLMAsyncTransactionId)asyncTransactionId; + +/** + Asynchronously performs actions contained within the given block inside a + write transaction. + The write transaction is begun asynchronously as if calling + `beginAsyncWriteTransaction:`, and by default the transaction is commited + asynchronously after the block completes. You can also explicitly call + `commitWriteTransaction` or `cancelWriteTransaction` from within the block to + synchronously commit or cancel the write transaction. + + @param block The block containing actions to perform. + + @param completionBlock A block which will be called on the source thread or + queue once the commit has either completed or failed + with an error. + + @return An id identifying the asynchronous transaction which can be passed to + `cancelAsyncTransaction:` prior to the block being called to cancel + the pending invocation of the block. +*/ +- (RLMAsyncTransactionId)asyncTransactionWithBlock:(void(^)(void))block onComplete:(nullable void(^)(NSError *))completionBlock; + +/** + Asynchronously performs actions contained within the given block inside a + write transaction. + The write transaction is begun asynchronously as if calling + `beginAsyncWriteTransaction:`, and by default the transaction is commited + asynchronously after the block completes. You can also explicitly call + `commitWriteTransaction` or `cancelWriteTransaction` from within the block to + synchronously commit or cancel the write transaction. + + @param block The block containing actions to perform. + + @return An id identifying the asynchronous transaction which can be passed to + `cancelAsyncTransaction:` prior to the block being called to cancel + the pending invocation of the block. +*/ +- (RLMAsyncTransactionId)asyncTransactionWithBlock:(void(^)(void))block; + +/** + Updates the Realm and outstanding objects managed by the Realm to point to the + most recent data. + + If the version of the Realm is actually changed, Realm and collection + notifications will be sent to reflect the changes. This may take some time, as + collection notifications are prepared on a background thread. As a result, + calling this method on the main thread is not advisable. + + @return Whether there were any updates for the Realm. Note that `YES` may be + returned even if no data actually changed. + */ +- (BOOL)refresh; + +/** + Set this property to `YES` to automatically update this Realm when changes + happen in other threads. + + If set to `YES` (the default), changes made on other threads will be reflected + in this Realm on the next cycle of the run loop after the changes are + committed. If set to `NO`, you must manually call `-refresh` on the Realm to + update it to get the latest data. + + Note that by default, background threads do not have an active run loop and you + will need to manually call `-refresh` in order to update to the latest version, + even if `autorefresh` is set to `YES`. + + Even with this property enabled, you can still call `-refresh` at any time to + update the Realm before the automatic refresh would occur. + + Write transactions will still always advance a Realm to the latest version and + produce local notifications on commit even if autorefresh is disabled. + + Disabling `autorefresh` on a Realm without any strong references to it will not + have any effect, and `autorefresh` will revert back to `YES` the next time the + Realm is created. This is normally irrelevant as it means that there is nothing + to refresh (as managed `RLMObject`s, `RLMArray`s, and `RLMResults` have strong + references to the Realm that manages them), but it means that setting + `RLMRealm.defaultRealm.autorefresh = NO` in + `application:didFinishLaunchingWithOptions:` and only later storing Realm + objects will not work. + + Defaults to `YES`. + */ +@property (nonatomic) BOOL autorefresh; + +/** + Invalidates all `RLMObject`s, `RLMResults`, `RLMLinkingObjects`, and `RLMArray`s managed by the Realm. + + A Realm holds a read lock on the version of the data accessed by it, so + that changes made to the Realm on different threads do not modify or delete the + data seen by this Realm. Calling this method releases the read lock, + allowing the space used on disk to be reused by later write transactions rather + than growing the file. This method should be called before performing long + blocking operations on a background thread on which you previously read data + from the Realm which you no longer need. + + All `RLMObject`, `RLMResults` and `RLMArray` instances obtained from this + `RLMRealm` instance on the current thread are invalidated. `RLMObject`s and `RLMArray`s + cannot be used. `RLMResults` will become empty. The Realm itself remains valid, + and a new read transaction is implicitly begun the next time data is read from the Realm. + + Calling this method multiple times in a row without reading any data from the + Realm, or before ever reading any data from the Realm, is a no-op. + */ +- (void)invalidate; + +#pragma mark - Accessing Objects + +/** + Returns the same object as the one referenced when the `RLMThreadSafeReference` was first created, + but resolved for the current Realm for this thread. Returns `nil` if this object was deleted after + the reference was created. + + @param reference The thread-safe reference to the thread-confined object to resolve in this Realm. + + @warning A `RLMThreadSafeReference` object must be resolved at most once. + Failing to resolve a `RLMThreadSafeReference` will result in the source version of the + Realm being pinned until the reference is deallocated. + An exception will be thrown if a reference is resolved more than once. + + @warning Cannot call within a write transaction. + + @note Will refresh this Realm if the source Realm was at a later version than this one. + + @see `+[RLMThreadSafeReference referenceWithThreadConfined:]` + */ +- (nullable id)resolveThreadSafeReference:(RLMThreadSafeReference *)reference +NS_REFINED_FOR_SWIFT; + +#pragma mark - Adding and Removing Objects from a Realm + +/** + Adds an object to the Realm. + + Once added, this object is considered to be managed by the Realm. It can be retrieved + using the `objectsWhere:` selectors on `RLMRealm` and on subclasses of `RLMObject`. + + When added, all child relationships referenced by this object will also be added to + the Realm if they are not already in it. + + If the object or any related objects are already being managed by a different Realm + an exception will be thrown. Use `-[RLMObject createInRealm:withObject:]` to insert a copy of a managed object + into a different Realm. + + The object to be added must be valid and cannot have been previously deleted + from a Realm (i.e. `isInvalidated` must be `NO`). + + @warning This method may only be called during a write transaction. + + @param object The object to be added to this Realm. + */ +- (void)addObject:(RLMObject *)object; + +/** + Adds all the objects in a collection to the Realm. + + This is the equivalent of calling `addObject:` for every object in a collection. + + @warning This method may only be called during a write transaction. + + @param objects An enumerable collection such as `NSArray`, `RLMArray`, or `RLMResults`, + containing Realm objects to be added to the Realm. + + @see `addObject:` + */ +- (void)addObjects:(id)objects; + +/** + Adds or updates an existing object into the Realm. + + The object provided must have a designated primary key. If no objects exist in the Realm + with the same primary key value, the object is inserted. Otherwise, the existing object is + updated with any changed values. + + As with `addObject:`, the object cannot already be managed by a different + Realm. Use `-[RLMObject createOrUpdateInRealm:withValue:]` to copy values to + a different Realm. + + If there is a property or KVC value on `object` whose value is nil, and it corresponds + to a nullable property on an existing object being updated, that nullable property will + be set to nil. + + @warning This method may only be called during a write transaction. + + @param object The object to be added or updated. + */ +- (void)addOrUpdateObject:(RLMObject *)object; + +/** + Adds or updates all the objects in a collection into the Realm. + + This is the equivalent of calling `addOrUpdateObject:` for every object in a collection. + + @warning This method may only be called during a write transaction. + + @param objects An enumerable collection such as `NSArray`, `RLMArray`, or `RLMResults`, + containing Realm objects to be added to or updated within the Realm. + + @see `addOrUpdateObject:` + */ +- (void)addOrUpdateObjects:(id)objects; + +/** + Deletes an object from the Realm. Once the object is deleted it is considered invalidated. + + @warning This method may only be called during a write transaction. + + @param object The object to be deleted. + */ +- (void)deleteObject:(RLMObject *)object; + +/** + Deletes one or more objects from the Realm. + + This is the equivalent of calling `deleteObject:` for every object in a collection. + + @warning This method may only be called during a write transaction. + + @param objects An enumerable collection such as `NSArray`, `RLMArray`, or `RLMResults`, + containing objects to be deleted from the Realm. + + @see `deleteObject:` + */ +- (void)deleteObjects:(id)objects; + +/** + Deletes all objects from the Realm. + + @warning This method may only be called during a write transaction. + + @see `deleteObject:` + */ +- (void)deleteAllObjects; + +#pragma mark - Sync Subscriptions + +/** + Represents the active subscriptions for this realm, which can be used to add/remove/update + and search flexible sync subscriptions. + Getting the subscriptions from a local or partition-based configured realm will thrown an exception. + + @warning This feature is currently in beta and its API is subject to change. + */ +@property (nonatomic, readonly, nonnull) RLMSyncSubscriptionSet *subscriptions; + + +#pragma mark - Migrations + +/** + The type of a migration block used to migrate a Realm. + + @param migration A `RLMMigration` object used to perform the migration. The + migration object allows you to enumerate and alter any + existing objects which require migration. + + @param oldSchemaVersion The schema version of the Realm being migrated. + */ +RLM_SWIFT_SENDABLE +typedef void (^RLMMigrationBlock)(RLMMigration *migration, uint64_t oldSchemaVersion); + +/** + Returns the schema version for a Realm at a given local URL. + + @param fileURL Local URL to a Realm file. + @param key 64-byte key used to encrypt the file, or `nil` if it is unencrypted. + @param error If an error occurs, upon return contains an `NSError` object + that describes the problem. If you are not interested in + possible errors, pass in `NULL`. + + @return The version of the Realm at `fileURL`, or `RLMNotVersioned` if the version cannot be read. + */ ++ (uint64_t)schemaVersionAtURL:(NSURL *)fileURL encryptionKey:(nullable NSData *)key + error:(NSError **)error +NS_REFINED_FOR_SWIFT; + +/** + Performs the given Realm configuration's migration block on a Realm at the given path. + + This method is called automatically when opening a Realm for the first time and does + not need to be called explicitly. You can choose to call this method to control + exactly when and how migrations are performed. + + @param configuration The Realm configuration used to open and migrate the Realm. + @return The error that occurred while applying the migration, if any. + + @see RLMMigration + */ ++ (BOOL)performMigrationForConfiguration:(RLMRealmConfiguration *)configuration error:(NSError **)error; + +#pragma mark - Unavailable Methods + +/** + RLMRealm instances are cached internally by Realm and cannot be created directly. + + Use `+[RLMRealm defaultRealm]`, `+[RLMRealm realmWithConfiguration:error:]` or + `+[RLMRealm realmWithURL]` to obtain a reference to an RLMRealm. + */ +- (instancetype)init __attribute__((unavailable("Use +defaultRealm, +realmWithConfiguration: or +realmWithURL:."))); + +/** + RLMRealm instances are cached internally by Realm and cannot be created directly. + + Use `+[RLMRealm defaultRealm]`, `+[RLMRealm realmWithConfiguration:error:]` or + `+[RLMRealm realmWithURL]` to obtain a reference to an RLMRealm. + */ ++ (instancetype)new __attribute__((unavailable("Use +defaultRealm, +realmWithConfiguration: or +realmWithURL:."))); + +/// :nodoc: +- (void)addOrUpdateObjectsFromArray:(id)array __attribute__((unavailable("Renamed to -addOrUpdateObjects:."))); + +@end + +// MARK: - RLMNotificationToken + +/** + A token which is returned from methods which subscribe to changes to a Realm. + + Change subscriptions in Realm return an `RLMNotificationToken` instance, + which can be used to unsubscribe from the changes. You must store a strong + reference to the token for as long as you want to continue to receive notifications. + When you wish to stop, call the `-invalidate` method. Notifications are also stopped if + the token is deallocated. + */ +RLM_SWIFT_SENDABLE // is internally thread-safe +@interface RLMNotificationToken : NSObject +/// Stops notifications for the change subscription that returned this token. +/// +/// @return True if the token was previously valid, and false if it was already invalidated. +- (bool)invalidate; + +/// Stops notifications for the change subscription that returned this token. +- (void)stop __attribute__((unavailable("Renamed to -invalidate."))) NS_REFINED_FOR_SWIFT; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMRealmConfiguration.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMRealmConfiguration.h new file mode 100644 index 000000000..d09e5c215 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMRealmConfiguration.h @@ -0,0 +1,197 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2015 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMEventConfiguration, RLMSyncConfiguration; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** + A block called when opening a Realm for the first time during the life + of a process to determine if it should be compacted before being returned + to the user. It is passed the total file size (data + free space) and the total + bytes used by data in the file. + + Return `YES` to indicate that an attempt to compact the file should be made. + The compaction will be skipped if another process is accessing it. + */ +RLM_SWIFT_SENDABLE +typedef BOOL (^RLMShouldCompactOnLaunchBlock)(NSUInteger totalBytes, NSUInteger bytesUsed); + +/** + A block which receives a subscription set instance, that can be used to add an initial set of subscriptions which will be executed + when the Realm is first opened. + */ +RLM_SWIFT_SENDABLE +typedef void(^RLMFlexibleSyncInitialSubscriptionsBlock)(RLMSyncSubscriptionSet * _Nonnull subscriptions); + +/** + An `RLMRealmConfiguration` instance describes the different options used to + create an instance of a Realm. + + `RLMRealmConfiguration` instances are just plain `NSObject`s. Unlike `RLMRealm`s + and `RLMObject`s, they can be freely shared between threads as long as you do not + mutate them. + + Creating configuration objects for class subsets (by setting the + `objectClasses` property) can be expensive. Because of this, you will normally want to + cache and reuse a single configuration object for each distinct configuration rather than + creating a new object each time you open a Realm. + */ +@interface RLMRealmConfiguration : NSObject + +#pragma mark - Default Configuration + +/** + Returns the default configuration used to create Realms when no other + configuration is explicitly specified (i.e. `+[RLMRealm defaultRealm]`). + + @return The default Realm configuration. + */ ++ (instancetype)defaultConfiguration; + +/** + Sets the default configuration to the given `RLMRealmConfiguration`. + + @param configuration The new default Realm configuration. + */ ++ (void)setDefaultConfiguration:(RLMRealmConfiguration *)configuration; + +#pragma mark - Properties + +/// The local URL of the Realm file. Mutually exclusive with `inMemoryIdentifier`; +/// setting one of the two properties will automatically nil out the other. +@property (nonatomic, copy, nullable) NSURL *fileURL; + +/// A string used to identify a particular in-memory Realm. Mutually exclusive with `fileURL`, +/// `seedFilePath`and `syncConfiguration`; +/// setting any one of the three properties will automatically nil out the other two. +@property (nonatomic, copy, nullable) NSString *inMemoryIdentifier; + +/// A 64-byte key to use to encrypt the data, or `nil` if encryption is not enabled. +@property (nonatomic, copy, nullable) NSData *encryptionKey; + +/// Whether to open the Realm in read-only mode. +/// +/// For non-synchronized Realms, this is required to be able to open Realm +/// files which are not writeable or are in a directory which is not writeable. +/// This should only be used on files which will not be modified by anyone +/// while they are open, and not just to get a read-only view of a file which +/// may be written to by another thread or process. Opening in read-only mode +/// requires disabling Realm's reader/writer coordination, so committing a +/// write transaction from another process will result in crashes. +/// +/// Syncronized Realms must always be writeable (as otherwise no +/// synchronization could happen), and this instead merely disallows performing +/// write transactions on the Realm. In addition, it will skip some automatic +/// writes made to the Realm, such as to initialize the Realm's schema. Setting +/// `readOnly = YES` is not strictly required for Realms which the sync user +/// does not have write access to, but is highly recommended as it will improve +/// error reporting and catch some errors earlier. +/// +/// Realms using query-based sync cannot be opened in read-only mode. +@property (nonatomic) BOOL readOnly; + +/// The current schema version. +@property (nonatomic) uint64_t schemaVersion; + +/// The block which migrates the Realm to the current version. +@property (nonatomic, copy, nullable) RLMMigrationBlock migrationBlock; + +/** + Whether to recreate the Realm file with the provided schema if a migration is required. + This is the case when the stored schema differs from the provided schema or + the stored schema version differs from the version on this configuration. + Setting this property to `YES` deletes the file if a migration would otherwise be required or executed. + + @note Setting this property to `YES` doesn't disable file format migrations. + */ +@property (nonatomic) BOOL deleteRealmIfMigrationNeeded; + +/** + A block called when opening a Realm for the first time during the life + of a process to determine if it should be compacted before being returned + to the user. It is passed the total file size (data + free space) and the total + bytes used by data in the file. + + Return `YES` to indicate that an attempt to compact the file should be made. + The compaction will be skipped if another process is accessing it. + */ +@property (nonatomic, copy, nullable) RLMShouldCompactOnLaunchBlock shouldCompactOnLaunch; + +/// The classes managed by the Realm. +@property (nonatomic, copy, nullable) NSArray *objectClasses; + +/** + The maximum number of live versions in the Realm file before an exception will + be thrown when attempting to start a write transaction. + + Realm provides MVCC snapshot isolation, meaning that writes on one thread do + not overwrite data being read on another thread, and instead write a new copy + of that data. When a Realm refreshes it updates to the latest version of the + data and releases the old versions, allowing them to be overwritten by + subsequent write transactions. + + Under normal circumstances this is not a problem, but if the number of active + versions grow too large, it will have a negative effect on the filesize on + disk. This can happen when performing writes on many different threads at + once, when holding on to frozen objects for an extended time, or when + performing long operations on background threads which do not allow the Realm + to refresh. + + Setting this property to a non-zero value makes it so that exceeding the set + number of versions will instead throw an exception. This can be used with a + low value during development to help identify places that may be problematic, + or in production use to cause the app to crash rather than produce a Realm + file which is too large to be opened. + + */ +@property (nonatomic) NSUInteger maximumNumberOfActiveVersions; + +/** + When opening the Realm for the first time, instead of creating an empty file, + the Realm file will be copied from the provided seed file path and used instead. + This can be used to open a Realm file with pre-populated data. + + If a realm file already exists at the configuration's destination path, the seed file + will not be copied and the already existing realm will be opened instead. + + Note that to use this parameter with a synced Realm configuration + the seed Realm must be appropriately copied to a destination with + `[RLMRealm writeCopyForConfiguration:]` first. + + This option is mutually exclusive with `inMemoryIdentifier`. Setting a `seedFilePath` + will nil out the `inMemoryIdentifier`. + */ +@property (nonatomic, copy, nullable) NSURL *seedFilePath; + +/** + A configuration object representing configuration state for Realms intended + to sync with Atlas Device Sync. + + This property is mutually exclusive with both `inMemoryIdentifier` and `fileURL`; + setting any one of the three properties will automatically nil out the other two. + + @see `RLMSyncConfiguration` + */ +@property (nullable, nonatomic) RLMSyncConfiguration *syncConfiguration; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMRealm_Dynamic.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMRealm_Dynamic.h new file mode 100644 index 000000000..bea162775 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMRealm_Dynamic.h @@ -0,0 +1,118 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import +#import + +@class RLMResults; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +@interface RLMRealm (Dynamic) + +#pragma mark - Getting Objects from a Realm + +/** + Returns all objects of a given type from the Realm. + + @warning This method is useful only in specialized circumstances, for example, when building components + that integrate with Realm. The preferred way to get objects of a single class is to use the class + methods on `RLMObject`. + + @param className The name of the `RLMObject` subclass to retrieve on (e.g. `MyClass.className`). + + @return An `RLMResults` containing all objects in the Realm of the given type. + + @see `+[RLMObject allObjects]` + */ +- (RLMResults *)allObjects:(NSString *)className; + +/** + Returns all objects matching the given predicate from the Realm. + + @warning This method is useful only in specialized circumstances, for example, when building components + that integrate with Realm. The preferred way to get objects of a single class is to use the class + methods on `RLMObject`. + + @param className The type of objects you are looking for (name of the class). + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + + @return An `RLMResults` containing results matching the given predicate. + + @see `+[RLMObject objectsWhere:]` + */ +- (RLMResults *)objects:(NSString *)className where:(NSString *)predicateFormat, ...; + +/** + Returns all objects matching the given predicate from the Realm. + + @warning This method is useful only in specialized circumstances, for example, when building components + that integrate with Realm. The preferred way to get objects of a single class is to use the class + methods on `RLMObject`. + + @param className The type of objects you are looking for (name of the class). + @param predicate The predicate with which to filter the objects. + + @return An `RLMResults` containing results matching the given predicate. + + @see `+[RLMObject objectsWhere:]` + */ +- (RLMResults *)objects:(NSString *)className withPredicate:(NSPredicate *)predicate; + +/** + Returns the object of the given type with the given primary key from the Realm. + + @warning This method is useful only in specialized circumstances, for example, when building components + that integrate with Realm. The preferred way to get an object of a single class is to use the class + methods on `RLMObject`. + + @param className The class name for the object you are looking for. + @param primaryKey The primary key value for the object you are looking for. + + @return An object, or `nil` if an object with the given primary key does not exist. + + @see `+[RLMObject objectForPrimaryKey:]` + */ +- (nullable RLMObject *)objectWithClassName:(NSString *)className forPrimaryKey:(id)primaryKey; + +/** + Creates an `RLMObject` instance of type `className` in the Realm, and populates it using a given object. + + The `value` argument is used to populate the object. It can be a key-value coding compliant object, an array or + dictionary returned from the methods in `NSJSONSerialization`, or an array containing one element for each managed + property. An exception will be thrown if any required properties are not present and those properties were not defined + with default values. + + When passing in an array as the `value` argument, all properties must be present, valid and in the same order as the + properties defined in the model. + + @warning This method is useful only in specialized circumstances, for example, when building components + that integrate with Realm. If you are simply building an app on Realm, it is recommended to + use `[RLMObject createInDefaultRealmWithValue:]`. + + @param value The value used to populate the object. + + @return An `RLMObject` instance of type `className`. + */ +-(RLMObject *)createObject:(NSString *)className withValue:(id)value; + +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMResults.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMResults.h new file mode 100644 index 000000000..5911e666a --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMResults.h @@ -0,0 +1,567 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMObject; + +/** + `RLMResults` is an auto-updating container type in Realm returned from object + queries. It represents the results of the query in the form of a collection of objects. + + `RLMResults` can be queried using the same predicates as `RLMObject` and `RLMArray`, + and you can chain queries to further filter results. + + `RLMResults` always reflect the current state of the Realm on the current thread, + including during write transactions on the current thread. The one exception to + this is when using `for...in` fast enumeration, which will always enumerate + over the objects which matched the query when the enumeration is begun, even if + some of them are deleted or modified to be excluded by the filter during the + enumeration. + + `RLMResults` are lazily evaluated the first time they are accessed; they only + run queries when the result of the query is requested. This means that + chaining several temporary `RLMResults` to sort and filter your data does not + perform any extra work processing the intermediate state. + + Once the results have been evaluated or a notification block has been added, + the results are eagerly kept up-to-date, with the work done to keep them + up-to-date done on a background thread whenever possible. + + `RLMResults` cannot be directly instantiated. + */ +@interface RLMResults : NSObject + +#pragma mark - Properties + +/** + The number of objects in the results collection. + */ +@property (nonatomic, readonly, assign) NSUInteger count; + +/** + The type of the objects in the results collection. + */ +@property (nonatomic, readonly, assign) RLMPropertyType type; + +/** + Indicates whether the objects in the collection can be `nil`. + */ +@property (nonatomic, readwrite, getter = isOptional) BOOL optional; + +/** + The class name of the objects contained in the results collection. + + Will be `nil` if `type` is not RLMPropertyTypeObject. + */ +@property (nonatomic, readonly, copy, nullable) NSString *objectClassName; + +/** + The Realm which manages this results collection. + */ +@property (nonatomic, readonly) RLMRealm *realm; + +/** + Indicates if the results collection is no longer valid. + + The results collection becomes invalid if `invalidate` is called on the containing `realm`. + An invalidated results collection can be accessed, but will always be empty. + */ +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +#pragma mark - Accessing Objects from an RLMResults + +/** + Returns the object at the index specified. + + @param index The index to look up. + + @return An object of the type contained in the results collection. + */ +- (RLMObjectType)objectAtIndex:(NSUInteger)index; + +/** + Returns an array containing the objects in the results at the indexes specified by a given index set. + `nil` will be returned if the index set contains an index out of the arrays bounds. + + @param indexes The indexes in the results to retrieve objects from. + + @return The objects at the specified indexes. + */ +- (nullable NSArray *)objectsAtIndexes:(NSIndexSet *)indexes; + +/** + Returns the first object in the results collection. + + Returns `nil` if called on an empty results collection. + + @return An object of the type contained in the results collection. + */ +- (nullable RLMObjectType)firstObject; + +/** + Returns the last object in the results collection. + + Returns `nil` if called on an empty results collection. + + @return An object of the type contained in the results collection. + */ +- (nullable RLMObjectType)lastObject; + +#pragma mark - Querying Results + +/** + Returns the index of an object in the results collection. + + Returns `NSNotFound` if the object is not found in the results collection. + + @param object An object (of the same type as returned from the `objectClassName` selector). + */ +- (NSUInteger)indexOfObject:(RLMObjectType)object; + +/** + Returns the index of the first object in the results collection matching the predicate. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + + @return The index of the object, or `NSNotFound` if the object is not found in the results collection. + */ +- (NSUInteger)indexOfObjectWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (NSUInteger)indexOfObjectWhere:(NSString *)predicateFormat args:(va_list)args; + +/** + Returns the index of the first object in the results collection matching the predicate. + + @param predicate The predicate with which to filter the objects. + + @return The index of the object, or `NSNotFound` if the object is not found in the results collection. + */ +- (NSUInteger)indexOfObjectWithPredicate:(NSPredicate *)predicate; + +/** + Returns all the objects matching the given predicate in the results collection. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + + @return An `RLMResults` of objects that match the given predicate. + */ +- (RLMResults *)objectsWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (RLMResults *)objectsWhere:(NSString *)predicateFormat args:(va_list)args; + +/** + Returns all the objects matching the given predicate in the results collection. + + @param predicate The predicate with which to filter the objects. + + @return An `RLMResults` of objects that match the given predicate. + */ +- (RLMResults *)objectsWithPredicate:(NSPredicate *)predicate; + +/** + Returns a sorted `RLMResults` from an existing results collection. + + @param keyPath The key path to sort by. + @param ascending The direction to sort in. + + @return An `RLMResults` sorted by the specified key path. + */ +- (RLMResults *)sortedResultsUsingKeyPath:(NSString *)keyPath ascending:(BOOL)ascending; + +/** + Returns a sorted `RLMResults` from an existing results collection. + + @param properties An array of `RLMSortDescriptor`s to sort by. + + @return An `RLMResults` sorted by the specified properties. + */ +- (RLMResults *)sortedResultsUsingDescriptors:(NSArray *)properties; + +/** + Returns a distinct `RLMResults` from an existing results collection. + + @param keyPaths The key paths used produce distinct results + + @return An `RLMResults` made distinct based on the specified key paths + */ +- (RLMResults *)distinctResultsUsingKeyPaths:(NSArray *)keyPaths; + +#pragma mark - Notifications + +/** + Registers a block to be called each time the results collection changes. + + The block will be asynchronously called with the initial results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the results collection were added, removed or modified. If a + write transaction did not modify any objects in the results collection, + the block is not called at all. See the `RLMCollectionChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + At the time when the block is called, the `RLMResults` object will be fully + evaluated and up-to-date, and as long as you do not perform a write transaction + on the same thread or explicitly call `-[RLMRealm refresh]`, accessing it will + never perform blocking work. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + NSLog(@"dogs.count: %zu", dogs.count); // => 0 + self.token = [results addNotificationBlock:^(RLMResults *dogs, + RLMCollectionChange *changes, + NSError *error) { + // Only fired once for the example + NSLog(@"dogs.count: %zu", dogs.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + + @param block The block to be called whenever a change occurs. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMResults *_Nullable results, + RLMCollectionChange *_Nullable change, + NSError *_Nullable error))block +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the results collection changes. + + The block will be asynchronously called with the initial results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the results collection were added, removed or modified. If a + write transaction did not modify any objects in the results collection, + the block is not called at all. See the `RLMCollectionChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + At the time when the block is called, the `RLMResults` object will be fully + evaluated and up-to-date, and as long as you do not perform a write transaction + on the same thread or explicitly call `-[RLMRealm refresh]`, accessing it will + never perform blocking work. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMResults *_Nullable results, + RLMCollectionChange *_Nullable change, + NSError *_Nullable error))block + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the results collection changes. + + The block will be asynchronously called with the initial results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the results collection were added, removed or modified. If a + write transaction did not modify any objects in the results collection, + the block is not called at all. See the `RLMCollectionChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + At the time when the block is called, the `RLMResults` object will be fully + evaluated and up-to-date, and as long as you do not perform a write transaction + on the same thread or explicitly call `-[RLMRealm refresh]`, accessing it will + never perform blocking work. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMResults *_Nullable results, + RLMCollectionChange *_Nullable change, + NSError *_Nullable error))block + keyPaths:(nullable NSArray *)keyPaths + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the results collection changes. + + The block will be asynchronously called with the initial results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the results collection were added, removed or modified. If a + write transaction did not modify any objects in the results collection, + the block is not called at all. See the `RLMCollectionChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + At the time when the block is called, the `RLMResults` object will be fully + evaluated and up-to-date, and as long as you do not perform a write transaction + on the same thread or explicitly call `-[RLMRealm refresh]`, accessing it will + never perform blocking work. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMResults *_Nullable results, + RLMCollectionChange *_Nullable change, + NSError *_Nullable error))block + keyPaths:(nullable NSArray *)keyPaths +__attribute__((warn_unused_result)); +#pragma mark - Aggregating Property Values + +/** + Returns the minimum (lowest) value of the given property among all the objects + represented by the results collection. + + NSNumber *min = [results minOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose minimum value is desired. Only properties of types `int`, `float`, `double`, and + `NSDate` are supported. + + @return The minimum value of the property, or `nil` if the Results are empty. + */ +- (nullable id)minOfProperty:(NSString *)property; + +/** + Returns the maximum (highest) value of the given property among all the objects represented by the results collection. + + NSNumber *max = [results maxOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose maximum value is desired. Only properties of + types `int`, `float`, `double`, and `NSDate` are supported. + + @return The maximum value of the property, or `nil` if the Results are empty. + */ +- (nullable id)maxOfProperty:(NSString *)property; + +/** + Returns the sum of the values of a given property over all the objects represented by the results collection. + + NSNumber *sum = [results sumOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose values should be summed. Only properties of + types `int`, `float`, and `double` are supported. + + @return The sum of the given property. + */ +- (NSNumber *)sumOfProperty:(NSString *)property; + +/** + Returns the average value of a given property over the objects represented by the results collection. + + NSNumber *average = [results averageOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose average value should be calculated. Only + properties of types `int`, `float`, and `double` are supported. + + @return The average value of the given property, or `nil` if the Results are empty. + */ +- (nullable NSNumber *)averageOfProperty:(NSString *)property; + +/// :nodoc: +- (RLMObjectType)objectAtIndexedSubscript:(NSUInteger)index; + +#pragma mark - Sectioned Results + +/** + Sorts and sections this collection from a given property key path, returning the result + as an instance of `RLMSectionedResults`. + + @param keyPath The property key path to sort on. + @param ascending The direction to sort in. + @param keyBlock A callback which is invoked on each element in the Results collection. + This callback is to return the section key for the element in the collection. + + @return An instance of RLMSectionedResults. + */ +- (RLMSectionedResults *)sectionedResultsSortedUsingKeyPath:(NSString *)keyPath + ascending:(BOOL)ascending + keyBlock:(RLMSectionedResultsKeyBlock)keyBlock; + +/** + Sorts and sections this collection from a given array of sort descriptors, returning the result + as an instance of `RLMSectionedResults`. + + @param sortDescriptors An array of `RLMSortDescriptor`s to sort by. + @param keyBlock A callback which is invoked on each element in the Results collection. + This callback is to return the section key for the element in the collection. + + @note The primary sort descriptor must be responsible for determining the section key. + + @return An instance of RLMSectionedResults. + */ +- (RLMSectionedResults *)sectionedResultsUsingSortDescriptors:(NSArray *)sortDescriptors + keyBlock:(RLMSectionedResultsKeyBlock)keyBlock; + +#pragma mark - Freeze + +/** + Indicates if the result are frozen. + + Frozen Results are immutable and can be accessed from any thread.The objects + read from a frozen Results will also be frozen. + */ +@property (nonatomic, readonly, getter=isFrozen) BOOL frozen; + +/** + Returns a frozen (immutable) snapshot of these results. + + The frozen copy is an immutable collection which contains the same data as + this collection currently contains, but will not update when writes are made + to the containing Realm. Unlike live Results, frozen Results can be accessed + from any thread. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning Holding onto a frozen collection for an extended period while + performing write transaction on the Realm may result in the Realm + file growing to large sizes. See + `RLMRealmConfiguration.maximumNumberOfActiveVersions` for more + information. + */ +- (instancetype)freeze; + +/** + Returns a live version of this frozen collection. + + This method resolves a reference to a live copy of the same frozen collection. + If called on a live collection, will return itself. +*/ +- (instancetype)thaw; + +#pragma mark - Unavailable Methods + +/** + `-[RLMResults init]` is not available because `RLMResults` cannot be created directly. + `RLMResults` can be obtained by querying a Realm. + */ +- (instancetype)init __attribute__((unavailable("RLMResults cannot be created directly"))); + +/** + `+[RLMResults new]` is not available because `RLMResults` cannot be created directly. + `RLMResults` can be obtained by querying a Realm. + */ ++ (instancetype)new __attribute__((unavailable("RLMResults cannot be created directly"))); + +@end + +/** + `RLMLinkingObjects` is an auto-updating container type. It represents a collection of objects that link to its + parent object. + + For more information, please see the "Inverse Relationships" section in the + [documentation](https://www.mongodb.com/docs/realm/sdk/swift/fundamentals/relationships/#relationships). + */ +@interface RLMLinkingObjects : RLMResults +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSchema.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSchema.h new file mode 100644 index 000000000..fe46f6d47 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSchema.h @@ -0,0 +1,78 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMObjectSchema; + +/** + `RLMSchema` instances represent collections of model object schemas managed by a Realm. + + When using Realm, `RLMSchema` instances allow performing migrations and + introspecting the database's schema. + + Schemas map to collections of tables in the core database. + */ +RLM_SWIFT_SENDABLE // not actually immutable, but the public API kinda is +@interface RLMSchema : NSObject + +#pragma mark - Properties + +/** + An `NSArray` containing `RLMObjectSchema`s for all object types in the Realm. + + This property is intended to be used during migrations for dynamic introspection. + + @see `RLMObjectSchema` + */ +@property (nonatomic, readonly, copy) NSArray *objectSchema; + +#pragma mark - Methods + +/** + Returns an `RLMObjectSchema` for the given class name in the schema. + + @param className The object class name. + @return An `RLMObjectSchema` for the given class in the schema. + + @see `RLMObjectSchema` + */ +- (nullable RLMObjectSchema *)schemaForClassName:(NSString *)className; + +/** + Looks up and returns an `RLMObjectSchema` for the given class name in the Realm. + + If there is no object of type `className` in the schema, an exception will be thrown. + + @param className The object class name. + @return An `RLMObjectSchema` for the given class in this Realm. + + @see `RLMObjectSchema` + */ +- (RLMObjectSchema *)objectForKeyedSubscript:(NSString *)className; + +/** + Returns whether two `RLMSchema` instances are equivalent. + */ +- (BOOL)isEqualToSchema:(RLMSchema *)schema; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSectionedResults.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSectionedResults.h new file mode 100644 index 000000000..4ee236b94 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSectionedResults.h @@ -0,0 +1,921 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2022 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@protocol RLMValue; +@class RLMResults; + +/** + A `RLMSectionedResultsChange` object encapsulates information about changes to sectioned + results that are reported by Realm notifications. + + `RLMSectionedResultsChange` is passed to the notification blocks registered with + `-addNotificationBlock` on `RLMSectionedResults`, and reports what sections and rows in the + collection changed since the last time the notification block was called. + + A complete example of updating a `UITableView` named `tv`: + + [tv beginUpdates]; + [tv deleteRowsAtIndexPaths:changes.deletions withRowAnimation:UITableViewRowAnimationAutomatic]; + [tv insertRowsAtIndexPaths:changes.insertions withRowAnimation:UITableViewRowAnimationAutomatic]; + [tv reloadRowsAtIndexPaths:changes.modifications withRowAnimation:UITableViewRowAnimationAutomatic]; + [tv insertSections:changes.sectionsToInsert withRowAnimation:UITableViewRowAnimationAutomatic]; + [tv deleteSections:changes.sectionsToRemove withRowAnimation:UITableViewRowAnimationAutomatic]; + [tv endUpdates]; + + All of the arrays in an `RLMSectionedResultsChange` are always sorted in ascending order. + */ +@interface RLMSectionedResultsChange : NSObject +/// The index paths of objects in the previous version of the collection which have +/// been removed from this one. +@property (nonatomic, readonly) NSArray *deletions; +/// The index paths in the new version of the collection which were newly inserted. +@property (nonatomic, readonly) NSArray *insertions; +/// The index paths in the old version of the collection which were modified. +@property (nonatomic, readonly) NSArray *modifications; +/// The indices of the sections to be inserted. +@property (nonatomic, readonly) NSIndexSet *sectionsToInsert; +/// The indices of the sections to be removed. +@property (nonatomic, readonly) NSIndexSet *sectionsToRemove; +/// Returns the index paths of the deletion indices in the given section. +- (NSArray *)deletionsInSection:(NSUInteger)section; +/// Returns the index paths of the insertion indices in the given section. +- (NSArray *)insertionsInSection:(NSUInteger)section; +/// Returns the index paths of the modification indices in the given section. +- (NSArray *)modificationsInSection:(NSUInteger)section; +@end + + +/// The `RLMSectionedResult` protocol defines properties and methods common to both `RLMSectionedResults and RLMSection` +@protocol RLMSectionedResult + +#pragma mark - Object Access + +/// The count of objects in the collection. +@property (nonatomic, readonly) NSUInteger count; +/// Returns the object for a given index in the collection. +- (id)objectAtIndexedSubscript:(NSUInteger)index; +/// Returns the object for a given index in the collection. +- (id)objectAtIndex:(NSUInteger)index; + +#pragma mark - Freeze + +/** + Returns a frozen (immutable) snapshot of this collection. + + The frozen copy is an immutable collection which contains the same data as this + collection currently contains, but will not update when writes are made to the + containing Realm. Unlike live arrays, frozen collections can be accessed from any + thread. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning Holding onto a frozen collection for an extended period while performing + write transaction on the Realm may result in the Realm file growing + to large sizes. See `RLMRealmConfiguration.maximumNumberOfActiveVersions` + for more information. + */ +- (instancetype)freeze; +/** + Returns a live version of this frozen collection. + + This method resolves a reference to a live copy of the same frozen collection. + If called on a live collection, will return itself. +*/ +- (instancetype)thaw; +/** + Indicates if the underlying collection is frozen. + + Frozen collections are immutable and can be accessed from any thread. + */ +@property (nonatomic, readonly, getter = isFrozen) BOOL frozen; + +#pragma mark - Sectioned Results Notifications + +/** + Registers a block to be called each time the collection changes. + + The block will be asynchronously called with the initial sectioned results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSection` / `RLMSectionedResults` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + self.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"sectionedResults.count: %zu", sectionedResults.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(id, RLMSectionedResultsChange *))block __attribute__((warn_unused_result)); +/** + Registers a block to be called each time the collection changes. + + The block will be asynchronously called with the initial sectioned results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSection` / `RLMSectionedResults` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + self.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"sectionedResults.count: %zu", sectionedResults.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(id, RLMSectionedResultsChange *))block + queue:(dispatch_queue_t)queue __attribute__((warn_unused_result)); +/** + Registers a block to be called each time the collection changes. + + The block will be asynchronously called with the initial sectioned results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSection` / `RLMSectionedResults` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + self.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"sectionedResults.count: %zu", sectionedResults.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(id, RLMSectionedResultsChange *))block + keyPaths:(NSArray *)keyPaths __attribute__((warn_unused_result)); +/** + Registers a block to be called each time the collection changes. + + The block will be asynchronously called with the initial sectioned results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSection` / `RLMSectionedResults` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + self.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"sectionedResults.count: %zu", sectionedResults.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @note When filtering with key paths a notification will be fired in the following scenarios: + - An object in the collection has been modified at the filtered properties. + - An object has been modified on the section key path property, and the result of that modification has changed it's position in the section, or the object may need to move to another section. + - An object of the same observed type has been inserted or deleted from the Realm. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @param queue The serial queue to deliver notifications to. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(id, RLMSectionedResultsChange *))block + keyPaths:(nullable NSArray *)keyPaths + queue:(nullable dispatch_queue_t)queue __attribute__((warn_unused_result)); + +@end + +/// An RLMSection contains the objects which belong to a specified section key. +@interface RLMSection, RLMObjectType> : NSObject +/// The value that represents the key in this section. +@property (nonatomic, readonly) RLMKeyType key; +/// The count of objects in the section. +@property (nonatomic, readonly) NSUInteger count; +/// Returns the object for a given index in the section. +- (RLMObjectType)objectAtIndexedSubscript:(NSUInteger)index; +/// Returns the object for a given index in the section. +- (RLMObjectType)objectAtIndex:(NSUInteger)index; + +#pragma mark - Freeze + +/** + Returns a frozen (immutable) snapshot of this section. + + The frozen copy is an immutable section which contains the same data as this + section currently contains, but will not update when writes are made to the + containing Realm. Unlike live arrays, frozen collections can be accessed from any + thread. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning Holding onto a frozen section for an extended period while performing + write transaction on the Realm may result in the Realm file growing + to large sizes. See `RLMRealmConfiguration.maximumNumberOfActiveVersions` + for more information. + */ +- (instancetype)freeze; +/** + Returns a live version of this frozen section. + + This method resolves a reference to a live copy of the same frozen section. + If called on a live section, will return itself. +*/ +- (instancetype)thaw; +/** + Indicates if the underlying section is frozen. + + Frozen sections are immutable and can be accessed from any thread. + */ +@property (nonatomic, readonly, getter = isFrozen) BOOL frozen; + +#pragma mark - Section Notifications + +/** + Registers a block to be called each time the section changes. + + The block will be asynchronously called with the initial section, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSection` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + RLMSection *section = sectionedResults[0] // section with dogs aged '5' already exists. + + self.token = [section addNotificationBlock:^(RLMSection *section, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"section.count: %zu", section.count); // => 2 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSection *, RLMSectionedResultsChange *))block __attribute__((warn_unused_result)); +/** + Registers a block to be called each time the section changes. + + The block will be asynchronously called with the initial section, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSection` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + RLMSection *section = sectionedResults[0] // section with dogs aged '5' already exists. + + self.token = [section addNotificationBlock:^(RLMSection *section, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"section.count: %zu", section.count); // => 2 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSection *, RLMSectionedResultsChange *))block + queue:(dispatch_queue_t)queue __attribute__((warn_unused_result)); +/** + Registers a block to be called each time the section changes. + + The block will be asynchronously called with the initial section, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSection` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + RLMSection *section = sectionedResults[0] // section with dogs aged '5' already exists. + + self.token = [section addNotificationBlock:^(RLMSection *section, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"section.count: %zu", section.count); // => 2 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @note When filtering with key paths a notification will be fired in the following scenarios: + - An object in the collection has been modified at the filtered properties. + - An object has been modified on the section key path property, and the result of that modification has changed it's position in the section, or the object may need to move to another section. + - An object of the same observed type has been inserted or deleted from the Realm. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSection *, RLMSectionedResultsChange *))block + keyPaths:(NSArray *)keyPaths __attribute__((warn_unused_result)); +/** + Registers a block to be called each time the section changes. + + The block will be asynchronously called with the initial section, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSection` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + RLMSection *section = sectionedResults[0] // section with dogs aged '5' already exists. + + self.token = [section addNotificationBlock:^(RLMSection *section, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"section.count: %zu", section.count); // => 2 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @note When filtering with key paths a notification will be fired in the following scenarios: + - An object in the collection has been modified at the filtered properties. + - An object has been modified on the section key path property, and the result of that modification has changed it's position in the section, or the object may need to move to another section. + - An object of the same observed type has been inserted or deleted from the Realm. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @param queue The serial queue to deliver notifications to. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSection *, RLMSectionedResultsChange *))block + keyPaths:(nullable NSArray *)keyPaths + queue:(nullable dispatch_queue_t)queue __attribute__((warn_unused_result)); +@end + +/// A lazily evaluated collection that holds elements in sections determined by a section key. +@interface RLMSectionedResults, RLMObjectType: id> : NSObject +/// An array of all keys in the sectioned results collection. +@property (nonatomic) NSArray *allKeys; +/// The total amount of sections in this collection. +@property (nonatomic, readonly, assign) NSUInteger count; +/// Returns the section at a given index. +- (RLMSection *)objectAtIndexedSubscript:(NSUInteger)index; +/// Returns the section at a given index. +- (RLMSection *)objectAtIndex:(NSUInteger)index; + +#pragma mark - Freeze + +/** + Returns a frozen (immutable) snapshot of this sectioned results collection. + + The frozen copy is an immutable sectioned results collection which contains the same data as this + sectioned results collection currently contains, but will not update when writes are made to the + containing Realm. Unlike live sectioned results collections, frozen sectioned results collection + can be accessed from any thread. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning Holding onto a frozen sectioned results collection for an extended period while performing + write transaction on the Realm may result in the Realm file growing + to large sizes. See `RLMRealmConfiguration.maximumNumberOfActiveVersions` + for more information. + */ +- (instancetype)freeze; +/** + Returns a live version of this frozen sectioned results collection. + + This method resolves a reference to a live copy of the same frozen sectioned results collection. + If called on a live section, will return itself. +*/ +- (instancetype)thaw; +/** + Indicates if the underlying sectioned results collection is frozen. + + Frozen sectioned results collections are immutable and can be accessed from any thread. + */ +@property (nonatomic, readonly, getter = isFrozen) BOOL frozen; + +#pragma mark - Sectioned Results Notifications + +/** + Registers a block to be called each time the sectioned results collection changes. + + The block will be asynchronously called with the initial sectioned results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSectionedResults` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + self.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"sectionedResults.count: %zu", sectionedResults.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSectionedResults *, RLMSectionedResultsChange *))block __attribute__((warn_unused_result)); +/** + Registers a block to be called each time the sectioned results collection changes. + + The block will be asynchronously called with the initial sectioned results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSectionedResults` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + self.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"sectionedResults.count: %zu", sectionedResults.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSectionedResults *, RLMSectionedResultsChange *))block + queue:(dispatch_queue_t)queue __attribute__((warn_unused_result)); +/** + Registers a block to be called each time the sectioned results collection changes. + + The block will be asynchronously called with the initial sectioned results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSectionedResults` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + self.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"sectionedResults.count: %zu", sectionedResults.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @note When filtering with key paths a notification will be fired in the following scenarios: + - An object in the collection has been modified at the filtered properties. + - An object has been modified on the section key path property, and the result of that modification has changed it's position in the section, or the object may need to move to another section. + - An object of the same observed type has been inserted or deleted from the Realm. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSectionedResults *, RLMSectionedResultsChange *))block + keyPaths:(NSArray *)keyPaths __attribute__((warn_unused_result)); +/** + Registers a block to be called each time the sectioned results collection changes. + + The block will be asynchronously called with the initial sectioned results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSectionedResults` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + self.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"sectionedResults.count: %zu", sectionedResults.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @note When filtering with key paths a notification will be fired in the following scenarios: + - An object in the collection has been modified at the filtered properties. + - An object has been modified on the section key path property, and the result of that modification has changed it's position in the section, or the object may need to move to another section. + - An object of the same observed type has been inserted or deleted from the Realm. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @param queue The serial queue to deliver notifications to. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSectionedResults *, RLMSectionedResultsChange *))block + keyPaths:(nullable NSArray *)keyPaths + queue:(nullable dispatch_queue_t)queue __attribute__((warn_unused_result)); +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSet.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSet.h new file mode 100644 index 000000000..fead2e005 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSet.h @@ -0,0 +1,535 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMObject, RLMResults; + +/** + A collection datatype used for storing distinct objects. + + - Note: + `RLMSet` supports storing primitive and `RLMObject` types. `RLMSet` does not support storing + Embedded Realm Objects. + */ +@interface RLMSet : NSObject + +#pragma mark - Properties + +/** + The number of objects in the set. + */ +@property (nonatomic, readonly, assign) NSUInteger count; + +/** + The type of the objects in the set. + */ +@property (nonatomic, readonly, assign) RLMPropertyType type; + +/** + Indicates whether the objects in the collection can be `nil`. + */ +@property (nonatomic, readonly, getter = isOptional) BOOL optional; + +/** + The objects in the RLMSet as an NSArray value. + */ +@property (nonatomic, readonly) NSArray *allObjects; + +/** + The class name of the objects contained in the set. + + Will be `nil` if `type` is not RLMPropertyTypeObject. + */ +@property (nonatomic, readonly, copy, nullable) NSString *objectClassName; + +/** + The Realm which manages the set. Returns `nil` for unmanaged set. + */ +@property (nonatomic, readonly, nullable) RLMRealm *realm; + +/** + Indicates if the set can no longer be accessed. + */ +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +/** + Indicates if the set is frozen. + + Frozen sets are immutable and can be accessed from any thread. Frozen sets + are created by calling `-freeze` on a managed live set. Unmanaged sets are + never frozen. + */ +@property (nonatomic, readonly, getter = isFrozen) BOOL frozen; + +#pragma mark - Adding, Removing, and Replacing Objects in a Set + +/** + Adds an object to the set if it is not already present. + + @warning This method may only be called during a write transaction. + + @param object An object of the type contained in the set. + */ +- (void)addObject:(RLMObjectType)object; + +/** + Adds an array of distinct objects to the set. + + @warning This method may only be called during a write transaction. + + @param objects An enumerable object such as `NSArray`, `NSSet` or `RLMResults` which contains objects of the + same class as the set. + */ +- (void)addObjects:(id)objects; + +/** + Removes a given object from the set. + + @warning This method may only be called during a write transaction. + + @param object The object in the set that you want to remove. + */ +- (void)removeObject:(RLMObjectType)object; + +/** + Removes all objects from the set. + + @warning This method may only be called during a write transaction. + */ +- (void)removeAllObjects; + +/** + Empties the receiving set, then adds each object contained in another given set. + + @warning This method may only be called during a write transaction. + + @param set The RLMSet whose members replace the receiving set's content. + */ +- (void)setSet:(RLMSet *)set; + +/** + Removes from the receiving set each object that isn’t a member of another given set. + + @warning This method may only be called during a write transaction. + + @param set The RLMSet with which to perform the intersection. + */ +- (void)intersectSet:(RLMSet *)set; + +/** + Removes each object in another given set from the receiving set, if present. + + @warning This method may only be called during a write transaction. + + @param set The set of objects to remove from the receiving set. + */ +- (void)minusSet:(RLMSet *)set; + +/** + Adds each object in another given set to the receiving set, if not present. + + @warning This method may only be called during a write transaction. + + @param set The set of objects to add to the receiving set. + */ +- (void)unionSet:(RLMSet *)set; + +#pragma mark - Querying a Set + +/// :nodoc: +- (RLMResults *)objectsWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (RLMResults *)objectsWhere:(NSString *)predicateFormat args:(va_list)args; + +/// :nodoc: +- (RLMResults *)objectsWithPredicate:(NSPredicate *)predicate; + +/// :nodoc: +- (RLMResults *)sortedResultsUsingKeyPath:(NSString *)keyPath ascending:(BOOL)ascending; + +/// :nodoc: +- (RLMResults *)sortedResultsUsingDescriptors:(NSArray *)properties; + +/// :nodoc: +- (RLMResults *)distinctResultsUsingKeyPaths:(NSArray *)keyPaths; + +/** + Returns a Boolean value that indicates whether at least one object in the receiving set is also present in another given set. + + @param set The RLMSet to compare the receiving set to. + + @return YES if at least one object in the receiving set is also present in otherSet, otherwise NO. + */ +- (BOOL)intersectsSet:(RLMSet *)set; + +/** + Returns a Boolean value that indicates whether every object in the receiving set is also present in another given set. + + @param set The RLMSet to compare the receiving set to. + + @return YES if every object in the receiving set is also present in otherSet, otherwise NO. + */ +- (BOOL)isSubsetOfSet:(RLMSet *)set; + +/** + Returns a Boolean value that indicates whether a given object is present in the set. + + @param anObject An object to look for in the set. + + @return YES if anObject is present in the set, otherwise NO. + */ +- (BOOL)containsObject:(RLMObjectType)anObject; + +/** + Compares the receiving set to another set. + + @param otherSet The set with which to compare the receiving set. + + @return YES if the contents of otherSet are equal to the contents of the receiving set, otherwise NO. + */ +- (BOOL)isEqualToSet:(RLMSet *)otherSet; + +#pragma mark - Sectioning a Set + +/** + Sorts and sections this collection from a given property key path, returning the result + as an instance of `RLMSectionedResults`. + + @param keyPath The property key path to sort on. + @param ascending The direction to sort in. + @param keyBlock A callback which is invoked on each element in the Results collection. + This callback is to return the section key for the element in the collection. + + @return An instance of RLMSectionedResults. + */ +- (RLMSectionedResults *)sectionedResultsSortedUsingKeyPath:(NSString *)keyPath + ascending:(BOOL)ascending + keyBlock:(RLMSectionedResultsKeyBlock)keyBlock; + +/** + Sorts and sections this collection from a given array of sort descriptors, returning the result + as an instance of `RLMSectionedResults`. + + @param sortDescriptors An array of `RLMSortDescriptor`s to sort by. + @param keyBlock A callback which is invoked on each element in the Results collection. + This callback is to return the section key for the element in the collection. + + @note The primary sort descriptor must be responsible for determining the section key. + + @return An instance of RLMSectionedResults. + */ +- (RLMSectionedResults *)sectionedResultsUsingSortDescriptors:(NSArray *)sortDescriptors + keyBlock:(RLMSectionedResultsKeyBlock)keyBlock; + + +#pragma mark - Notifications + +/** + Registers a block to be called each time the set changes. + + The block will be asynchronously called with the initial set, and then + called again after each write transaction which changes any of the objects in + the set, which objects are in the results, or the order of the objects in the + set. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the set were added, removed or modified. If a write transaction + did not modify any objects in the set, the block is not called at all. + See the `RLMCollectionChange` documentation for information on how the changes + are reported and an example of updating a `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + Person *person = [[Person allObjectsInRealm:realm] firstObject]; + NSLog(@"person.dogs.count: %zu", person.dogs.count); // => 0 + self.token = [person.dogs addNotificationBlock(RLMSet *dogs, + RLMCollectionChange *changes, + NSError *error) { + // Only fired once for the example + NSLog(@"dogs.count: %zu", dogs.count) // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + [person.dogs addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning This method may only be called on a non-frozen managed set. + + @param block The block to be called each time the set changes. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSet *_Nullable set, + RLMCollectionChange *_Nullable changes, + NSError *_Nullable error))block +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the set changes. + + The block will be asynchronously called with the initial set, and then + called again after each write transaction which changes any of the objects in + the set, which objects are in the results, or the order of the objects in the + set. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the set were added, removed or modified. If a write transaction + did not modify any objects in the set, the block is not called at all. + See the `RLMCollectionChange` documentation for information on how the changes + are reported and an example of updating a `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSet *_Nullable set, + RLMCollectionChange *_Nullable changes, + NSError *_Nullable error))block + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the set changes. + + The block will be asynchronously called with the initial set, and then + called again after each write transaction which changes any of the objects in + the set, which objects are in the results, or the order of the objects in the + set. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the set were added, removed or modified. If a write transaction + did not modify any objects in the set, the block is not called at all. + See the `RLMCollectionChange` documentation for information on how the changes + are reported and an example of updating a `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSet *_Nullable set, + RLMCollectionChange *_Nullable changes, + NSError *_Nullable error))block + keyPaths:(nullable NSArray *)keyPaths + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the set changes. + + The block will be asynchronously called with the initial set, and then + called again after each write transaction which changes any of the objects in + the set, which objects are in the results, or the order of the objects in the + set. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the set were added, removed or modified. If a write transaction + did not modify any objects in the set, the block is not called at all. + See the `RLMCollectionChange` documentation for information on how the changes + are reported and an example of updating a `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSet *_Nullable set, + RLMCollectionChange *_Nullable changes, + NSError *_Nullable error))block + keyPaths:(nullable NSArray *)keyPaths +__attribute__((warn_unused_result)); + +#pragma mark - Aggregating Property Values + +/** + Returns the minimum (lowest) value of the given property among all the objects in the set. + + NSNumber *min = [object.setProperty minOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, `RLMSet`, and `NSData` properties. + + @param property The property whose minimum value is desired. Only properties of + types `int`, `float`, `double`, and `NSDate` are supported. + + @return The minimum value of the property, or `nil` if the set is empty. + */ +- (nullable id)minOfProperty:(NSString *)property; + +/** + Returns the maximum (highest) value of the given property among all the objects in the set. + + NSNumber *max = [object.setProperty maxOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, `RLMSet`, and `NSData` properties. + + @param property The property whose maximum value is desired. Only properties of + types `int`, `float`, `double`, and `NSDate` are supported. + + @return The maximum value of the property, or `nil` if the set is empty. + */ +- (nullable id)maxOfProperty:(NSString *)property; + +/** + Returns the sum of distinct values of a given property over all the objects in the set. + + NSNumber *sum = [object.setProperty sumOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, `RLMSet and `NSData` properties. + + @param property The property whose values should be summed. Only properties of + types `int`, `float`, and `double` are supported. + + @return The sum of the given property. + */ +- (NSNumber *)sumOfProperty:(NSString *)property; + +/** + Returns the average value of a given property over the objects in the set. + + NSNumber *average = [object.setProperty averageOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMSet`, `RLMArray`, and `NSData` properties. + + @param property The property whose average value should be calculated. Only + properties of types `int`, `float`, and `double` are supported. + + @return The average value of the given property, or `nil` if the set is empty. + */ +- (nullable NSNumber *)averageOfProperty:(NSString *)property; + +#pragma mark - Freeze + +/** + Returns a frozen (immutable) snapshot of this set. + + The frozen copy is an immutable set which contains the same data as this + et currently contains, but will not update when writes are made to the + containing Realm. Unlike live sets, frozen sets can be accessed from any + thread. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning This method may only be called on a managed set. + @warning Holding onto a frozen set for an extended period while performing + write transaction on the Realm may result in the Realm file growing + to large sizes. See `RLMRealmConfiguration.maximumNumberOfActiveVersions` + for more information. + */ +- (instancetype)freeze; + +/** + Returns a live version of this frozen collection. + + This method resolves a reference to a live copy of the same frozen collection. + If called on a live collection, will return itself. +*/ +- (instancetype)thaw; + +#pragma mark - Unavailable Methods + +/** + `-[RLMSet init]` is not available because `RLMSet`s cannot be created directly. + ``RLMSet` properties on `RLMObject`s are lazily created when accessed. + */ +- (instancetype)init __attribute__((unavailable("RLMSets cannot be created directly"))); + +/** + `+[RLMSet new]` is not available because `RLMSet`s cannot be created directly. + `RLMSet` properties on `RLMObject`s are lazily created when accessed. + */ ++ (instancetype)new __attribute__((unavailable("RLMSet cannot be created directly"))); + +@end + +/// :nodoc: +@interface RLMSet (Swift) +// for use only in Swift class definitions +- (instancetype)initWithObjectClassName:(NSString *)objectClassName; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSwiftObject.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSwiftObject.h new file mode 100644 index 000000000..7ea764016 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSwiftObject.h @@ -0,0 +1,142 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2023 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) +/** + `Object` is a class used to define Realm model objects. + + In Realm you define your model classes by subclassing `Object` and adding properties to be managed. + You then instantiate and use your custom subclasses instead of using the `Object` class directly. + + ```swift + class Dog: Object { + @objc dynamic var name: String = "" + @objc dynamic var adopted: Bool = false + let siblings = List() + } + ``` + + ### Supported property types + + - `String`, `NSString` + - `Int` + - `Int8`, `Int16`, `Int32`, `Int64` + - `Float` + - `Double` + - `Bool` + - `Date`, `NSDate` + - `Data`, `NSData` + - `Decimal128` + - `ObjectId` + - `@objc enum` which has been delcared as conforming to `RealmEnum`. + - `RealmOptional` for optional numeric properties + - `Object` subclasses, to model many-to-one relationships + - `EmbeddedObject` subclasses, to model owning one-to-one relationships + - `List`, to model many-to-many relationships + + `String`, `NSString`, `Date`, `NSDate`, `Data`, `NSData`, `Decimal128`, and `ObjectId` properties + can be declared as optional. `Object` and `EmbeddedObject` subclasses *must* be declared as optional. + `Int`, `Int8`, `Int16`, `Int32`, `Int64`, `Float`, `Double`, `Bool`, enum, and `List` properties cannot. + To store an optional number, use `RealmOptional`, `RealmOptional`, `RealmOptional`, or + `RealmOptional` instead, which wraps an optional numeric value. Lists cannot be optional at all. + + All property types except for `List` and `RealmOptional` *must* be declared as `@objc dynamic var`. `List` and + `RealmOptional` properties must be declared as non-dynamic `let` properties. Swift `lazy` properties are not allowed. + + Note that none of the restrictions listed above apply to properties that are configured to be ignored by Realm. + + ### Querying + + You can retrieve all objects of a given type from a Realm by calling the `objects(_:)` instance method. + + ### Relationships + + See our [Objective-C guide](https://docs.mongodb.com/realm/sdk/swift/fundamentals/relationships/) for more details. + */ +@interface RealmSwiftObject : RLMObjectBase +@end + +/** + `EmbeddedObject` is a base class used to define embedded Realm model objects. + + Embedded objects work similarly to normal objects, but are owned by a single + parent Object (which itself may be embedded). Unlike normal top-level objects, + embedded objects cannot be directly created in or added to a Realm. Instead, + they can only be created as part of a parent object, or by assigning an + unmanaged object to a parent object's property. Embedded objects are + automatically deleted when the parent object is deleted or when the parent is + modified to no longer point at the embedded object, either by reassigning an + Object property or by removing the embedded object from the List containing it. + + Embedded objects can only ever have a single parent object which links to + them, and attempting to link to an existing managed embedded object will throw + an exception. + + The property types supported on `EmbeddedObject` are the same as for `Object`, + except for that embedded objects cannot link to top-level objects, so `Object` + and `List` properties are not supported (`EmbeddedObject` and + `List` *are*). + + Embedded objects cannot have primary keys or indexed properties. + + ```swift + class Owner: Object { + @objc dynamic var name: String = "" + let dogs = List() + } + class Dog: EmbeddedObject { + @objc dynamic var name: String = "" + @objc dynamic var adopted: Bool = false + let owner = LinkingObjects(fromType: Owner.self, property: "dogs") + } + ``` + */ +@interface RealmSwiftEmbeddedObject : RLMObjectBase +@end + +/** + `AsymmetricObject` is a base class used to define asymmetric Realm objects. + + Asymmetric objects can only be created using the `create(_ object:)` + function, and cannot be added, removed or queried. + When created, asymmetric objects will be synced unidirectionally to the MongoDB + database and cannot be accessed locally. + + Incoming links from any asymmetric table are not allowed, meaning embedding + an asymmetric object within an `Object` will throw an error. + + The property types supported on `AsymmetricObject` are the same as for `Object`, + except for that asymmetric objects can only link to embedded objects, so `Object` + and `List` properties are not supported (`EmbeddedObject` and + `List` *are*). + + ```swift + class Person: AsymmetricObject { + @Persisted(primaryKey: true) var _id: ObjectId = ObjectId.generate() + @Persisted var name: String + @Persisted var age: Int + } + ``` + */ +@interface RealmSwiftAsymmetricObject : RLMObjectBase +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) + diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSwiftProperty.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSwiftProperty.h new file mode 100644 index 000000000..ea071927c --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSwiftProperty.h @@ -0,0 +1,71 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2021 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +@class RLMObjectBase, RLMArray, RLMSet; + +#ifdef __cplusplus +extern "C" { +#endif + +RLM_HEADER_AUDIT_BEGIN(nullability) + +#define REALM_FOR_EACH_SWIFT_PRIMITIVE_TYPE(macro) \ + macro(bool, Bool, bool) \ + macro(double, Double, double) \ + macro(float, Float, float) \ + macro(int64_t, Int64, int) + +#define REALM_FOR_EACH_SWIFT_OBJECT_TYPE(macro) \ + macro(NSString, String, string) \ + macro(NSDate, Date, date) \ + macro(NSData, Data, data) \ + macro(NSUUID, UUID, uuid) \ + macro(RLMDecimal128, Decimal128, decimal128) \ + macro(RLMObjectId, ObjectId, objectId) + +#define REALM_SWIFT_PROPERTY_ACCESSOR(objc, swift, rlmtype) \ + objc RLMGetSwiftProperty##swift(RLMObjectBase *, uint16_t); \ + objc RLMGetSwiftProperty##swift##Optional(RLMObjectBase *, uint16_t, bool *); \ + void RLMSetSwiftProperty##swift(RLMObjectBase *, uint16_t, objc); +REALM_FOR_EACH_SWIFT_PRIMITIVE_TYPE(REALM_SWIFT_PROPERTY_ACCESSOR) +#undef REALM_SWIFT_PROPERTY_ACCESSOR + +#define REALM_SWIFT_PROPERTY_ACCESSOR(objc, swift, rlmtype) \ + objc *_Nullable RLMGetSwiftProperty##swift(RLMObjectBase *, uint16_t); \ + void RLMSetSwiftProperty##swift(RLMObjectBase *, uint16_t, objc *_Nullable); +REALM_FOR_EACH_SWIFT_OBJECT_TYPE(REALM_SWIFT_PROPERTY_ACCESSOR) +#undef REALM_SWIFT_PROPERTY_ACCESSOR + +id _Nullable RLMGetSwiftPropertyAny(RLMObjectBase *, uint16_t); +void RLMSetSwiftPropertyAny(RLMObjectBase *, uint16_t, id); +RLMObjectBase *_Nullable RLMGetSwiftPropertyObject(RLMObjectBase *, uint16_t); +void RLMSetSwiftPropertyNil(RLMObjectBase *, uint16_t); +void RLMSetSwiftPropertyObject(RLMObjectBase *, uint16_t, RLMObjectBase *_Nullable); + +RLMArray *_Nonnull RLMGetSwiftPropertyArray(RLMObjectBase *obj, uint16_t); +RLMSet *_Nonnull RLMGetSwiftPropertySet(RLMObjectBase *obj, uint16_t); +RLMDictionary *_Nonnull RLMGetSwiftPropertyMap(RLMObjectBase *obj, uint16_t); + +RLM_HEADER_AUDIT_END(nullability) + +#ifdef __cplusplus +} // extern "C" +#endif diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSyncConfiguration.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSyncConfiguration.h new file mode 100644 index 000000000..54ea2ecfc --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSyncConfiguration.h @@ -0,0 +1,196 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2016 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import + +@class RLMApp; +@class RLMRealm; +@class RLMRealmConfiguration; +@class RLMUser; +@protocol RLMBSON; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** Determines file behavior during a client reset. + + @see: https://docs.mongodb.com/realm/sync/error-handling/client-resets/ +*/ +typedef NS_ENUM(NSUInteger, RLMClientResetMode) { + /// The local copy of the Realm is copied into a recovery + /// directory for safekeeping, and then deleted from the original location. The next time + /// the Realm for that partition value is opened, the Realm will automatically be re-downloaded from + /// Atlas App Services, and can be used as normal. + + /// Data written to the Realm after the local copy of the Realm diverged from the backup + /// remote copy will be present in the local recovery copy of the Realm file. The + /// re-downloaded Realm will initially contain only the data present at the time the Realm + /// was backed up on the server. + /// + /// @see: ``rlmSync_clientResetBackedUpRealmPath`` and ``RLMSyncErrorActionToken`` for more information on accessing the recovery directory and error information. + /// + /// The manual client reset mode handler can be set in two places: + /// 1. As an ErrorReportingBlock argument at ``RLMSyncConfiguration.manualClientResetHandler``. + /// 2. As an ErrorReportingBlock in the ``RLMSyncManager.errorHandler`` property. + /// @see: ``RLMSyncManager.errorHandler`` + /// + /// When an ``RLMSyncErrorClientResetError`` is thrown, the following rules determine which block is executed: + /// - If an error reporting block is set in ``.manualClientResetHandler`` and the ``RLMSyncManager.errorHandler``, the ``.manualClientResetHandler`` block will be executed. + /// - If an error reporting block is set in either the ``.manualClientResetHandler`` or the ``RLMSyncManager``, but not both, the single block will execute. + /// - If no block is set in either location, the client reset will not be handled. The application will likely need to be restarted and unsynced local changes may be lost. + /// @note: The ``RLMSyncManager.errorHandler`` is still invoked under all ``RLMSyncError``s *other than* ``RLMSyncErrorClientResetError``. + /// @see ``RLMSyncError`` for an exhaustive list. + RLMClientResetModeManual = 0, + /// All unsynchronized local changes are automatically discarded and the local state is + /// automatically reverted to the most recent state from the server. Unsynchronized changes + /// can then be recovered in the post-client-reset callback block. + /// + /// If ``RLMClientResetModeDiscardLocal`` is enabled but the client reset operation is unable to complete + /// then the client reset process reverts to manual mode. Example) During a destructive schema change this + /// mode will fail and invoke the manual client reset handler. + /// + /// The RLMClientResetModeDiscardLocal mode supports two client reset callbacks -- ``RLMClientResetBeforeBlock``, ``RLMClientResetAfterBlock`` -- which can be passed as arguments when creating the ``RLMSyncConfiguration``. + /// @see: ``RLMClientResetAfterBlock`` and ``RLMClientResetBeforeBlock`` + RLMClientResetModeDiscardLocal __deprecated_enum_msg("Use RLMClientResetModeDiscardUnsyncedChanges") = 1, + /// All unsynchronized local changes are automatically discarded and the local state is + /// automatically reverted to the most recent state from the server. Unsynchronized changes + /// can then be recovered in the post-client-reset callback block. + /// + /// If ``RLMClientResetModeDiscardUnsyncedChanges`` is enabled but the client reset operation is unable to complete + /// then the client reset process reverts to manual mode. Example) During a destructive schema change this + /// mode will fail and invoke the manual client reset handler. + /// + /// The RLMClientResetModeDiscardUnsyncedChanges mode supports two client reset callbacks -- ``RLMClientResetBeforeBlock``, ``RLMClientResetAfterBlock`` -- which can be passed as arguments when creating the ``RLMSyncConfiguration``. + /// @see: ``RLMClientResetAfterBlock`` and ``RLMClientResetBeforeBlock`` + RLMClientResetModeDiscardUnsyncedChanges = 1, + /// The client device will download a realm realm which reflects the latest + /// state of the server after a client reset. A recovery process is run locally in + /// an attempt to integrate the server version with any local changes from + /// before the client reset occurred. + /// + /// The changes are integrated with the following rules: + /// 1. Objects created locally that were not synced before client reset will be integrated. + /// 2. If an object has been deleted on the server, but was modified on the client, the delete takes precedence and the update is discarded + /// 3. If an object was deleted on the client, but not the server, then the client delete instruction is applied. + /// 4. In the case of conflicting updates to the same field, the client update is applied. + /// + /// If the recovery integration fails, the client reset process falls back to ``RLMClientResetModeManual``. + /// The recovery integration will fail if the "Client Recovery" setting is not enabled on the server. + /// Integration may also fail in the event of an incompatible schema change. + /// + /// The RLMClientResetModeRecoverUnsyncedChanges mode supports two client reset callbacks -- ``RLMClientResetBeforeBlock``, ``RLMClientResetAfterBlock`` -- which can be passed as arguments when creating the ``RLMSyncConfiguration``. + /// @see: ``RLMClientResetAfterBlock`` and ``RLMClientResetBeforeBlock`` + RLMClientResetModeRecoverUnsyncedChanges = 2, + /// The client device will download a realm with objects reflecting the latest version of the server. A recovery + /// process is run locally in an attempt to integrate the server version with any local changes from before the + /// client reset occurred. + /// + /// The changes are integrated with the following rules: + /// 1. Objects created locally that were not synced before client reset will be integrated. + /// 2. If an object has been deleted on the server, but was modified on the client, the delete takes precedence and the update is discarded + /// 3. If an object was deleted on the client, but not the server, then the client delete instruction is applied. + /// 4. In the case of conflicting updates to the same field, the client update is applied. + /// + /// If the recovery integration fails, the client reset process falls back to ``RLMClientResetModeDiscardUnsyncedChanges``. + /// The recovery integration will fail if the "Client Recovery" setting is not enabled on the server. + /// Integration may also fail in the event of an incompatible schema change. + /// + /// The RLMClientResetModeRecoverOrDiscardUnsyncedChanges mode supports two client reset callbacks -- ``RLMClientResetBeforeBlock``, ``RLMClientResetAfterBlock`` -- which can be passed as arguments when creating the ``RLMSyncConfiguration``. + /// @see: ``RLMClientResetAfterBlock`` and ``RLMClientResetBeforeBlock`` + RLMClientResetModeRecoverOrDiscardUnsyncedChanges = 3 +}; + +/** + A block type used to report before a client reset will occur. + The `beforeFrozen` is a frozen copy of the local state prior to client reset. + */ +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMClientResetBeforeBlock)(RLMRealm * _Nonnull beforeFrozen); + +/** + A block type used to report after a client reset occurred. + The `beforeFrozen` argument is a frozen copy of the local state prior to client reset. + The `after` argument contains the local database state after the client reset occurred. + */ +RLM_SWIFT_SENDABLE // invoked on a backgroun thread +typedef void(^RLMClientResetAfterBlock)(RLMRealm * _Nonnull beforeFrozen, RLMRealm * _Nonnull after); + +/** + A configuration object representing configuration state for a Realm which is intended to sync with a Realm Object + Server. + */ +@interface RLMSyncConfiguration : NSObject + +/// The user to which the remote Realm belongs. +@property (nonatomic, readonly) RLMUser *user; + +/** + The value this Realm is partitioned on. The partition key is a property defined in + Atlas App Services. All classes with a property with this value will be synchronized to the + Realm. + */ +@property (nonatomic, readonly) id partitionValue; + +/** + An enum which determines file recovery behavior in the event of a client reset. + @note: Defaults to `RLMClientResetModeRecoverUnsyncedChanges` + + @see: `RLMClientResetMode` + @see: https://docs.mongodb.com/realm/sync/error-handling/client-resets/ +*/ +@property (nonatomic) RLMClientResetMode clientResetMode; + +/** + A callback which notifies prior to prior to a client reset occurring. + @see: `RLMClientResetBeforeBlock` + */ +@property (nonatomic, nullable) RLMClientResetBeforeBlock beforeClientReset; + +/** + A callback which notifies after a client reset has occurred. + @see: `RLMClientResetAfterBlock` + */ +@property (nonatomic, nullable) RLMClientResetAfterBlock afterClientReset; + +/** + A callback that's executed when an `RLMSyncErrorClientResetError` is encountered. + @See RLMSyncErrorReportingBlock and RLMSyncErrorClientResetError for more + details on handling a client reset manually. + */ +@property (nonatomic, nullable) RLMSyncErrorReportingBlock manualClientResetHandler; + + +/** + Whether nonfatal connection errors should cancel async opens. + + By default, if a nonfatal connection error such as a connection timing out occurs, any currently pending asyncOpen operations will ignore the error and continue to retry until it succeeds. If this is set to true, the open will instead fail and report the error. + + NEXT-MAJOR: This should be true by default. + */ +@property (nonatomic) bool cancelAsyncOpenOnNonFatalErrors; + +/// :nodoc: +- (instancetype)init __attribute__((unavailable("This type cannot be created directly"))); + +/// :nodoc: ++ (instancetype)new __attribute__((unavailable("This type cannot be created directly"))); + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSyncManager.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSyncManager.h new file mode 100644 index 000000000..1dee453d0 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSyncManager.h @@ -0,0 +1,223 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2016 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMSyncSession, RLMSyncTimeoutOptions, RLMAppConfiguration; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +// NEXT-MAJOR: This enum needs to be removed when access to the logger is removed +// from the sync manager. +/// An enum representing different levels of sync-related logging that can be configured. +typedef RLM_CLOSED_ENUM(NSUInteger, RLMSyncLogLevel) { + /// Nothing will ever be logged. + RLMSyncLogLevelOff, + /// Only fatal errors will be logged. + RLMSyncLogLevelFatal, + /// Only errors will be logged. + RLMSyncLogLevelError, + /// Warnings and errors will be logged. + RLMSyncLogLevelWarn, + /// Information about sync events will be logged. Fewer events will be logged in order to avoid overhead. + RLMSyncLogLevelInfo, + /// Information about sync events will be logged. More events will be logged than with `RLMSyncLogLevelInfo`. + RLMSyncLogLevelDetail, + /// Log information that can aid in debugging. + /// + /// - warning: Will incur a measurable performance impact. + RLMSyncLogLevelDebug, + /// Log information that can aid in debugging. More events will be logged than with `RLMSyncLogLevelDebug`. + /// + /// - warning: Will incur a measurable performance impact. + RLMSyncLogLevelTrace, + /// Log information that can aid in debugging. More events will be logged than with `RLMSyncLogLevelTrace`. + /// + /// - warning: Will incur a measurable performance impact. + RLMSyncLogLevelAll +}; + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +/// A log callback function which can be set on RLMSyncManager. +/// +/// The log function may be called from multiple threads simultaneously, and is +/// responsible for performing its own synchronization if any is required. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void (^RLMSyncLogFunction)(RLMSyncLogLevel level, NSString *message); +#pragma clang diagnostic pop + +/// A block type representing a block which can be used to report a sync-related error to the application. If the error +/// pertains to a specific session, that session will also be passed into the block. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMSyncErrorReportingBlock)(NSError *, RLMSyncSession * _Nullable); + +/** + A manager which serves as a central point for sync-related configuration. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // is internally thread-safe +@interface RLMSyncManager : NSObject + +/** + A block which can optionally be set to report sync-related errors to your application. + + Any error reported through this block will be of the `RLMSyncError` type, and marked + with the `RLMSyncErrorDomain` domain. + + Errors reported through this mechanism are fatal, with several exceptions. Please consult + `RLMSyncError` for information about the types of errors that can be reported through + the block, and for for suggestions on handling recoverable error codes. + + @see `RLMSyncError` + */ +@property (nullable, atomic, copy) RLMSyncErrorReportingBlock errorHandler; + +/// :nodoc: +@property (nonatomic, copy) NSString *appID +__attribute__((deprecated("This property is not used for anything"))); + +/** + A string identifying this application which is included in the User-Agent + header of sync connections. By default, this will be the application's bundle + identifier. + + This property must be set prior to opening a synchronized Realm for the first + time. Any modifications made after opening a Realm will be ignored. + */ +@property (atomic, copy) NSString *userAgent; + +/** + The logging threshold which newly opened synced Realms will use. Defaults to + `RLMSyncLogLevelInfo`. + + By default logging strings are output to Apple System Logger. Set `logger` to + perform custom logging logic instead. + + @warning This property must be set before any synced Realms are opened. Setting it after + opening any synced Realm will do nothing. + */ +@property (atomic) RLMSyncLogLevel logLevel +__attribute__((deprecated("Use `RLMLogger.default.level`/`Logger.shared.level` to set/get the default logger threshold level."))); + +/** + The function which will be invoked whenever the sync client has a log message. + + If nil, log strings are output to Apple System Logger instead. + + @warning This property must be set before any synced Realms are opened. Setting + it after opening any synced Realm will do nothing. + */ +@property (atomic, nullable) RLMSyncLogFunction logger +__attribute__((deprecated("Use `RLMLogger.default`/`Logger.shared` to set/get the default logger."))); + +/** + The name of the HTTP header to send authorization data in when making requests to Atlas App Services which has + been configured to expect a custom authorization header. + */ +@property (nullable, atomic, copy) NSString *authorizationHeaderName; + +/** + Extra HTTP headers to append to every request to Atlas App Services. + + Modifying this property while sync sessions are active will result in all + sessions disconnecting and reconnecting using the new headers. + */ +@property (nullable, atomic, copy) NSDictionary *customRequestHeaders; + +/** + Options for the assorted types of connection timeouts for sync connections. + + If nil default values for all timeouts are used instead. + + @warning This property must be set before any synced Realms are opened. Setting + it after opening any synced Realm will do nothing. + */ +@property (nullable, atomic, copy) RLMSyncTimeoutOptions *timeoutOptions; + +/// :nodoc: +- (instancetype)init __attribute__((unavailable("RLMSyncManager cannot be created directly"))); + +/// :nodoc: ++ (instancetype)new __attribute__((unavailable("RLMSyncManager cannot be created directly"))); + +@end + +/** + Options for configuring timeouts and intervals in the sync client. + */ +@interface RLMSyncTimeoutOptions : NSObject +/// The maximum number of milliseconds to allow for a connection to +/// become fully established. This includes the time to resolve the +/// network address, the TCP connect operation, the SSL handshake, and +/// the WebSocket handshake. +/// +/// Defaults to 2 minutes. +@property (nonatomic) NSUInteger connectTimeout; + +/// The number of milliseconds to keep a connection open after all +/// sessions have been abandoned. +/// +/// After all synchronized Realms have been closed for a given server, the +/// connection is kept open until the linger time has expired to avoid the +/// overhead of reestablishing the connection when Realms are being closed and +/// reopened. +/// +/// Defaults to 30 seconds. +@property (nonatomic) NSUInteger connectionLingerTime; + +/// The number of milliseconds between each heartbeat ping message. +/// +/// The client periodically sends ping messages to the server to check if the +/// connection is still alive. Shorter periods make connection state change +/// notifications more responsive at the cost of battery life (as the antenna +/// will have to wake up more often). +/// +/// Defaults to 1 minute. +@property (nonatomic) NSUInteger pingKeepalivePeriod; + +/// How long in milliseconds to wait for a reponse to a heartbeat ping before +/// concluding that the connection has dropped. +/// +/// Shorter values will make connection state change notifications more +/// responsive as it will only change to `disconnected` after this much time has +/// elapsed, but overly short values may result in spurious disconnection +/// notifications when the server is simply taking a long time to respond. +/// +/// Defaults to 2 minutes. +@property (nonatomic) NSUInteger pongKeepaliveTimeout; + +/// The maximum amount of time, in milliseconds, since the loss of a +/// prior connection, for a new connection to be considered a "fast +/// reconnect". +/// +/// When a client first connects to the server, it defers uploading any local +/// changes until it has downloaded all changesets from the server. This +/// typically reduces the total amount of merging that has to be done, and is +/// particularly beneficial the first time that a specific client ever connects +/// to the server. +/// +/// When an existing client disconnects and then reconnects within the "fact +/// reconnect" time this is skipped and any local changes are uploaded +/// immediately without waiting for downloads, just as if the client was online +/// the whole time. +/// +/// Defaults to 1 minute. +@property (nonatomic) NSUInteger fastReconnectLimit; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSyncSession.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSyncSession.h new file mode 100644 index 000000000..31677ce9c --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSyncSession.h @@ -0,0 +1,234 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2016 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +/** + The current state of the session represented by a session object. + */ +typedef NS_ENUM(NSUInteger, RLMSyncSessionState) { + /// The sync session is actively communicating or attempting to communicate + /// with Atlas App Services. A session is considered Active even if + /// it is not currently connected. Check the connection state instead if you + /// wish to know if the connection is currently online. + RLMSyncSessionStateActive, + /// The sync session is not attempting to communicate with MongoDB + /// Realm due to the user logging out or synchronization being paused. + RLMSyncSessionStateInactive, + /// The sync session encountered a fatal error and is permanently invalid; it should be discarded. + RLMSyncSessionStateInvalid +}; + +/** + The current state of a sync session's connection. Sessions which are not in + the Active state will always be Disconnected. + */ +typedef NS_ENUM(NSUInteger, RLMSyncConnectionState) { + /// The sync session is not connected to the server, and is not attempting + /// to connect, either because the session is inactive or because it is + /// waiting to retry after a failed connection. + RLMSyncConnectionStateDisconnected, + /// The sync session is attempting to connect to Atlas App Services. + RLMSyncConnectionStateConnecting, + /// The sync session is currently connected to Atlas App Services. + RLMSyncConnectionStateConnected, +}; + +/** + The transfer direction (upload or download) tracked by a given progress notification block. + + Progress notification blocks can be registered on sessions if your app wishes to be informed + how many bytes have been uploaded or downloaded, for example to show progress indicator UIs. + */ +typedef RLM_CLOSED_ENUM(NSUInteger, RLMSyncProgressDirection) { + /// For monitoring upload progress. + RLMSyncProgressDirectionUpload, + /// For monitoring download progress. + RLMSyncProgressDirectionDownload, +}; + +/** + The desired behavior of a progress notification block. + + Progress notification blocks can be registered on sessions if your app wishes to be informed + how many bytes have been uploaded or downloaded, for example to show progress indicator UIs. + */ +typedef NS_ENUM(NSUInteger, RLMSyncProgressMode) { + /** + The block will be called indefinitely, or until it is unregistered by calling + `-[RLMProgressNotificationToken invalidate]`. + + Notifications will always report the latest number of transferred bytes, and the + most up-to-date number of total transferrable bytes. + */ + RLMSyncProgressModeReportIndefinitely, + /** + The block will, upon registration, store the total number of bytes + to be transferred. When invoked, it will always report the most up-to-date number + of transferrable bytes out of that original number of transferrable bytes. + + When the number of transferred bytes reaches or exceeds the + number of transferrable bytes, the block will be unregistered. + */ + RLMSyncProgressModeForCurrentlyOutstandingWork, +}; + +@class RLMUser, RLMSyncConfiguration, RLMSyncErrorActionToken, RLMSyncManager; + +/** + The type of a progress notification block intended for reporting a session's network + activity to the user. + + `transferredBytes` refers to the number of bytes that have been uploaded or downloaded. + `transferrableBytes` refers to the total number of bytes transferred, and pending transfer. + */ +typedef void(^RLMProgressNotificationBlock)(NSUInteger transferredBytes, NSUInteger transferrableBytes); + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** + A token object corresponding to a progress notification block on a session object. + + To stop notifications manually, call `-invalidate` on it. Notifications should be stopped before + the token goes out of scope or is destroyed. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // is internally thread-safe +@interface RLMProgressNotificationToken : RLMNotificationToken +@end + +/** + An object encapsulating an Atlas App Services "session". Sessions represent the + communication between the client (and a local Realm file on disk), and the server + (and a remote Realm with a given partition value stored on Atlas App Services). + + Sessions are always created by the SDK and vended out through various APIs. The + lifespans of sessions associated with Realms are managed automatically. Session + objects can be accessed from any thread. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // is internally thread-safe +@interface RLMSyncSession : NSObject + +/// The session's current state. +/// +/// This property is not KVO-compliant. +@property (nonatomic, readonly) RLMSyncSessionState state; + +/// The session's current connection state. +/// +/// This property is KVO-compliant and can be observed to be notified of changes. +/// Be warned that KVO observers for this property may be called on a background +/// thread. +@property (atomic, readonly) RLMSyncConnectionState connectionState; + +/// The user that owns this session. +- (nullable RLMUser *)parentUser; + +/** + If the session is valid, return a sync configuration that can be used to open the Realm + associated with this session. + */ +- (nullable RLMSyncConfiguration *)configuration; + +/** + Temporarily suspend syncronization and disconnect from the server. + + The session will not attempt to connect to Atlas App Services until `resume` + is called or the Realm file is closed and re-opened. + */ +- (void)suspend; + +/** + Resume syncronization and reconnect to Atlas App Services after suspending. + + This is a no-op if the session was already active or if the session is invalid. + Newly created sessions begin in the Active state and do not need to be resumed. + */ +- (void)resume; + +/** + Register a progress notification block. + + Multiple blocks can be registered with the same session at once. Each block + will be invoked on a side queue devoted to progress notifications. + + If the session has already received progress information from the + synchronization subsystem, the block will be called immediately. Otherwise, it + will be called as soon as progress information becomes available. + + The token returned by this method must be retained as long as progress + notifications are desired, and the `-invalidate` method should be called on it + when notifications are no longer needed and before the token is destroyed. + + If no token is returned, the notification block will never be called again. + There are a number of reasons this might be true. If the session has previously + experienced a fatal error it will not accept progress notification blocks. If + the block was configured in the `RLMSyncProgressForCurrentlyOutstandingWork` + mode but there is no additional progress to report (for example, the number + of transferrable bytes and transferred bytes are equal), the block will not be + called again. + + @param direction The transfer direction (upload or download) to track in this progress notification block. + @param mode The desired behavior of this progress notification block. + @param block The block to invoke when notifications are available. + + @return A token which must be held for as long as you want notifications to be delivered. + + @see `RLMSyncProgressDirection`, `RLMSyncProgress`, `RLMProgressNotificationBlock`, `RLMProgressNotificationToken` + */ +- (nullable RLMProgressNotificationToken *)addProgressNotificationForDirection:(RLMSyncProgressDirection)direction + mode:(RLMSyncProgressMode)mode + block:(RLMProgressNotificationBlock)block +NS_REFINED_FOR_SWIFT; + +/** + Given an error action token, immediately handle the corresponding action. + + @see `RLMSyncErrorClientResetError`, `RLMSyncErrorPermissionDeniedError` + */ ++ (void)immediatelyHandleError:(RLMSyncErrorActionToken *)token syncManager:(RLMSyncManager *)syncManager; + +/** + Get the sync session for the given Realm if it is a synchronized Realm, or `nil` + if it is not. + */ ++ (nullable RLMSyncSession *)sessionForRealm:(RLMRealm *)realm; + +@end + +// MARK: - Error action token + +#pragma mark - Error action token + +/** + An opaque token returned as part of certain errors. It can be + passed into certain APIs to perform certain actions. + + @see `RLMSyncErrorClientResetError`, `RLMSyncErrorPermissionDeniedError` + */ +RLM_SWIFT_SENDABLE RLM_FINAL +@interface RLMSyncErrorActionToken : NSObject + +/// :nodoc: +- (instancetype)init __attribute__((unavailable("This type cannot be created directly"))); + +/// :nodoc: ++ (instancetype)new __attribute__((unavailable("This type cannot be created directly"))); + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSyncSubscription.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSyncSubscription.h new file mode 100644 index 000000000..d35be19d0 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMSyncSubscription.h @@ -0,0 +1,346 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2021 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMObjectId; + +#pragma mark - Subscription States + +/// The current state of the subscription. This can be used for ensuring that +/// the subscriptions are not errored and that it has been successfully +/// synced to the server. +typedef NS_ENUM(NSUInteger, RLMSyncSubscriptionState) { + /// The subscription is complete and the server has sent all the data that matched the subscription + /// queries at the time the subscription set was updated. The server is now in a steady-state + /// synchronization mode where it will stream update as they come. + RLMSyncSubscriptionStateComplete, + /// The subscription encountered an error and synchronization is paused for this Realm. You can + /// find the error calling error in the subscription set to get a description of the error. You can + /// still use the current subscription set to write a subscription. + RLMSyncSubscriptionStateError, + /// The subscription is persisted locally but not yet processed by the server, which means + /// the server hasn't yet returned all the data that matched the updated subscription queries. + RLMSyncSubscriptionStatePending, + /// The subscription set has been super-ceded by an updated one, this typically means that + /// someone is trying to write a subscription on a different instance of the subscription set. + /// You should not use a superseded subscription set and instead obtain a new instance of + /// the subscription set to write a subscription. + RLMSyncSubscriptionStateSuperseded +}; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** + `RLMSyncSubscription` is used to define a Flexible Sync subscription obtained from querying a + subscription set, which can be used to read or remove/update a committed subscription. + */ +@interface RLMSyncSubscription : NSObject + +/// Name of the subscription. If not specified it will return nil. +@property (nonatomic, readonly, nullable) NSString *name; + +/// When the subscription was created. Recorded automatically. +@property (nonatomic, readonly) NSDate *createdAt; + +/// When the subscription was last updated. Recorded automatically. +@property (nonatomic, readonly) NSDate *updatedAt; + +/** + Updates a Flexible Sync's subscription query with an allowed query which will be used to bootstrap data + from the server when committed. + + @warning This method may only be called during a write subscription block. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + */ +- (void)updateSubscriptionWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (void)updateSubscriptionWhere:(NSString *)predicateFormat + args:(va_list)args; + +/** + Updates a Flexible Sync's subscription query with an allowed query which will be used to bootstrap data + from the server when committed. + + @warning This method may only be called during a write subscription block. + + @param predicate The predicate with which to filter the objects on the server. + */ +- (void)updateSubscriptionWithPredicate:(NSPredicate *)predicate; + +@end + +/** + `RLMSyncSubscriptionSet` is a collection of `RLMSyncSubscription`s. This is the entry point + for adding and removing `RLMSyncSubscription`s. + */ +@interface RLMSyncSubscriptionSet : NSObject + +/// The number of subscriptions in the subscription set. +@property (readonly) NSUInteger count; + +/// Gets the error associated to the subscription set. This will be non-nil in case the current +/// state of the subscription set is `RLMSyncSubscriptionStateError`. +@property (nonatomic, readonly, nullable) NSError *error; + +/// Gets the state associated to the subscription set. +@property (nonatomic, readonly) RLMSyncSubscriptionState state; + +#pragma mark - Batch Update subscriptions + +/** + Synchronously performs any transactions (add/remove/update) to the subscription set within the block, + this will not wait for the server to acknowledge and see all the data associated with this collection of subscriptions, + and will return after committing the subscription transactions. + + @param block The block containing actions to perform to the subscription set. + */ +- (void)update:(__attribute__((noescape)) void(^)(void))block; +/// :nodoc: +- (void)write:(__attribute__((noescape)) void(^)(void))block __attribute__((unavailable("Renamed to -update"))); + +/** + Synchronously performs any transactions (add/remove/update) to the subscription set within the block, + this will not wait for the server to acknowledge and see all the data associated with this collection of subscriptions, + and will return after committing the subscription transactions. + + @param block The block containing actions to perform to the subscription set. + @param onComplete A block which is called upon synchronization of + subscriptions to the server. The block will be passed `nil` + if the update succeeded, and an error describing the problem + otherwise. + */ +- (void)update:(__attribute__((noescape)) void(^)(void))block + onComplete:(nullable void(^RLM_SWIFT_SENDABLE)(NSError *_Nullable))onComplete + __attribute__((swift_async(not_swift_private, 2))) + __attribute__((swift_attr("@_unsafeInheritExecutor"))); +/// :nodoc: +- (void)write:(__attribute__((noescape)) void(^)(void))block + onComplete:(void(^)(NSError * _Nullable))onComplete __attribute__((unavailable("Renamed to -update:onComplete."))); + +#pragma mark - Find subscription + +/** + Finds a subscription by the specified name. + + @param name The name used to identify the subscription. + + @return A subscription for the given name. + */ +- (nullable RLMSyncSubscription *)subscriptionWithName:(NSString *)name; + +/** + Finds a subscription by the query for the specified object class name. + + @param objectClassName The class name for the model class to be queried. + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + + @return A subscription for the given query.. + */ +- (nullable RLMSyncSubscription *)subscriptionWithClassName:(NSString *)objectClassName + where:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (nullable RLMSyncSubscription *)subscriptionWithClassName:(NSString *)objectClassName + where:(NSString *)predicateFormat + args:(va_list)args; + +/** + Finds a subscription by the query for the specified object class name. + + @param objectClassName The class name for the model class to be queried. + @param predicate The predicate used to to filter the objects on the server. + + @return A subscription for the given query.. + */ +- (nullable RLMSyncSubscription *)subscriptionWithClassName:(NSString *)objectClassName + predicate:(NSPredicate *)predicate; + +#pragma mark - Add a Subscription + +/** + Adds a new subscription to the subscription set which will be sent to the server when + committed at the end of a write subscription block. + + @warning This method may only be called during a write subscription block. + + @param objectClassName The class name for the model class to be queried. + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + */ +- (void)addSubscriptionWithClassName:(NSString *)objectClassName + where:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (void)addSubscriptionWithClassName:(NSString *)objectClassName + where:(NSString *)predicateFormat + args:(va_list)args; + +/** + Adds a new subscription to the subscription set which will be sent to the server when + committed at the end of a write subscription block. + + @warning This method may only be called during a write subscription block. + + @param objectClassName The class name for the model class to be queried. + @param name The name used the identify the subscription. + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + */ +- (void)addSubscriptionWithClassName:(NSString *)objectClassName + subscriptionName:(NSString *)name + where:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (void)addSubscriptionWithClassName:(NSString *)objectClassName + subscriptionName:(NSString *)name + where:(NSString *)predicateFormat + args:(va_list)args; + +/** + Adds a new subscription to the subscription set which will be sent to the server when + committed at the end of a write subscription block. + + @warning This method may only be called during a write subscription block. + + @param objectClassName The class name for the model class to be queried. + @param predicate The predicate defining the query for the subscription. + */ +- (void)addSubscriptionWithClassName:(NSString *)objectClassName + predicate:(NSPredicate *)predicate; + +/** + Adds a new subscription to the subscription set which will be sent to the server when + committed at the end of a write subscription block. + + @warning This method may only be called during a write subscription block. + + @param objectClassName The class name for the model class to be queried. + @param name The name used to identify the subscription. + @param predicate The predicate defining the query for the subscription. + */ +- (void)addSubscriptionWithClassName:(NSString *)objectClassName + subscriptionName:(nullable NSString *)name + predicate:(NSPredicate *)predicate; + +#pragma mark - Remove Subscription + +/** + Removes a subscription with the specified name from the subscription set. + + @warning This method may only be called during a write subscription block. + + @param name The name used the identify the subscription. + */ +- (void)removeSubscriptionWithName:(NSString *)name; + +/** + Removes a subscription with the specified query for the object class from the subscription set. + + @warning This method may only be called during a write subscription block. + + @param objectClassName The class name for the model class to be queried. + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + */ +- (void)removeSubscriptionWithClassName:(NSString *)objectClassName + where:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (void)removeSubscriptionWithClassName:(NSString *)objectClassName + where:(NSString *)predicateFormat + args:(va_list)args; + +/** + Removes a subscription with the specified query for the object class from the subscription set. + + @warning This method may only be called during a write subscription block. + + @param objectClassName The class name for the model class to be queried. + @param predicate The predicate which will be used to identify the subscription to be removed. + */ +- (void)removeSubscriptionWithClassName:(NSString *)objectClassName + predicate:(NSPredicate *)predicate; + +/** + Removes the subscription from the subscription set. + + @warning This method may only be called during a write subscription block. + + @param subscription An instance of the subscription to be removed. + */ +- (void)removeSubscription:(RLMSyncSubscription *)subscription; + +#pragma mark - Remove Subscriptions + +/** + Removes all subscription from the subscription set. + + @warning This method may only be called during a write subscription block. + @warning Removing all subscriptions will result in an error if no new subscription is added. Server should + acknowledge at least one subscription. + */ +- (void)removeAllSubscriptions; + +/** + Removes all subscription with the specified class name. + + @param className The class name for the model class to be queried. + + @warning This method may only be called during a write subscription block. + */ +- (void)removeAllSubscriptionsWithClassName:(NSString *)className; + +#pragma mark - SubscriptionSet Collection + +/** + Returns the subscription at the given `index`. + + @param index The index. + + @return A subscription for the given index in the subscription set. + */ +- (nullable RLMSyncSubscription *)objectAtIndex:(NSUInteger)index; + +/** + Returns the first object in the subscription set list, or `nil` if the subscriptions are empty. + + @return A subscription. + */ +- (nullable RLMSyncSubscription *)firstObject; + +/** + Returns the last object in the subscription set, or `nil` if the subscriptions are empty. + + @return A subscription. + */ +- (nullable RLMSyncSubscription *)lastObject; + +#pragma mark - Subscript + +/** + Returns the subscription at the given `index`. + + @param index The index. + + @return A subscription for the given index in the subscription set. + */ +- (id)objectAtIndexedSubscript:(NSUInteger)index; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMThreadSafeReference.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMThreadSafeReference.h new file mode 100644 index 000000000..9472942ed --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMThreadSafeReference.h @@ -0,0 +1,107 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2016 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMRealm; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** + Objects of types which conform to `RLMThreadConfined` can be managed by a Realm, which will make + them bound to a thread-specific `RLMRealm` instance. Managed objects must be explicitly exported + and imported to be passed between threads. + + Managed instances of objects conforming to this protocol can be converted to a thread-safe + reference for transport between threads by passing to the + `+[RLMThreadSafeReference referenceWithThreadConfined:]` constructor. + + Note that only types defined by Realm can meaningfully conform to this protocol, and defining new + classes which attempt to conform to it will not make them work with `RLMThreadSafeReference`. + */ +@protocol RLMThreadConfined +// Conformance to the `RLMThreadConfined_Private` protocol will be enforced at runtime. + +/** + The Realm which manages the object, or `nil` if the object is unmanaged. + + Unmanaged objects are not confined to a thread and cannot be passed to methods expecting a + `RLMThreadConfined` object. + */ +@property (nonatomic, readonly, nullable) RLMRealm *realm; + +/// Indicates if the object can no longer be accessed because it is now invalid. +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +@end + +/** + An object intended to be passed between threads containing a thread-safe reference to its + thread-confined object. + + To resolve a thread-safe reference on a target Realm on a different thread, pass to + `-[RLMRealm resolveThreadSafeReference:]`. + + @warning A `RLMThreadSafeReference` object must be resolved at most once. + Failing to resolve a `RLMThreadSafeReference` will result in the source version of the + Realm being pinned until the reference is deallocated. + + @note Prefer short-lived `RLMThreadSafeReference`s as the data for the version of the source Realm + will be retained until all references have been resolved or deallocated. + + @see `RLMThreadConfined` + @see `-[RLMRealm resolveThreadSafeReference:]` + */ +RLM_SWIFT_SENDABLE RLM_FINAL // is internally thread-safe +@interface RLMThreadSafeReference<__covariant Confined : id> : NSObject + +/** + Create a thread-safe reference to the thread-confined object. + + @param threadConfined The thread-confined object to create a thread-safe reference to. + + @note You may continue to use and access the thread-confined object after passing it to this + constructor. + */ ++ (instancetype)referenceWithThreadConfined:(Confined)threadConfined; + +/** + Indicates if the reference can no longer be resolved because an attempt to resolve it has already + occurred. References can only be resolved once. + */ +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +#pragma mark - Unavailable Methods + +/** + `-[RLMThreadSafeReference init]` is not available because `RLMThreadSafeReference` cannot be + created directly. `RLMThreadSafeReference` instances must be obtained by calling + `-[RLMRealm resolveThreadSafeReference:]`. + */ +- (instancetype)init __attribute__((unavailable("RLMThreadSafeReference cannot be created directly"))); + +/** + `-[RLMThreadSafeReference new]` is not available because `RLMThreadSafeReference` cannot be + created directly. `RLMThreadSafeReference` instances must be obtained by calling + `-[RLMRealm resolveThreadSafeReference:]`. + */ ++ (instancetype)new __attribute__((unavailable("RLMThreadSafeReference cannot be created directly"))); + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMUpdateResult.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMUpdateResult.h new file mode 100644 index 000000000..df0b237e3 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMUpdateResult.h @@ -0,0 +1,45 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMObjectId; +@protocol RLMBSON; + +/// The result of an `updateOne` or `updateMany` operation a `RLMMongoCollection`. +RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class +@interface RLMUpdateResult : NSObject + +/// The number of documents that matched the filter. +@property (nonatomic, readonly) NSUInteger matchedCount; + +/// The number of documents modified. +@property (nonatomic, readonly) NSUInteger modifiedCount; + +/// The identifier of the inserted document if an upsert took place and the document's primary key is an `ObjectId`. +@property (nonatomic, nullable, readonly) RLMObjectId *objectId +__attribute__((deprecated("Use documentId instead, which support all BSON types", "documentId"))); + +/// The identifier of the inserted document if an upsert took place. +@property (nonatomic, nullable, readonly) id documentId; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMUser.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMUser.h new file mode 100644 index 000000000..436350f9b --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMUser.h @@ -0,0 +1,447 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2016 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import +#import +#import + +@class RLMUser, RLMSyncSession, RLMRealm, RLMUserIdentity, RLMAPIKeyAuth, RLMMongoClient, RLMMongoDatabase, RLMMongoCollection, RLMUserProfile; +@protocol RLMBSON; + +/** + The state of the user object. + */ +typedef NS_ENUM(NSUInteger, RLMUserState) { + /// The user is logged out. Call `logInWithCredentials:...` with valid credentials to log the user back in. + RLMUserStateLoggedOut, + /// The user is logged in, and any Realms associated with it are syncing with Atlas App Services. + RLMUserStateLoggedIn, + /// The user has been removed, and cannot be used. + RLMUserStateRemoved +}; + +/// A block type used to report an error related to a specific user. +RLM_SWIFT_SENDABLE +typedef void(^RLMOptionalUserBlock)(RLMUser * _Nullable, NSError * _Nullable); + +/// A block type used to report an error on a network request from the user. +RLM_SWIFT_SENDABLE +typedef void(^RLMUserOptionalErrorBlock)(NSError * _Nullable); + +/// A block which returns a dictionary should there be any custom data set for a user +RLM_SWIFT_SENDABLE +typedef void(^RLMUserCustomDataBlock)(NSDictionary * _Nullable, NSError * _Nullable); + +/// A block type for returning from function calls. +RLM_SWIFT_SENDABLE +typedef void(^RLMCallFunctionCompletionBlock)(id _Nullable, NSError * _Nullable); + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** + A `RLMUser` instance represents a single Realm App user account. + + A user may have one or more credentials associated with it. These credentials + uniquely identify the user to the authentication provider, and are used to sign + into an Atlas App Services user account. + + Note that user objects are only vended out via SDK APIs, and cannot be directly + initialized. User objects can be accessed from any thread. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // internally thread-safe +@interface RLMUser : NSObject + +/** + The unique Atlas App Services string identifying this user. + Note this is different from an identity: A user may have multiple identities but has a single identifier. See RLMUserIdentity. + */ +@property (nonatomic, readonly) NSString *identifier NS_SWIFT_NAME(id); + +/// Returns an array of identities currently linked to a user. +@property (nonatomic, readonly) NSArray *identities; + +/** + The user's refresh token used to access App Services. + + By default, refresh tokens expire 60 days after they are issued. + You can configure this time for your App's refresh tokens to be + anywhere between 30 minutes and 180 days. + + You can configure the refresh token expiration time for all sessions in + an App from the Admin UI or Admin API. +*/ +@property (nullable, nonatomic, readonly) NSString *refreshToken; + +/** + The user's access token used to access App Services. + + This is required to make HTTP requests to Atlas App Services like the Data API or GraphQL. + It should be treated as sensitive data. + + The Realm SDK automatically manages access tokens and refreshes them + when they expire. + */ +@property (nullable, nonatomic, readonly) NSString *accessToken; + +/** + The current state of the user. + */ +@property (nonatomic, readonly) RLMUserState state; + +/** + Indicates if the user is logged in or not. Returns true if the access token and refresh token are not empty. + */ +@property (nonatomic, readonly) BOOL isLoggedIn; + +#pragma mark - Lifecycle + +/** + Create a partition-based sync configuration instance for the given partition value. + + @param partitionValue The `RLMBSON` value the Realm is partitioned on. + @return A default configuration object with the sync configuration set to use the given partition value. + */ +- (RLMRealmConfiguration *)configurationWithPartitionValue:(nullable id)partitionValue NS_REFINED_FOR_SWIFT; + +/** + Create a partition-based sync configuration instance for the given partition value. + + @param partitionValue The `RLMBSON` value the Realm is partitioned on. + @param clientResetMode Determines file recovery behavior in the event of a client reset. + See: https://docs.mongodb.com/realm/sync/error-handling/client-resets/ + + @return A configuration object with the sync configuration set to use the given partition value. + */ +- (RLMRealmConfiguration *)configurationWithPartitionValue:(nullable id)partitionValue + clientResetMode:(RLMClientResetMode)clientResetMode NS_REFINED_FOR_SWIFT; + +/** + Create a partition-based sync configuration instance for the given partition value. + + @param partitionValue The `RLMBSON` value the Realm is partitioned on. + @param clientResetMode Determines file recovery behavior in the event of a client reset. + See: https://docs.mongodb.com/realm/sync/error-handling/client-resets/ + @param beforeResetBlock A callback which notifies prior to a client reset occurring. See: `RLMClientResetBeforeBlock` + @param afterResetBlock A callback which notifies after a client reset has occurred. See: `RLMClientResetAfterBlock` + + @return A configuration object with the sync configuration set to use the given partition value. + */ +- (RLMRealmConfiguration *)configurationWithPartitionValue:(nullable id)partitionValue + clientResetMode:(RLMClientResetMode)clientResetMode + notifyBeforeReset:(nullable RLMClientResetBeforeBlock)beforeResetBlock + notifyAfterReset:(nullable RLMClientResetAfterBlock)afterResetBlock NS_REFINED_FOR_SWIFT; + +/** + Create a partition-based sync configuration instance for the given partition value. + + @param partitionValue The `RLMBSON` value the Realm is partitioned on. + @param clientResetMode Determines file recovery behavior in the event of a client reset. + See: https://docs.mongodb.com/realm/sync/error-handling/client-resets/ + @param manualClientResetHandler An error reporting block that is invoked during a client reset. + @See ``RLMSyncErrorReportingBlock`` and ``RLMClientResetInfo`` + + @return A configuration object with the sync configuration set to use the given partition value. + */ +- (RLMRealmConfiguration *)configurationWithPartitionValue:(nullable id)partitionValue + clientResetMode:(RLMClientResetMode)clientResetMode + manualClientResetHandler:(nullable RLMSyncErrorReportingBlock)manualClientResetHandler NS_REFINED_FOR_SWIFT; + +/** + Create a flexible sync configuration instance, which can be used to open a Realm that + supports flexible sync. + + @note A single server-side Device Sync App can sync data with either partition-based realms or flexible sync based realms. + In order for an application to contain both partition-based and flexible sync realms, more than one + server-side Device Sync App must be used. + + @return A ``RLMRealmConfiguration`` instance with a flexible sync configuration. + */ +- (RLMRealmConfiguration *)flexibleSyncConfiguration NS_REFINED_FOR_SWIFT; + +/** + Create a flexible sync configuration instance, which can be used to open a Realm that + supports flexible sync. + + @note A single server-side Device Sync App can sync data with either partition-based realms or flexible sync based realms. + In order for an application to contain both partition-based and flexible sync realms, more than one + server-side Device Sync App must be used. + + @param clientResetMode Determines file recovery behavior in the event of a client reset. + See: https://docs.mongodb.com/realm/sync/error-handling/client-resets/ + @param beforeResetBlock A callback which notifies prior to a client reset occurring. See: `RLMClientResetBeforeBlock` + @param afterResetBlock A callback which notifies after a client reset has occurred. See: `RLMClientResetAfterBlock` + + @return A `RLMRealmConfiguration` instance with a flexible sync configuration. + */ +- (RLMRealmConfiguration *)flexibleSyncConfigurationWithClientResetMode:(RLMClientResetMode)clientResetMode + notifyBeforeReset:(nullable RLMClientResetBeforeBlock)beforeResetBlock + notifyAfterReset:(nullable RLMClientResetAfterBlock)afterResetBlock NS_REFINED_FOR_SWIFT; +/** + Create a flexible sync configuration instance, which can be used to open a Realm that + supports flexible sync. + + @note A single server-side Device Sync App can sync data with either partition-based realms or flexible sync based realms. + In order for an application to contain both partition-based and flexible sync realms, more than one + server-side Device Sync App must be used. + + @param clientResetMode Determines file recovery behavior in the event of a client reset. + See: https://docs.mongodb.com/realm/sync/error-handling/client-resets/ + @param manualClientResetHandler An error reporting block that is invoked during a client reset. + @See `RLMSyncErrorReportingBlock` and `RLMClientResetInfo` + + @return A `RLMRealmConfiguration` instance with a flexible sync configuration. + */ +- (RLMRealmConfiguration *)flexibleSyncConfigurationWithClientResetMode:(RLMClientResetMode)clientResetMode + manualClientResetHandler:(nullable RLMSyncErrorReportingBlock)manualClientResetHandler NS_REFINED_FOR_SWIFT; + +/** + Create a flexible sync configuration instance, which can be used to open a Realm that + supports flexible sync. + + @note A single server-side Device Sync App can sync data with either partition-based realms or flexible sync based realms. + In order for an application to contain both partition-based and flexible sync realms, more than one + server-side Device Sync App must be used. + + @param initialSubscriptions A block which receives a subscription set instance, that can be + used to add an initial set of subscriptions which will be executed + when the Realm is first opened. + @param rerunOnOpen If true, allows to run the initial set of subscriptions specified, on every app startup. + This can be used to re-run dynamic time ranges and other queries that require a + re-computation of a static variable. + + @return A `RLMRealmConfiguration` instance with a flexible sync configuration. + */ +- (RLMRealmConfiguration *)flexibleSyncConfigurationWithInitialSubscriptions:(RLMFlexibleSyncInitialSubscriptionsBlock)initialSubscriptions + rerunOnOpen:(BOOL)rerunOnOpen NS_REFINED_FOR_SWIFT; +/** + Create a flexible sync configuration instance, which can be used to open a Realm that + supports flexible sync. + + @note A single server-side Device Sync App can sync data with either partition-based realms or flexible sync based realms. + In order for an application to contain both partition-based and flexible sync realms, more than one + server-side Device Sync App must be used. + + @param initialSubscriptions A block which receives a subscription set instance, that can be + used to add an initial set of subscriptions which will be executed + when the Realm is first opened. + @param rerunOnOpen If true, allows to run the initial set of subscriptions specified, on every app startup. + This can be used to re-run dynamic time ranges and other queries that require a + re-computation of a static variable. + @param clientResetMode Determines file recovery behavior in the event of a client reset. + See: https://docs.mongodb.com/realm/sync/error-handling/client-resets/ + @param beforeResetBlock A callback which notifies prior to a client reset occurring. See: `RLMClientResetBeforeBlock` + @param afterResetBlock A callback which notifies after a client reset has occurred. See: `RLMClientResetAfterBlock` + + @return A `RLMRealmConfiguration` instance with a flexible sync configuration. + */ +- (RLMRealmConfiguration *)flexibleSyncConfigurationWithInitialSubscriptions:(RLMFlexibleSyncInitialSubscriptionsBlock)initialSubscriptions + rerunOnOpen:(BOOL)rerunOnOpen + clientResetMode:(RLMClientResetMode)clientResetMode + notifyBeforeReset:(nullable RLMClientResetBeforeBlock)beforeResetBlock + notifyAfterReset:(nullable RLMClientResetAfterBlock)afterResetBlock NS_REFINED_FOR_SWIFT; + +/** + Create a flexible sync configuration instance, which can be used to open a Realm that + supports flexible sync. + + @note A single server-side Device Sync App can sync data with either partition-based realms or flexible sync based realms. + In order for an application to contain both partition-based and flexible sync realms, more than one + server-side Device Sync App must be used. + + @param initialSubscriptions A block which receives a subscription set instance, that can be + used to add an initial set of subscriptions which will be executed + when the Realm is first opened. + @param rerunOnOpen If true, allows to run the initial set of subscriptions specified, on every app startup. + This can be used to re-run dynamic time ranges and other queries that require a + re-computation of a static variable. + @param clientResetMode Determines file recovery behavior in the event of a client reset. + See: https://docs.mongodb.com/realm/sync/error-handling/client-resets/ + @param manualClientResetHandler An error reporting block that is invoked during a client reset. + @See `RLMSyncErrorReportingBlock` and `RLMClientResetInfo` + + @return A `RLMRealmConfiguration` instance with a flexible sync configuration. + */ +- (RLMRealmConfiguration *)flexibleSyncConfigurationWithInitialSubscriptions:(RLMFlexibleSyncInitialSubscriptionsBlock)initialSubscriptions + rerunOnOpen:(BOOL)rerunOnOpen + clientResetMode:(RLMClientResetMode)clientResetMode + manualClientResetHandler:(nullable RLMSyncErrorReportingBlock)manualClientResetHandler NS_REFINED_FOR_SWIFT; + +#pragma mark - Sessions + +/** + Retrieve a valid session object belonging to this user for a given URL, or `nil` + if no such object exists. + */ +- (nullable RLMSyncSession *)sessionForPartitionValue:(id)partitionValue; + +/// Retrieve all the valid sessions belonging to this user. +@property (nonatomic, readonly) NSArray *allSessions; + +#pragma mark - Custom Data + +/** + The custom data of the user. + This is configured in your Atlas App Services app. + */ +@property (nonatomic, readonly) NSDictionary *customData NS_REFINED_FOR_SWIFT; + +/** + The profile of the user. + */ +@property (nonatomic, readonly) RLMUserProfile *profile; + +/** + Refresh a user's custom data. This will, in effect, refresh the user's auth session. + */ +- (void)refreshCustomDataWithCompletion:(RLMUserCustomDataBlock)completion; + +/** + Links the currently authenticated user with a new identity, where the identity is defined by the credential + specified as a parameter. This will only be successful if this `RLMUser` is the currently authenticated + with the client from which it was created. On success a new user will be returned with the new linked credentials. + + @param credentials The `RLMCredentials` used to link the user to a new identity. + @param completion The completion handler to call when the linking is complete. + If the operation is successful, the result will contain a new + `RLMUser` object representing the currently logged in user. +*/ +- (void)linkUserWithCredentials:(RLMCredentials *)credentials + completion:(RLMOptionalUserBlock)completion NS_REFINED_FOR_SWIFT; + +/** + Removes the user + + This logs out and destroys the session related to this user. The completion block will return an error + if the user is not found or is already removed. + + @param completion A callback invoked on completion +*/ +- (void)removeWithCompletion:(RLMUserOptionalErrorBlock)completion; + +/** + Permanently deletes this user from your Atlas App Services app. + + The users state will be set to `Removed` and the session will be destroyed. + If the delete request fails, the local authentication state will be untouched. + + @param completion A callback invoked on completion +*/ +- (void)deleteWithCompletion:(RLMUserOptionalErrorBlock)completion; + +/** + Logs out the current user + + The users state will be set to `Removed` is they are an anonymous user or `LoggedOut` if they are authenticated by an email / password or third party auth clients + If the logout request fails, this method will still clear local authentication state. + + @param completion A callback invoked on completion +*/ +- (void)logOutWithCompletion:(RLMUserOptionalErrorBlock)completion; + +/** + A client for the user API key authentication provider which + can be used to create and modify user API keys. + + This client should only be used by an authenticated user. +*/ +@property (nonatomic, readonly) RLMAPIKeyAuth *apiKeysAuth; + +/// A client for interacting with a remote MongoDB instance +/// @param serviceName The name of the MongoDB service +- (RLMMongoClient *)mongoClientWithServiceName:(NSString *)serviceName NS_REFINED_FOR_SWIFT; + +/** + Calls the Atlas App Services function with the provided name and arguments. + + @param name The name of the Atlas App Services function to be called. + @param arguments The `BSONArray` of arguments to be provided to the function. + @param completion The completion handler to call when the function call is complete. + This handler is executed on a non-main global `DispatchQueue`. +*/ +- (void)callFunctionNamed:(NSString *)name + arguments:(NSArray> *)arguments + completionBlock:(RLMCallFunctionCompletionBlock)completion NS_REFINED_FOR_SWIFT; + +/// :nodoc: +- (instancetype)init __attribute__((unavailable("RLMUser cannot be created directly"))); +/// :nodoc: ++ (instancetype)new __attribute__((unavailable("RLMUser cannot be created directly"))); + +@end + +#pragma mark - User info classes + +/** + An identity of a user. A user can have multiple identities, usually associated with multiple providers. + Note this is different from a user's unique identifier string. + @seeAlso `RLMUser.identifier` + */ +RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class +@interface RLMUserIdentity : NSObject + +/** + The associated provider type + */ +@property (nonatomic, readonly) NSString *providerType; + +/** + The string which identifies the RLMUserIdentity + */ +@property (nonatomic, readonly) NSString *identifier; + +/** + Initialize an RLMUserIdentity for the given identifier and provider type. + @param providerType the associated provider type + @param identifier the identifier of the identity + */ +- (instancetype)initUserIdentityWithProviderType:(NSString *)providerType + identifier:(NSString *)identifier; + +@end + +/** + A profile for a given User. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class +@interface RLMUserProfile : NSObject + +/// The full name of the user. +@property (nonatomic, readonly, nullable) NSString *name; +/// The email address of the user. +@property (nonatomic, readonly, nullable) NSString *email; +/// A URL to the user's profile picture. +@property (nonatomic, readonly, nullable) NSString *pictureURL; +/// The first name of the user. +@property (nonatomic, readonly, nullable) NSString *firstName; +/// The last name of the user. +@property (nonatomic, readonly, nullable) NSString *lastName; +/// The gender of the user. +@property (nonatomic, readonly, nullable) NSString *gender; +/// The birthdate of the user. +@property (nonatomic, readonly, nullable) NSString *birthday; +/// The minimum age of the user. +@property (nonatomic, readonly, nullable) NSString *minAge; +/// The maximum age of the user. +@property (nonatomic, readonly, nullable) NSString *maxAge; +/// The BSON dictionary of metadata associated with this user. +@property (nonatomic, readonly) NSDictionary *metadata NS_REFINED_FOR_SWIFT; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMUserAPIKey.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMUserAPIKey.h new file mode 100644 index 000000000..2cdd82b2a --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMUserAPIKey.h @@ -0,0 +1,43 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/// UserAPIKey model for APIKeys recevied from the server. +RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class +@interface RLMUserAPIKey : NSObject + +/// Indicates if the API key is disabled or not +@property (nonatomic, readonly) BOOL disabled; + +/// The name of the key. +@property (nonatomic, readonly) NSString *name; + +/// The actual key. Will only be included in +/// the response when an API key is first created. +@property (nonatomic, readonly, nullable) NSString *key; + +/// The ObjectId of the API key +@property (nonatomic, readonly) RLMObjectId *objectId NS_REFINED_FOR_SWIFT; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMValue.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMValue.h new file mode 100644 index 000000000..ac1f10ee4 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/RLMValue.h @@ -0,0 +1,97 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import +#import +#import +#import +#import + +#pragma mark RLMValue + +/** + RLMValue is a property type which represents a polymorphic Realm value. This is similar to the usage of + `AnyObject` / `Any` in Swift. +``` + // A property on `MyObject` + @property (nonatomic) id myAnyValue; + + // A property on `AnotherObject` + @property (nonatomic) id myAnyValue; + + MyObject *myObject = [MyObject createInRealm:realm withValue:@[]]; + myObject.myAnyValue = @1234; // underlying type is NSNumber. + myObject.myAnyValue = @"hello"; // underlying type is NSString. + AnotherObject *anotherObject = [AnotherObject createInRealm:realm withValue:@[]]; + myObject.myAnyValue = anotherObject; // underlying type is RLMObject. +``` + The following types conform to RLMValue: + + `NSData` + `NSDate` + `NSNull` + `NSNumber` + `NSUUID` + `NSString` + `RLMObject + `RLMObjectId` + `RLMDecimal128` + */ +@protocol RLMValue + +/// Describes the type of property stored. +@property (readonly) RLMPropertyType rlm_valueType; + +@end + +/// :nodoc: +@interface NSNull (RLMValue) +@end + +/// :nodoc: +@interface NSNumber (RLMValue) +@end + +/// :nodoc: +@interface NSString (RLMValue) +@end + +/// :nodoc: +@interface NSData (RLMValue) +@end + +/// :nodoc: +@interface NSDate (RLMValue) +@end + +/// :nodoc: +@interface NSUUID (RLMValue) +@end + +/// :nodoc: +@interface RLMDecimal128 (RLMValue) +@end + +/// :nodoc: +@interface RLMObjectBase (RLMValue) +@end + +/// :nodoc: +@interface RLMObjectId (RLMValue) +@end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/Realm.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/Realm.h new file mode 100644 index 000000000..245596393 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Headers/Realm.h @@ -0,0 +1,63 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Info.plist new file mode 100644 index 000000000..1e2c7fc7c Binary files /dev/null and b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Info.plist differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/LICENSE b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/LICENSE new file mode 100644 index 000000000..66a27ec5f --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/LICENSE @@ -0,0 +1,177 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Modules/module.modulemap b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Modules/module.modulemap new file mode 100644 index 000000000..519ddc20b --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Modules/module.modulemap @@ -0,0 +1,88 @@ +framework module Realm { + export Foundation + + umbrella header "Realm.h" + + header "RLMArray.h" + header "RLMAsymmetricObject.h" + header "RLMDecimal128.h" + header "RLMDictionary.h" + header "RLMEmbeddedObject.h" + header "RLMLogger.h" + header "RLMMigration.h" + header "RLMObject.h" + header "RLMObjectId.h" + header "RLMObjectSchema.h" + header "RLMProperty.h" + header "RLMProviderClient.h" + header "RLMRealm+Sync.h" + header "RLMRealm.h" + header "RLMRealmConfiguration.h" + header "RLMResults.h" + header "RLMSchema.h" + header "RLMSectionedResults.h" + header "RLMSet.h" + header "RLMValue.h" + + header "RLMApp.h" + header "RLMCredentials.h" + header "RLMNetworkTransport.h" + header "RLMPushClient.h" + header "RLMRealm+Sync.h" + header "RLMSyncConfiguration.h" + header "RLMSyncManager.h" + header "RLMSyncSession.h" + header "RLMUser.h" + header "RLMUserAPIKey.h" + header "RLMAPIKeyAuth.h" + header "RLMEmailPasswordAuth.h" + header "NSError+RLMSync.h" + header "RLMBSON.h" + header "RLMMongoClient.h" + header "RLMMongoDatabase.h" + header "RLMMongoCollection.h" + header "RLMUpdateResult.h" + header "RLMFindOptions.h" + header "RLMFindOneAndModifyOptions.h" + header "RLMSyncSubscription.h" + + explicit module Private { + header "RLMAccessor.h" + header "RLMApp_Private.h" + header "RLMArray_Private.h" + header "RLMAsyncTask_Private.h" + header "RLMCollection_Private.h" + header "RLMDictionary_Private.h" + header "RLMLogger_Private.h" + header "RLMEvent.h" + header "RLMMongoCollection_Private.h" + header "RLMObjectBase_Dynamic.h" + header "RLMObjectBase_Private.h" + header "RLMObjectSchema_Private.h" + header "RLMObjectStore.h" + header "RLMObject_Private.h" + header "RLMProperty_Private.h" + header "RLMRealmConfiguration_Private.h" + header "RLMRealm_Private.h" + header "RLMResults_Private.h" + header "RLMScheduler.h" + header "RLMSchema_Private.h" + header "RLMSectionedResults.h" + header "RLMSet_Private.h" + header "RLMSwiftCollectionBase.h" + header "RLMSwiftProperty.h" + header "RLMSwiftValueStorage.h" + header "RLMSyncConfiguration_Private.h" + header "RLMSyncSubscription_Private.h" + header "RLMUser_Private.h" + } + + explicit module Dynamic { + header "RLMRealm_Dynamic.h" + header "RLMObjectBase_Dynamic.h" + } + + explicit module Swift { + header "RLMSwiftObject.h" + } +} diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMAccessor.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMAccessor.h new file mode 100644 index 000000000..db915ca7c --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMAccessor.h @@ -0,0 +1,53 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMObjectSchema, RLMProperty, RLMObjectBase; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +// +// Accessors Class Creation/Caching +// + +// get accessor classes for an object class - generates classes if not cached +Class RLMManagedAccessorClassForObjectClass(Class objectClass, RLMObjectSchema *schema, const char *name); +Class RLMUnmanagedAccessorClassForObjectClass(Class objectClass, RLMObjectSchema *schema); + +// +// Dynamic getters/setters +// +FOUNDATION_EXTERN void RLMDynamicValidatedSet(RLMObjectBase *obj, NSString *propName, id __nullable val); +FOUNDATION_EXTERN id __nullable RLMDynamicGet(RLMObjectBase *obj, RLMProperty *prop); +FOUNDATION_EXTERN id __nullable RLMDynamicGetByName(RLMObjectBase *obj, NSString *propName); + +// by property/column +void RLMDynamicSet(RLMObjectBase *obj, RLMProperty *prop, id val); + +// +// Class modification +// + +// Replace className method for the given class +void RLMReplaceClassNameMethod(Class accessorClass, NSString *className); + +// Replace sharedSchema method for the given class +void RLMReplaceSharedSchemaMethod(Class accessorClass, RLMObjectSchema * __nullable schema); + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMApp_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMApp_Private.h new file mode 100644 index 000000000..5da5c3c7a --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMApp_Private.h @@ -0,0 +1,50 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/// Observer block for app notifications. +typedef void(^RLMAppNotificationBlock)(RLMApp *); + +/// Token that identifies an observer. Unsubscribes when deconstructed to +/// avoid dangling observers, therefore this must be retained to hold +/// onto a subscription. +@interface RLMAppSubscriptionToken : NSObject +- (void)unsubscribe; +@end + +@interface RLMApp () +/// Returns all currently cached Apps ++ (NSArray *)allApps; +/// Subscribe to notifications for this RLMApp. +- (RLMAppSubscriptionToken *)subscribe:(RLMAppNotificationBlock)block; + ++ (instancetype)appWithConfiguration:(RLMAppConfiguration *)configuration; + ++ (void)resetAppCache; +@end + +@interface RLMAppConfiguration () +@property (nonatomic) NSString *appId; +@property (nonatomic) BOOL encryptMetadata; +@property (nonatomic) NSURL *rootDirectory; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMArray_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMArray_Private.h new file mode 100644 index 000000000..1a37f010e --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMArray_Private.h @@ -0,0 +1,44 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +@class RLMObjectBase, RLMProperty; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@interface RLMArray () +- (instancetype)initWithObjectClassName:(NSString *)objectClassName; +- (instancetype)initWithObjectType:(RLMPropertyType)type optional:(BOOL)optional; +- (NSString *)descriptionWithMaxDepth:(NSUInteger)depth; +- (void)setParent:(RLMObjectBase *)parentObject property:(RLMProperty *)property; +- (void)replaceAllObjectsWithObjects:(NSArray *)objects; +// YES if the property is declared with old property syntax. +@property (nonatomic, readonly) BOOL isLegacyProperty; +// The name of the property which this collection represents +@property (nonatomic, readonly) NSString *propertyKey; +@end + +@interface RLMManagedArray : RLMArray +- (instancetype)initWithParent:(RLMObjectBase *)parentObject property:(RLMProperty *)property; +@end + +void RLMArrayValidateMatchingObjectType(RLMArray *array, id value); + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h new file mode 100644 index 000000000..3cce89441 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h @@ -0,0 +1,71 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2023 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import "RLMRealm_Private.h" + +RLM_HEADER_AUDIT_BEGIN(nullability) + +@interface RLMAsyncOpenTask () +@property (nonatomic, nullable) RLMRealm *localRealm; + +- (instancetype)initWithConfiguration:(RLMRealmConfiguration *)configuration + confinedTo:(RLMScheduler *)confinement + download:(bool)waitForDownloadCompletion + completion:(RLMAsyncOpenRealmCallback)completion +__attribute__((objc_direct)); + +- (instancetype)initWithConfiguration:(RLMRealmConfiguration *)configuration + confinedTo:(RLMScheduler *)confinement + download:(bool)waitForDownloadCompletion; + +- (void)waitWithCompletion:(void (^)(NSError *_Nullable))completion; +- (void)waitForOpen:(RLMAsyncOpenRealmCallback)completion __attribute__((objc_direct)); +@end + +// A cancellable task for waiting for downloads on an already-open Realm. +RLM_SWIFT_SENDABLE +@interface RLMAsyncDownloadTask : NSObject +- (instancetype)initWithRealm:(RLMRealm *)realm; +- (void)cancel; +- (void)waitWithCompletion:(void (^)(NSError *_Nullable))completion; +@end + +// A cancellable task for beginning an async write +RLM_SWIFT_SENDABLE +@interface RLMAsyncWriteTask : NSObject +// Must only be called from within the Actor +- (instancetype)initWithRealm:(RLMRealm *)realm; +- (void)setTransactionId:(RLMAsyncTransactionId)transactionID; +- (void)complete:(bool)cancel; + +// Can be called from any thread +- (void)wait:(void (^)(void))completion; +@end + +typedef void (^RLMAsyncRefreshCompletion)(bool); +// A cancellable task for refreshing a Realm +RLM_SWIFT_SENDABLE +@interface RLMAsyncRefreshTask : NSObject +- (void)complete:(bool)didRefresh; +- (void)wait:(RLMAsyncRefreshCompletion)completion; ++ (RLMAsyncRefreshTask *)completedRefresh; +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMBSON_Private.hpp b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMBSON_Private.hpp new file mode 100644 index 000000000..c5cc1a410 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMBSON_Private.hpp @@ -0,0 +1,32 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +namespace realm::bson { +class Bson; +template class IndexedMap; +using BsonDocument = IndexedMap; +} + +realm::bson::Bson RLMConvertRLMBSONToBson(id b); +realm::bson::BsonDocument RLMConvertRLMBSONArrayToBsonDocument(NSArray> *array); +id RLMConvertBsonToRLMBSON(const realm::bson::Bson& b); +id RLMConvertBsonDocumentToRLMBSON(std::optional b); +NSArray> *RLMConvertBsonDocumentToRLMBSONArray(std::optional b); diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMCollection_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMCollection_Private.h new file mode 100644 index 000000000..7d31bd3f0 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMCollection_Private.h @@ -0,0 +1,42 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2016 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@protocol RLMCollectionPrivate; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +NSUInteger RLMUnmanagedFastEnumerate(id collection, NSFastEnumerationState *); +void RLMCollectionSetValueForKey(id collection, NSString *key, id _Nullable value); +FOUNDATION_EXTERN NSString *RLMDescriptionWithMaxDepth(NSString *name, id collection, NSUInteger depth); +FOUNDATION_EXTERN void RLMAssignToCollection(id collection, id value); +FOUNDATION_EXTERN void RLMSetSwiftBridgeCallback(id _Nullable (*_Nonnull)(id)); + +FOUNDATION_EXTERN +RLMNotificationToken *RLMAddNotificationBlock(id collection, id block, + NSArray *_Nullable keyPaths, + dispatch_queue_t _Nullable queue); + +typedef RLM_CLOSED_ENUM(int32_t, RLMCollectionType) { + RLMCollectionTypeArray = 0, + RLMCollectionTypeSet = 1, + RLMCollectionTypeDictionary = 2 +}; + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMDictionary_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMDictionary_Private.h new file mode 100644 index 000000000..37ff740c7 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMDictionary_Private.h @@ -0,0 +1,46 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2021 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMObjectBase, RLMProperty; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@interface RLMDictionary () +- (instancetype)initWithObjectClassName:(NSString *)objectClassName keyType:(RLMPropertyType)keyType; +- (instancetype)initWithObjectType:(RLMPropertyType)type optional:(BOOL)optional keyType:(RLMPropertyType)keyType; +- (NSString *)descriptionWithMaxDepth:(NSUInteger)depth; +- (void)setParent:(RLMObjectBase *)parentObject property:(RLMProperty *)property; +// YES if the property is declared with old property syntax. +@property (nonatomic, readonly) BOOL isLegacyProperty; +// The name of the property which this collection represents +@property (nonatomic, readonly) NSString *propertyKey; +@end + +@interface RLMManagedDictionary : RLMDictionary +- (instancetype)initWithParent:(RLMObjectBase *)parentObject property:(RLMProperty *)property; +@end + +FOUNDATION_EXTERN NSString *RLMDictionaryDescriptionWithMaxDepth(NSString *name, + RLMDictionary *dictionary, + NSUInteger depth); +id RLMDictionaryKey(RLMDictionary *dictionary, id key) RLM_HIDDEN; +id RLMDictionaryValue(RLMDictionary *dictionary, id value) RLM_HIDDEN; + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMEvent.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMEvent.h new file mode 100644 index 000000000..9a6acb1a6 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMEvent.h @@ -0,0 +1,64 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2022 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#ifdef __cplusplus +#include + +namespace realm { +struct AuditConfig; +} +#endif + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMRealm, RLMUser, RLMRealmConfiguration; +typedef RLM_CLOSED_ENUM(NSUInteger, RLMSyncLogLevel); + +struct RLMEventContext; +typedef void (^RLMEventCompletion)(NSError *_Nullable); + +FOUNDATION_EXTERN struct RLMEventContext *_Nullable RLMEventGetContext(RLMRealm *realm); +FOUNDATION_EXTERN uint64_t RLMEventBeginScope(struct RLMEventContext *context, NSString *activity); +FOUNDATION_EXTERN void RLMEventCommitScope(struct RLMEventContext *context, uint64_t scope_id, + RLMEventCompletion _Nullable completion); +FOUNDATION_EXTERN void RLMEventCancelScope(struct RLMEventContext *context, uint64_t scope_id); +FOUNDATION_EXTERN bool RLMEventIsActive(struct RLMEventContext *context, uint64_t scope_id); +FOUNDATION_EXTERN void RLMEventRecordEvent(struct RLMEventContext *context, NSString *activity, + NSString *_Nullable event, NSString *_Nullable data, + RLMEventCompletion _Nullable completion); +FOUNDATION_EXTERN void RLMEventUpdateMetadata(struct RLMEventContext *context, + NSDictionary *newMetadata); + +@interface RLMEventConfiguration : NSObject +@property (nonatomic) NSString *partitionPrefix; +@property (nonatomic, nullable) RLMUser *syncUser; +@property (nonatomic, nullable) NSDictionary *metadata; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +@property (nonatomic, nullable) void (^logger)(RLMSyncLogLevel, NSString *); +#pragma clang diagnostic pop +@property (nonatomic, nullable) RLM_SWIFT_SENDABLE void (^errorHandler)(NSError *); + +#ifdef __cplusplus +- (std::shared_ptr)auditConfigWithRealmConfiguration:(RLMRealmConfiguration *)realmConfig; +#endif +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMLogger_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMLogger_Private.h new file mode 100644 index 000000000..08f8c591e --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMLogger_Private.h @@ -0,0 +1,36 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2023 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +RLM_HEADER_AUDIT_BEGIN(nullability) + +@interface RLMLogger() + +/** + Log a message to the supplied level. + + @param logLevel The log level for the message. + @param message The message to log. + */ +- (void)logWithLevel:(RLMLogLevel)logLevel message:(NSString *)message, ... NS_SWIFT_UNAVAILABLE(""); +- (void)logLevel:(RLMLogLevel)logLevel message:(NSString *)message; +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMMigration_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMMigration_Private.h new file mode 100644 index 000000000..393f41184 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMMigration_Private.h @@ -0,0 +1,40 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import +#import + +namespace realm { + class Schema; +} + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@interface RLMMigration () + +@property (nonatomic, strong) RLMRealm *oldRealm; +@property (nonatomic, strong) RLMRealm *realm; + +- (instancetype)initWithRealm:(RLMRealm *)realm oldRealm:(RLMRealm *)oldRealm schema:(realm::Schema &)schema; + +- (void)execute:(RLMMigrationBlock)block objectClass:(_Nullable Class)cls; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMMongoCollection_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMMongoCollection_Private.h new file mode 100644 index 000000000..77bbf9752 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMMongoCollection_Private.h @@ -0,0 +1,37 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability) + +@class RLMUser; + +@interface RLMMongoCollection () +- (instancetype)initWithUser:(RLMUser *)user + serviceName:(NSString *)serviceName + databaseName:(NSString *)databaseName + collectionName:(NSString *)collectionName; + +- (RLMChangeStream *)watchWithMatchFilter:(nullable id)matchFilter + idFilter:(nullable id)idFilter + delegate:(id)delegate + scheduler:(void (^)(dispatch_block_t))scheduler; +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMObjectBase_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMObjectBase_Private.h new file mode 100644 index 000000000..af547b17e --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMObjectBase_Private.h @@ -0,0 +1,34 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2017 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMArray; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +// RLMObjectBase private +@interface RLMObjectBase () +@property (nonatomic, nullable) NSMutableArray *lastAccessedNames; + ++ (void)initializeLinkedObjectSchemas; ++ (bool)isEmbedded; ++ (bool)isAsymmetric; +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMObjectSchema_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMObjectSchema_Private.h new file mode 100644 index 000000000..08855a82b --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMObjectSchema_Private.h @@ -0,0 +1,75 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability) + +// RLMObjectSchema private +@interface RLMObjectSchema () { +@public + bool _isSwiftClass; +} + +/// The object type name reported to the object store and core. +@property (nonatomic, readonly) NSString *objectName; + +// writable redeclaration +@property (nonatomic, readwrite, copy) NSArray *properties; +@property (nonatomic, readwrite, assign) bool isSwiftClass; +@property (nonatomic, readwrite, assign) BOOL isEmbedded; +@property (nonatomic, readwrite, assign) BOOL isAsymmetric; + +// class used for this object schema +@property (nonatomic, readwrite, assign) Class objectClass; +@property (nonatomic, readwrite, assign) Class accessorClass; +@property (nonatomic, readwrite, assign) Class unmanagedClass; + +@property (nonatomic, readwrite, assign) bool hasCustomEventSerialization; + +@property (nonatomic, readwrite, nullable) RLMProperty *primaryKeyProperty; + +@property (nonatomic, copy) NSArray *computedProperties; +@property (nonatomic, readonly, nullable) NSArray *swiftGenericProperties; + +// returns a cached or new schema for a given object class ++ (instancetype)schemaForObjectClass:(Class)objectClass; +@end + +@interface RLMObjectSchema (Dynamic) +/** + This method is useful only in specialized circumstances, for example, when accessing objects + in a Realm produced externally. If you are simply building an app on Realm, it is not recommended + to use this method as an [RLMObjectSchema](RLMObjectSchema) is generated automatically for every [RLMObject](RLMObject) subclass. + + Initialize an RLMObjectSchema with classname, objectClass, and an array of properties + + @warning This method is useful only in specialized circumstances. + + @param objectClassName The name of the class used to refer to objects of this type. + @param objectClass The Objective-C class used when creating instances of this type. + @param properties An array of RLMProperty instances describing the managed properties for this type. + + @return An initialized instance of RLMObjectSchema. + */ +- (instancetype)initWithClassName:(NSString *)objectClassName objectClass:(Class)objectClass properties:(NSArray *)properties; +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMObjectStore.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMObjectStore.h new file mode 100644 index 000000000..6045f1e8e --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMObjectStore.h @@ -0,0 +1,98 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#ifdef __cplusplus +extern "C" { +#endif + +@class RLMRealm, RLMSchema, RLMObjectBase, RLMResults, RLMProperty; + +typedef NS_ENUM(NSUInteger, RLMUpdatePolicy) { + RLMUpdatePolicyError = 1, + RLMUpdatePolicyUpdateChanged = 3, + RLMUpdatePolicyUpdateAll = 2, +}; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +void RLMVerifyHasPrimaryKey(Class cls); + +void RLMVerifyInWriteTransaction(RLMRealm *const realm); + +// +// Adding, Removing, Getting Objects +// + +// add an object to the given realm +void RLMAddObjectToRealm(RLMObjectBase *object, RLMRealm *realm, RLMUpdatePolicy); + +// delete an object from its realm +void RLMDeleteObjectFromRealm(RLMObjectBase *object, RLMRealm *realm); + +// deletes all objects from a realm +void RLMDeleteAllObjectsFromRealm(RLMRealm *realm); + +// get objects of a given class +RLMResults *RLMGetObjects(RLMRealm *realm, NSString *objectClassName, NSPredicate * _Nullable predicate) +NS_RETURNS_RETAINED; + +// get an object with the given primary key +id _Nullable RLMGetObject(RLMRealm *realm, NSString *objectClassName, id _Nullable key) NS_RETURNS_RETAINED; + +// create object from array or dictionary +RLMObjectBase *RLMCreateObjectInRealmWithValue(RLMRealm *realm, NSString *className, + id _Nullable value, RLMUpdatePolicy updatePolicy) +NS_RETURNS_RETAINED; + +// creates an asymmetric object and doesn't return +void RLMCreateAsymmetricObjectInRealm(RLMRealm *realm, NSString *className, id value); + +// +// Accessor Creation +// + + +// Perform the per-property accessor initialization for a managed RealmSwiftObject +// promotingExisting should be true if the object was previously used as an +// unmanaged object, and false if it is a newly created object. +void RLMInitializeSwiftAccessor(RLMObjectBase *object, bool promotingExisting); + +#ifdef __cplusplus +} + +namespace realm { + class Obj; + class Table; + struct ColKey; + struct ObjLink; +} +class RLMClassInfo; + +// get an object with a given table & object key +RLMObjectBase *RLMObjectFromObjLink(RLMRealm *realm, + realm::ObjLink&& objLink, + bool parentIsSwiftObject) NS_RETURNS_RETAINED; + +// Create accessors +RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, int64_t key) NS_RETURNS_RETAINED; +RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, const realm::Obj& obj) NS_RETURNS_RETAINED; +#endif + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMObject_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMObject_Private.h new file mode 100644 index 000000000..8ccdbf576 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMObject_Private.h @@ -0,0 +1,110 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMProperty, RLMArray, RLMSchema; +typedef NS_ENUM(int32_t, RLMPropertyType); + +FOUNDATION_EXTERN void RLMInitializeWithValue(RLMObjectBase *, id, RLMSchema *); + +typedef void (^RLMObjectNotificationCallback)(RLMObjectBase *_Nullable object, + NSArray *_Nullable propertyNames, + NSArray *_Nullable oldValues, + NSArray *_Nullable newValues, + NSError *_Nullable error); + +// RLMObject accessor and read/write realm +@interface RLMObjectBase () { +@public + RLMRealm *_realm; + __unsafe_unretained RLMObjectSchema *_objectSchema; +} + +// shared schema for this class ++ (nullable RLMObjectSchema *)sharedSchema; + ++ (nullable NSArray *)_getProperties; ++ (bool)_realmIgnoreClass; + +// This enables to override the propertiesMapping in Swift, it is not to be used in Objective-C API. ++ (NSDictionary *)propertiesMapping; +@end + +@interface RLMDynamicObject : RLMObject + +@end + +// Calls valueForKey: and re-raises NSUndefinedKeyExceptions +FOUNDATION_EXTERN id _Nullable RLMValidatedValueForProperty(id object, NSString *key, NSString *className); + +// Compare two RLObjectBases +FOUNDATION_EXTERN BOOL RLMObjectBaseAreEqual(RLMObjectBase * _Nullable o1, RLMObjectBase * _Nullable o2); + +FOUNDATION_EXTERN RLMNotificationToken *RLMObjectBaseAddNotificationBlock(RLMObjectBase *obj, + NSArray *_Nullable keyPaths, + dispatch_queue_t _Nullable queue, + RLMObjectNotificationCallback block); + +RLMNotificationToken *RLMObjectAddNotificationBlock(RLMObjectBase *obj, + RLMObjectChangeBlock block, + NSArray *_Nullable keyPaths, + dispatch_queue_t _Nullable queue); + +// Returns whether the class is a descendent of RLMObjectBase +FOUNDATION_EXTERN BOOL RLMIsObjectOrSubclass(Class klass); + +// Returns whether the class is an indirect descendant of RLMObjectBase +FOUNDATION_EXTERN BOOL RLMIsObjectSubclass(Class klass); + +FOUNDATION_EXTERN const NSUInteger RLMDescriptionMaxDepth; + +FOUNDATION_EXTERN id RLMObjectFreeze(RLMObjectBase *obj) NS_RETURNS_RETAINED; + +FOUNDATION_EXTERN id RLMObjectThaw(RLMObjectBase *obj); + +// Gets an object identifier suitable for use with Combine. This value may +// change when an unmanaged object is added to the Realm. +FOUNDATION_EXTERN uint64_t RLMObjectBaseGetCombineId(RLMObjectBase *); + +// An accessor object which is used to interact with Swift properties from obj-c +@interface RLMManagedPropertyAccessor : NSObject +// Perform any initialization required for KVO on a *unmanaged* object ++ (void)observe:(RLMProperty *)property on:(RLMObjectBase *)parent; +// Initialize the given property on a *managed* object which previous was unmanaged ++ (void)promote:(RLMProperty *)property on:(RLMObjectBase *)parent; +// Initialize the given property on a newly created *managed* object ++ (void)initialize:(RLMProperty *)property on:(RLMObjectBase *)parent; +// Read the value of the property, on either kind of object ++ (id)get:(RLMProperty *)property on:(RLMObjectBase *)parent; +// Set the property to the given value, on either kind of object ++ (void)set:(RLMProperty *)property on:(RLMObjectBase *)parent to:(id)value; +@end + +@interface RLMObjectNotificationToken : RLMNotificationToken +- (void)observe:(RLMObjectBase *)obj + keyPaths:(nullable NSArray *)keyPaths + block:(RLMObjectNotificationCallback)block; +- (void)registrationComplete:(void (^)(void))completion; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMProperty_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMProperty_Private.h new file mode 100644 index 000000000..6a87ced63 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMProperty_Private.h @@ -0,0 +1,139 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import + +@class RLMObjectBase; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +BOOL RLMPropertyTypeIsComputed(RLMPropertyType propertyType); +FOUNDATION_EXTERN void RLMValidateSwiftPropertyName(NSString *name); + +// Translate an rlmtype to a string representation +static inline NSString *RLMTypeToString(RLMPropertyType type) { + switch (type) { + case RLMPropertyTypeString: + return @"string"; + case RLMPropertyTypeInt: + return @"int"; + case RLMPropertyTypeBool: + return @"bool"; + case RLMPropertyTypeDate: + return @"date"; + case RLMPropertyTypeData: + return @"data"; + case RLMPropertyTypeDouble: + return @"double"; + case RLMPropertyTypeFloat: + return @"float"; + case RLMPropertyTypeAny: + return @"mixed"; + case RLMPropertyTypeObject: + return @"object"; + case RLMPropertyTypeLinkingObjects: + return @"linking objects"; + case RLMPropertyTypeDecimal128: + return @"decimal128"; + case RLMPropertyTypeObjectId: + return @"object id"; + case RLMPropertyTypeUUID: + return @"uuid"; + } + return @"Unknown"; +} + +// private property interface +@interface RLMProperty () { +@public + RLMPropertyType _type; +} + +- (instancetype)initWithName:(NSString *)name + indexed:(BOOL)indexed + linkPropertyDescriptor:(nullable RLMPropertyDescriptor *)linkPropertyDescriptor + property:(objc_property_t)property; + +- (instancetype)initSwiftPropertyWithName:(NSString *)name + indexed:(BOOL)indexed + linkPropertyDescriptor:(nullable RLMPropertyDescriptor *)linkPropertyDescriptor + property:(objc_property_t)property + instance:(RLMObjectBase *)objectInstance; + +- (void)updateAccessors; + +// private setters +@property (nonatomic, readwrite) NSString *name; +@property (nonatomic, readwrite, assign) RLMPropertyType type; +@property (nonatomic, readwrite) BOOL indexed; +@property (nonatomic, readwrite) BOOL optional; +@property (nonatomic, readwrite) BOOL array; +@property (nonatomic, readwrite) BOOL set; +@property (nonatomic, readwrite) BOOL dictionary; +@property (nonatomic, copy, nullable) NSString *objectClassName; +@property (nonatomic, copy, nullable) NSString *linkOriginPropertyName; + +// private properties +@property (nonatomic, readwrite, nullable) NSString *columnName; +@property (nonatomic, assign) NSUInteger index; +@property (nonatomic, assign) BOOL isPrimary; +@property (nonatomic, assign) BOOL isLegacy; +@property (nonatomic, assign) ptrdiff_t swiftIvar; +@property (nonatomic, assign, nullable) Class swiftAccessor; +@property (nonatomic, readwrite, assign) RLMPropertyType dictionaryKeyType; +@property (nonatomic, readwrite) BOOL customMappingIsOptional; + +// getter and setter names +@property (nonatomic, copy) NSString *getterName; +@property (nonatomic, copy) NSString *setterName; +@property (nonatomic, nullable) SEL getterSel; +@property (nonatomic, nullable) SEL setterSel; + +- (RLMProperty *)copyWithNewName:(NSString *)name; +- (NSString *)typeName; + +@end + +@interface RLMProperty (Dynamic) +/** + This method is useful only in specialized circumstances, for example, in conjunction with + +[RLMObjectSchema initWithClassName:objectClass:properties:]. If you are simply building an + app on Realm, it is not recommended to use this method. + + Initialize an RLMProperty + + @warning This method is useful only in specialized circumstances. + + @param name The property name. + @param type The property type. + @param objectClassName The object type used for Object and Array types. + @param linkOriginPropertyName The property name of the origin of a link. Used for linking objects properties. + + @return An initialized instance of RLMProperty. + */ +- (instancetype)initWithName:(NSString *)name + type:(RLMPropertyType)type + objectClassName:(nullable NSString *)objectClassName + linkOriginPropertyName:(nullable NSString *)linkOriginPropertyName + indexed:(BOOL)indexed + optional:(BOOL)optional; +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMPushClient_Private.hpp b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMPushClient_Private.hpp new file mode 100644 index 000000000..44304c9c3 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMPushClient_Private.hpp @@ -0,0 +1,28 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import "RLMPushClient.h" + +namespace realm::app { +class PushClient; +} + +RLM_DIRECT_MEMBERS +@interface RLMPushClient () +- (instancetype)initWithPushClient:(realm::app::PushClient&&)pushClient; +@end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMRealmConfiguration_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMRealmConfiguration_Private.h new file mode 100644 index 000000000..12b09676d --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMRealmConfiguration_Private.h @@ -0,0 +1,52 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2015 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMSchema, RLMEventConfiguration; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +@interface RLMRealmConfiguration () + +@property (nonatomic, readwrite) bool cache; +@property (nonatomic, readwrite) bool dynamic; +@property (nonatomic, readwrite) bool disableFormatUpgrade; +@property (nonatomic, copy, nullable) RLMSchema *customSchema; +@property (nonatomic, copy) NSString *pathOnDisk; +@property (nonatomic, retain, nullable) RLMEventConfiguration *eventConfiguration; +@property (nonatomic, nullable) Class migrationObjectClass; +@property (nonatomic) bool disableAutomaticChangeNotifications; + +// Flexible Sync +@property (nonatomic, readwrite, nullable) RLMFlexibleSyncInitialSubscriptionsBlock initialSubscriptions; +@property (nonatomic, readwrite) BOOL rerunOnOpen; + +// Get the default configuration without copying it ++ (RLMRealmConfiguration *)rawDefaultConfiguration; + ++ (void)resetRealmConfigurationState; + +- (void)setCustomSchemaWithoutCopying:(nullable RLMSchema *)schema; +@end + +// Get a path in the platform-appropriate documents directory with the given filename +FOUNDATION_EXTERN NSString *RLMRealmPathForFile(NSString *fileName); +FOUNDATION_EXTERN NSString *RLMRealmPathForFileAndBundleIdentifier(NSString *fileName, NSString *mainBundleIdentifier); + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMRealm_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMRealm_Private.h new file mode 100644 index 000000000..95841491f --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMRealm_Private.h @@ -0,0 +1,94 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMFastEnumerator, RLMScheduler, RLMAsyncRefreshTask, RLMAsyncWriteTask; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +// Disable syncing files to disk. Cannot be re-enabled. Use only for tests. +FOUNDATION_EXTERN void RLMDisableSyncToDisk(void); +// Set whether the skip backup attribute should be set on temporary files. +FOUNDATION_EXTERN void RLMSetSkipBackupAttribute(bool value); + +FOUNDATION_EXTERN NSData * _Nullable RLMRealmValidatedEncryptionKey(NSData *key); + +// Set the queue used for async open. For testing purposes only. +FOUNDATION_EXTERN void RLMSetAsyncOpenQueue(dispatch_queue_t queue); + +// Translate an in-flight exception resulting from an operation on a SharedGroup to +// an NSError or NSException (if error is nil) +void RLMRealmTranslateException(NSError **error); + +// Block until the Realm at the given path is closed. +FOUNDATION_EXTERN void RLMWaitForRealmToClose(NSString *path); +BOOL RLMIsRealmCachedAtPath(NSString *path); + +// Register a block to be called from the next before_notify() invocation +FOUNDATION_EXTERN void RLMAddBeforeNotifyBlock(RLMRealm *realm, dispatch_block_t block); + +// Test hook to run the async notifiers for a Realm which has the background thread disabled +FOUNDATION_EXTERN void RLMRunAsyncNotifiers(NSString *path); + +// Get the cached Realm for the given configuration and scheduler, if any +FOUNDATION_EXTERN RLMRealm *_Nullable RLMGetCachedRealm(RLMRealmConfiguration *, RLMScheduler *) NS_RETURNS_RETAINED; +// Get a cached Realm for the given configuration and any scheduler. The returned +// Realm is not confined to the current thread, so very few operations are safe +// to perform on it +FOUNDATION_EXTERN RLMRealm *_Nullable RLMGetAnyCachedRealm(RLMRealmConfiguration *) NS_RETURNS_RETAINED; + +// Scheduler an async refresh for the given Realm +FOUNDATION_EXTERN RLMAsyncRefreshTask *_Nullable RLMRealmRefreshAsync(RLMRealm *rlmRealm) NS_RETURNS_RETAINED; + +// RLMRealm private members +@interface RLMRealm () +@property (nonatomic, readonly) BOOL dynamic; +@property (nonatomic, readwrite) RLMSchema *schema; +@property (nonatomic, readonly, nullable) id actor; +@property (nonatomic, readonly) bool isFlexibleSync; + ++ (void)resetRealmState; + +- (void)registerEnumerator:(RLMFastEnumerator *)enumerator; +- (void)unregisterEnumerator:(RLMFastEnumerator *)enumerator; +- (void)detachAllEnumerators; + +- (void)sendNotifications:(RLMNotification)notification; +- (void)verifyThread; +- (void)verifyNotificationsAreSupported:(bool)isCollection; + +- (RLMRealm *)frozenCopy NS_RETURNS_RETAINED; + ++ (nullable instancetype)realmWithConfiguration:(RLMRealmConfiguration *)configuration + confinedTo:(RLMScheduler *)options + error:(NSError **)error; + +- (RLMAsyncWriteTask *)beginAsyncWrite NS_RETURNS_RETAINED; +- (void)commitAsyncWriteWithGrouping:(bool)allowGrouping + completion:(void(^)(NSError *_Nullable))completion; +@end + +@interface RLMPinnedRealm : NSObject +@property (nonatomic, readonly) RLMRealmConfiguration *configuration; + +- (instancetype)initWithRealm:(RLMRealm *)realm; +- (void)unpin; +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMResults_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMResults_Private.h new file mode 100644 index 000000000..c7e29bebb --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMResults_Private.h @@ -0,0 +1,33 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMObjectSchema; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +@interface RLMResults () +@property (nonatomic, readonly, getter=isAttached) BOOL attached; + ++ (instancetype)emptyDetachedResults; +- (RLMResults *)snapshot; + +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMScheduler.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMScheduler.h new file mode 100644 index 000000000..3c1b9874b --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMScheduler.h @@ -0,0 +1,63 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2023 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#ifdef __cplusplus +#include +namespace realm::util { +class Scheduler; +} +#endif + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +// A serial work queue of some sort which represents a thread-confinement context +// of some sort which blocks can be invoked inside. Realms are confined to a +// scheduler, which can be a thread (actually a run loop), a dispatch queue, or +// an actor. The scheduler ensures that the Realm is only used on one thread at +// a time, and allows us to dispatch work to the thread where we can access the +// Realm safely. +RLM_SWIFT_SENDABLE // is immutable +@interface RLMScheduler : NSObject ++ (RLMScheduler *)mainRunLoop __attribute__((objc_direct)); ++ (RLMScheduler *)currentRunLoop __attribute__((objc_direct)); +// A scheduler for the given queue if it's non-nil, and currentRunLoop otherwise ++ (RLMScheduler *)dispatchQueue:(nullable dispatch_queue_t)queue; ++ (RLMScheduler *)actor:(id)actor invoke:(void (^)(dispatch_block_t))invoke + verify:(void (^)(void))verify; + +// Invoke the block on this scheduler. Currently not actually implement for run +// loop schedulers. +- (void)invoke:(dispatch_block_t)block; + +// Cache key for this scheduler suitable for use with NSMapTable. Only valid +// when called from the current scheduler. +- (void *)cacheKey; + +- (nullable id)actor; + +#ifdef __cplusplus +// The object store Scheduler corresponding to this scheduler +- (std::shared_ptr)osScheduler; +#endif +@end + +FOUNDATION_EXTERN void RLMSetMainActor(id actor); + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSchema_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSchema_Private.h new file mode 100644 index 000000000..f4f63c9f8 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSchema_Private.h @@ -0,0 +1,58 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability) + +@class RLMRealm; + +// +// RLMSchema private interface +// +@interface RLMSchema () + +/** + Returns an `RLMSchema` containing only the given `RLMObject` subclasses. + + @param classes The classes to be included in the schema. + + @return An `RLMSchema` containing only the given classes. + */ ++ (instancetype)schemaWithObjectClasses:(NSArray *)classes; + +@property (nonatomic, readwrite, copy) NSArray *objectSchema; + +// schema based on runtime objects ++ (instancetype)sharedSchema; + +// schema based upon all currently registered object classes ++ (instancetype)partialSharedSchema; + +// private schema based upon all currently registered object classes. +// includes classes that are excluded from the default schema. ++ (instancetype)partialPrivateSharedSchema; + +// class for string ++ (nullable Class)classForString:(NSString *)className; + ++ (nullable RLMObjectSchema *)sharedSchemaForClass:(Class)cls; + +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSet_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSet_Private.h new file mode 100644 index 000000000..1053e0a0f --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSet_Private.h @@ -0,0 +1,43 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +@class RLMObjectBase, RLMProperty; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@interface RLMSet () +- (instancetype)initWithObjectClassName:(NSString *)objectClassName; +- (instancetype)initWithObjectType:(RLMPropertyType)type optional:(BOOL)optional; +- (NSString *)descriptionWithMaxDepth:(NSUInteger)depth; +- (void)setParent:(RLMObjectBase *)parentObject property:(RLMProperty *)property; +// YES if the property is declared with old property syntax. +@property (nonatomic, readonly) BOOL isLegacyProperty; +// The name of the property which this collection represents +@property (nonatomic, readonly) NSString *propertyKey; +@end + +void RLMSetValidateMatchingObjectType(RLMSet *set, id value); + +@interface RLMManagedSet : RLMSet +- (instancetype)initWithParent:(RLMObjectBase *)parentObject property:(RLMProperty *)property; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSwiftCollectionBase.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSwiftCollectionBase.h new file mode 100644 index 000000000..a4f864282 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSwiftCollectionBase.h @@ -0,0 +1,46 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2021 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMObjectBase, RLMResults, RLMProperty, RLMLinkingObjects; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@interface RLMSwiftCollectionBase : NSProxy +@property (nonatomic, strong) id _rlmCollection; + +- (instancetype)init; ++ (Class)_backingCollectionType; +- (instancetype)initWithCollection:(id)collection; + +- (nullable id)valueForKey:(NSString *)key; +- (nullable id)valueForKeyPath:(NSString *)keyPath; +- (BOOL)isEqual:(nullable id)object; +@end + +@interface RLMLinkingObjectsHandle : NSObject +- (instancetype)initWithObject:(RLMObjectBase *)object property:(RLMProperty *)property; +- (instancetype)initWithLinkingObjects:(RLMResults *)linkingObjects; + +@property (nonatomic, readonly) RLMLinkingObjects *results; +@property (nonatomic, readonly) NSString *_propertyKey; +@property (nonatomic, readonly) BOOL _isLegacyProperty; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSwiftSupport.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSwiftSupport.h new file mode 100644 index 000000000..530f0edbf --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSwiftSupport.h @@ -0,0 +1,30 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@interface RLMSwiftSupport : NSObject + ++ (BOOL)isSwiftClassName:(NSString *)className; ++ (NSString *)demangleClassName:(NSString *)className; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSwiftValueStorage.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSwiftValueStorage.h new file mode 100644 index 000000000..ef3efc610 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSwiftValueStorage.h @@ -0,0 +1,53 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2021 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMObjectBase, RLMProperty; + +/// This class implements the backing storage for `RealmProperty<>` and `RealmOptional<>`. +/// This class should not be subclassed or used directly. +@interface RLMSwiftValueStorage : NSProxy +- (instancetype)init; +@end +/// Retrieves the value that is stored, or nil if it is empty. +FOUNDATION_EXTERN id _Nullable RLMGetSwiftValueStorage(RLMSwiftValueStorage *); +/// Sets a value on the property this instance represents for an object. +FOUNDATION_EXTERN void RLMSetSwiftValueStorage(RLMSwiftValueStorage *, id _Nullable); + +/// Initialises managed accessors on an instance of `RLMSwiftValueStorage` +/// @param parent The enclosing parent object. +/// @param prop The property which this class represents. +FOUNDATION_EXTERN void RLMInitializeManagedSwiftValueStorage(RLMSwiftValueStorage *, + RLMObjectBase *parent, + RLMProperty *prop); + +/// Initialises unmanaged accessors on an instance of `RLMSwiftValueStorage` +/// @param parent The enclosing parent object. +/// @param prop The property which this class represents. +FOUNDATION_EXTERN void RLMInitializeUnmanagedSwiftValueStorage(RLMSwiftValueStorage *, + RLMObjectBase *parent, + RLMProperty *prop); + +/// Gets the property name for the RealmProperty instance. This is required for tracing the key path on +/// objects that use the legacy property declaration syntax. +FOUNDATION_EXTERN NSString *RLMSwiftValueStorageGetPropertyName(RLMSwiftValueStorage *); + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSyncConfiguration_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSyncConfiguration_Private.h new file mode 100644 index 000000000..62d0e1f1f --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSyncConfiguration_Private.h @@ -0,0 +1,47 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2016 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +typedef RLM_CLOSED_ENUM(NSUInteger, RLMSyncStopPolicy) { + RLMSyncStopPolicyImmediately, + RLMSyncStopPolicyLiveIndefinitely, + RLMSyncStopPolicyAfterChangesUploaded, +}; + + +@class RLMSchema; + +@interface RLMSyncConfiguration () + +// Flexible sync +- (instancetype)initWithUser:(RLMUser *)user; +// Partition-based sync +- (instancetype)initWithUser:(RLMUser *)user + partitionValue:(nullable id)partitionValue; + +// Internal-only APIs +@property (nonatomic, readwrite) RLMSyncStopPolicy stopPolicy; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSyncSubscription_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSyncSubscription_Private.h new file mode 100644 index 000000000..dc438a20e --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMSyncSubscription_Private.h @@ -0,0 +1,70 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2021 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +#pragma mark - Subscription + +@interface RLMSyncSubscription () + +@property (nonatomic, readonly) RLMObjectId *identifier; + +@property (nonatomic, readonly) NSString *queryString; + +@property (nonatomic, readonly) NSString *objectClassName; + +@end + +#pragma mark - SubscriptionSet + +@interface RLMSyncSubscriptionEnumerator : NSObject + +@property (nonatomic, readonly) RLMSyncSubscriptionSet *subscriptionSet; + +- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state + count:(NSUInteger)len; + +- (instancetype)initWithSubscriptionSet:(RLMSyncSubscriptionSet *)subscriptionSet; + +@end + +@interface RLMSyncSubscriptionSet () + +@property (readonly) uint64_t version; + +- (void)addSubscriptionWithClassName:(NSString *)objectClassName + subscriptionName:(nullable NSString *)name + predicate:(NSPredicate *)predicate + updateExisting:(BOOL)updateExisting; + +- (void)waitForSynchronizationOnQueue:(nullable dispatch_queue_t)queue + completionBlock:(void(^)(NSError *))completionBlock; + +- (RLMSyncSubscriptionEnumerator *)fastEnumerator; + +NSUInteger RLMFastEnumerate(NSFastEnumerationState *state, + NSUInteger len, + RLMSyncSubscriptionSet *collection); + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMUser_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMUser_Private.h new file mode 100644 index 000000000..f62c9a940 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/PrivateHeaders/RLMUser_Private.h @@ -0,0 +1,40 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/// Observer block for user notifications. +typedef void(^RLMUserNotificationBlock)(RLMUser *); + +/// Token that identifies an observer. Unsubscribes when deconstructed to +/// avoid dangling observers, therefore this must be retained to hold +/// onto a subscription. +@interface RLMUserSubscriptionToken : NSObject +- (void)unsubscribe; +@end + +@interface RLMUser () +/// Subscribe to notifications for this RLMUser. +- (RLMUserSubscriptionToken *)subscribe:(RLMUserNotificationBlock)block; + +- (void)logOut; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Realm b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Realm new file mode 100755 index 000000000..e3d57ee9f Binary files /dev/null and b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64/Realm.framework/Realm differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/CHANGELOG.md b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/CHANGELOG.md new file mode 100644 index 000000000..00cc01244 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/CHANGELOG.md @@ -0,0 +1,9539 @@ +10.42.3 Release notes (2023-09-18) +============================================================= + +### Enhancements + +* Update packaging for the Xcode 15.0 release. Carthage release and obj-c + binaries are now built with Xcode 15. + +### Fixed + +* The prebuilt Realm.xcframework for SPM was packaged incorrectly and did not + work ([#8361](https://github.com/realm/realm-swift/issues/8361), since v10.42.1). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 15.0.0. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15.0.0. + +10.42.2 Release notes (2023-09-13) +============================================================= + +### Enhancements + +* Add support for logging messages sent by the server. + ([Core #6476](https://github.com/realm/realm-core/pull/6476)) +* Unknown protocol errors received from the baas server will no longer cause + the application to crash if a valid error action is also received. Unknown + error actions will be treated as an ApplicationBug error action and will + cause sync to fail with an error via the sync error handler. + ([Core #6885](https://github.com/realm/realm-core/pull/6885)) +* Some sync error messages now contain more information about what went wrong. + +### Fixed + +* The `MultipleSyncAgents` exception from opening a synchronized Realm in + multiple processes at once no longer leaves the sync client in an invalid + state. ([Core #6868](https://github.com/realm/realm-core/pull/6868), since v10.36.0) +* Testing the size of a collection of links against zero would sometimes fail + (sometimes = "difficult to explain"). In particular: + ([Core #6850](https://github.com/realm/realm-core/issues/6850), since v10.41.0) +* When async writes triggered a file compaction some internal state could be + corrupted, leading to later crashes in the slab allocator. This typically + resulted in the "ref + size <= next->first" assertion failure, but other + failures were possible. Many issues reported; see [Core #6340](https://github.com/realm/realm-core/issues/6340). + (since 10.35.0) +* `Realm.Configuration.maximumNumberOfActiveVersions` now handles intermediate + versions which have been cleaned up correctly and checks the number of live + versions rather than the number of versions between the oldest live version + and current version (since 10.35.0). +* If the client disconnected between uploading a change to flexible sync + subscriptions and receiving the new object data from the server resulting + from that subscription change, the next connection to the server would + sometimes result in a client reset + ([Core #6966](https://github.com/realm/realm-core/issues/6966), since v10.21.1). + +### Deprecations + +* `RLMApp` has `localAppName` and `localAppVersion` fields which never ended up + being used for anything and are now deprecated. +* `RLMSyncAuthError` has not been used since v10.0.0 and is now deprecated. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +### Internal + +* Upgraded realm-core from 13.17.1 to 13.20.1 + +10.42.1 Release notes (2023-08-28) +============================================================= + +### Fixed + +* The names of the prebuilt zips for SPM have changed to avoid having Carthage + download them instead of the intended Carthage zip + ([#8326](https://github.com/realm/realm-swift/issues/8326), since v10.42.0). +* The prebuild Realm.xcframework for SwiftPM now has all platforms other than + visionOS built with Xcode 14 to comply with app store rules + ([#8339](https://github.com/realm/realm-swift/issues/8339), since 10.42.0). +* Fix visionOS compilation with Xcode beta 7. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 7. + +10.42.0 Release notes (2023-07-30) +============================================================= + +### Enhancements + +* Add support for building for visionOS and add Xcode 15 binaries to the + release package. visionOS currently requires installing Realm via either + Swift Package Manager or by using a XCFramework as CocoaPods and Carthage do + not yet support it. +* Zips compatible with SPM's `.binaryTarget()` are now published as part of the + releases on Github. +* Prebuilt XCFrameworks are now built with LTO enabled. This has insignificant + performance benefits, but cuts the size of the library by ~15%. + +### Fixed + +* Fix nested properties observation on a `Projections` not notifying when there is a property change. + ([#8276](https://github.com/realm/realm-swift/issues/8276), since v10.34.0). +* Fix undefined symbol error for `UIKit` when linking Realm to a framework using SPM. + ([#8308](https://github.com/realm/realm-swift/issues/8308), since v10.41.0) +* If the app crashed at exactly the wrong time while opening a freshly + compacted Realm the file could be left in an invalid state + ([Core #6807](https://github.com/realm/realm-core/pull/6807), since v10.33.0). +* Sync progress for DOWNLOAD messages was sometimes stored incorrectly, + resulting in an extra round trip to the server. + ([Core #6827](https://github.com/realm/realm-core/issues/6827), since v10.31.0) + +### Breaking Changes + +* Legacy non-xcframework Carthage installations are no longer supported. Please + ensure you are using `--use-xcframeworks` if installing via Carthage. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 5. + +### Internal + +* Upgraded realm-core from 13.17.0 to 13.17.1 +* Release packages were being uploaded to several static.realm.io URLs which + are no longer linked to anywhere. These are no longer being updated, and + release packages are now only being uploaded to Github. + +10.41.1 Release notes (2023-07-17) +============================================================= + +### Enhancements + +* Filesystem errors now include more information in the error message. +* Sync connection and session reconnect timing/backoff logic has been reworked + and unified into a single implementation. Previously some categories of errors + would cause an hour-long wait before attempting to reconnect, while others + would use an exponential backoff strategy. All errors now result in the sync + client waiting for 1 second before retrying, doubling the wait after each + subsequent failure up to a maximum of five minutes. If the cause of the error + changes, the backoff will be reset. If the sync client voluntarily disconnects, + no backoff will be used. ([Core #6526]((https://github.com/realm/realm-core/pull/6526))) + +### Fixed + +* Removed warnings for deprecated APIs internal use. + ([#8251](https://github.com/realm/realm-swift/issues/8251), since v10.39.0) +* Fix an error during async open and client reset if properties have been added + to the schema. This fix also applies to partition-based to flexible sync + migration if async open is used. ([Core #6707](https://github.com/realm/realm-core/issues/6707), since v10.28.2) + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 4. + +### Internal + +* Upgraded realm-core from 13.15.1 to 13.17.0 +* The location where prebuilt core binaries are published has changed slightly. + If you are using `REALM_BASE_URL` to mirror the binaries, you may need to + adjust your mirroring logic. + +10.41.0 Release notes (2023-06-26) +============================================================= + +### Enhancements + +* Add support for multiplexing sync connections. When enabled (the default), a single + connection is used per sync user rather than one per synchronized Realm. This + reduces resource consumption when multiple Realms are opened and will + typically improve performance ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). +* Sync timeout options can now be set on `RLMAppConfiguration` along with the + other app-wide configuration settings ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Fixed + +* Import as `RLMRealm_Private.h` as a module would cause issues when using Realm as a subdependency. + ([#8164](https://github.com/realm/realm-swift/issues/8164), since 10.37.0) +* Disable setting a custom logger by default on the sync client when the sync manager is created. + This was overriding the default logger set using `RLMLogger.defaultLogger`. (since v10.39.0). + +### Breaking Changes + +* The `RLMSyncTimeouts.appConfiguration` property has been removed. This was an + unimplemented read-only property which did not make any sense on the + containing type ([PR #8282](https://github.com/realm/realm-swift/pull/8282)). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 2. + +### Internal + +* Upgraded realm-core from 13.15.0 to 13.15.1 + +10.40.2 Release notes (2023-06-09) +============================================================= + +### Enhancements + +* `Actor.preconditionIsolated()` is now used for runtime actor checking when + available (i.e. building with Xcode 15 and running on iOS 17) rather than the + less reliable workaround. + +### Fixed + +* If downloading the fresh Realm file failed during a client reset on a + flexible sync Realm, the sync client would crash the next time the Realm was + opened. ([Core #6494](https://github.com/realm/realm-core/issues/6494), since v10.28.2) +* If the order of properties in the local class definitions did not match the + order in the server-side schema, the before-reset Realm argument passed to a + client reset handler would have an invalid schema and likely crash if any + data was read from it. ([Core #6693](https://github.com/realm/realm-core/issues/6693), since v10.40.0) + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 1. + +### Internal + +* Upgraded realm-core from 13.13.0 to 13.15.0. +* The prebuilt library used for CocoaPods installations is now built with Xcode + 14. This should not have any observable effects other than the download being + much smaller due to no longer including bitcode. + +10.40.1 Release notes (2023-06-06) +============================================================= + +### Enhancements + +* Fix compilation with Xcode 15. Note that iOS 12 is the minimum supported + deployment target when using Xcode 15. +* Switch to building the Carthage release with Xcode 14.3.1. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-15 beta 1. + +### Internal + +* Overhauled SDK metrics collection to better drive future development efforts. + +10.40.0 Release notes (2023-05-26) +============================================================= + +Drop support for Xcode 13 and add Xcode 14.3.1. Xcode 14.1 is now the minimum +supported version. + +### Enhancements + +* Adjust the error message for private `Object` subclasses and subclasses + nested inside other types to explain how to make them work rather than state + that it's impossible. ([#5662](https://github.com/realm/realm-cocoa/issues/5662)). +* Improve performance of SectionedResults. With a single section it is now ~10% + faster, and the runtime of sectioning no longer scales significantly with + section count, giving >100% speedups when there are large numbers of sections + ([Core #6606](https://github.com/realm/realm-core/pull/6606)). +* Very slightly improve performance of runtime thread checking on the main + thread. ([Core #6606](https://github.com/realm/realm-core/pull/6606)) + +### Fixed + +* Allow support for implicit boolean queries on Swift's Type Safe Queries API + ([#8212](https://github.com/realm/realm-swift/issues/8212)). +* Fixed a fatal error (reported to the sync error handler) during client reset + or automatic partition-based to flexible sync migration if the reset has been + triggered during an async open and the schema being applied has added new + classes. Due to this bug automatic flexibly sync migration has been disabled + for older releases and this is now the minimum version required. + ([#6601](https://github.com/realm/realm-core/issues/6601), since automatic + client resets were introduced in v10.25.0) +* Dictionaries sometimes failed to map unresolved links to nil. If the target + of a link in a dictionary was deleted by another sync client, reading that + field from the dictionary would sometimes give an invalid object rather than + nil. In addition, queries on dictionaries would sometimes have incorrect + results. ([Core #6644](https://github.com/realm/realm-core/pull/6644), since v10.8.0) +* Older versions of Realm would sometimes fail to properly mark objects as + being the target of an incoming link from another object. When this happened, + deleting the target object would hit an assertion failure due to the + inconsistent state. We now reconstruct a valid state rather than crashing. + ([Core #6585](https://github.com/realm/realm-core/issues/6585), since v5.0.0) +* Fix several UBSan failures which did not appear to result in functional bugs + ([Core #6649](https://github.com/realm/realm-core/pull/6649)). +* Using both synchronous and asynchronous transactions on the same thread or + scheduler could hit the assertion failure "!realm.is_in_transaction()" if one + of the callbacks for an asynchronous transaction happened to be scheduled + during a synchronous transaction + ([Core #6659](https://github.com/realm/realm-core/issues/6659), since v10.26.0) +* The stored deployment location for Apps was not being updated correctly after + receiving a redirect response from the server, resulting in every connection + attempting to connect to the old URL and getting redirected rather than only + the first connection after the deployment location changed. + ([Core #6630](https://github.com/realm/realm-core/issues/6630), since v10.38.2) + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3. +* CocoaPods: 1.10 or later. +* Xcode: 14.1-14.3.1. + +### Internal + +* Upgraded realm-core from 13.10.1 to 13.13.0. + +10.39.1 Release notes (2023-05-05) +============================================================= + +### Enhancements + +* New notifiers can now be registered in write transactions until changes have + actually been made in the write transaction. This makes it so that new + notifications can be registered inside change notifications triggered by + beginning a write transaction (unless a previous callback performed writes). + ([#4818](https://github.com/realm/realm-swift/issues/4818)). +* Reduce the memory footprint of an automatic (discard or recover) client reset + when there are large incoming changes from the server. + ([Core #6567](https://github.com/realm/realm-core/issues/6567)). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3. +* CocoaPods: 1.10 or later. +* Xcode: 13.4-14.3. + +### Internal + +* Upgraded realm-core from 13.10.0 to 13.10.1. + +10.39.0 Release notes (2023-05-03) +============================================================= + +### Enhancements + +* Add support for actor-isolated Realms, opened with `try await Realm(actor: actor)`. + + Rather than being confined to the current thread or a dispatch queue, + actor-isolated Realms are isolated to an actor. This means that they can be + used from any thread as long as it's within a function isolated to that + actor, and they remain valid over suspension points where a task may hop + between threads. Actor-isolated Realms can be used with either global or + local actors: + + ```swift + @MainActor function mainThreadFunction() async throws { + // These are identical: the async init continues to produce a + // MainActor-confined Realm if no actor is supplied + let realm1 = try await Realm() + let realm2 = try await Realm(MainActor.shared) + } + + // A simple example of a custom global actor + @globalActor actor BackgroundActor: GlobalActor { + static var shared = BackgroundActor() + } + + @BackgroundActor backgroundThreadFunction() async throws { + // Explicitly specifying the actor is required for everything but MainActor + let realm = try await Realm(actor: BackgroundActor.shared) + try await realm.write { + _ = realm.create(MyObject.self) + } + // Thread-confined Realms would sometimes throw an exception here, as we + // may end up on a different thread after an `await` + print("\(realm.objects(MyObject.self).count)") + } + + actor MyActor { + // An implicitly-unwrapped optional is used here to let us pass `self` to + // `Realm(actor:)` within `init` + var realm: Realm! + init() async throws { + realm = try await Realm(actor: self) + } + + var count: Int { + realm.objects(MyObject.self).count + } + + func create() async throws { + try await realm.asyncWrite { + realm.create(MyObject.self) + } + } + } + + // This function isn't isolated to the actor, so each operation has to be async + func createObjects() async throws { + let actor = try await MyActor() + for _ in 0..<5 { + await actor.create() + } + print("\(await actor.count)") + } + + // In an isolated function, an actor-isolated Realm can be used synchronously + func createObjects(in actor: isolated MyActor) async throws { + await actor.realm.write { + actor.realm.create(MyObject.self) + } + print("\(actor.realm.objects(MyObject.self).count)") + } + ``` + + Actor-isolated Realms come with a more convenient syntax for asynchronous + writes. `try await realm.write { ... }` will suspend the current task, + acquire the write lock without blocking the current thread, and then invoke + the block. The actual data is then written to disk on a background thread, + and the task is resumed once that completes. As this does not block the + calling thread while waiting to write and does not perform i/o on the calling + thread, this will often be safe to use from `@MainActor` functions without + blocking the UI. Sufficiently large writes may still benefit from being done + on a background thread. + + Asynchronous writes are only supported for actor-isolated Realms or in + `@MainActor` functions. + + Actor-isolated Realms require Swift 5.8 (Xcode 14.3). Enabling both strict + concurrency checking (`SWIFT_STRICT_CONCURRENCY=complete` in Xcode) and + runtime actor data race detection (`OTHER_SWIFT_FLAGS=-Xfrontend + -enable-actor-data-race-checks`) is strongly recommended when using + actor-isolated Realms. +* Add support for automatic partition-based to flexible sync migration. + Connecting to a server-side app configured to use flexible sync with a + client-side partition-based sync configuration is now supported, and will + automatically create the appropriate flexible sync subscriptions to subscribe + to the requested partition. This allows changing the configuration on the + server from partition-based to flexible without breaking existing clients. + ([Core #6554](https://github.com/realm/realm-core/issues/6554)) +* Now you can use an array `[["_id": 1], ["breed": 0]]` as sorting option for a + MongoCollection. This new API fixes the issue where the resulting documents + when using more than one sort parameter were not consistent between calls. + ([#7188](https://github.com/realm/realm-swift/issues/7188), since v10.0.0). +* Add support for adding a user created default logger, which allows implementing your own logging logic + and the log threshold level. + You can define your own logger creating an instance of `Logger` and define the log function which will be + invoked whenever there is a log message. + + ```swift + let logger = Logger(level: .all) { level, message in + print("Realm Log - \(level): \(message)") + } + ``` + + Set this custom logger as Realm default logger using `Logger.shared`. + ```swift + Logger.shared = logger + ``` +* It is now possible to change the default log threshold level at any point of the application's lifetime. + ```swift + Logger.shared.logLevel = .debug + ``` + This will override the log level set anytime before by a user created logger. +* We have set `.info` as the default log threshold level for Realm. You will now see some + log message in your console. To disable use `Logger.shared.level = .off`. + +### Fixed + +* Several schema initialization functions had incorrect `@MainActor` + annotations, resulting in runtime warnings if the first time a Realm was + opened was on a background thread + ([#8222](https://github.com/realm/realm-swift/issues/8222), since v10.34.0). + +### Deprecations + +* `App.SyncManager.logLevel` and `App.SyncManager.logFunction` are deprecated in favour of + setting a default logger. + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3. +* CocoaPods: 1.10 or later. +* Xcode: 13.4-14.3. + +### Internal + +* Upgraded realm-core from v13.9.4 to v13.10.0. + +10.38.3 Release notes (2023-04-28) +============================================================= + +### Enhancements + +* Improve performance of cancelling a write transactions after making changes. + If no KVO observers are used this is now constant time rather than taking + time proportional to the number of changes to be rolled back. Cancelling a + write transaction with KVO observers is 10-20% faster. ([Core PR #6513](https://github.com/realm/realm-core/pull/6513)). + +### Fixed + +* Performing a large number of queries without ever performing a write resulted + in steadily increasing memory usage, some of which was never fully freed due + to an unbounded cache ([#7978](https://github.com/realm/realm-swift/issues/7978), since v10.27.0). + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3. +* CocoaPods: 1.10 or later. +* Xcode: 13.4-14.3. + +### Internal + +* Upgraded realm-core from 13.9.3 to 13.9.4 + +10.38.2 Release notes (2023-04-25) +============================================================= + +### Enhancements + +* Improve performance of equality queries on a non-indexed AnyRealmValue + property by about 30%. ([Core #6506](https://github.com/realm/realm-core/issues/6506)) + +### Fixed + +* SSL handshake errors were treated as fatal errors rather than errors which + should be retried. ([Core #6434](https://github.com/realm/realm-core/issues/6434), since v10.35.0) + +### Compatibility + +* Realm Studio: 14.0.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3. +* CocoaPods: 1.10 or later. +* Xcode: 13.4-14.3. + +### Internal + +* Upgraded realm-core from 13.9.0 to 13.9.3. + +10.38.1 Release notes (2023-04-25) +============================================================= + +### Fixed + +* The error handler set on EventsConfiguration was not actually used (since v10.26.0). + +### Compatibility + +* Realm Studio: 13.0.2 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3. +* CocoaPods: 1.10 or later. +* Xcode: 13.4-14.3. + +10.38.0 Release notes (2023-03-31) +============================================================= + +Switch to building the Carthage release with Xcode 14.3. + +### Enhancements + +* Add Xcode 14.3 binaries to the release package. Note that CocoaPods 1.12.0 + does not support Xcode 14.3. +* Add support for sharing encrypted Realms between multiple processes. + ([Core #1845](https://github.com/realm/realm-core/issues/1845)) + +### Fixed + +* Fix a memory leak reported by Instruments on `URL.path` in + `Realm.Configuration.fileURL` when using a string partition key in Partition + Based Sync ([#8195](https://github.com/realm/realm-swift/pull/8195)), since v10.0.0). +* Fix a data race in version management. If one thread committed a write + transaction which increased the number of live versions above the previous + highest seen during the current session at the same time as another thread + began a read, the reading thread could read from a no-longer-valid memory + mapping. This could potentially result in strange crashes when opening, + refreshing, freezing or thawing a Realm + ([Core #6411](https://github.com/realm/realm-core/pull/6411), since v10.35.0). + +### Compatibility + +* Realm Studio: 13.0.2 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.3. +* CocoaPods: 1.10 or later. +* Xcode: 13.4-14.3. + +### Internal + +* Upgraded realm-core from 13.8.0 to 13.9.0. + +10.37.2 Release notes (2023-03-29) +============================================================= + +### Fixed + +* Copying a `RLMRealmConfiguration` failed to copy several fields. This + resulted in migrations being passed the incorrect object type in Swift when + using the default configuration (since v10.34.0) or async open (since + v10.37.0). This also broke using the Events API in those two scenarios (since + v10.26.0 for default configuration and v10.37.0 for async open). ([#8190](https://github.com/realm/realm-swift/issues/8190)) + +### Compatibility + +* Realm Studio: 13.0.2 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.2. +* CocoaPods: 1.10 or later. +* Xcode: 13.3-14.2. + +10.37.1 Release notes (2023-03-27) +============================================================= + +### Enhancements + +* Performance improvement for the following queries ([Core #6376](https://github.com/realm/realm-core/issues/6376)): + * Significant (~75%) improvement when counting (`Results.count`) the number + of exact matches (with no other query conditions) on a + string/int/UUID/ObjectID property that has an index. This improvement + will be especially noticiable if there are a large number of results + returned (duplicate values). + * Significant (~99%) improvement when querying for an exact match on a Date + property that has an index. + * Significant (~99%) improvement when querying for a case insensitive match + on an AnyRealmValue property that has an index. + * Moderate (~25%) improvement when querying for an exact match on a Bool + property that has an index. + * Small (~5%) improvement when querying for a case insensitive match on an + AnyRealmValue property that does not have an index. + +### Fixed + +* Add missing `@Sendable` annotations to several sync and app services related + callbacks ([PR #8169](https://github.com/realm/realm-swift/pull/8169), since v10.34.0). +* Fix some bugs in handling task cancellation for async Realm init. Some very + specific timing windows could cause crashes, and the download would not be + cancelled if the Realm was already open ([PR #8178](https://github.com/realm/realm-swift/pull/8178), since v10.37.0). +* Fix a crash when querying an AnyRealmValue property with a string operator + (contains/like/beginswith/endswith) or with case insensitivity. + ([Core #6376](https://github.com/realm/realm-core/issues/6376), since v10.8.0) +* Querying for case-sensitive equality of a string on an indexed AnyRealmValue + property was returning case insensitive matches. For example querying for + `myIndexedAny == "Foo"` would incorrectly match on values of "foo" or "FOO" etc. + ([Core #6376](https://github.com/realm/realm-core/issues/6376), since v10.8.0) +* Adding an index to an AnyRealmValue property when objects of that type + already existed would crash with an assertion. + ([Core #6376](https://github.com/realm/realm-core/issues/6376), since v10.8.0). +* Fix a bug that may have resulted in arrays being in different orders on + different devices. Some cases of “Invalid prior_size” may be fixed too. + ([Core #6191](https://github.com/realm/realm-core/issues/6191), since v10.25.0). + +### Compatibility + +* Realm Studio: 13.0.2 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.2. +* CocoaPods: 1.10 or later. +* Xcode: 13.3-14.2. + +### Internal + +* Upgraded realm-core from 13.6.0 to 13.8.0 + +10.37.0 Release notes (2023-03-09) +============================================================= + +### Enhancements + +* `MongoCollection.watch().subscribe(on:)` now supports any swift Scheduler + rather than only dispatch queues ([PR #8131](https://github.com/realm/realm-swift/pull/8130)). +* Add an async sequence wrapper for `MongoCollection.watch()`, allowing you to + do `for try await change in collection.changeEvents { ... }` + ([PR #8131](https://github.com/realm/realm-swift/pull/8130)). +* The internals of error handling and reporting have been significantly + reworked. The visible effects of this are that some errors which previously + had unhelpful error messages now include more detail about what went wrong, + and App errors now expose a much more complete set of error codes + ([PR #8002](https://github.com/realm/realm-swift/pull/8002)). +* Expose compensating write error information. When the server rejects a + modification made by the client (such as if the user does not have the + required permissions), a `SyncError` is delivered to the sync error handler + with the code `.writeRejected` and a non-nil `compensatingWriteInfo` field + which contains information about what was rejected and why. This information + is intended primarily for debugging and logging purposes and may not have a + stable format. ([PR #8002](https://github.com/realm/realm-swift/pull/8002)) +* Async `Realm.init()` now handles Task cancellation and will cancel the async + open if the Task is cancelled ([PR #8148](https://github.com/realm/realm-swift/pull/8148)). +* Cancelling async opens now has more consistent behavior. The previously + intended and documented behavior was that cancelling an async open would + result in the callback associated with the specific task that was cancelled + never being called, and all other pending callbacks would be invoked with an + ECANCELED error. This never actually worked correctly, and the callback which + was not supposed to be invoked at all sometimes would be. We now + unconditionally invoke all of the exactly once, passing ECANCELED to all of + them ([PR #8148](https://github.com/realm/realm-swift/pull/8148)). + +### Fixed + +* `UserPublisher` incorrectly bounced all notifications to the main thread instead + of setting up the Combine publisher to correctly receive on the main thread. + ([#8132](https://github.com/realm/realm-swift/issues/8132), since 10.21.0) +* Fix warnings when building with Xcode 14.3 beta 2. +* Errors in async open resulting from invalid queries in `initialSubscriptions` + would result in the callback being invoked with both a non-nil Realm and a + non-nil Error even though the Realm was in an invalid state. Now only the + error is passed to the callback ([PR #8148](https://github.com/realm/realm-swift/pull/8148), since v10.28.0). +* Converting a local realm to a synced realm would crash if an embedded object + was null ([Core #6294](https://github.com/realm/realm-core/issues/6294), since v10.22.0). +* Subqueries on indexed properties performed extremely poorly. ([Core #6327](https://github.com/realm/realm-core/issues/6327), since v5.0.0) +* Fix a crash when a SSL read successfully read a non-zero number of bytes and + also reported an error. ([Core #5435](https://github.com/realm/realm-core/issues/5435), since 10.0.0) +* The sync client could get stuck in an infinite loop if the server sent an + invalid changeset which caused a transform error. This now results in a + client reset instead. ([Core #6051](https://github.com/realm/realm-core/issues/6051), since v10.0.0) +* Strings in queries which contained any characters which required multiple + bytes when encoded as utf-8 were incorrectly encoded as binary data when + serializing the query to send it to the server for a flexible sync + subscription, resulting the server rejecting the query + ([Core #6350](https://github.com/realm/realm-core/issues/6350), since 10.22.0). + +### Compatibility + +* Realm Studio: 13.0.2 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.2. +* CocoaPods: 1.10 or later. +* Xcode: 13.3-14.2. + +### Internal + +* Upgraded realm-core from 13.4.1 to 13.6.0 + +10.36.0 Release notes (2023-02-15) +============================================================= + +### Enhancements + +* Add support for multiple overlapping or nested event scopes. + `Events.beginScope()` now returns a `Scope` object which is used to commit or + cancel that scope, and if more than one scope is active at a time events are + reported to all active scopes. + +### Fixed + +* Fix moving `List` items to a higher index in SwiftUI results in wrong destination index + ([#7956](https://github.com/realm/realm-swift/issues/7956), since v10.6.0). +* Using the `searchable` view modifier with `@ObservedResults` in iOS 16 would + cause the collection observation subscription to cancel. + ([#8096](https://github.com/realm/realm-swift/issues/8096), since 10.21.0) +* Client reset with recovery would sometimes crash if the recovery resurrected + a dangling link ([Core #6292](https://github.com/realm/realm-core/issues/6292), since v10.32.0). + +### Compatibility + +* Realm Studio: 13.0.2 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.2. +* CocoaPods: 1.10 or later. +* Xcode: 13.3-14.2. + +### Internal + +* Upgraded realm-core from 13.4.0 to 13.4.1 + +10.35.1 Release notes (2023-02-10) +============================================================= + +### Fixed + +* Client reset with recovery would crash if a client reset occurred the very + first time the Realm was opened with async open. The client reset callbacks + are now not called if the Realm had never been opened before + ([PR #8125](https://github.com/realm/realm-swift/pull/8125), since 10.32.0). + +### Compatibility + +* Realm Studio: 13.0.2 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.2. +* CocoaPods: 1.10 or later. +* Xcode: 13.3-14.2. + +10.35.0 Release notes (2023-02-07) +============================================================= + +This version bumps the Realm file format version to 23. Realm files written by +this version cannot be read by older versions of Realm. + +### Enhancements + +* The Realm file is now automatically shrunk if the file size is larger than + needed to store all of the data. ([Core PR #5755](https://github.com/realm/realm-core/pull/5755)) +* Pinning old versions (either with frozen Realms or with Realms on background + threads that simply don't get refreshed) now only prevents overwriting the + data needed by that version, rather than the data needed by that version and + all later versions. In addition, frozen Realms no longer pin the transaction + logs used to drive change notifications. This mostly eliminates the file size + growth caused by pinning versions. ([Core PR #5440](https://github.com/realm/realm-core/pull/5440)) +* Rework how Dictionaries/Maps are stored in the Realm file. The new design uses + less space and is typically significantly faster. This changes the iteration + order of Maps, so any code relying on that may be broken. We continue + to make no guarantees about iteration order on Maps ([Core #5764](https://github.com/realm/realm-core/issues/5764)). +* Improve performance of freezing Realms ([Core PR #6211](https://github.com/realm/realm-core/pull/6211)). + +### Fixed + +* Fix a crash when using client reset with recovery and flexible sync with a + single subscription ([Core #6070](https://github.com/realm/realm-core/issues/6070), since v10.28.2) +* Encrypted Realm files could not be opened on devices with a larger page size + than the one which originally wrote the file. + ([#8030](https://github.com/realm/realm-swift/issues/8030), since v10.32.1) +* Creating multiple flexible sync subscriptions at once could hit an assertion + failure if the server reported an error for any of them other than the last + one ([Core #6038](https://github.com/realm/realm-core/issues/6038), since v10.21.1). +* `Set` and `List` considered a string and binary + data containing that string encoded as UTF-8 to be equivalent. This could + result in a List entry not changing type on assignment and for the client be + inconsistent with the server if a string and some binary data with equivalent + content was inserted from Atlas. + ([Core #4860](https://github.com/realm/realm-core/issues/4860) and + [Core #6201](https://github.com/realm/realm-core/issues/6201), since v10.8.0) +* Querying for NaN on Decimal128 properties did not match any objects + ([Core #6182](https://github.com/realm/realm-core/issues/6182), since v10.8.0). +* When client reset with recovery is used and the recovery did not need to + make any changes to the local Realm, the sync client could incorrectly think + the recovery failed and report the error "A fatal error occured during client + reset: 'A previous 'Recovery' mode reset from did not succeed, + giving up on 'Recovery' mode to prevent a cycle'". + ([Core #6195](https://github.com/realm/realm-core/issues/6195), since v10.32.0) +* Fix a crash when using client reset with recovery and flexible sync with a + single subscription ([Core #6070](https://github.com/realm/realm-core/issues/6070), since v10.28.2) +* Writing to newly in-view objects while a flexible sync bootstrap was in + progress would not synchronize those changes to the server + ([Core #5804](https://github.com/realm/realm-core/issues/5804), since v10.21.1). +* If a client reset with recovery or discard local was interrupted while the + "fresh" realm was being downloaded, the sync client could crash with a + MultpleSyncAgents exception ([Core #6217](https://github.com/realm/realm-core/issues/6217), since v10.25.0). +* Sharing Realm files between a Catalyst app and Realm Studio did not properly + synchronize access to the Realm file ([Core #6258](https://github.com/realm/realm-core/pull/6258), since v10.0.0). + +### Compatibility + +* Realm Studio: 13.0.2 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.2. +* CocoaPods: 1.10 or later. +* Xcode: 13.3-14.2. + +### Internal + +* Upgraded realm-core from 12.13.0 to 13.4.0 + +10.34.1 Release notes (2023-01-20) +============================================================= + +### Fixed + +* Add some missing `@preconcurrency` annotations which lead to build failures + with Xcode 14.0 when importing via SPM or CocoaPods + ([#8104](https://github.com/realm/realm-swift/issues/8104), since v10.34.0). + +### Compatibility + +* Realm Studio: 11.0.0 - 12.0.0. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.2. +* CocoaPods: 1.10 or later. +* Xcode: 13.3-14.2. + +10.34.0 Release notes (2023-01-13) +============================================================= + +Swift 5.5 is no longer supported. Swift 5.6 (Xcode 13.3) is now the minimum +supported version. + +The prebuilt binary for Carthage is now build with Xcode 14.2. + +### Enhancements + +* Improve performance of creating Projection objects and of change + notifications on projections ([PR #8050](https://github.com/realm/realm-swift/pull/8050)). +* Allow initialising any sync configuration with `cancelAsyncOpenOnNonFatalErrors`. +* Improve performance of Combine value publishers which do not use the + object/collection changesets a little. +* All public types have been audited for sendability and are now marked as + Sendable when applicable. A few types which were incidentally not thread-safe + but make sense to use from multiple threads are now thread-safe. +* Add support for building Realm with strict concurrency checking enabled. + +### Fixed + +* Fix bad memory access exception that can occur when watching change streams. + [PR #8039](https://github.com/realm/realm-swift/pull/8039). +* Object change notifications on projections only included the first projected + property for each source property ([PR #8050](https://github.com/realm/realm-swift/pull/8050), since v10.21.0). +* `@AutoOpen` failed to open flexible sync Realms while offline + ([#7986](https://github.com/realm/realm-swift/issues/7986), since v10.27.0). +* Fix "Publishing changes from within view updates is not allowed" warnings + when using `@ObservedResults` or `@ObservedSectionedResults` + ([#7908](https://github.com/realm/realm-swift/issues/7908)). +* Fix "Publishing changes from within view updates is not allowed" warnings + when using `@AutoOpen` or `@AsyncOpen`. + ([#7908](https://github.com/realm/realm-swift/issues/7908)). +* Defer `Realm.asyncOpen` execution on `@AsyncOpen` and `@AutoOpen` property + wrappers until all the environment values are set. This will guarantee the + configuration and partition value are set set before opening the realm. + ([#7931](https://github.com/realm/realm-swift/issues/7931), since v10.12.0). +* `@ObservedResults.remove()` could delete the wrong object if a write on a + background thread which changed the index of the object being removed + occurred at a very specific time (since v10.6.0). + +### Compatibility + +* Realm Studio: 11.0.0 - 12.0.0. 13.0.0 is currently incompatible. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.2. +* CocoaPods: 1.10 or later. +* Xcode: 13.3-14.2. + +10.33.0 Release notes (2022-12-01) +============================================================= + +### Enhancements + +* Flexible sync subscription state will change to + `SyncSubscriptionState.pending` (`RLMSyncSubscriptionStatePending`) while + waiting for the server to have sent all pending history after a bootstrap and + before marking a subscription as Complete. + ([#5795](https://github.com/realm/realm-core/pull/5795)) +* Add custom column names API, which allows to set a different column name in the realm + from the one used in your object declaration. + ```swift + class Person: Object { + @Persisted var firstName: String + @Persisted var birthDate: Date + @Persisted var age: Int + + override class public func propertiesMapping() -> [String: String] { + ["firstName": "first_name", + "birthDate": "birth_date"] + } + } + ``` + This is very helpful in cases where you want to name a property differently + from your `Device Sync` JSON schema. + This API is only available for old and modern object declaration syntax on the + `RealmSwift` SDK. +* Flexible sync bootstraps now apply 1MB of changesets per write transaction + rather than applying all of them in a single write transaction. + ([Core PR #5999](https://github.com/realm/realm-core/pull/5999)). + +### Fixed + +* Fix a race condition which could result in "operation cancelled" errors being + delivered to async open callbacks rather than the actual sync error which + caused things to fail ([Core PR #5968](https://github.com/realm/realm-core/pull/5968), since the introduction of async open). +* Fix database corruption issues which could happen if an application was + terminated at a certain point in the process of comitting a write + transaciton. ([Core PR #5993](https://github.com/realm/realm-core/pull/5993), since v10.21.1) +* `@AsyncOpen` and `@AutoOpen` would begin and then cancel a second async open + operation ([PR #8038](https://github.com/realm/realm-swift/pull/8038), since v10.12.0). +* Changing the search text when using the searchable SwiftUI extension would + trigger multiple updates on the View for each change + ([PR #8038](https://github.com/realm/realm-swift/pull/8038), since v10.19.0). +* Changing the filter or search properties of an `@ObservedResults` or + `@ObservedSectionedResults` would trigger up to three updates on the View + ([PR #8038](https://github.com/realm/realm-swift/pull/8038), since v10.6.0). +* Fetching a user's profile while the user logs out would result in an + assertion failure. ([Core PR #6017](https://github.com/realm/realm-core/issues/5571), since v10.8.0) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14.1. + +### Internal + +* Upgraded realm-core from 12.11.0 to 12.13.0 + +10.32.3 Release notes (2022-11-10) +============================================================= + +### Fixed + +* Fix name lookup errors when importing Realm Swift built in library evolution + mode (([#8014](https://github.com/realm/realm-swift/issues/8014)). +* The prebuilt watchOS library in the objective-c release package was missing + an arm64 slice. The Swift release package was uneffected + ([PR #8016](https://github.com/realm/realm-swift/pull/8016)). +* Fix issue where `RLMUserAPIKey.key`/`UserAPIKey.key` incorrectly returned the name of the API + key instead of the key itself. ([#8021](https://github.com/realm/realm-swift/issues/8021), since v10.0.0) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14.1. + +10.32.2 Release notes (2022-11-01) +============================================================= + +Switch to building the Carthage release with Xcode 14.1. + +### Fixed + +* Fix linker errors when building a release build with Xcode 14.1 when + installing via SPM ([#7995](https://github.com/realm/realm-swift/issues/7995)). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14.1. + +10.32.1 Release notes (2022-10-25) +============================================================= + +### Enhancements + +* Improve performance of client reset with automatic recovery and converting + top-level tables into embedded tables ([Core #5897](https://github.com/realm/realm-core/pull/5897)). +* `Realm.Error` is now a typealias for `RLMError` rather than a + manually-defined version of what the automatic bridging produces. This should + have no effect on existing working code, but the manual definition was + missing a few things supplied by the automatic bridging. +* Some sync errors sent by the server include a link to the server-side logs + associated with that error. This link is now exposed in the `serverLogURL` + property on `SyncError` (or `RLMServerLogURLKey` userInfo field when using NSError). + +### Fixed + +* Many sync and app errors were reported using undocumented internal error + codes and/or domains and could not be progammatically handled. Some notable + things which now have public error codes instead of unstable internal ones: + - `Realm.Error.subscriptionFailed`: The server rejected a flexible sync subscription. + - `AppError.invalidPassword`: A login attempt failed due to a bad password. + - `AppError.accountNameInUse`: A registration attempt failed due to the account name being in use. + - `AppError.httpRequestFailed`: A HTTP request to Atlas App Services + completed with an error HTTP code. The failing code is available in the + `httpStatusCode` property. + - Many other less common error codes have been added to `AppError`. + - All sync errors other than `SyncError.clientResetError` reported incorrect + error codes. + (since v10.0.0). +* `UserAPIKey.objectId` was incorrectly bridged to Swift as `RLMObjectId` to + `ObjectId`. This may produce warnings about an unneccesary cast if you were + previously casting it to the correct type (since v10.0.0). +* Fixed an assertion failure when observing change notifications on a sectioned + result, if the first modification was to a linked property that did not cause + the state of the sections to change. + ([Core #5912](https://github.com/realm/realm-core/issues/5912), + since the introduction of sectioned results in v10.29.0) +* Fix a use-after-free if the last external reference to an encrypted + synchronized Realm was closed between when a client reset error was received + and when the download of the new Realm began. + ([Core #5949](https://github.com/realm/realm-core/pull/5949), since 10.28.4). +* Fix an assertion failure during client reset with recovery when recovering + a list operation on an embedded object that has a link column in the path + prefix to the list from the top level object. + ([Core #5957](https://github.com/realm/realm-core/issues/5957), + since introduction of automatic recovery in v10.32.0). +* Creating a write transaction which is rejected by the server due to it + exceeding the maximum transaction size now results in a client reset error + instead of synchronization breaking and becoming stuck forever + ([Core #5209](https://github.com/realm/realm-core/issues/5209), since v10). +* Opening an unencrypted file with an encryption key would sometimes report a + misleading error message that indicated that the problem was something other + than a decryption failure ([Core #5915](https://github.com/realm/realm-core/pull/5915), since 0.89.0). +* Fix a rare deadlock which could occur when closing a synchronized Realm + immediately after committing a write transaction when the sync worker thread + has also just finished processing a changeset from the server + ([Core #5948](https://github.com/realm/realm-core/pull/5948)). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.0.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14.1. + +### Internal + +* Upgraded realm-core from 12.9.0 to 12.11.0. + +10.32.0 Release notes (2022-10-10) +============================================================= + +### Enhancements + +* Add `.recoverUnsyncedChanges` (`RLMClientResetModeRecoverUnsyncedChanges`) and +`.recoverOrDiscardUnsyncedChanges` (`RLMClientResetModeRecoverOrDiscardUnsyncedChanges`) behaviors to `ClientResetMode` (`RLMClientResetMode`). + - The newly added recover modes function by downloading a realm which reflects the latest + state of the server after a client reset. A recovery process is run locally in an + attempt to integrate the server state with any local changes from before the + client reset occurred. + The changes are integrated with the following rules: + 1. Objects created locally that were not synced before client reset, will be integrated. + 2. If an object has been deleted on the server, but was modified on the client, the delete takes precedence and the update is discarded. + 3. If an object was deleted on the client, but not the server, then the client delete instruction is applied. + 4. In the case of conflicting updates to the same field, the client update is applied. + - The client reset process will fallback to `ClientResetMode.discardUnsyncedChanges` if the recovery process fails in `.recoverOrDiscardUnsyncedChanges`. + - The client reset process will fallback to `ClientResetMode.manual` if the recovery process fails in `.recoverUnsyncedChanges`. + - The two new swift recovery modes support client reset callbacks: `.recoverUnsyncedChanges(beforeReset: ((Realm) -> Void)? = nil, afterReset: ((Realm, Realm) -> Void)? = nil)`. + - The two new Obj-C recovery modes support client reset callbacks in `notifyBeforeReset` + and `notifyAfterReset`for both `[RLMUser configurationWithPartitionValue]` and `[RLMUser flexibleSyncConfigurationWithClientResetMode]` + For more detail on client reset callbacks, see `ClientResetMode`, `RLMClientResetBeforeBlock`, + `RLMClientResetAfterBlock`, and the 10.25.0 changelog entry. +* Add two new additional interfaces to define a manual client reset handler: + - Add a manual callback handler to `ClientResetMode.manual` -> `ClientResetMode.manual(ErrorReportingBlock? = nil)`. + - Add the `RLMSyncConfiguration.manualClientResetHandler` property (type `RLMSyncErrorReportingBlock`). + - These error reporting blocks are invoked in the event of a `RLMSyncErrorClientResetError`. + - See `ErrorReportingBlock` (`RLMSyncErrorReportingBlock`), and `ClientResetInfo` for more detail. + - Previously, manual client resets were handled only through the `SyncManager.ErrorHandler`. You have the + option, but not the requirement, to define manual reset handler in these interfaces. + Otherwise, the `SyncManager.ErrorHandler` is still invoked during the manual client reset process. + - These new interfaces are only invoked during a `RLMSyncErrorClientResetError`. All other sync errors + are still handled in the `SyncManager.ErrorHandler`. + - See 'Breaking Changes' for information how these interfaces interact with an already existing + `SyncManager.ErrorHandler`. + +### Breaking Changes + +* The default `clientResetMode` (`RLMClientResetMode`) is switched from `.manual` (`RLMClientResetModeManual`) + to `.recoverUnsyncedChanges` (`RLMClientResetModeRecoverUnsyncedChanges`). + - If you are currently using `.manual` and continue to do so, the only change + you must explicitly make is designating manual mode in + your `Realm.Configuration.SyncConfiguration`s, since they will now default to `.recoverUnsyncedChanges`. + - You may choose to define your manual client reset handler in the newly + introduced `manual(ErrorReportingBlock? = nil)` + or `RLMSyncConfiguration.manualClientResetHandler`, but this is not required. + The `SyncManager.errorHandler` will still be invoked during a client reset if + no callback is passed into these new interfaces. + +### Deprecations + +* `ClientResetMode.discardLocal` is deprecated in favor of `ClientResetMode.discardUnsyncedChanges`. + The reasoning is that the name better reflects the effect of this reset mode. There is no actual + difference in behavior. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.0.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14.1. + +10.31.0 Release notes (2022-10-05) +============================================================= + +The prebuilt binary for Carthage is now build with Xcode 14.0.1. + +### Enhancements + +* Cut the runtime of aggregate operations on large dictionaries in half + ([Core #5864](https://github.com/realm/realm-core/pull/5864)). +* Improve performance of aggregate operations on collections of objects by 2x + to 10x ([Core #5864](https://github.com/realm/realm-core/pull/5864)). + Greatly improve the performance of sorting or distincting a Dictionary's keys + or values. The most expensive operation is now performed O(log N) rather than + O(N log N) times, and large Dictionaries can see upwards of 99% reduction in + time to sort. ([Core #5166](https://github.com/realm/realm-core/pulls/5166)) +* Add support for changing the deployment location for Atlas Apps. Previously + this was assumed to be immutable ([Core #5648](https://github.com/realm/realm-core/issues/5648)). +* The sync client will now yield the write lock to other threads which are + waiting to perform a write transaction even if it still has remaining work to + do, rather than always applying all changesets received from the server even + when other threads are trying to write. ([Core #5844](https://github.com/realm/realm-core/pull/5844)). +* The sync client no longer writes an unused temporary copy of the changesets + received from the server to the Realm file ([Core #5844](https://github.com/realm/realm-core/pull/5844)). + +### Fixed + +* Setting a `List` property with `Results` no longer throws an unrecognized + selector exception (since 10.8.0-beta.2) +* `RLMProgressNotificationToken` and `ProgressNotificationToken` now hold a + strong reference to the sync session, keeping it alive until the token is + deallocated or invalidated, as the other notification tokens do. + ([#7831](https://github.com/realm/realm-swift/issues/7831), since v2.3.0). +* Results permitted some nonsensical aggregate operations on column types which + do not make sense to aggregate, giving garbage results rather than reporting + an error ([Core #5876](https://github.com/realm/realm-core/pull/5876), since v5.0.0). +* Upserting a document in a Mongo collection would crash if the document's id + type was anything other than ObjectId (since v10.0.0). +* Fix a use-after-free when a sync session is closed and the app is destroyed + at the same time ([Core #5752](https://github.com/realm/realm-core/issues/5752), + since v10.19.0). + +### Deprecations + +* `RLMUpdateResult.objectId` has been deprecated in favor of + `RLMUpdateResult.documentId` to support reporting document ids which are not + object ids. +### Breaking Changes +* Private API `_realmColumnNames` has been renamed to a new public API + called `propertiesMapping()`. This change only affects the Swift API + and doesn't have any effects in the obj-c API. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 14.0.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14.1. + +### Internal + +* Upgraded realm-core from 12.7.0 to 12.9.0 + +10.30.0 Release notes (2022-09-20) +============================================================= + +### Fixed + +* Incoming links from `RealmAny` properties were not handled correctly when + migrating an object type from top-level to embedded. `RealmAny` properties + currently cannot link to embedded objects. + ([Core #5796](https://github.com/realm/realm-core/pull/5796), since 10.8.0). +* `Realm.refresh()` sometimes did not actually advance to the latest version. + It attempted to be semi-non-blocking in a very confusing way which resulted + in it sometimes advancing to a newer version that is not the latest version, + and sometimes blocking until notifiers are ready so that it could advance to + the latest version. This behavior was undocumented and didn't work correctly, + so it now always blocks if needed to advance to the latest version. + ([#7625](https://github.com/realm/realm-swift/issues/7625), since v0.98.0). +* Fix the most common cause of thread priority inversions when performing + writes on the main thread. If beginning the write transaction has to wait for + the background notification calculations to complete, that wait is now done + in a QoS-aware way. ([#7902](https://github.com/realm/realm-swift/issues/7902)) +* Subscribing to link properties in a flexible sync Realm did not work due to a + mismatch between what the client sent and what the server needed. + ([Core #5409](https://github.com/realm/realm-core/issues/5409)) +* Attempting to use `AsymmetricObject` with partition-based sync now reports a + sensible error much earlier in the process. Asymmetric sync requires using + flexible sync. ([Core #5691](https://github.com/realm/realm-core/issues/5691), since 10.29.0). +* Case-insensitive but diacritic-sensitive queries would crash on 4-byte UTF-8 + characters ([Core #5825](https://github.com/realm/realm-core/issues/5825), since v2.2.0) +* Accented characters are now handled by case-insensitive but + diacritic-sensitive queries. ([Core #5825](https://github.com/realm/realm-core/issues/5825), since v2.2.0) + +### Breaking Changes + +* `-[RLMASLoginDelegate authenticationDidCompleteWithError:]` has been renamed + to `-[RLMASLoginDelegate authenticationDidFailWithError:]` to comply with new + app store requirements. This only effects the obj-c API. + ([#7945](https://github.com/realm/realm-swift/issues/7945)) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1 - 14. + +### Internal + +* Upgraded realm-core from 12.6.0 to 12.7.0 + +10.29.0 Release notes (2022-09-09) +============================================================= + +### Enhancements + +* Add support for asymmetric sync. When a class inherits from + `AsymmetricObject`, objects created are synced unidirectionally to the server + and cannot be queried or read locally. + +```swift + class PersonObject: AsymmetricObject { + @Persisted(primaryKey: true) var _id: ObjectId + @Persisted var name: String + @Persisted var age: Int + } + + try realm.write { + // This will create the object on the server but not locally. + realm.create(PersonObject.self, value: ["_id": ObjectId.generate(), + "name": "Dylan", + "age": 20]) + } +``` +* Add ability to section a collection which conforms to `RealmCollection`, `RLMCollection`. + Collections can be sectioned by a unique key retrieved from a keyPath or a callback and will return an instance of `SectionedResults`/`RLMSectionedResults`. + Each section in the collection will be an instance of `ResultsSection`/`RLMSection` which gives access to the elements corresponding to the section key. + `SectionedResults`/`RLMSectionedResults` and `ResultsSection`/`RLMSection` have the ability to be observed. + ```swift + class DemoObject: Object { + @Persisted var title: String + @Persisted var date: Date + var firstLetter: String { + return title.first.map(String.init(_:)) ?? "" + } + } + var sectionedResults: SectionedResults + // ... + sectionedResults = realm.objects(DemoObject.self) + .sectioned(by: \.firstLetter, ascending: true) + ``` +* Add `@ObservedSectionedResults` for SwiftUI support. This property wrapper type retrieves sectioned results + from a Realm using a keyPath or callback to determine the section key. + ```swift + struct DemoView: View { + @ObservedSectionedResults(DemoObject.self, + sectionKeyPath: \.firstLetter) var demoObjects + + var body: some View { + VStack { + List { + ForEach(demoObjects) { section in + Section(header: Text(section.key)) { + ForEach(section) { object in + MyRowView(object: object) + } + } + } + } + } + } + } + ``` +* Add automatic handing for changing top-level objects to embedded objects in + migrations. Any objects of the now-embedded type which have zero incoming + links are deleted, and objects with multiple incoming links are duplicated. + This happens after the migration callback function completes, so there is no + functional change if you already have migration logic which correctly handles + this. ([Core #5737](https://github.com/realm/realm-core/pull/5737)). +* Improve performance when a new Realm file connects to the server for the + first time, especially when significant amounts of data has been written + while offline. ([Core #5772](https://github.com/realm/realm-core/pull/5772)) +* Shift more of the work done on the sync worker thread out of the write + transaction used to apply server changes, reducing how long it blocks other + threads from writing. ([Core #5772](https://github.com/realm/realm-core/pull/5772)) +* Improve the performance of the sync changeset parser, which speeds up + applying changesets from the server. ([Core #5772](https://github.com/realm/realm-core/pull/5772)) + +### Fixed + +* Fix all of the UBSan failures hit by our tests. It is unclear if any of these + manifested as visible bugs. ([Core #5665](https://github.com/realm/realm-core/pull/5665)) +* Upload completion callbacks were sometimes called before the final step of + interally marking the upload as complete, which could result in calling + `Realm.writeCopy()` from the completion callback failing due to there being + unuploaded changes. ([Core #4865](https://github.com/realm/realm-core/issues/4865)). +* Writing to a Realm stored on an exFAT drive threw the exception "fcntl() with + F_BARRIERFSYNC failed: Inappropriate ioctl for device" when a write + transaction needed to expand the file. + ([Core #5789](https://github.com/realm/realm-core/issues/5789), since 10.27.0) +* Syncing a Decimal128 with big significand could result in a crash. + ([Core #5728](https://github.com/realm/realm-core/issues/5728)) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14 RC. + +### Internal + +* Upgraded realm-core from 12.5.1 to 12.6.0 + +10.28.7 Release notes (2022-09-02) +============================================================= + +### Enhancements + +* Add prebuilt binaries for Xcode 14 to the release package. + +### Fixed + +* Fix archiving watchOS release builds with Xcode 14. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14 beta 6. + +10.28.6 Release notes (2022-08-19) +============================================================= + +### Fixed + +* Fixed an issue where having realm-swift as SPM sub-target dependency leads to + missing symbols error during iOS archiving ([Core #7645](https://github.com/realm/realm-core/pull/7645)). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14 beta 5. + +### Internal + +* Upgraded realm-core from 12.5.0 to 12.5.1 + +10.28.5 Release notes (2022-08-09) +============================================================= + +### Enhancements + +* Improve performance of accessing `SubscriptionSet` properties when no writes + have been made to the Realm since the last access. + +### Fixed + +* A use-after-free could occur if a Realm with audit events enabled was + destroyed while processing an upload completion for the events Realm on a + different thread. ([Core PR #5714](https://github.com/realm/realm-core/pull/5714)) +* Opening a read-only synchronized Realm for the first time via asyncOpen did + not set the schema version, which could lead to `m_schema_version != + ObjectStore::NotVersioned` assertion failures later on. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14 beta 4. + +### Internal + +* Upgraded realm-core from 12.4.0 to 12.5.0 + +10.28.4 Release notes (2022-08-03) +============================================================= + +### Enhancements + +* Add support for building arm64 watchOS when installing Realm via CocoaPods. +* Reduce the amount of virtual address space used + ([Core #5645](https://github.com/realm/realm-core/pull/5645)). + +### Fixed + +* Fix some warnings when building with Xcode 14 + ([Core #5577](https://github.com/realm/realm-core/pull/5577)). +* Fix compilation failures on watchOS platforms which do not support thread-local storage. + ([#7694](https://github.com/realm/realm-swift/issues/7694), [#7695](https://github.com/realm/realm-swift/issues/7695) since v10.21.1) +* Fix a data race when committing a transaction while multiple threads are + waiting to begin write transactions. This appears to not have caused any + functional problems. +* Fix a data race when writing audit events which could occur if the sync + client thread was busy with other work when the event Realm was opened. +* Fix some cases of running out of virtual address space (seen/reported as mmap + failures) ([Core #5645](https://github.com/realm/realm-core/pull/5645)). +* Audit event scopes containing only write events and no read events would + occasionally throw a `BadVersion` exception when a write transaction was + committed (since v10.26.0). +* The client reset callbacks for the DiscardLocal mode would be passed invalid + Realm instances if the callback was invoked at a point where the Realm was + not otherwise open. ([Core #5654](https://github.com/realm/realm-core/pull/5654), since the introduction of DiscardLocal reset mode in v10.25.0) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14 beta 4. + +### Internal + +* Upgraded realm-core from 12.3.0 to 12.4.0. + +10.28.3 Release notes (2022-07-27) +============================================================= + +### Enhancements + +* Greatly improve the performance of obtaining cached Realm instances in Swift + when using a sync configuration. + +### Fixed + +* Add missing `initialSubscription` and `rerunOnOpen` to copyWithZone method on + `RLMRealmConfiguration`. This resulted in incorrect values when using + `RLMRealmConfiguration.defaultConfiguration`. +* The sync error handler did not hold a strong reference to the sync session + while dispatching the error from the worker thread to the main thread, + resulting in the session passed to the error handler being invalid if there + were no other remaining strong references elsewhere. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14 beta 3. + +10.28.2 Release notes (2022-06-30) +============================================================= + +### Fixed + +* Using `seedFilePath` threw an exception if the Realm file being opened + already existed ([#7840](https://github.com/realm/realm-swift/issues/7840), + since v10.26.0). +* The `intialSubscriptions` callback was invoked every time a Realm was opened + regardless of the value of `rerunOnOpen` and if the Realm was already open on + another thread (since v10.28.0). +* Allow using `RLMSupport.Swift` from RealmSwift's Cocoapods + ([#6886](https://github.com/realm/realm-swift/pull/6886)). +* Fix a UBSan failure when mapping encrypted pages. Fixing this did not change + the resulting assembly, so there were probably no functional problems + resulting from this (since v5.0.0). +* Improved performance of sync clients during integration of changesets with + many small strings (totalling > 1024 bytes per changeset) on iOS 14, and + devices which have restrictive or fragmented memory. + ([Core #5614](https://github.com/realm/realm-core/issues/5614)) +* Fix a data race when opening a flexible sync Realm (since v10.28.0). +* Add a missing backlink removal when assigning null or a non-link value to an + `AnyRealmValue` property which previously linked to an object. + This could have resulted in "key not found" exceptions or assertion failures + such as `mixed.hpp:165: [realm-core-12.1.0] Assertion failed: m_type` when + removing the destination link object. + ([Core #5574](https://github.com/realm/realm-core/pull/5573), since the introduction of AnyRealmValue in v10.8.0) + +### Compatibility + +* Realm Studio: 12.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14 beta 2. + +### Internal + +* Upgraded realm-core from 12.1.0 to 12.3.0. + +10.28.1 Release notes (2022-06-10) +============================================================= + +### Enhancements + +* Add support for Xcode 14. When building with Xcode 14, the minimum deployment + target is now iOS 11. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4.1. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-14 beta 1. + +10.28.0 Release notes (2022-06-03) +============================================================= + +### Enhancements + +* Replace mentions of 'MongoDB Realm' with 'Atlas App Services' in the documentation and update appropriate links to documentation. +* Allow adding a subscription querying for all documents of a type in swift for flexible sync. +``` + try await subscriptions.update { + subscriptions.append(QuerySubscription(name: "all_people")) + } +``` +* Add Combine API support for flexible sync beta. +* Add an `initialSubscriptions` parameter when retrieving the flexible sync configuration from a user, + which allows to specify a subscription update block, to bootstrap a set of flexible sync subscriptions + when the Realm is first opened. + There is an additional optional parameter flag `rerunOnOpen`, which allows to run this initial + subscriptions on every app startup. + +```swift + let config = user.flexibleSyncConfiguration(initialSubscriptions: { subs in + subs.append(QuerySubscription(name: "people_10") { + $0.age > 10 + }) + }, rerunOnOpen: true) + let realm = try Realm(configuration: config) +``` +* The sync client error handler will report an error, with detailed info about which object caused it, when writing an object to a flexible sync Realm outside of any query subscription. ([#5528](https://github.com/realm/realm-core/pull/5528)) +* Adding an object to a flexible sync Realm for a type that is not within a query subscription will now throw an exception. ([#5488](https://github.com/realm/realm-core/pull/5488)). + +### Fixed + +* Flexible Sync query subscriptions will correctly complete when data is synced to the local Realm. ([#5553](https://github.com/realm/realm-core/pull/5553), since v12.0.0) + +### Breaking Changes + +* Rename `SyncSubscriptionSet.write` to `SyncSubscriptionSet.update` to avoid confusion with `Realm.write`. +* Rename `SyncSubscription.update` to `SyncSubscription.updateQuery` to avoid confusion with `SyncSubscriptionSet.update`. +* Rename `RLMSyncSubscriptionSet.write` to `RLMSyncSubscriptionSet.update` to align it with swift API. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-13.4. + +### Internal + +* Upgraded realm-core from 12.0.0 to 12.1.0. + +10.27.0 Release notes (2022-05-26) +============================================================= + +### Enhancements + +* `@AsyncOpen`/`@AutoOpen` property wrappers can be used with flexible sync. + +### Fixed + +* When installing via SPM, debug builds could potentially hit an assertion + failure during flexible sync bootstrapping. ([Core #5527](https://github.com/realm/realm-core/pull/5527)) +* Flexible sync now only applies bootstrap data if the entire bootstrap is + received. Previously orphaned objects could result from the read snapshot on + the server changing. ([Core #5331](https://github.com/realm/realm-core/pull/5331)) +* Partially fix a performance regression in write performance introduced in + v10.21.1. v10.21.1 fixed a case where a kernel panic or device's battery + dying at the wrong point in a write transaction could potentially result in a + corrected Realm file, but at the cost of a severe performance hit. This + version adjusts how file synchronization is done to provide the same safety + at a much smaller performance hit. ([#7740](https://github.com/realm/realm-swift/issues/7740)). + +### Compatibility + +* Realm Studio: 11.0.0 or later (but see note below). +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-13.4. + +### Internal + +* Upgraded realm-core from 11.17.0 to 12.0.0. +* Bump the version number for the lockfile used for interprocess + synchronization. This has no effect on persistent data, but means that + versions of Realm which use pre-12.0.0 realm-core cannot open Realm files at + the same time as they are opened by this version. Notably this includes Realm + Studio, and v11.1.2 (the latest at the time of this release) cannot open + Realm files which are simultaneously open in the simulator. + +10.26.0 Release notes (2022-05-19) +============================================================= + +Xcode 13.1 is now the minimum supported version of Xcode, as Apple no longer +allows submitting to the app store with Xcode 12. + +### Enhancements + +* Add Xcode 13.4 binaries to the release package. +* Add Swift API for asynchronous transactions +```swift + try? realm.writeAsync { + realm.create(SwiftStringObject.self, value: ["string"]) + } onComplete: { error in + // optional handling on write complete + } + + try? realm.beginAsyncWrite { + realm.create(SwiftStringObject.self, value: ["string"]) + realm.commitAsyncWrite() + } + + let asyncTransactionId = try? realm.beginAsyncWrite { + // ... + } + try! realm.cancelAsyncWrite(asyncTransactionId) +``` +* Add Obj-C API for asynchronous transactions +``` + [realm asyncTransactionWithBlock:^{ + [StringObject createInRealm:realm withValue:@[@"string"]]; + } onComplete:^(NSError *error) { + // optional handling + }]; + + [realm beginAsyncWriteTransaction:^{ + [StringObject createInRealm:realm withValue:@[@"string"]]; + [realm commitAsyncWriteTransaction]; + }]; + + RLMAsyncTransactionId asyncTransactionId = [realm beginAsyncWriteTransaction:^{ + // ... + }]; + [realm cancelAsyncTransaction:asyncTransactionId]; +``` +* Improve performance of opening a Realm with `objectClasses`/`objectTypes` set + in the configuration. +* Implement the Realm event recording API for reporting reads and writes on a + Realm file to Atlas. + +### Fixed + +* Lower minimum OS version for `async` login and FunctionCallables to match the + rest of the `async` functions. ([#7791]https://github.com/realm/realm-swift/issues/7791) +* Consuming a RealmSwift XCFramework with library evolution enabled would give the error + `'Failed to build module 'RealmSwift'; this SDK is not supported by the compiler'` + when the XCFramework was built with an older XCode version and is + then consumed with a later version. ([#7313](https://github.com/realm/realm-swift/issues/7313), since v3.18.0) +* A data race would occur when opening a synchronized Realm with the client + reset mode set to `discardLocal` on one thread at the same time as a client + reset was being processed on another thread. This probably did not cause any + functional problems in practice and the broken timing window was very tight (since 10.25.0). +* If an async open of a Realm triggered a client reset, the callbacks for + `discardLocal` could theoretically fail to be called due to a race condition. + The timing for this was probably not possible to hit in practice (since 10.25.0). +* Calling `[RLMRealm freeze]`/`Realm.freeze` on a Realm which had been created from `writeCopy` + would not produce a frozen Realm. ([#7697](https://github.com/realm/realm-swift/issues/7697), since v5.0.0) +* Using the dynamic subscript API on unmanaged objects before first opening a + Realm or if `objectTypes` was set when opening a Realm would throw an + exception ([#7786](https://github.com/realm/realm-swift/issues/7786)). +* The sync client may have sent a corrupted upload cursor leading to a fatal + error from the server due to an uninitialized variable. + ([#5460](https://github.com/realm/realm-core/pull/5460), since v10.25.1) +* Flexible sync would not correctly resume syncing if a bootstrap was interrupted + ([#5466](https://github.com/realm/realm-core/pull/5466), since v10.21.1). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.4. +* CocoaPods: 1.10 or later. +* Xcode: 13.1-13.4. + +### Internal + +* Upgraded realm-core from v11.15.0 to v11.17.0 + +10.25.2 Release notes (2022-04-27) +============================================================= + +### Enhancements + +* Replace Xcode 13.3 binaries with 13.3.1 binaries. + +### Fixed + +* `List` would contain an invalidated object instead of null when + the object linked to was deleted by a difference sync client + ([Core #5215](https://github.com/realm/realm-core/pull/5215), since v10.8.0). +* Adding an object to a Set, deleting the parent object of the Set, and then + deleting the object which was added to the Set would crash + ([Core #5387](https://github.com/realm/realm-core/issues/5387), since v10.8.0). +* Synchronized Realm files which were first created using v10.0.0-beta.3 would + be redownloaded instead of using the existing file, possibly resulting in the + loss of any unsynchronized data in those files (since v10.20.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.3.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.3.1. + +### Internal + +* Upgraded realm-core from v11.14.0 to v11.15.0 + +10.25.1 Release notes (2022-04-11) +============================================================= + +### Fixed + +* Fixed various memory corruption bugs when encryption is used caused by not + locking a mutex when needed. + ([#7640](https://github.com/realm/realm-swift/issues/7640), [#7659](https://github.com/realm/realm-swift/issues/7659), since v10.21.1) +* Changeset upload batching did not calculate the accumulated size correctly, + resulting in “error reading body failed to read: read limited at 16777217 + bytes” errors from the server when writing large amounts of data + ([Core #5373](https://github.com/realm/realm-core/pull/5373), since 10.25.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.3. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.3. + +### Internal + +* Upgraded realm-core from v11.13.0 to v11.14.0. + +10.25.0 Release notes (2022-03-29) +============================================================= + +Synchronized Realm files written by this version cannot be opened by older +versions of Realm. Existing files will be automatically upgraded when opened. + +Non-synchronized Realm files remain backwards-compatible. + +### Enhancements + +* Add ability to use Swift Query syntax in `@ObservedResults`, which allows you + to filter results using the `where` parameter. +* Add ability to use `MutableSet` with `StateRealmObject` in SwiftUI. +* Async/Await extensions are now compatible with iOS 13 and above when building + with Xcode 13.3. +* Sync changesets waiting to be uploaded to the server are now compressed, + reducing the disk space needed when large write transactions are performed + while offline or limited in bandwidth.([Core #5260](https://github.com/realm/realm-core/pull/5260)). +* Added new `SyncConfiguration.clientResetMode` and `RLMSyncConfiguration.clientResetMode` properties. + - The values of these properties will dictate client behavior in the event of a [client reset](https://docs.mongodb.com/realm/sync/error-handling/client-resets/). + - See below for information on `ClientResetMode` values. + - `clientResetMode` defaults to `.manual` if not set otherwise. +* Added new `ClientResetMode` and `RLMClientResetMode` enums. + - These enums represent possible client reset behavior for `SyncConfiguration.clientResetMode` and `RLMSyncConfiguration.clientResetMode`, respectively. + - `.manual` and `RLMClientResetModeManual` + - The local copy of the Realm is copied into a recovery + directory for safekeeping, and then deleted from the original location. The next time + the Realm for that partition value is opened, the Realm will automatically be re-downloaded from + MongoDB Realm, and can be used as normal. + - Data written to the Realm after the local copy of the Realm diverged from the backup + remote copy will be present in the local recovery copy of the Realm file. The + re-downloaded Realm will initially contain only the data present at the time the Realm + was backed up on the server. + - `rlmSync_clientResetBackedUpRealmPath` and `SyncError.clientResetInfo()` are used for accessing the recovery directory. + - `.discardLocal` and `RLMClientResetDiscardLocal` + - All unsynchronized local changes are automatically discarded and the local state is + automatically reverted to the most recent state from the server. Unsynchronized changes + can then be recovered in a post-client-reset callback block (See changelog below for more details). + - If RLMClientResetModeDiscardLocal is enabled but the client reset operation is unable to complete + then the client reset process reverts to manual mode. + - The realm's underlying object accessors remain bound so the UI may be updated in a non-disruptive way. +* Added support for client reset notification blocks for `.discardLocal` and `RLMClientResetDiscardLocal` + - **RealmSwift implementation**: `discardLocal(((Realm) -> Void)? = nil, ((Realm, Realm) -> Void)? = nil)` + - RealmSwift client reset blocks are set when initializing the user configuration + ```swift + var configuration = user.configuration(partitionValue: "myPartition", clientResetMode: .discardLocal(beforeClientResetBlock, afterClientResetBlock)) + ``` + - The before client reset block -- `((Realm) -> Void)? = nil` -- is executed prior to a client reset. Possible usage includes: + ```swift + let beforeClientResetBlock: (Realm) -> Void = { beforeRealm in + var recoveryConfig = Realm.Configuration() + recoveryConfig.fileURL = myRecoveryPath + do { + beforeRealm.writeCopy(configuration: recoveryConfig) + /* The copied realm could be used later for recovery, debugging, reporting, etc. */ + } catch { + /* handle error */ + } + } + ``` + - The after client reset block -- `((Realm, Realm) -> Void)? = nil)` -- is executed after a client reset. Possible usage includes: + ```Swift + let afterClientResetBlock: (Realm, Realm) -> Void = { before, after in + /* This block could be used to add custom recovery logic, back-up a realm file, send reporting, etc. */ + for object in before.objects(myClass.self) { + let res = after.objects(myClass.self) + if (res.filter("primaryKey == %@", object.primaryKey).first != nil) { + /* ...custom recovery logic... */ + } else { + /* ...custom recovery logic... */ + } + } + ``` + - **Realm Obj-c implementation**: Both before and after client reset callbacks exist as properties on `RLMSyncConfiguration` and are set at initialization. + ```objective-c + RLMRealmConfiguration *config = [user configurationWithPartitionValue:partitionValue + clientResetMode:RLMClientResetModeDiscardLocal + notifyBeforeReset:beforeBlock + notifyAfterReset:afterBlock]; + ``` + where `beforeBlock` is of type `RLMClientResetBeforeBlock`. And `afterBlock` is of type `RLMClientResetAfterBlock`. + +### Breaking Changes + +* Xcode 13.2 is no longer supported when building with Async/Await functions. Use + Xcode 13.3 to build with Async/Await functionality. + +### Fixed + +* Adding a Realm Object to a `ObservedResults` or a collections using + `StateRealmObject` that is managed by the same Realm would throw if the + Object was frozen and not thawed before hand. +* Setting a Realm Configuration for @ObservedResults using it's initializer + would be overrode by the Realm Configuration stored in + `.environment(\.realmConfiguration, ...)` if they did not match + ([Cocoa #7463](https://github.com/realm/realm-swift/issues/7463), since v10.6.0). +* Fix searchable component filter overriding the initial filter on `@ObservedResults`, (since v10.23.0). +* Comparing `Results`, `LinkingObjects` or `AnyRealmCollection` when using Realm via XCFramework + would result in compile time errors ([Cocoa #7615](https://github.com/realm/realm-swift/issues/7615), since v10.21.0) +* Opening an encrypted Realm while the keychain is locked on macOS would crash + ([#7438](https://github.com/realm/realm-swift/issues/7438)). +* Updating subscriptions while refreshing the access token would crash + ([Core #5343](https://github.com/realm/realm-core/issues/5343), since v10.22.0) +* Fix several race conditions in `SyncSession` related to setting + `customRequestHeaders` while using the `SyncSession` on a different thread. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.3. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.3. + +### Internal + +* Upgraded realm-core from v11.12.0 to v11.13.0 + +10.24.2 Release notes (2022-03-18) +============================================================= + +### Fixed + +* Application would sometimes crash with exceptions like 'KeyNotFound' or + assertion "has_refs()". Other issues indicating file corruption may also be + fixed by this. The one mentioned here is the one that lead to solving the + problem. + ([Core #5283](https://github.com/realm/realm-core/issues/5283), since v5.0.0) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.3. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.3. + +### Internal + +* Upgraded realm-core from 11.11.0 to 11.12.0 + +10.24.1 Release notes (2022-03-14) +============================================================= + +Switch to building the Carthage binary with Xcode 13.3. This release contains +no functional changes from 10.24.0. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.3. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.3. + +10.24.0 Release notes (2022-03-05) +============================================================= + +### Enhancements + +* Add ability to use Swift Query syntax in `@ObservedResults`, which allows you + to filter results using the `where` parameter. + +### Fixed + +* If a list of objects contains links to objects not included in the + synchronized partition, collection change notifications for that list could + be incorrect ([Core #5164](https://github.com/realm/realm-core/issues/5164), since v10.0.0). +* Adding a new flexible sync subscription could crash with + "Assertion failed: !m_unbind_message_sent" in very specific timing scenarios + ([Core #5149](https://github.com/realm/realm-core/pull/5149), since v10.22.0). +* Converting floats/doubles into Decimal128 would yield imprecise results + ([Core #5184](https://github.com/realm/realm-core/pull/5184), since v10.0.0) +* Using accented characters in class and field names in a synchronized Realm + could result in sync errors ([Core #5196](https://github.com/realm/realm-core/pull/5196), since v10.0.0). +* Calling `Realm.invalidate()` from inside a Realm change notification could + result in the write transaction which produced the notification not being + persisted to disk (since v10.22.0). +* When a client reset error which results in the current Realm file being + backed up and then deleted, deletion errors were ignored as long as the copy + succeeded. When this happens the deletion of the old file is now scheduled + for the next launch of the app. ([Core #5180](https://github.com/realm/realm-core/issues/5180), since v2.0.0) +* Fix an error when compiling a watchOS Simulator target not supporting + Thread-local storage ([#7623](https://github.com/realm/realm-swift/issues/7623), since v10.21.0). +* Add a validation check to report a sensible error if a Realm configuration + indicates that an in-memory Realm should be encrypted. ([Core #5195](https://github.com/realm/realm-core/issues/5195)) +* The Swift package set the linker flags on the wrong target, resulting in + linker errors when SPM decides to build the core library as a dynamic library + ([#7266](https://github.com/realm/realm-swift/issues/7266)). +* The download-core task failed if run in an environment without TMPDIR set + ([#7688](https://github.com/realm/realm-swift/issues/7688), since v10.23.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.2.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.3 beta 3. + +### Internal + +* Upgraded realm-core from 11.9.0 to 11.11.0 + +10.23.0 Release notes (2022-02-28) +============================================================= + +### Enhancements + +* Add `Realm.writeCopy(configuration:)`/`[RLMRealm writeCopyForConfiguration:]` which gives the + following functionality: + - Export a local non-sync Realm to be used with MongoDB Realm Sync + when the configuration is derived from a sync `RLMUser`/`User`. + - Write a copy of a local Realm to a destination specified in the configuration. + - Write a copy of a synced Realm in use with user A, and open it with user B. + - Note that migrations may be required when using a local realm configuration to open a realm file that + was copied from a synchronized realm. + + An exception will be thrown if a Realm exists at the destination. +* Add a `seedFilePath` option to `RLMRealmConfiguration` and `Configuration`. If this + option is set then instead of creating an empty Realm, the realm at the `seedFilePath` will + be copied to the `fileURL` of the new Realm. If a Realm file already exists at the + desitnation path, the seed file will not be copied and the already existing Realm + will be opened instead. Note that to use this parameter with a synced Realm configuration + the seed Realm must be appropriately copied to a destination with + `Realm.writeCopy(configuration:)`/`[RLMRealm writeCopyForConfiguration:]` first. +* Add ability to permanently delete a User from a MongoDB Realm app. This can + be invoked with `User.delete()`/`[RLMUser deleteWithCompletion:]`. +* Add `NSCopying` conformance to `RLMDecimal128` and `RLMObjectId`. +* Add Xcode 13.3 binaries to the release package (and remove 13.0). + +### Fixed + +* Add support of arm64 in Carthage build ([#7154](https://github.com/realm/realm-cocoa/issues/7154) +* Adding missing support for `IN` queries to primitives types on Type Safe Queries. + ```swift + let persons = realm.objects(Person.self).where { + let acceptableNames = ["Tom", "James", "Tyler"] + $0.name.in([acceptableNames]) + } + ``` + ([Cocoa #7633](https://github.com/realm/realm-swift/issues/7633), since v10.19.0) +* Work around a compiler crash when building with Swift 5.6 / Xcode 13.3. + CustomPersistable's PersistedType must now always be a built-in type rather + than possibly another CustomPersistable type as Swift 5.6 has removed support + for infinitely-recursive associated types ([#7654](https://github.com/realm/realm-swift/issues/7654)). +* Fix redundant call to filter on `@ObservedResults` from `searchable` + component (since v10.19.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.2.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.3 beta 3. + +10.22.0 Release notes (2022-01-25) +============================================================= + +### Enhancements + +* Add beta support for flexible sync. See the [backend](https://docs.mongodb.com/realm/sync/data-access-patterns/flexible-sync/) and [SDK](https://docs.mongodb.com/realm/sdk/swift/examples/flexible-sync/) documentation for more information. Please report any issues with the beta through Github. + +### Fixed + +* UserIdentity metadata table grows indefinitely. ([#5152](https://github.com/realm/realm-core/issues/5152), since v10.20.0) +* We now report a useful error message when opening a sync Realm in non-sync mode or vice-versa.([#5161](https://github.com/realm/realm-core/pull/5161), since v5.0.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.2.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.2.1. + +### Internal + +* Upgraded realm-core from 11.8.0 to 11.9.0 + +10.21.1 Release notes (2022-01-12) +============================================================= + +### Fixed + +* The sync client will now drain the receive queue when a send fails with + ECONNRESET, ensuring that any error message from the server gets received and + processed. ([#5078](https://github.com/realm/realm-core/pull/5078)) +* Schema validation was missing for embedded objects in sets, resulting in an + unhelpful error being thrown if a Realm object subclass contained one (since v10.0.0). +* Opening a Realm with a schema that has an orphaned embedded object type + performed an extra empty write transaction (since v10.0.0). +* Freezing a Realm with a schema that has orphaned embedded object types threw + a "Wrong transactional state" exception (since v10.19.0). +* `@sum` and `@avg` queries on Dictionaries of floats or doubles used too much + precision for intermediates, resulting in incorrect rounding (since v10.5.0). +* Change the exception message for calling refresh on an immutable Realm from + "Continuous transaction through DB object without history information." to + "Can't refresh a read-only Realm." + ([#5061](https://github.com/realm/realm-core/issues/5061), since v10.8.0). +* Queries of the form "link.collection.@sum = 0" where `link` is null matched + when `collection` was a List or Set, but not a Dictionary + ([#5080](https://github.com/realm/realm-core/pull/5080), since v10.8.0). +* Types which require custom obj-c bridging (such as `PersistableEnum` or + `CustomPersistable`) would crash with exceptions mentioning `__SwiftValue` in + a variety of places on iOS versions older than iOS 14 + ([#7604](https://github.com/realm/realm-swift/issues/7604), since v10.21.0) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.2.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.2.1. + +### Internal + +* Upgraded realm-core from 11.6.1 to 11.8.0. + +10.21.0 Release notes (2022-01-10) +============================================================= + +### Enhancements + +* Add `metadata` property to `RLMUserProfile`/`UserProfile`. +* Add class `Projection` to allow creation of light weight view models out of Realm Objects. +```swift +public class Person: Object { + @Persisted var firstName = "" + @Persisted var lastName = "" + @Persisted var address: Address? = nil + @Persisted var friends = List() +} + +public class Address: EmbeddedObject { + @Persisted var city: String = "" + @Persisted var country = "" +} + +class PersonProjection: Projection { + // `Person.firstName` will have same name and type + @Projected(\Person.firstName) var firstName + // There will be the only String for `city` of the original object `Address` + @Projected(\Person.address.city) var homeCity + // List will be mapped to list of firstNames + @Projected(\Person.friends.projectTo.firstName) var firstFriendsName: ProjectedCollection +} + +// `people` will contain projections for every `Person` object in the `realm` +let people: Results = realm.objects(PersonProjection.self) +``` +* Greatly improve performance of reading AnyRealmValue and enum types from + Realm collections. +* Allow using Swift enums which conform to `PersistableEnum` as the value type + for all Realm collections. +* `AnyRealmCollection` now conforms to `Encodable`. +* AnyRealmValue and PersistableEnum values can now be passed directly to an + NSPredicate used in a filter() call rather than having to pass the rawValue + (the rawValue is still allowed). +* Queries on collections of PersistableEnums can now be performed with `where()`. +* Add support for querying on the rawValue of an enum with `where()`. +* `.count` is supported for Maps of all types rather than just numeric types in `where()`. +* Add support for querying on the properties of objects contained in + dictionaries (e.g. "dictProperty.@allValues.name CONTAINS 'a'"). +* Improve the error message for many types of invalid predicates in queries. +* Add support for comparing `@allKeys` to another property on the same object. +* Add `Numeric` conformance to `Decimal128`. +* Make some invalid property declarations such as `List` a + compile-time error instead of a runtime error. +* Calling `.sorted(byKeyPath:)` on a collection with an Element type which does + not support sorting by keypaths is now a compile-time error instead of a + runtime error. +* `RealmCollection.sorted(ascending:)` can now be called on all + non-Object/EmbeddedObject collections rather than only ones where the + `Element` conforms to `Comparable`. +* Add support for using user-defined types with `@Persistable` and in Realm + collections by defining a mapping to and from a type which Realm knows how to + store. For example, `URL` can be made persistable with: + ```swift + extension URL: FailableCustomPersistable { + // Store URL values as a String in Realm + public typealias PersistedType = String + // Convert a String to a URL + public init?(persistedValue: String) { self.init(string: persistedValue) } + // Convert a URL to a String + public var persistableValue: String { self.absoluteString } + } + ``` + After doing this, `@Persisted var url: URL` is a valid property declaration + on a Realm object. More advanced mappings can be done by mapping to an + EmbeddedObject which can store multiple values. + +### Fixed + +* Accessing a non object collection inside a migration would cause a crash +* [#5633](https://github.com/realm/realm-cocoa/issues/5633). +* Accessing a `Map` of objects dynamically would not handle nulled values correctly (since v10.8.0). +* `where()` allowed constructing some nonsensical queries due to boolean + comparisons returning `Query` rather than `Query` (since v10.19.0). +* `@allValues` queries on dictionaries accidentally did not require "ANY". +* Case-insensitive and diacritic-insensitive modifiers were ignored when + comparing the result of an aggregate operation to another property in a + query. +* `Object.init(value:)` did not allow initializing `RLMDictionary`/`Map` + properties with null values for map entries (since v10.8.0). +* `@ObservedResults` did not refresh when changes were made to the observed + collection. (since v10.6.0) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.2.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.2.1. + +10.20.1 Release notes (2021-12-14) +============================================================= + +Xcode 12.4 is now the minimum supported version of Xcode. + +### Fixed + +* Add missing `Indexable` support for UUID. + ([Cocoa #7545](https://github.com/realm/realm-swift/issues/7545), since v10.10.0) + +### Breaking Changes + +* All `async` functions now require Xcode 13.2 to work around an App + Store/TestFlight bug that results in apps built with 13.0/13.1 which do not + use libConcurrency but link a library which does crashing on startup. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.2. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.2. + +10.20.0 Release notes (2021-11-16) +============================================================= + +### Enhancements + +* Conform `@ThreadSafe` and `ThreadSafeReference` to `Sendable`. +* Allow using Swift enums which conform to `PersistableEnum` as the value type + for all Realm collections. +* `AnyRealmCollection` now conforms to `Encodable`. +* Greatly improve performance of reading AnyRealmValue and enum types from + Realm collections. +* `AnyRealmCollection` now conforms to `Encodable`. + +### Fixed + +* `@AutoOpen` will open the existing local Realm file on any connection error + rather than only when the connection specifically times out. +* Do not allow `progress` state changes for `@AutoOpen` and `@AsyncOpen` after + changing state to `open(let realm)` or `error(let error)`. +* Logging out a sync user failed to remove the local Realm file for partitions + with very long partition values that would have exceeded the maximum path + length. ([Core #4187](https://github.com/realm/realm-core/issues/4187), since v10.0.0) +* Don't keep trying to refresh the access token if the client's clock is more + than 30 minutes fast. ([Core #4941](https://github.com/realm/realm-core/issues/4941)) +* Failed auth requests used a fixed long sleep rather than exponential backoff + like other sync requests, which could result in very delayed reconnects after + a device was offline long enough for the access token to expire (since v10.0.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.1. + +### Internal + +* Upgraded realm-core from 11.6.0 to 11.6.1. + +10.19.0 Release notes (2021-11-04) +============================================================= + +### Enhancements + +* Add `.searchable()` SwiftUI View Modifier which allows filtering + `@ObservedResult` results from a search field component by a key path. + ```swift + List { + ForEach(reminders) { reminder in + ReminderRowView(reminder: reminder) + } + }.searchable(text: $searchFilter, + collection: $reminders, + keyPath: \.name) { + ForEach(reminders) { remindersFiltered in + Text(remindersFiltered.name).searchCompletion(remindersFiltered.name) + } + } + ``` +* Add an API for a type safe query syntax. This allows you to filter a Realm + and collections managed by a Realm with Swift style expressions. Here is a + brief example: + ```swift + class Person: Object { + @Persisted var name: String + @Persisted var hobbies: MutableSet + @Persisted var pets: List + } + class Pet: Object { + @Persisted var name: String + @Persisted var age: Int + } + + let persons = realm.objects(Person.self).where { + $0.hobbies.contains("music") || $0.hobbies.contains("baseball") + } + + persons = realm.objects(Person.self).where { + ($0.pets.age >= 2) && $0.pets.name.starts(with: "L") + } + ``` + ([#7419](https://github.com/realm/realm-swift/pull/7419)) +* Add support for dictionary subscript expressions + (e.g. `"phoneNumbers['Jane'] == '123-3456-123'"`) when querying with an + NSPredicate. +* Add UserProfile to User. This contains metadata from social logins with MongoDB Realm. +* Slightly reduce the peak memory usage when processing sync changesets. + +### Fixed + +* Change default request timeout for `RLMApp` from 6 seconds to 60 seconds. +* Async `Realm` init would often give a Realm instance which could not actually + be used and would throw incorrect thread exceptions. It now is `@MainActor` + and gives a Realm instance which always works on the main actor. The + non-functional `queue:` parameter has been removed (since v10.15.0). +* Restore the pre-v10.12.0 behavior of calling `writeCopy()` on a synchronized + Realm which produced a local non-synchronized Realm + ([#7513](https://github.com/realm/realm-swift/issues/7513)). +* Decimal128 did not properly normalize the value before hashing and so could + have multiple values which are equal but had different hash values (since v10.8.0). +* Fix a rare assertion failure or deadlock when a sync session is racing to + close at the same time that external reference to the Realm is being + released. ([Core #4931](https://github.com/realm/realm-core/issues/4931)) +* Fix a assertion failure when opening a sync Realm with a user who had been + removed. Instead an exception will be thrown. ([Core #4937](https://github.com/realm/realm-core/issues/4937), since v10.0.0) +* Fixed a rare segfault which could trigger if a user was being logged out + while the access token refresh response comes in. + ([Core #4944](https://github.com/realm/realm-core/issues/4944), since v10.0.0) +* Fixed a bug where progress notifiers on an AsyncOpenTask could be called + after the open completed. ([Core #4919](https://github.com/realm/realm-core/issues/4919)) +* SecureTransport was not enabled for macCatalyst builds when installing via + SPM, resulting in `'SSL/TLS protocol not supported'` exceptions when using + Realm Sync. ([#7474](https://github.com/realm/realm-swift/issues/7474)) +* Users were left in the logged in state when their refresh token expired. + ([Core #4882](https://github.com/realm/realm-core/issues/4882), since v10) +* Calling `.count` on a distinct collection would return the total number of + objects in the collection rather than the distinct count the first time it is + called. ([#7481](https://github.com/realm/realm-swift/issues/7481), since v10.8.0). +* `realm.delete(collection.distinct(...))` would delete all objects in the + collection rather than just the first object with each distinct value in the + property being distincted on, unless the distinct Results were read from at + least once first (since v10.8.0). +* Calling `.distinct()` on a collection, accessing the Results, then passing + the Results to `realm.delete()` would delete the correct objects, but + afterwards report a count of zero even if there were still objects in the + Results (since v10.8.0). +* Download compaction could result in non-streaming sync download notifiers + never reporting completion (since v10.0.0, + [Core #4989](https://github.com/realm/realm-core/pull/4989)). +* Fix a deadlock in SyncManager that was probably not possible to hit in + real-world code (since v10.0.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.4-13.2. + +### Internal + +* Upgraded realm-core from v11.4.1 to v11.6.0 + +10.18.0 Release notes (2021-10-25) +============================================================= + +### Enhancements + +* Add support for using multiple users with `@AsyncOpen` and `@AutoOpen`. + Setting the current user to a new user will now automatically reopen the + Realm with the new user. +* Add prebuilt binary for Xcode 13.1 to the release package. + +### Fixed + +* Fix `@AsyncOpen` and `@AutoOpen` using `defaultConfiguration` by default if + the user's doesn't provide one, will set an incorrect path which doesn't + correspond to the users configuration one. (since v10.12.0) +* Adding missing subscription completion for `AsyncOpenPublisher` after + successfully returning a realm. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.1. + +10.17.0 Release notes (2021-10-06) +============================================================= + +### Enhancements + +* Add a new `@ThreadSafe` property wrapper. Objects and collections wrapped by `@ThreadSafe` may be passed between threads. It's + intended to allow local variables and function parameters to be used across + threads when needed. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.0. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0. + +10.16.0 Release notes (2021-09-29) +============================================================= + +### Enhancements + +* Add `async` versions of `EmailPasswordAuth.callResetPasswordFunction` and +r `User.linkUser` methods. +* Add `async` version of `MongoCollection` methods. +* Add `async` support for user functions. + +### Fixed + +* A race condition in Realm.asyncOpen() sometimes resulted in subsequent writes + from Realm Sync failing to produce notifications + ([#7447](https://github.com/realm/realm-swift/issues/7447), + [#7453](https://github.com/realm/realm-swift/issues/7453), + [Core #4909](https://github.com/realm/realm-core/issues/4909), since v10.15.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.0. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0. + +10.15.1 Release notes (2021-09-15) +============================================================= + +### Enhancements + +* Switch to building the Carthage release with Xcode 13. + +### Fixed + +* Fix compilation error where Swift 5.5 is available but the macOS 12 SDK was + not. This was notable for the Xcode 13 RC. This fix adds a #canImport check + for the `_Concurrency` module that was not available before the macOS 12 SDK. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 13.0. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0. + +10.15.0 Release notes (2021-09-10) +============================================================= + +### Enhancements + +* Add `async` versions of the `Realm.asyncOpen` and `App.login` methods. +* ThreadSafeReference no longer pins the source transaction version for + anything other than a Results created by filtering a collection. This means + that holding on to thread-safe references to other things (such as Objects) + will no longer cause file size growth. +* A ThreadSafeReference to a Results backed by a collection can now be created + inside a write transaction as long as the collection was not created in the + current write transaction. +* Synchronized Realms are no longer opened twice, cutting the address space and + file descriptors used in half. + ([Core #4839](https://github.com/realm/realm-core/pull/4839)) +* When using the SwiftUI helper types (@ObservedRealmObject and friends) to + bind to an Equatable property, self-assignment no longer performs a pointless + write transaction. SwiftUI appears to sometimes call a Binding's set function + multiple times for a single UI action, so this results in significantly fewer + writes being performed. + +### Fixed + +* Adding an unmanaged object to a Realm that was declared with + `@StateRealmObject` would throw the exception `"Cannot add an object with + observers to a Realm"`. +* The `RealmCollectionChange` docs refered to indicies in modifications as the + 'new' collection. This is incorrect and the docs now state that modifications + refer to the previous version of the collection. ([Cocoa #7390](https://github.com/realm/realm-swift/issues/7390)) +* Fix crash in `RLMSyncConfiguration.initWithUser` error mapping when a user is disabled/deleted from MongoDB Realm dashboard. + ([Cocoa #7399](https://github.com/realm/realm-swift/issues/7399), since v10.0.0) +* If the application crashed at the wrong point when logging a user in, the + next run of the application could hit the assertion failure "m_state == + SyncUser::State::LoggedIn" when a synchronized Realm is opened with that + user. ([Core #4875](https://github.com/realm/realm-core/issues/4875), since v10.0.0) +* The `keyPaths:` parameter to `@ObservedResults` did not work (since v10.12.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 5. + +### Internal + +* Upgraded realm-core from 11.3.1 to 11.4.1 + +10.14.0 Release notes (2021-09-03) +============================================================= + +### Enhancements + +* Add additional `observe` methods for Objects and RealmCollections which take + a `PartialKeyPath` type key path parameter. +* The release package once again contains Xcode 13 binaries. +* `PersistableEnum` properties can now be indexed or used as the primary key if + the RawValue is an indexable or primary key type. + +### Fixed + +* `Map` did not conform to `Codable`. + ([Cocoa #7418](https://github.com/realm/realm-swift/pull/7418), since v10.8.0) +* Fixed "Invalid data type" assertion failure in the sync client when the + client recieved an AddColumn instruction from the server for an AnyRealmValue + property when that property already exists locally. ([Core #4873](https://github.com/realm/realm-core/issues/4873), since v10.8.0) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 5. + +### Internal + +* Upgraded realm-core from 11.3.0 to 11.3.1. + +10.13.0 Release notes (2021-08-26) +============================================================= + +### Enhancements + +* Sync logs now contain information about what object/changeset was being applied when the exception was thrown. + ([Core #4836](https://github.com/realm/realm-core/issues/4836)) +* Added ServiceErrorCode for wrong username/password when using '`App.login`. + ([Core #7380](https://github.com/realm/realm-swift/issues/7380) + +### Fixed + +* Fix crash in `MongoCollection.findOneDocument(filter:)` that occurred when no results were + found for a given filter. + ([Cocoa #7380](https://github.com/realm/realm-swift/issues/7380), since v10.0.0) +* Some of the SwiftUI property wrappers incorrectly required objects to conform + to ObjectKeyIdentifiable rather than Identifiable. + ([Cocoa #7372](https://github.com/realm/realm-swift/issues/7372), since v10.6.0) +* Work around Xcode 13 beta 3+ shipping a broken swiftinterface file for Combine on 32-bit iOS. + ([Cocoa #7368](https://github.com/realm/realm-swift/issues/7368)) +* Fixes history corruption when replacing an embedded object in a list. + ([Core #4845](https://github.com/realm/realm-core/issues/4845)), since v10.0.0) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 5. + +### Internal + +* Upgraded realm-core from 11.2.0 to 11.3.0 + +10.12.0 Release notes (2021-08-03) +============================================================= + +### Enhancements + +* `Object.observe()` and `RealmCollection.observe()` now include an optional + `keyPaths` parameter which filters change notifications to those only + occurring on the provided key path or key paths. See method documentation + for extended detail on filtering behavior. +* `ObservedResults` now includes an optional `keyPaths` parameter + which filters change notifications to those only occurring on the provided + key path or key paths. ex) `@ObservedResults(MyObject.self, keyPaths: ["myList.property"])` +* Add two new property wrappers for opening a Realm asynchronously in a + SwiftUI View: + - `AsyncOpen` is a property wrapper that initiates Realm.asyncOpen + for the current user, notifying the view when there is a change in Realm asyncOpen state. + - `AutoOpen` behaves similarly to `AsyncOpen`, but in the case of no internet + connection this will return an opened realm. +* Add `EnvironmentValues.partitionValue`. This value can be injected into any view using one of + our new property wrappers `AsyncOpen` and `AutoOpen`: + `MyView().environment(\.partitionValue, "partitionValue")`. +* Shift more of the work done when first initializing a collection notifier to + the background worker thread rather than doing it on the main thread. + +### Fixed + +* `configuration(partitionValue: AnyBSON)` would always set a nil partition value + for the user sync configuration. +* Decoding a `@Persisted` property would incorrectly throw a `DecodingError.keyNotFound` + for an optional property if the key is missing. + ([Cocoa #7358](https://github.com/realm/realm-swift/issues/7358), since v10.10.0) +* Fixed a symlink which prevented Realm from building on case sensitive file systems. + ([#7344](https://github.com/realm/realm-swift/issues/7344), since v10.8.0) +* Removing a change callback from a Results would sometimes block the calling + thread while the query for that Results was running on the background worker + thread (since v10.11.0). +* Object observers did not handle the object being deleted properly, which + could result in assertion failures mentioning "m_table" in ObjectNotifier + ([Core #4824](https://github.com/realm/realm-core/issues/4824), since v10.11.0). +* Fixed a crash when delivering notifications over a nested hierarchy of lists + of Mixed that contain links. ([Core #4803](https://github.com/realm/realm-core/issues/4803), since v10.8.0) +* Fixed a crash when an object which is linked to by a Mixed is deleted via + sync. ([Core #4828](https://github.com/realm/realm-core/pull/4828), since v10.8.0) +* Fixed a rare crash when setting a mixed link for the first time which would + trigger if the link was to the same table and adding the backlink column + caused a BPNode split. ([Core #4828](https://github.com/realm/realm-core/pull/4828), since v10.8.0) + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 4. On iOS Xcode 13 beta 2 is the latest supported + version due to betas 3 and 4 having a broken Combine.framework. + +### Internal + +* Upgraded realm-core from v11.1.1 to v11.2.0 + +10.11.0 Release notes (2021-07-22) +============================================================= + +### Enhancements + +* Add type safe methods for: + - `RealmCollection.min(of:)` + - `RealmCollection.max(of:)` + - `RealmCollection.average(of:)` + - `RealmCollection.sum(of:)` + - `RealmCollection.sorted(by:ascending:)` + - `RealmKeyedCollection.min(of:)` + - `RealmKeyedCollection.max(of:)` + - `RealmKeyedCollection.average(of:)` + - `RealmKeyedCollection.sum(of:)` + - `RealmKeyedCollection.sorted(by:ascending:)` + - `Results.distinct(by:)` + - `SortDescriptor(keyPath:ascending:) + + Calling these methods can now be done via Swift keyPaths, like so: + ```swift + class Person: Object { + @Persisted var name: String + @Persisted var age: Int + } + + let persons = realm.objects(Person.self) + persons.min(of: \.age) + persons.max(of: \.age) + persons.average(of: \.age) + persons.sum(of: \.age) + persons.sorted(by: \.age) + persons.sorted(by: [SortDescriptor(keyPath: \Person.age)]) + persons.distinct(by: [\Person.age]) + ``` +* Add `List.objects(at indexes:)` in Swift and `[RLMCollection objectsAtIndexes:]` in Objective-C. + This allows you to select elements in a collection with a given IndexSet ([#7298](https://github.com/realm/realm-swift/issues/7298)). +* Add `App.emailPasswordAuth.retryCustomConfirmation(email:completion:)` and `[App.emailPasswordAuth retryCustomConfirmation:completion:]`. + These functions support retrying a [custom confirmation](https://docs.mongodb.com/realm/authentication/email-password/#run-a-confirmation-function) function. +* Improve performance of creating collection notifiers for Realms with a complex schema. + This means that the first run of a query or first call to observe() on a collection will + do significantly less work on the calling thread. +* Improve performance of calculating changesets for notifications, particularly + for deeply nested object graphs and objects which have List or Set properties + with small numbers of objects in the collection. + +### Fixed + +* `RealmProperty` would crash when decoding a `null` json value. + ([Cocoa #7323](https://github.com/realm/realm-swift/issues/7323), since v10.8.0) +* `@Persisted` would crash when decoding a `null` value. + ([#7332](https://github.com/realm/realm-swift/issues/7332), since v10.10.0). +* Fixed an issue where `Realm.Configuration` would be set after views have been laid out + when using `.environment(\.realmConfiguration, ...)` in SwiftUI. This would cause issues if you are + required to bump your schema version and are using `@ObservedResults`. +* Sync user profiles now correctly persist between runs. + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 3. Note that this release does not contain Xcode 13 + beta binaries as beta 3 does not include a working version of + Combine.framework for iOS. + +### Internal + +* Upgraded realm-core from 11.0.4 to 11.1.1 + +10.10.0 Release notes (2021-07-07) +============================================================= + +### Enhancements + +* Add a new property wrapper-based declaration syntax for properties on Realm + Swift object classes. Rather than using `@objc dynamic` or the + `RealmProperty` wrapper type, properties can now be declared with `@Persisted + var property: T`, where `T` is any of the supported property types, including + optional numbers and collections. This has a few benefits: + + - All property types are now declared in the same way. No more remembering + that this type requires `@objc dynamic var` while this other type + requires `let`, and the `RealmProperty` or `RealmOptional` helper is no + longer needed for types not supported by Objective-C. + - No more overriding class methods like `primaryKey()`, + `indexedProperties()` or `ignoredProperties()`. The primary key and + indexed flags are set directly in the property declaration with + `@Persisted(primaryKey: true) var _id: ObjectId` or `@Persisted(indexed: + true) var indexedProperty: Int`. If any `@Persisted` properties are present, + all other properties are implicitly ignored. + - Some performance problems have been fixed. Declaring collection + properties as `let listProp = List()` resulted in the `List` object + being created eagerly when the parent object is read, which could cause + performance problems if a class has a large number of `List` or + `RealmOptional` properties. `@Persisted var list: List` allows us to + defer creating the `List` until it's accessed, improving performance + when looping over objects and using only some of the properties. + + Similarly, `let _id = ObjectId.generate()` was a convenient way to + declare a sync-compatible primary key, but resulted in new ObjectIds + being generated in some scenarios where the value would never actually be + used. `@Persisted var _id: ObjectId` has the same behavior of + automatically generating primary keys, but allows us to only generate it + when actually needed. + - More types of enums are supported. Any `RawRepresentable` enum whose raw + type is a type supported by Realm can be stored in an `@Persisted` + project, rather than just `@objc` enums. Enums must be declared as + conforming to the `PersistableEnum` protocol, and still cannot (yet) be + used in collections. + - `willSet` and `didSet` can be used with `@Persistable` properties, while + they previously did not work on managed Realm objects. + + While we expect the switch to the new syntax to be very simple for most + users, we plan to support the existing objc-based declaration syntax for the + foreseeable future. The new style and old style cannot be mixed within a + single class, but new classes can use the new syntax while existing classes + continue to use the old syntax. Updating an existing class to the new syntax + does not change what data is stored in the Realm file and so does not require + a migration (as long as you don't also change the schema in the process, of + course). +* Add `Map.merge()`, which adds the key-value pairs from another Map or + Dictionary to the map. +* Add `Map.asKeyValueSequence()` which returns an adaptor that can be used with + generic functions that operate on Dictionary-styled sequences. + +### Fixed +* AnyRealmValue enum values are now supported in more places when creating + objects. +* Declaring a property as `RealmProperty` will now report an + error during schema discovery rather than doing broken things when the + property is used. +* Observing the `invalidated` property of `RLMDictionary`/`Map` via KVO did not + set old/new values correctly in the notification (since 10.8.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 2. + +10.9.0 Release notes (2021-07-01) +============================================================= + +### Enhancements + +* Add `App.emailPasswordAuth.retryCustomConfirmation(email:completion:)` and + `[App.emailPasswordAuth retryCustomConfirmation:completion:]`. These + functions support retrying a [custom confirmation](https://docs.mongodb.com/realm/authentication/email-password/#run-a-confirmation-function) + function. +* Improve performance of many Dictionary operations, especially when KVO is being used. + +### Fixed + +* Calling `-[RLMRealm deleteObjects:]` on a `RLMDictionary` cleared the + dictionary but did not actually delete the objects in the dictionary (since v10.8.0). +* Rix an assertion failure when observing a `List` contains + object links. ([Core #4767](https://github.com/realm/realm-core/issues/4767), since v10.8.0) +* Fix an assertion failure when observing a `RLMDictionary`/`Map` which links + to an object which was deleting by a different sync client. + ([Core #4770](https://github.com/realm/realm-core/pull/4770), since v10.8.0) +* Fix an endless recursive loop that could cause a stack overflow when + computing changes on a set of objects which contained cycles. + ([Core #4770](https://github.com/realm/realm-core/pull/4770), since v10.8.0). +* Hash collisions in dictionaries were not handled properly. + ([Core #4776](https://github.com/realm/realm-core/issues/4776), since v10.8.0). +* Fix a crash after clearing a list or set of AnyRealmValue containing links to + objects ([Core #4774](https://github.com/realm/realm-core/issues/4774), since v10.8.0) +* Trying to refresh a user token which had been revoked by an admin lead to an + infinite loop and then a crash. This situation now properly logs the user out + and reports an error. ([Core #4745](https://github.com/realm/realm-core/issues/4745), since v10.0.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 2. + +### Internal + +* Upgraded realm-core from v11.0.3 to v11.0.4 + +10.8.1 Release notes (2021-06-22) +============================================================= + +### Enhancements + +* Update Xcode 12.5 to Xcode 12.5.1. +* Create fewer dynamic classes at runtime, improving memory usage and startup time slightly. + +### Fixed + +* Importing the Realm swift package produced several warnings about excluded + files not existing. Note that one warning will still remain after this change. + ([#7295](https://github.com/realm/realm-swift/issues/7295), since v10.8.0). +* Update the root URL for the API docs so that the links go to the place where + new versions of the docs are being published. + ([#7299](https://github.com/realm/realm-swift/issues/7299), since v10.6.0). + +### Compatibility + +* Realm Studio: 11.0.0 or later. Note that this version of Realm Studio has not + yet been released at the time of this release. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5.1. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 1. + +10.8.0 Release notes (2021-06-14) +============================================================= + +NOTE: This version upgrades the Realm file format version to add support for +the new data types and to adjust how primary keys are handled. Realm files +opened will be automatically upgraded and cannot be read by versions older than +v10.8.0. This upgrade should be a fairly fast one. Note that we now +automatically create a backup of the pre-upgrade Realm. + +### Enhancements + +* Add support for the `UUID` and `NSUUID` data types. These types can be used + for the primary key property of Object classes. +* Add two new collection types to complement the existing `RLMArray`/`List` type: + - `RLMSet` in Objective-C and `MutableSet` in Swift are mutable + unordered collections of distinct objects, similar to the built-in + `NSMutableSet` and `Set`. The values in a set may be any non-collection + type which can be stored as a Realm property. Sets are guaranteed to never + contain two objects which compare equal to each other, including when + conflicting writes are merged by sync. + - `RLMDictionary` in Objective-C and `Map` are + mutable key-value dictionaries, similar to the built-in + `NSMutableDictionary` and `Dictionary`. The values in a dictionary may be + any non-collection type which can be stored as a Realm property. The keys + must currently always be a string. +* Add support for dynamically typed properties which can store a value of any + of the non-collection types supported by Realm, including Object subclasses + (but not EmbeddedObject subclasses). These are declared with + `@property id propertyName;` in Objective-C and + `let propertyName = RealmProperty()` in Swift. + +### Fixed + +* Setting a collection with a nullable value type to null via one of the + dynamic interfaces would hit an assertion failure instead of clearing the + collection. +* Fixed an incorrect detection of multiple incoming links in a migration when + changing a table to embedded and removing a link to it at the same time. + ([#4694](https://github.com/realm/realm-core/issues/4694) since v10.0.0-beta.2) +* Fixed a divergent merge on Set when one client clears the Set and another + client inserts and deletes objects. + ([#4720](https://github.com/realm/realm-core/issues/4720)) +* Partially revert to pre-v5.0.0 handling of primary keys to fix a performance + regression. v5.0.0 made primary keys determine the position in the low-level + table where newly added objects would be inserted, which eliminated the need + for a separate index on the primary key. This made some use patterns slightly + faster, but also made some reasonable things dramatically slower. + ([#4522](https://github.com/realm/realm-core/issues/4522)) +* Fixed an incorrect detection of multiple incoming links in a migration when + changing a table to embedded and removing a link to it at the same time. + ([#4694](https://github.com/realm/realm-core/issues/4694) since v10.0.0-beta.2) +* Fix collection notification reporting for modifications. This could be + observed by receiving the wrong indices of modifications on sorted or + distinct results, or notification blocks sometimes not being called when only + modifications have occured. + ([#4573](https://github.com/realm/realm-core/pull/4573) since v5.0.0). +* Fix incorrect sync instruction emission when replacing an existing embedded + object with another embedded object.([Core #4740](https://github.com/realm/realm-core/issues/4740) + +### Deprecations + +* `RealmOptional` has been deprecated in favor of `RealmProperty`. + `RealmProperty` is functionality identical to `RealmOptional` when storing + optional numeric types, but can also store the new `AnyRealmValue` type. + +### Compatibility + +* Realm Studio: 11.0.0 or later. Note that this version of Realm Studio has not + yet been released at the time of this release. +* Carthage release for Swift is built with Xcode 12.5. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 1. + +### Internal + +* Upgraded realm-core from v10.7.2 to v11.0.3 + +10.8.0-beta.2 Release notes (2021-06-01) +============================================================= + +### Enhancements + +* Add `RLMDictionary`/`Map<>` datatype. This is a Dictionary collection type used for storing key-value pairs in a collection. + +### Compatibility + +* Realm Studio: 11.0.0-beta.1 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v11.0.0-beta.4 to v11.0.0-beta.6 + +10.8.0-beta.0 Release notes (2021-05-07) +============================================================= + +### Enhancements + +* Add `RLMSet`/`MutableSet<>` datatype. This is a Set collection type used for storing distinct values in a collection. +* Add support for `id`/`AnyRealmValue`. +* Add support for `UUID`/`NSUUID` data type. + +### Fixed + +* None. + +### Deprecations + +* `RealmOptional` has been deprecated in favor of `RealmProperty`. + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.4. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.7.2 to v10.8.0-beta.5 + +10.7.7 Release notes (2021-06-10) +============================================================= + +Xcode 12.2 is now the minimum supported version. + +### Enhancements + +* Add Xcode 13 beta 1 binaries to the release package. + +### Fixed + +* Fix a runtime crash which happens in some Xcode version (Xcode < 12, reported + in Xcode 12.5), where SwiftUI is not weak linked by default. This fix only + works for Cocoapods projects. + ([#7234](https://github.com/realm/realm-swift/issues/7234) +* Fix warnings when building with Xcode 13 beta 1. + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5. +* CocoaPods: 1.10 or later. +* Xcode: 12.2-13.0 beta 1. + +10.7.6 Release notes (2021-05-13) +============================================================= + +### Enhancements + +* Realms opened in read-only mode can now be invalidated (although it is + unlikely to be useful to do so). + +### Fixed + +* Fix an availability warning when building Realm. The code path which gave the + warning can not currently be hit, so this did not cause any runtime problems + ([#7219](https://github.com/realm/realm-swift/issues/7219), since 10.7.3). +* Proactively check the expiry time on the access token and refresh it before + attempting to initiate a sync session. This prevents some error logs from + appearing on the client such as: "ERROR: Connection[1]: Websocket: Expected + HTTP response 101 Switching Protocols, but received: HTTP/1.1 401 + Unauthorized" ([RCORE-473](https://jira.mongodb.org/browse/RCORE-473), since v10.0.0) +* Fix a race condition which could result in a skipping notifications failing + to skip if several commits using notification skipping were made in + succession (since v5.0.0). +* Fix a crash on exit inside TableRecycler which could happen if Realms were + open on background threads when the app exited. + ([Core #4600](https://github.com/realm/realm-core/issues/4600), since v5.0.0) +* Fix errors related to "uncaught exception in notifier thread: + N5realm11KeyNotFoundE: No such object" which could happen on sycnronized + Realms if a linked object was deleted by another client. + ([JS #3611](https://github.com/realm/realm-js/issues/3611), since v10.0.0). +* Reading a link to an object which has been deleted by a different client via + a string-based interface (such as value(forKey:) or the subscript operator on + DynamicObject) could return an invalid object rather than nil. + ([Core #4687](https://github.com/realm/realm-core/pull/4687), since v10.0.0) +* Recreate the sync metadata Realm if the encryption key for it is missing from + the keychain rather than crashing. This can happen if a device is restored + from an unencrypted backup, which restores app data but not the app's + keychain entries, and results in all cached logics for sync users being + discarded but no data being lost. + [Core #4285](https://github.com/realm/realm-core/pull/4285) +* Thread-safe references can now be created for read-only Realms. + ([#5475](https://github.com/realm/realm-swift/issues/5475)). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.6.0 to v10.7.2 + +10.7.5 Release notes (2021-05-07) +============================================================= + +### Fixed + +* Iterating over frozen collections on multiple threads at the same time could + throw a "count underflow" NSInternalInconsistencyException. + ([#7237](https://github.com/realm/realm-swift/issues/7237), since v5.0.0). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5. +* CocoaPods: 1.10 or later. + +10.7.4 Release notes (2021-04-26) +============================================================= + +### Enhancements + +* Add Xcode 12.5 binaries to the release package. + +### Fixed + +* Add the Info.plist file to the XCFrameworks in the Carthage xcframwork + package ([#7216](https://github.com/realm/realm-swift/issues/7216), since 10.7.3). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.5. +* CocoaPods: 1.10 or later. + +10.7.3 Release notes (2021-04-22) +============================================================= + +### Enhancements + +* Package a prebuilt XCFramework for Carthage. Carthage 0.38 and later will + download this instead of the old frameworks when using `--use-xcframeworks`. +* We now make a backup of the realm file prior to any file format upgrade. The + backup is retained for 3 months. Backups from before a file format upgrade + allows for better analysis of any upgrade failure. We also restore a backup, + if a) an attempt is made to open a realm file whith a "future" file format + and b) a backup file exist that fits the current file format. + ([Core #4166](https://github.com/realm/realm-core/pull/4166)) +* The error message when the intial steps of opening a Realm file fails is now + more descriptive. +* Make conversion of Decimal128 to/from string work for numbers with more than + 19 significant digits. This means that Decimal128's initializer which takes a + string will now never throw, as it previously threw only for out-of-bounds + values. The initializer is still marked as `throws` for + backwards compatibility. + ([#4548](https://github.com/realm/realm-core/issues/4548)) + +### Fixed + +* Adjust the header paths for the podspec to avoid accidentally finding a file + which isn't part of the pod that produced warnings when importing the + framework. ([#7113](https://github.com/realm/realm-swift/issues/7113), since 10.5.2). +* Fixed a crash that would occur when observing unmanaged Objects in multiple + views in SwiftUI. When using `@StateRealmObject` or `@ObservedObject` across + multiple views with an unmanaged object, each view would subscribe to the + object. As each view unsubscribed (generally when trailing back through the + view stack), our propertyWrappers would attempt to remove the KVOs for each + cancellation, when it should only be done once. We now correctly remove KVOs + only once. ([#7131](https://github.com/realm/realm-swift/issues/7131)) +* Fixed `isInvalidated` not returning correct value after object deletion from + Realm when using a custom schema. The object's Object Schema was not updated + when the object was added to the realm. We now correctly update the object + schema when adding it to the realm. + ([#7181](https://github.com/realm/realm-swift/issues/7181)) +* Syncing large Decimal128 values would cause "Assertion failed: cx.w[1] == 0" + ([Core #4519](https://github.com/realm/realm-core/issues/4519), since v10.0.0). +* Potential/unconfirmed fix for crashes associated with failure to memory map + (low on memory, low on virtual address space). For example + ([#4514](https://github.com/realm/realm-core/issues/4514), since v5.0.0). +* Fix assertion failures such as "!m_notifier_skip_version.version" or + "m_notifier_sg->get_version() + 1 == new_version.version" when performing + writes inside change notification callbacks. Previously refreshing the Realm + by beginning a write transaction would skip delivering notifications, leaving + things in an inconsistent state. Notifications are now delivered recursively + when needed instead. ([Cocoa #7165](https://github.com/realm/realm-swift/issues/7165)). +* Fix collection notification reporting for modifications. This could be + observed by receiving the wrong indices of modifications on sorted or + distinct results, or notification blocks sometimes not being called when only + modifications have occured. + ([#4573](https://github.com/realm/realm-core/pull/4573) since v5.0.0). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.4. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.5.5 to v10.6.0 +* Add additional debug validation to file map management that will hopefully + catch cases where we unmap something which is still in use. + +10.7.2 Release notes (2021-03-08) +============================================================= + +### Fixed + +* During integration of a large amount of data from the server, you may get + "Assertion failed: !fields.has_missing_parent_update()" + ([Core #4497](https://github.com/realm/realm-core/issues/4497), since v6.0.0) + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.4. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.5.4 to v10.5.5 + +10.7.1 Release notes (2021-03-05) +============================================================= + +### Fixed + +* Queries of the form "a.b.c == nil" would match objects where `b` is `nil` if + `c` did not have an index and did not if `c` was indexed. Both will now match + to align with NSPredicate's behavior. ([Core #4460]https://github.com/realm/realm-core/pull/4460), since 4.3.0). +* Restore support for upgrading files from file format 5 (Realm Cocoa 1.x). + ([Core #7089](https://github.com/realm/realm-swift/issues/7089), since v5.0.0) +* On 32bit devices you may get exception with "No such object" when upgrading + to v10.* ([Java #7314](https://github.com/realm/realm-java/issues/7314), since v5.0.0) +* The notification worker thread would rerun queries after every commit rather + than only commits which modified tables which could effect the query results + if the table had any outgoing links to tables not used in the query. + ([Core #4456](https://github.com/realm/realm-core/pull/4456), since v5.0.0). +* Fix "Invalid ref translation entry [16045690984833335023, 78187493520]" + assertion failure which could occur when using sync or multiple processes + writing to a single Realm file. + ([#7086](https://github.com/realm/realm-swift/issues/7086), since v5.0.0). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.4. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.5.3 to v10.5.4 + +10.7.0 Release notes (2021-02-23) +============================================================= + +### Enhancements + +* Add support for some missing query operations on data propertys: + - Data properties can be compared to other data properties + (e.g. "dataProperty1 == dataProperty2"). + - Case and diacritic-insensitive queries can be performed on data properties. + This will only have meaningful results if the data property contains UTF-8 + string data. + - Data properties on linked objects can be queried + (e.g. "link.dataProperty CONTAINS %@") +* Implement queries which filter on lists other than object links (lists of + objects were already supported). All supported operators for normal + properties are now supported for lists (e.g. "ANY intList = 5" or "ANY + stringList BEGINSWITH 'prefix'"), as well as aggregate operations on the + lists (such as "intArray.@sum > 100"). +* Performance of sorting on more than one property has been improved. + Especially important if many elements match on the first property. Mitigates + ([#7092](https://github.com/realm/realm-swift/issues/7092)) + +### Fixed + +* Fixed a bug that prevented an object type with incoming links from being + marked as embedded during migrations. ([Core #4414](https://github.com/realm/realm-core/pull/4414)) +* The Realm notification listener thread could sometimes hit the assertion + failure "!skip_version.version" if a write transaction was committed at a + very specific time (since v10.5.0). +* Added workaround for a case where upgrading an old file with illegal string + would crash ([#7111](https://github.com/realm/realm-swift/issues/7111)) +* Fixed a conflict resolution bug related to the ArrayMove instruction, which + could sometimes cause an "Invalid prior_size" exception to prevent + synchronization (since v10.5.0). +* Skipping a change notification in the first write transaction after the + observer was added could potentially fail to skip the notification (since v10.5.1). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.4. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.5.0 to v10.5.3 + +10.6.0 Release notes (2021-02-15) +============================================================= + +### Enhancements + +* Add `@StateRealmObject` for SwiftUI support. This property wrapper type instantiates an observable object on a View. + Use in place of `SwiftUI.StateObject` for Realm `Object`, `List`, and `EmbeddedObject` types. +* Add `@ObservedRealmObject` for SwiftUI support. This property wrapper type subscribes to an observable object + and invalidates a view whenever the observable object changes. Use in place of `SwiftUI.ObservedObject` for + Realm `Object`, `List`, or `EmbeddedObject` types. +* Add `@ObservedResults` for SwiftUI support. This property wrapper type retrieves results from a Realm. + The results use the realm configuration provided by the environment value `EnvironmentValues.realmConfiguration`. +* Add `EnvironmentValues.realm` and `EnvironmentValues.realmConfiguration` for `Realm` + and `Realm.Configuration` types respectively. Values can be injected into views using the `View.environment` method, e.g., `MyView().environment(\.realmConfiguration, Realm.Configuration(fileURL: URL(fileURLWithPath: "myRealmPath.realm")))`. + The value can then be declared on the example `MyView` as `@Environment(\.realm) var realm`. +* Add `SwiftUI.Binding` extensions where `Value` is of type `Object`, `List`, or `EmbeddedObject`. + These extensions expose methods for wrapped write transactions, to avoid boilerplate within + views, e.g., `TextField("name", $personObject.name)` or `$personList.append(Person())`. +* Add `Object.bind` and `EmbeddedObject.bind` for SwiftUI support. This allows you to create + bindings of realm properties when a propertyWrapper is not available for you to do so, e.g., `TextField("name", personObject.bind(\.name))`. +* The Sync client now logs error messages received from server rather than just + the size of the error message. +* Errors returned from the server when sync WebSockets get closed are now + captured and surfaced as a SyncError. +* Improve performance of sequential reads on a Results backed directly by a + Table (i.e. `realm.object(ClasSName.self)` with no filter/sort/etc.) by 50x. +* Orphaned embedded object types which are not linked to by any top-level types + are now better handled. Previously the server would reject the schema, + resulting in delayed and confusing error reporting. Explicitly including an + orphan in `objectTypes` is now immediately reported as an error when opening + the Realm, and orphans are automatically excluded from the auto-discovered + schema when `objectTypes` is not specified. + +### Fixed + +* Reading from a Results backed directly by a Table (i.e. + `realm.object(ClasSName.self)` with no filter/sort/etc.) would give incorrect + results if the Results was constructed and accessed before creating a new + object with a primary key less than the smallest primary key which previously + existed. ([#7014](https://github.com/realm/realm-swift/issues/7014), since v5.0.0). +* During synchronization you might experience crash with + "Assertion failed: ref + size <= next->first". + ([Core #4388](https://github.com/realm/realm-core/issues/4388)) + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.4. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.4.0 to v10.5.0 + +10.5.2 Release notes (2021-02-09) +============================================================= + +### Enhancements + +* Add support for "thawing" objects. `Realm`, `Results`, `List` and `Object` + now have `thaw()` methods which return a live copy of the frozen object. This + enables app behvaior where a frozen object can be made live again in order to + mutate values. For example, first freezing an object passed into UI view, + then thawing the object in the view to update values. +* Add Xcode 12.4 binaries to the release package. + +### Fixed + +* Inserting a date into a synced collection via `AnyBSON.datetime(...)` would + be of type `Timestamp` and not `Date`. This could break synced objects with a + `Date` property. + ([#6654](https://github.com/realm/realm-swift/issues/6654), since v10.0.0). +* Fixed an issue where creating an object after file format upgrade may fail + with assertion "Assertion failed: lo() <= std::numeric_limits::max()" + ([#4295](https://github.com/realm/realm-core/issues/4295), since v5.0.0) +* Allow enumerating objects in migrations with types which are no longer + present in the schema. +* Add `RLMResponse.customStatusCode`. This fixes timeout exceptions that were + occurring with a poor connection. ([#4188](https://github.com/realm/realm-core/issues/4188)) +* Limit availability of ObjectKeyIdentifiable to platforms which support + Combine to match the change made in the Xcode 12.5 SDK. + ([#7083](https://github.com/realm/realm-swift/issues/7083)) + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.4. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.3.3 to v10.4.0 + +10.5.1 Release notes (2021-01-15) +============================================================= + +### Enhancements + +* Add Xcode 12.3 binary to release package. +* Add support for queries which have nil on the left side and a keypath on the + right side (e.g. "nil == name" rather than "name == nil" as was previously + required). + +### Fixed +* Timeouts when calling server functions via App would sometimes crash rather + than report an error. +* Fix a race condition which would lead to "uncaught exception in notifier + thread: N5realm15InvalidTableRefE: transaction_ended" and a crash when the + source Realm was closed or invalidated at a very specific time during the + first run of a collection notifier + ([#3761](https://github.com/realm/realm-core/issues/3761), since v5.0.0). +* Deleting and recreating objects with embedded objects may fail. + ([Core PR #4240](https://github.com/realm/realm-core/pull/4240), since v10.0.0) +* Fast-enumerating a List after deleting the parent object would crash with an + assertion failure rather than a more appropriate exception. + ([Core #4114](https://github.com/realm/realm-core/issues/4114), since v5.0.0). +* Fix an issue where calling a MongoDB Realm Function would never be performed as the reference to the weak `User` was lost. + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.3. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.3.2 to v10.3.3 + +10.5.0 Release notes (2020-12-14) +============================================================= + +### Enhancements + +* MongoDB Realm is now supported when installing Realm via Swift Package Manager. + +### Fixed + +* The user identifier was added to the file path for synchronized Realms twice + and an extra level of escaping was performed on the partition value. This did + not cause functional problems, but made file names more confusing than they + needed to be. Existing Realm files will continue to be located at the old + path, while newly created files will be created at a shorter path. (Since v10.0.0). +* Fix a race condition which could potentially allow queries on frozen Realms + to access an uninitialized structure for search indexes (since v5.0.0). +* Fix several data races in App and SyncSession initialization. These could + possibly have caused strange errors the first time a synchronized Realm was + opened (since v10.0.0). +* Fix a use of a dangling reference when refreshing a user’s custom data that + could lead to a crash (since v10.0.0). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.2. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.1.4 to v10.3.2 + +10.4.0 Release notes (2020-12-10) +============================================================= + +### Enhancements + +* Add Combine support for App and User. These two types now have a + `objectWillChange` property that emits each time the state of the object has + changed (such as due to the user logging in or out). ([PR #6977](https://github.com/realm/realm-swift/pull/6977)). + +### Fixed + +* Integrating changesets from the server would sometimes hit the assertion + failure "n != realm::npos" inside Table::create_object_with_primary_key() + when creating an object with a primary key which previously had been used and + had incoming links. ([Core PR #4180](https://github.com/realm/realm-core/pull/4180), since v10.0.0). +* The arm64 simulator slices were not actually included in the XCFramework + release package. ([PR #6982](https://github.com/realm/realm-swift/pull/6982), since v10.2.0). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.2. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.1.3 to v10.1.4 +* Upgraded realm-sync from v10.1.4 to v10.1.5 + +10.3.0 Release notes (2020-12-08) +============================================================= + +### Enhancements + +* Add Google OpenID Connect Credentials, an alternative login credential to the + Google OAuth 2.0 credential. + +### Fixed + +* Fixed a bug that would prevent eventual consistency during conflict + resolution. Affected clients would experience data divergence and potentially + consistency errors as a result if they experienced conflict resolution + between cycles of Create-Erase-Create for objects with primary keys (since v10.0.0). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.2. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-sync from v10.1.3 to v10.1.4 + +10.2.0 Release notes (2020-12-02) +============================================================= + +### Enhancements + +* The prebuilt binaries are now packaged as XCFrameworks. This adds support for + Catalyst and arm64 simulators when using them to install Realm, removes the + need for the strip-frameworks build step, and should simplify installation. +* The support functionality for using the Objective C API from Swift is now + included in Realm Swift and now includes all of the required wrappers for + MongoDB Realm types. In mixed Objective C/Swift projects, we recommend + continuing to use the Objective C types, but import both Realm and RealmSwift + in your Swift files. + +### Fixed + +* The user identifier was added to the file path for synchronized Realms twice + and an extra level of escaping was performed on the partition value. This did + not cause functional problems, but made file names more confusing than they + needed to be. Existing Realm files will continue to be located at the old + path, while newly created files will be created at a shorter path. (Since v10.0.0). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.2. +* CocoaPods: 1.10 or later. + +10.1.4 Release notes (2020-11-16) +============================================================= + +### Enhancements + +* Add arm64 slices to the macOS builds. + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.2. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.0.1 to v10.1.3 +* Upgraded realm-sync from v10.0.1 to v10.1.3 + +10.1.3 Release notes (2020-11-13) +============================================================= + +### Enhancements + +* Add Xcode 12.2 binaries to the release package. + +### Fixed + +* Disallow setting + `RLMRealmConfiguration.deleteRealmIfMigrationNeeded`/`Realm.Config.deleteRealmIfMigrationNeeded` + when sync is enabled. This did not actually work as it does not delete the + relevant server state and broke in confusing ways ([PR #6931](https://github.com/realm/realm-swift/pull/6931)). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.1. +* CocoaPods: 1.10 or later. + +10.1.2 Release notes (2020-11-06) +============================================================= + +### Enhancements + +* Some error states which previously threw a misleading "NoSuchTable" exception + now throw a more descriptive exception. + +### Fixed + +* One of the Swift packages did not have the minimum deployment target set, + resulting in errors when archiving an app which imported Realm via SPM. +* Reenable filelock emulation on watchOS so that the OS does not kill the app + when it is suspended while a Realm is open on watchOS 7 ([#6861](https://github.com/realm/realm-swift/issues/6861), since v5.4.8 +* Fix crash in case insensitive query on indexed string columns when nothing + matches ([#6836](https://github.com/realm/realm-swift/issues/6836), since v5.0.0). +* Null values in a `List` or `List` were incorrectly treated + as non-null in some places. It is unknown if this caused any functional + problems when using the public API. ([Core PR #3987](https://github.com/realm/realm-core/pull/3987), since v5.0.0). +* Deleting an entry in a list in two different clients could end deleting the + wrong entry in one client when the changes are merged (since v10.0.0). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.1. +* CocoaPods: 1.10 or later. + +### Internal + +* Upgraded realm-core from v10.0.0 to v10.1.1 +* Upgraded realm-sync from v10.0.0 to v10.1.1 + +10.1.1 Release notes (2020-10-27) +============================================================= + +### Enhancements + +* Set the minimum CocoaPods version in the podspec so that trying to install + with older versions gives a more useful error ([PR #6892](https://github.com/realm/realm-swift/pull/6892)). + +### Fixed + +* Embedded objects could not be marked as `ObjectKeyIdentifable` + ([PR #6890](https://github.com/realm/realm-swift/pull/6890), since v10.0.0). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.1. +* CocoaPods: 1.10 or later. + +10.1.0 Release notes (2020-10-22) +============================================================= + +CocoaPods 1.10 or later is now required to install Realm. + +### Enhancements + +* Throw an exception for Objects that have none of its properties marked with @objc. +* Mac Catalyst and arm64 simulators are now supported when integrating via Cocoapods. +* Add Xcode 12.1 binaries to the release package. +* Add Combine support for `Realm.asyncOpen()`. + +### Fixed + +* Implement precise and unbatched notification of sync completion events. This + avoids a race condition where an earlier upload completion event will notify + a later waiter whose changes haven't been uploaded yet. + ([#1118](https://github.com/realm/realm-object-store/pull/1118)). + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12.1. + +10.0.0 Release notes (2020-10-16) +============================================================= + +This release is functionally identical to v10.0.0-rc.2. + +NOTE: This version upgrades the Realm file format version to add support for +new data types. Realm files opened will be automatically upgraded and cannot be +read by versions older than v10.0.0. + +### Breaking Changes + +* Rename Realm.Publishers to RealmPublishers to avoid confusion with Combine.Publishers. +* Remove `[RLMSyncManager shared]`. This is now instatiated as a property on App/RLMApp. +* `RLMSyncManager.pinnedCertificatePaths` has been removed. +* Classes `RLMUserAccountInfo` & `RLMUserInfo` (swift: `UserInfo`, `UserAccountInfo`) have been removed. +* `RLMSyncUser`/`SyncUser` has been renamed to `RLMUser`/`User`. +* We no longer support Realm Cloud (legacy), but instead the new "MongoDB + Realm" Cloud. MongoDB Realm is a serverless platform that enables developers + to quickly build applications without having to set up server infrastructure. + MongoDB Realm is built on top of MongoDB Atlas, automatically integrating the + connection to your database. +* Remove support for Query-based sync, including the configuration parameters + and the `RLMSyncSubscription` and `SyncSubscription` types ([#6437](https://github.com/realm/realm-swift/pull/6437)). +* Remove everything related to sync permissions, including both the path-based + permission system and the object-level privileges for query-based sync. + Permissions are now configured via MongoDB Atlas. + ([#6445](https://github.com/realm/realm-swift/pulls/6445)) +* Remove support for Realm Object Server. +* Non-embedded objects in synchronized Realms must always have a primary key + named "_id". +* All Swift callbacks for asynchronous operations which can fail are now passed + a `Result` parameter instead of two separate `Value?` and + `Error?` parameters. + +### Enhancements + +* Add support for next generation sync. Support for syncing to MongoDB instead + of Realm Object Server. Applications must be created at realm.mongodb.com +* The memory mapping scheme for Realm files has changed to better support + opening very large files. +* Add support for the ObjectId data type. This is an automatically-generated + unique identifier similar to a GUID or a UUID. + ([PR #6450](https://github.com/realm/realm-swift/pull/6450)). +* Add support for the Decimal128 data type. This is a 128-bit IEEE 754 decimal + floating point number similar to NSDecimalNumber. + ([PR #6450](https://github.com/realm/realm-swift/pull/6450)). +* Add support for embedded objects. Embedded objects are objects which are + owned by a single parent object, and are deleted when that parent object is + deleted. They are defined by subclassing `EmbeddedObject` / + `RLMEmbeddedObject` rather than `Object` / `RLMObject`. +* Add `-[RLMUser customData]`/`User.customData`. Custom data is + configured in your MongoDB Realm App. +* Add `-[RLMUser callFunctionNamed:arguments:completion:]`/`User.functions`. + This is the entry point for calling Remote MongoDB Realm functions. Functions + allow you to define and execute server-side logic for your application. + Functions are written in modern JavaScript (ES6+) and execute in a serverless + manner. When you call a function, you can dynamically access components of + the current application as well as information about the request to execute + the function and the logged in user that sent the request. +* Add `-[RLMUser mongoClientWithServiceName:]`/`User.mongoClient`. This is + the entry point for calling your Remote MongoDB Service. The read operations + are `-[RLMMongoCollection findWhere:completion:]`, `-[RLMMongoCollection + countWhere:completion:]`and `-[RLMMongoCollection + aggregateWithPipeline:completion:]`. The write operations are + `-[RLMMongoCollection insertOneDocument:completion:]`, `-[RLMMongoCollection + insertManyDocuments:completion:]`, `-[RLMMongoCollection + updateOneDocument:completion:]`, `-[RLMMongoCollection + updateManyDocuments:completion:]`, `-[RLMMongoCollection + deleteOneDocument:completion:]`, and `-[RLMMongoCollection + deleteManyDocuments:completion:]`. If you are already familiar with MongoDB + drivers, it is important to understand that the remote MongoCollection only + provides access to the operations available in MongoDB Realm. +* Obtaining a Realm configuration from a user is now done with `[RLMUser + configurationWithPartitionValue:]`/`User.configuration(partitionValue:)`. + Partition values can currently be of types `String`, `Int`, or `ObjectId`, + and fill a similar role to Realm URLs did with Realm Cloud. The main + difference is that partitions are meant to be more closely associated with + your data. For example, if you are running a `Dog` kennel, and have a field + `breed` that acts as your partition key, you could open up realms based on + the breed of the dogs. +* Add ability to stream change events on a remote MongoDB collection with + `[RLMMongoCollection watch:delegate:delegateQueue:]`, + `MongoCollection.watch(delegate:)`. When calling `watch(delegate:)` you will be + given a `RLMChangeStream` (`ChangeStream`) which can be used to end watching + by calling `close()`. Change events can also be streamed using the + `MongoCollection.watch` Combine publisher that will stream change events each + time the remote MongoDB collection is updated. +* Add the ability to listen for when a Watch Change Stream is opened when using + Combine. Use `onOpen(event:)` directly after opening a `WatchPublisher` to + register a callback to be invoked once the change stream is opened. +* Objects with integer primary keys no longer require a separate index for the +* primary key column, improving insert performance and slightly reducing file + size. + +### Compatibility + +* Realm Studio: 10.0.0 or later. +* Carthage release for Swift is built with Xcode 12 + +### Internal + +* Upgraded realm-core from v6.1.4 to v10.0.0 +* Upgraded realm-sync from v5.0.29 to v10.0.0 + +10.0.0-rc.2 Release notes (2020-10-15) +============================================================= + +### Enhancements + +* Add the ability to listen for when a Watch Change Stream is opened when using + Combine. Use `onOpen(event:)` directly after opening a `WatchPublisher` to + register a callback to be invoked once the change stream is opened. + +### Breaking Changes + +* The insert operations on Mongo collections now report the inserted documents' + IDs as BSON rather than ObjectId. +* Embedded objects can no longer form cycles at the schema level. For example, + type A can no longer have an object property of type A, or an object property + of type B if type B links to type A. This was always rejected by the server, + but previously was allowed in non-synchronized Realms. +* Primary key properties are once again marked as being indexed. This reflects + an internal change to how primary keys are handled that should not have any + other visible effects. +* Change paired return types from Swift completion handlers to return `Result`. +* Adjust how RealmSwift.Object is defined to add support for Swift Library + Evolution mode. This should normally not have any effect, but you may need to + add `override` to initializers of object subclasses. +* Add `.null` type to AnyBSON. This creates a distinction between null values + and properly absent BSON types. + +### Fixed + +* Set the precision correctly when serializing doubles in extended json. +* Reading the `objectTypes` array from a Realm Configuration would not include + the embedded object types which were set in the array. +* Reject loops in embedded objects as part of local schema validation rather + than as a server error. +* Although MongoClient is obtained from a User, it was actually using the + User's App's current user rather than the User it was obtained from to make + requests. + + +This release also contains the following changes from 5.4.7 - 5.5.0 + +### Enhancements + +* Add the ability to capture a NotificationToken when using a Combine publisher + that observes a Realm Object or Collection. The user will call + `saveToken(on:at:)` directly after invoking the publisher to use the feature. + +### Fixed + +* When using `Realm.write(withoutNotifying:)` there was a chance that the + supplied observation blocks would not be skipped when in a write transaction. + ([Object Store #1103](https://github.com/realm/realm-object-store/pull/1103)) +* Comparing two identical unmanaged `List<>`/`RLMArray` objects would fail. + ([#5665](https://github.com/realm/realm-swift/issues/5665)). +* Case-insensitive equality queries on indexed string properties failed to + clear some internal state when rerunning the query. This could manifest as + duplicate results or "key not found" errors. + ([#6830](https://github.com/realm/realm-swift/issues/6830), [#6694](https://github.com/realm/realm-swift/issues/6694), since 5.0.0). +* Equality queries on indexed string properties would sometimes throw "key not + found" exceptions if the hash of the string happened to have bit 62 set. + ([.NET #2025](https://github.com/realm/realm-dotnet/issues/2025), since v5.0.0). +* Queries comparing non-optional int properties to nil would behave as if they + were comparing against zero instead (since v5.0.0). + +### Compatibility + +* File format: Generates Realms with format v12 (Reads and upgrades all previous formats) +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12. + +### Internal + +* Upgraded realm-core from v10.0.0-beta.9 to v10.0.0 +* Upgraded realm-sync from v10.0.0-beta.14 to v10.0.0 + +10.0.0-rc.1 Release notes (2020-10-01) +============================================================= + +### Breaking Changes + +* Change the following methods on RLMUser to properties: + - `[RLMUser emailPasswordAuth]` => `RLMUser.emailPasswordAuth` + - `[RLMUser identities]` => `RLMUser.identities` + - `[RLMUser allSessions]` => `RLMUser.allSessions` + - `[RLMUser apiKeysAuth]` => `RLMUser.apiKeysAuth` +* Other changes to RLMUser: + - `nullable` has been removed from `RLMUser.identifier` + - `nullable` has been removed from `RLMUser.customData` +* Change the following methods on RLMApp to properties: + - `[RLMApp allUsers]` => `RLMApp.allUsers` + - `[RLMApp currentUser]` => `RLMApp.currentUser` + - `[RLMApp emailPasswordAuth]` => `RLMApp.emailPasswordAuth` +* Define `RealmSwift.Credentials` as an enum instead of a `typealias`. Example + usage has changed from `Credentials(googleAuthCode: "token")` to + `Credentials.google(serverAuthCode: "serverAuthCode")`, and + `Credentials(facebookToken: "token")` to `Credentials.facebook(accessToken: "accessToken")`, etc. +* Remove error parameter and redefine payload in + `+ (instancetype)credentialsWithFunctionPayload:(NSDictionary *)payload error:(NSError **)error;`. + It is now defined as `+ (instancetype)credentialsWithFunctionPayload:(NSDictionary> *)payload;` + +### Compatibility + +* File format: Generates Realms with format v12 (Reads and upgrades all previous formats) +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 10.x.y series. +* Carthage release for Swift is built with Xcode 12. + +10.0.0-beta.6 Release notes (2020-09-30) +============================================================= + +### Breaking Changes + +* Change Google Credential parameter names to better reflect the required auth code: + - `Credentials(googleToken:)` => `Credentials(googleAuthCode:)` + - `[RLMCredentials credentialsWithGoogleToken:]` => `[RLMCredentials credentialsWithGoogleAuthCode:]` +* Rename Realm.Publishers to RealmPublishers to avoid confusion with Combine.Publishers + +### Fixed + +* Deleting objects could sometimes change the ObjectId remaining objects from + null to ObjectId("deaddeaddeaddeaddeaddead") when there are more than 1000 + objects. (Since v10.0.0-alpha.1) +* Fixed an assertion failure when adding an index to a nullable ObjectId + property that contains nulls. (since v10.0.0-alpha.1). + +This release also contains the following changes from 5.4.0 - 5.4.6: + +### Enhancements + +* Add prebuilt binary for Xcode 11.7 to the release package. +* Add prebuilt binary for Xcode 12 to the release package. +* Improve the asymtotic performance of NOT IN queries on indexed properties. It + is now O(Number of Rows) rather than O(Number of Rows \* Number of values in IN clause.) +* Slightly (<5%) improve the performance of most operations which involve + reading from a Realm file. + +### Fixed + +* Upgrading pre-5.x files with string primary keys would result in a file where + `realm.object(ofType:forPrimaryKey:)` would fail to find the object. + ([#6716](https://github.com/realm/realm-swift/issues/6716), since 5.2.0) +* A write transaction which modifies an object with more than 16 managed + properties and causes the Realm file to grow larger than 2 GB could cause an + assertion failure mentioning "m_has_refs". ([JS #3194](https://github.com/realm/realm-js/issues/3194), since 5.0.0). +* Objects with more than 32 properties could corrupt the Realm file and result + in a variety of crashes. ([Java #7057](https://github.com/realm/realm-java/issues/7057), since 5.0.0). +* Fix deadlocks when opening a Realm file in both the iOS simulator and Realm + Studio ([#6743](https://github.com/realm/realm-swift/issues/6743), since 5.3.6). +* Fix Springboard deadlocking when an app is unsuspended while it has an open + Realm file which is stored in an app group on iOS 10-12 + ([#6749](https://github.com/realm/realm-swift/issues/6749), since 5.3.6). +* If you use encryption your application cound crash with a message like + "Opening Realm files of format version 0 is not supported by this version of + Realm". ([#6889](https://github.com/realm/realm-java/issues/6889) among others, since 5.0.0) +* Confining a Realm to a serial queue would throw an error claiming that the + queue was not a serial queue on iOS versions older than 12. + ([#6735](https://github.com/realm/realm-swift/issues/6735), since 5.0.0). +* Results would sometimes give stale results inside a write transaction if a + write which should have updated the Results was made before the first access + of a pre-existing Results object. + ([#6721](https://github.com/realm/realm-swift/issues/6721), since 5.0.0) +* Fix Archiving the Realm and RealmSwift frameworks with Xcode 12. + ([#6774](https://github.com/realm/realm-swift/issues/6774)) +* Fix compilation via Carthage when using Xcode 12 ([#6717](https://github.com/realm/realm-swift/issues/6717)). +* Fix a crash inside `realm::Array(Type)::init_from_mem()` which would + sometimes occur when running a query over links immediately after creating + objects of the queried type. + ([#6789](https://github.com/realm/realm-swift/issues/6789) and possibly others, since 5.0.0). +* Possibly fix problems when changing the type of the primary key of an object + from optional to non-optional. +* Rerunning a equality query on an indexed string property would give incorrect + results if a previous run of the query matched multiple objects and it now + matches one object. This could manifest as either finding a non-matching + object or a "key not found" exception being thrown. + ([#6536](https://github.com/realm/realm-swift/issues/6536), since 5.0.0). + +### Compatibility + +* File format: Generates Realms with format v12 (Reads and upgrades all previous formats) +* Realm Studio: 10.0.0 or later. +* Carthage release for Swift is built with Xcode 12. + +### Internal + +* Upgraded realm-core from v10.0.0-beta.7 to v10.0.0-beta.9 +* Upgraded realm-sync from v10.0.0-beta.11 to v10.0.0-beta.14 + +10.0.0-beta.5 Release notes (2020-09-15) +============================================================= + +### Enhancements + +* Add `User.loggedIn`. +* Add support for multiple Realm Apps. +* Remove `[RLMSyncManager shared]`. This is now instatiated as a property on + the app itself. +* Add Combine support for: + * PushClient + * APIKeyAuth + * User + * MongoCollection + * EmailPasswordAuth + * App.login + +### Fixed + +* Fix `MongoCollection.watch` to consistently deliver events on a given queue. +* Fix `[RLMUser logOutWithCompletion]` and `User.logOut` to now log out the + correct user. +* Fix crash on startup on iOS versions older than 13 (since v10.0.0-beta.3). + +### Breaking Changes + +* `RLMSyncManager.pinnedCertificatePaths` has been removed. +* Classes `RLMUserAccountInfo` & `RLMUserInfo` (swift: `UserInfo`, + `UserAccountInfo`) have been removed. +* The following functionality has been renamed to align Cocoa with the other + Realm SDKs: + +| Old API | New API | +|:-------------------------------------------------------------|:---------------------------------------------------------------| +| `RLMUser.identity` | `RLMUser.identifier` | +| `User.identity` | `User.id` | +| `-[RLMCredentials credentialsWithUsername:password:]` | `-[RLMCredentials credentialsWithEmail:password:]` | +| `Credentials(username:password:)` | `Credentials(email:password:)` | +| -`[RLMUser apiKeyAuth]` | `-[RLMUser apiKeysAuth]` | +| `User.apiKeyAuth()` | `User.apiKeysAuth()` | +| `-[RLMEmailPasswordAuth registerEmail:password:completion:]` | `-[RLMEmailPasswordAuth registerUserWithEmail:password:completion:]` | +| `App.emailPasswordAuth().registerEmail(email:password:)` | `App.emailPasswordAuth().registerUser(email:password:)` | + +### Compatibility + +* File format: Generates Realms with format v12 (Reads and upgrades all previous formats) +* Realm Studio: 10.0.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.6. + +### Internal + +* Upgraded realm-core from v10.0.0-beta.6 to v10.0.0-beta.7 +* Upgraded realm-sync from v10.0.0-beta.10 to v10.0.0-beta.11 + +10.0.0-beta.4 Release notes (2020-08-28) +============================================================= + +### Enhancements + +* Add support for the 64-bit watchOS simulator added in Xcode 12. +* Add ability to stream change events on a remote MongoDB collection with + `[RLMMongoCollection watch:delegate:delegateQueue]`, + `MongoCollection.watch(delegate)`. When calling `watch(delegate)` you will be + given a `RLMChangeStream` (`ChangeStream`), this will be used to invalidate + and stop the streaming session by calling `[RLMChangeStream close]` + (`ChangeStream.close()`) when needed. +* Add `MongoCollection.watch`, which is a Combine publisher that will stream + change events each time the remote MongoDB collection is updated. +* Add ability to open a synced Realm with a `nil` partition value. + +### Fixed + +* Realm.Configuration.objectTypes now accepts embedded objects +* Ports fixes from 5.3.5 + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the v10.0.0-beta.x series. +* Carthage release for Swift is built with Xcode 11.5. + +### Internal + +* Upgraded realm-core from v10.0.0-beta.1 to v10.0.0-beta.6 +* Upgraded realm-sync from v10.0.0-beta.2 to v10.0.0-beta.10 + +10.0.0-beta.3 Release notes (2020-08-17) +============================================================= + +This release also contains all changes from 5.3.2. + +### Breaking Changes +* The following classes & aliases have been renamed to align Cocoa with the other Realm SDKs: + +| Old API | New API | +|:------------------------------------------------------------|:---------------------------------------------------------------| +| `RLMSyncUser` | `RLMUser` | +| `SyncUser` | `User` | +| `RLMAppCredential` | `RLMCredential` | +| `AppCredential` | `Credential` | +| `RealmApp` | `App` | +| `RLMUserAPIKeyProviderClient` | `RLMAPIKeyAuth` | +| `RLMUsernamePasswordProviderClient` | `RLMEmailPasswordAuth` | +| `UsernamePasswordProviderClient` | `EmailPasswordAuth` | +| `UserAPIKeyProviderClient` | `APIKeyAuth` | + +* The following functionality has also moved to the User + +| Old API | New API | +|:-------------------------------------------------------------|:--------------------------------------------------------------| +| `[RLMApp callFunctionNamed:]` | `[RLMUser callFunctionNamed:]` | +| `App.functions` | `User.functions` | +| `[RLMApp mongoClientWithServiceName:]` | `[RLMUser mongoClientWithServiceName:]` | +| `App.mongoClient(serviceName)` | `User.mongoClient(serviceName)` | +| `[RLMApp userAPIKeyProviderClient]` | `[RLMUser apiKeyAuth]` | +| `App.userAPIKeyProviderClient` | `App.apiKeyAuth()` | +| `[RLMApp logOut:]` | `[RLMUser logOut]` | +| `App.logOut(user)` | `User.logOut()` | +| `[RLMApp removeUser:]` | `[RLMUser remove]` | +| `App.remove(user)` | `User.remove()` | +| `[RLMApp linkUser:credentials:]` | `[RLMUser linkWithCredentials:]` | +| `App.linkUser(user, credentials)` | `User.link(credentials)` | + +* `refreshCustomData()` on User now returns void and passes the custom data to the callback on success. + +### Compatibility +* This release introduces breaking changes w.r.t some sync classes and MongoDB Realm Cloud functionality. +(See the breaking changes section for the full list) +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Studio: 10.0.0 or later. +* Carthage release for Swift is built with Xcode 11.5. + +10.0.0-beta.2 Release notes (2020-06-09) +============================================================= +Xcode 11.3 and iOS 9 are now the minimum supported versions. + +### Enhancements +* Add support for building with Xcode 12 beta 1. watchOS currently requires + removing x86_64 from the supported architectures. Support for the new 64-bit + watch simulator will come in a future release. + +### Fixed +* Opening a SyncSession with LOCAL app deployments would not use the correct endpoints. +* Linking from embedded objects to top-level objects was incorrectly disallowed. +* Opening a Realm file in file format v6 (created by Realm Cocoa versions + between 2.4 and 2.10) would crash. (Since 5.0.0, [Core #3764](https://github.com/realm/realm-core/issues/3764)). +* Upgrading v9 (pre-5.0) Realm files would create a redundant search index for + primary key properties. This index would then be removed the next time the + Realm was opened, resulting in some extra i/o in the upgrade process. + (Since 5.0.0, [Core #3787](https://github.com/realm/realm-core/issues/3787)). +* Fixed a performance issue with upgrading v9 files with search indexes on + non-primary-key properties. (Since 5.0.0, [Core #3767](https://github.com/realm/realm-core/issues/3767)). + +### Compatibility +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* MongoDB Realm: 84893c5 or later. +* APIs are backwards compatible with all previous releases in the 10.0.0-alpha series. +* Carthage release for Swift is built with Xcode 11.5. + +### Internal +* Upgraded realm-core from v6.0.3 to v10.0.0-beta.1 +* Upgraded realm-sync from v5.0.1 to v10.0.0-beta.2 + +10.0.0-beta.1 Release notes (2020-06-08) +============================================================= + +NOTE: This version bumps the Realm file format to version 11. It is not +possible to downgrade to earlier versions. Older files will automatically be +upgraded to the new file format. Only [Realm Studio +10.0.0](https://github.com/realm/realm-studio/releases/tag/v10.0.0-beta.1) or +later will be able to open the new file format. + +### Enhancements + +* Add support for next generation sync. Support for syncing to MongoDB instead + of Realm Object Server. Applications must be created at realm.mongodb.com +* The memory mapping scheme for Realm files has changed to better support + opening very large files. +* Add support for the ObjectId data type. This is an automatically-generated + unique identifier similar to a GUID or a UUID. + ([PR #6450](https://github.com/realm/realm-swift/pull/6450)). +* Add support for the Decimal128 data type. This is a 128-bit IEEE 754 decimal + floating point number similar to NSDecimalNumber. + ([PR #6450](https://github.com/realm/realm-swift/pull/6450)). +* Add support for embedded objects. Embedded objects are objects which are + owned by a single parent object, and are deleted when that parent object is + deleted. They are defined by subclassing `EmbeddedObject` / + `RLMEmbeddedObject` rather than `Object` / `RLMObject`. +* Add `-[RLMSyncUser customData]`/`SyncUser.customData`. Custom data is + configured in your MongoDB Realm App. +* Add `-[RLMApp callFunctionNamed:arguments]`/`RealmApp.functions`. This is the + entry point for calling Remote MongoDB Realm functions. Functions allow you + to define and execute server-side logic for your application. Functions are + written in modern JavaScript (ES6+) and execute in a serverless manner. When + you call a function, you can dynamically access components of the current + application as well as information about the request to execute the function + and the logged in user that sent the request. +* Add `-[RLMApp mongoClientWithServiceName]`/`RealmApp.mongoClient`. This is + the entry point for calling your Remote MongoDB Service. The read operations + are `-[RLMMongoCollection findWhere:completion:]`, `-[RLMMongoCollection + countWhere:completion:]`and `-[RLMMongoCollection + aggregateWithPipeline:completion:]`. The write operations are + `-[RLMMongoCollection insertOneDocument:completion:]`, `-[RLMMongoCollection + insertManyDocuments:completion:]`, `-[RLMMongoCollection + updateOneDocument:completion:]`, `-[RLMMongoCollection + updateManyDocuments:completion:]`, `-[RLMMongoCollection + deleteOneDocument:completion:]`, and `-[RLMMongoCollection + deleteManyDocuments:completion:]`. If you are already familiar with MongoDB + drivers, it is important to understand that the remote MongoCollection only + provides access to the operations available in MongoDB Realm. +* Change `[RLMSyncUser + configurationWithPartitionValue:]`/`SyncUser.configuration(with:)` to accept + all BSON types. Partition values can currently be of types `String`, `Int`, + or `ObjectId`. Opening a realm by partition value is the equivalent of + previously opening a realm by URL. In this case, partitions are meant to be + more closely associated with your data. E.g., if you are running a `Dog` + kennel, and have a field `breed` that acts as your partition key, you could + open up realms based on the breed of the dogs. + +### Breaking Changes + +* We no longer support Realm Cloud (legacy), but instead the new "MongoDB + Realm" Cloud. MongoDB Realm is a serverless platform that enables developers + to quickly build applications without having to set up server infrastructure. + MongoDB Realm is built on top of MongoDB Atlas, automatically integrating the + connection to your database. +* Remove support for Query-based sync, including the configuration parameters + and the `RLMSyncSubscription` and `SyncSubscription` types ([#6437](https://github.com/realm/realm-swift/pull/6437)). +* Primary key properties are no longer marked as being indexed. This reflects + an internal change to how primary keys are handled that should not have any + other visible effects. ([#6440](https://github.com/realm/realm-swift/pull/6440)). +* Remove everything related to sync permissions, including both the path-based + permission system and the object-level privileges for query-based sync. ([#6445](https://github.com/realm/realm-swift/pulls/6445)) +* Primary key uniqueness is now enforced when creating new objects during + migrations, rather than only at the end of migrations. Previously new objects + could be created with duplicate primary keys during a migration as long as + the property was changed to a unique value before the end of the migration, + but now a unique value must be supplied when creating the object. +* Remove support for Realm Object Server. + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* MongoDB Realm: 84893c5 or later. +* APIs are backwards compatible with all previous releases in the 10.0.0-alpha series. +* Carthage release for Swift is built with Xcode 11.5. + +### Internal + +* Upgraded realm-core from v6.0.3 to v10.0.0-beta.1 +* Upgraded realm-sync from v5.0.1 to v10.0.0-beta.2 + +5.5.0 Release notes (2020-10-12) +============================================================= + +### Enhancements + +* Add the ability to capture a NotificationToken when using a Combine publisher + that observes a Realm Object or Collection. The user will call + `saveToken(on:at:)` directly after invoking the publisher to use the feature. + +### Fixed + +* When using `Realm.write(withoutNotifying:)` there was a chance that the + supplied observation blocks would not be skipped when in a write transaction. + ([Object Store #1103](https://github.com/realm/realm-object-store/pull/1103)) +* Comparing two identical unmanaged `List<>`/`RLMArray` objects would fail. + ([#5665](https://github.com/realm/realm-swift/issues/5665)). + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 5.0.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 12. + +5.4.8 Release notes (2020-10-05) +============================================================= + +### Fixed + +* Case-insensitive equality queries on indexed string properties failed to + clear some internal state when rerunning the query. This could manifest as + duplicate results or "key not found" errors. + ([#6830](https://github.com/realm/realm-swift/issues/6830), [#6694](https://github.com/realm/realm-swift/issues/6694), since 5.0.0). + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 5.0.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 12. + +### Internal + +* Upgraded realm-core from v6.1.3 to v6.1.4 +* Upgraded realm-sync from v5.0.28 to v5.0.29 + +5.4.7 Release notes (2020-09-30) +============================================================= + +### Fixed + +* Equality queries on indexed string properties would sometimes throw "key not + found" exceptions if the hash of the string happened to have bit 62 set. + ([.NET #2025](https://github.com/realm/realm-dotnet/issues/2025), since v5.0.0). +* Queries comparing non-optional int properties to nil would behave as if they + were comparing against zero instead (since v5.0.0). + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 5.0.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 12. + +### Internal + +* Upgraded realm-core from v6.1.2 to v6.1.3 +* Upgraded realm-sync from v5.0.27 to v5.0.28 + +5.4.6 Release notes (2020-09-29) +============================================================= + +5.4.5 failed to actually update the core version for installation methods other +than SPM. All changes listed there actually happened in this version for +non-SPM installation methods. + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 5.0.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 12. + +### Internal + +* Upgraded realm-sync from v5.0.26 to v5.0.27 + +5.4.5 Release notes (2020-09-28) +============================================================= + +### Enhancements + +* Slightly (<5%) improve the performance of most operations which involve + reading from a Realm file. + +### Fixed + +* Rerunning a equality query on an indexed string property would give incorrect + results if a previous run of the query matched multiple objects and it now + matches one object. This could manifest as either finding a non-matching + object or a "key not found" exception being thrown. + ([#6536](https://github.com/realm/realm-swift/issues/6536), since 5.0.0). + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 5.0.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 12. + +### Internal + +* Upgraded realm-core from v6.1.1 to v6.1.2 +* Upgraded realm-sync from v5.0.25 to v5.0.26 + +5.4.4 Release notes (2020-09-25) +============================================================= + +### Enhancements +* Improve the asymtotic performance of NOT IN queries on indexed properties. It + is now O(Number of Rows) rather than O(Number of Rows \* Number of values in IN clause.) + +### Fixed + +* Fix a crash inside `realm::Array(Type)::init_from_mem()` which would + sometimes occur when running a query over links immediately after creating + objects of the queried type. + ([#6789](https://github.com/realm/realm-swift/issues/6789) and possibly others, since 5.0.0). +* Possibly fix problems when changing the type of the primary key of an object + from optional to non-optional. + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 5.0.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 12. + +### Internal + +* Upgraded realm-core from v6.0.26 to v6.1.1 +* Upgraded realm-sync from v5.0.23 to v5.0.25 + +5.4.3 Release notes (2020-09-21) +============================================================= + +### Fixed + +* Fix compilation via Carthage when using Xcode 12 ([#6717](https://github.com/realm/realm-swift/issues/6717)). + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.12 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 12. + +5.4.2 Release notes (2020-09-17) +============================================================= + +### Enhancements + +* Add prebuilt binary for Xcode 12 to the release package. + +### Fixed + +* Fix Archiving the Realm and RealmSwift frameworks with Xcode 12. + ([#6774](https://github.com/realm/realm-swift/issues/6774)) + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.12 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 12. + +5.4.1 Release notes (2020-09-16) +============================================================= + +### Enhancements + +* Add prebuilt binary for Xcode 11.7 to the release package. + +### Fixed + +* Fix deadlocks when opening a Realm file in both the iOS simulator and Realm + Studio ([#6743](https://github.com/realm/realm-swift/issues/6743), since 5.3.6). +* Fix Springboard deadlocking when an app is unsuspended while it has an open + Realm file which is stored in an app group on iOS 10-12 + ([#6749](https://github.com/realm/realm-swift/issues/6749), since 5.3.6). +* If you use encryption your application cound crash with a message like + "Opening Realm files of format version 0 is not supported by this version of + Realm". ([#6889](https://github.com/realm/realm-java/issues/6889) among others, since 5.0.0) +* Confining a Realm to a serial queue would throw an error claiming that the + queue was not a serial queue on iOS versions older than 12. + ([#6735](https://github.com/realm/realm-swift/issues/6735), since 5.0.0). +* Results would sometimes give stale results inside a write transaction if a + write which should have updated the Results was made before the first access + of a pre-existing Results object. + ([#6721](https://github.com/realm/realm-swift/issues/6721), since 5.0.0) + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.12 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.7. + +### Internal + +* Upgraded realm-core from v6.0.25 to v6.0.26 +* Upgraded realm-sync from v5.0.22 to v5.0.23 + +5.4.0 Release notes (2020-09-09) +============================================================= + +This version bumps the Realm file format version. This means that older +versions of Realm will be unable to open Realm files written by this version, +and a new version of Realm Studio will be required. There are no actual format +changes and the version bump is just to force a re-migration of incorrectly +upgraded Realms. + +### Fixed + +* Upgrading pre-5.x files with string primary keys would result in a file where + `realm.object(ofType:forPrimaryKey:)` would fail to find the object. + ([#6716](https://github.com/realm/realm-swift/issues/6716), since 5.2.0) +* A write transaction which modifies an object with more than 16 managed + properties and causes the Realm file to grow larger than 2 GB could cause an + assertion failure mentioning "m_has_refs". ([JS #3194](https://github.com/realm/realm-js/issues/3194), since 5.0.0). +* Objects with more than 32 properties could corrupt the Realm file and result + in a variety of crashes. ([Java #7057](https://github.com/realm/realm-java/issues/7057), since 5.0.0). + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.12 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.6. + +### Internal + +* Upgraded realm-core from v6.0.23 to v6.0.25 +* Upgraded realm-sync from v5.0.20 to v5.0.22 + +5.3.6 Release notes (2020-09-02) +============================================================= + +### Fixed + +* Work around iOS 14 no longer allowing the use of file locks in shared + containers, which resulted in the OS killing an app which entered the + background while a Realm was open ([#6671](https://github.com/realm/realm-swift/issues/6671)). +* If an attempt to upgrade a realm has ended with a crash with "migrate_links()" + in the call stack, the realm was left in an invalid state. The migration + logic now handles this state and can complete upgrading files which were + incompletely upgraded by pre-5.3.4 versions. +* Fix deadlocks when writing to a Realm file on an exFAT partition from macOS. + ([#6691](https://github.com/realm/realm-swift/issues/6691)). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.6. + +### Internal + +* Upgraded realm-core from v6.0.19 to v6.0.23 +* Upgraded realm-sync from v5.0.16 to v5.0.20 + +5.3.5 Release notes (2020-08-20) +============================================================= + +### Fixed + +* Opening Realms on background threads could produce spurious Incorrect Thread + exceptions when a cached Realm existed for a previously existing thread with + the same thread ID as the current thread. + ([#6659](https://github.com/realm/realm-swift/issues/6659), + [#6689](https://github.com/realm/realm-swift/issues/6689), + [#6712](https://github.com/realm/realm-swift/issues/6712), since 5.0.0). +* Upgrading a table with incoming links but no properties would crash. This was + probably not possible to hit in practice as we reject object types with no + properties. +* Upgrading a non-nullable List which nonetheless contained null values would + crash. This was possible due to missing error-checking in some older versions + of Realm. + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.6. + +### Internal + +* Upgraded realm-core from v6.0.18 to v6.0.19 +* Upgraded realm-sync from v5.0.15 to v5.0.16 + +5.3.4 Release notes (2020-08-17) +============================================================= + +### Fixed + +* Accessing a Realm after calling `deleteAll()` would sometimes throw an + exception with the reason 'ConstIterator copy failed'. ([#6597](https://github.com/realm/realm-swift/issues/6597), since 5.0.0). +* Fix an assertion failure inside the `migrate_links()` function when upgrading + a pre-5.0 Realm file. +* Fix a bug in memory mapping management. This bug could result in multiple + different asserts as well as segfaults. In many cases stack backtraces would + include members of the EncyptedFileMapping near the top - even if encryption + was not used at all. In other cases asserts or crashes would be in methods + reading an array header or array element. In all cases the application would + terminate immediately. ([Core #3838](https://github.com/realm/realm-core/pull/3838), since v5.0.0). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.6. + +### Internal + +* Upgraded realm-core from v6.0.14 to v6.0.18 +* Upgraded realm-sync from v5.0.14 to v5.0.15 + +5.3.3 Release notes (2020-07-30) +============================================================= + +### Enhancements + +* Add support for the x86_64 watchOS simulator added in Xcode 12. + +### Fixed + +* (RLM)Results objects would incorrectly pin old read transaction versions + until they were accessed after a Realm was refreshed, resulting in the Realm + file growing to large sizes if a Results was retained but not accessed after + every write. ([#6677](https://github.com/realm/realm-swift/issues/6677), since 5.0.0). +* Fix linker errors when using SwiftUI previews with Xcode 12 when Realm was + installed via Swift Package Manager. ([#6625](https://github.com/realm/realm-swift/issues/6625)) + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.6. + +### Internal + +* Upgraded realm-core from v6.0.12 to v6.0.14 +* Upgraded realm-sync from v5.0.12 to v5.0.14 + +5.3.2 Release notes (2020-07-21) +============================================================= + +### Fixed + +* Fix a file format upgrade bug when opening older Realm files. Could cause + assertions like "Assertion failed: ref != 0" during opning of a Realm. + ([Core #6644](https://github.com/realm/realm-swift/issues/6644), since 5.2.0) +* A use-after-free would occur if a Realm was compacted, opened on multiple + threads prior to the first write, then written to while reads were happening + on other threads. This could result in a variety of crashes, often inside + realm::util::EncryptedFileMapping::read_barrier. + (Since v5.0.0, [#6626](https://github.com/realm/realm-swift/issues/6626), + [#6628](https://github.com/realm/realm-swift/issues/6628), + [#6652](https://github.com/realm/realm-swift/issues/6652), + [#6655](https://github.com/realm/realm-swift/issues/6555), + [#6656](https://github.com/realm/realm-swift/issues/6656)). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.6. + +### Internal + +* Upgraded realm-core from v6.0.11 to v6.0.12 +* Upgraded realm-sync from v5.0.11 to v5.0.12 + +5.3.1 Release notes (2020-07-17) +============================================================= + +### Enhancements + +* Add prebuilt binary for Xcode 11.6 to the release package. + +### Fixed + +* Creating an object inside migration which changed that object type's primary + key would hit an assertion failure mentioning primary_key_col + ([#6613](https://github.com/realm/realm-swift/issues/6613), since 5.0.0). +* Modifying the value of a string primary key property inside a migration with + a Realm file which was upgraded from pre-5.0 would corrupt the property's + index, typically resulting in crashes. ([Core #3765](https://github.com/realm/realm-core/issues/3765), since 5.0.0). +* Some Realm files which hit assertion failures when upgrading from the pre-5.0 + file format should now upgrade correctly (Since 5.0.0). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.6. + +### Internal + +* Upgraded realm-core from v6.0.9 to v6.0.11 +* Upgraded realm-sync from v5.0.8 to v5.0.11 + +5.3.0 Release notes (2020-07-14) +============================================================= + +### Enhancements + +* Add `Realm.objectWillChange`, which is a Combine publisher that will emit a + notification each time the Realm is refreshed or a write transaction is + commited. + +### Fixed + +* Fix the spelling of `ObjectKeyIdentifiable`. The old spelling is available + and deprecated for compatibility. +* Rename `RealmCollection.publisher` to `RealmCollection.collectionPublisher`. + The old name interacted with the `publisher` defined by `Sequence` in very + confusing ways, so we need to use a different name. The `publisher` name is + still available for compatibility. ([#6516](https://github.com/realm/realm-swift/issues/6516)) +* Work around "xcodebuild timed out while trying to read + SwiftPackageManagerExample.xcodeproj" errors when installing Realm via + Carthage. ([#6549](https://github.com/realm/realm-swift/issues/6549)). +* Fix a performance regression when using change notifications. (Since 5.0.0, + [#6629](https://github.com/realm/realm-swift/issues/6629)). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.5. + +### Internal + +* Upgraded realm-core from v6.0.8 to v6.0.9 +* Upgraded realm-sync from v5.0.7 to v5.0.8 + +5.2.0 Release notes (2020-06-30) +============================================================= + +### Fixed +* Opening a SyncSession with LOCAL app deployments would not use the correct endpoints. +This release also contains all changes from 5.0.3 and 5.1.0. + +### Breaking Changes +* The following classes & aliases have been renamed to align Cocoa with the other Realm SDKs: + +| Old API | New API | +|:------------------------------------------------------------|:---------------------------------------------------------------| +| `RLMSyncUser` | `RLMUser` | +| `SyncUser` | `User` | +| `RLMAppCredential` | `RLMCredential` | +| `AppCredential` | `Credential` | +| `RealmApp` | `App` | +| `RLMUserAPIKeyProviderClient` | `RLMAPIKeyAuth` | +| `RLMUsernamePasswordProviderClient` | `RLMEmailPasswordAuth` | +| `UsernamePasswordProviderClient` | `EmailPasswordAuth` | +| `UserAPIKeyProviderClient` | `APIKeyAuth` | + +* The following functionality has also moved to the User: + +| Old API | New API | +|:-------------------------------------------------------------|:--------------------------------------------------------------| +| `[RLMApp callFunctionNamed:]` | `[RLMUser callFunctionNamed:]` | +| `App.functions` | `User.functions` | +| `[RLMApp mongoClientWithServiceName:]` | `[RLMUser mongoClientWithServiceName:]` | +| `App.mongoClient(serviceName)` | `User.mongoClient(serviceName)` | +| `[RLMApp userAPIKeyProviderClient]` | `[RLMUser apiKeyAuth]` | +| `App.userAPIKeyProviderClient` | `App.apiKeyAuth()` | +| `[RLMApp logOut:]` | `[RLMUser logOut]` | +| `App.logOut(user)` | `User.logOut()` | +| `[RLMApp removeUser:]` | `[RLMUser remove]` | +| `App.remove(user)` | `User.remove()` | +| `[RLMApp linkUser:credentials:]` | `[RLMUser linkWithCredentials:]` | +| `App.linkUser(user, credentials)` | `User.link(credentials)` | + +* The argument labels in Swift have changed for several methods: +| Old API | New API | +|:-------------------------------------------------------------|:--------------------------------------------------------------| +| `APIKeyAuth.createApiKey(withName:completion:)` | `APIKeyAuth.createApiKey(named:completion:)` | +| `App.login(withCredential:completion:) | `App.login(credentials:completion:)` | +| `App.pushClient(withServiceName:)` | `App.pushClient(serviceName:)` | +| `MongoClient.database(withName:)` | `MongoClient.database(named:)` | + +* `refreshCustomData()` on User now returns void and passes the custom data to the callback on success. + +### Compatibility +* This release introduces breaking changes w.r.t some sync classes and MongoDB Realm Cloud functionality. + (See the breaking changes section for the full list) +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* MongoDB Realm: 84893c5 or later. +* APIs are backwards compatible with all previous releases in the 10.0.0-alpha series. +* Realm Studio: 10.0.0 or later. +* Carthage release for Swift is built with Xcode 11.5. + +### Internal +* Upgraded realm-core from v6.0.3 to v10.0.0-beta.1 +* Upgraded realm-sync from v5.0.1 to v10.0.0-beta.2 + +10.0.0-beta.2 Release notes (2020-06-09) +============================================================= +Xcode 11.3 and iOS 9 are now the minimum supported versions. + +### Enhancements + +* Add support for building with Xcode 12 beta 1. watchOS currently requires + removing x86_64 from the supported architectures. Support for the new 64-bit + watch simulator will come in a future release. + +### Fixed +* Opening a SyncSession with LOCAL app deployments would not use the correct endpoints. +* Linking from embedded objects to top-level objects was incorrectly disallowed. + +* Opening a Realm file in file format v6 (created by Realm Cocoa versions + between 2.4 and 2.10) would crash. (Since 5.0.0, [Core #3764](https://github.com/realm/realm-core/issues/3764)). +* Upgrading v9 (pre-5.0) Realm files would create a redundant search index for + primary key properties. This index would then be removed the next time the + Realm was opened, resulting in some extra i/o in the upgrade process. + (Since 5.0.0, [Core #3787](https://github.com/realm/realm-core/issues/3787)). +* Fixed a performance issue with upgrading v9 files with search indexes on + non-primary-key properties. (Since 5.0.0, [Core #3767](https://github.com/realm/realm-core/issues/3767)). + +### Compatibility +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* MongoDB Realm: 84893c5 or later. +* APIs are backwards compatible with all previous releases in the 10.0.0-alpha series. +* Carthage release for Swift is built with Xcode 11.5. + +### Internal +* Upgraded realm-core from v6.0.3 to v10.0.0-beta.1 +* Upgraded realm-sync from v5.0.1 to v10.0.0-beta.2 + +10.0.0-beta.1 Release notes (2020-06-08) +============================================================= + +NOTE: This version bumps the Realm file format to version 11. It is not +possible to downgrade to earlier versions. Older files will automatically be +upgraded to the new file format. Only [Realm Studio +10.0.0](https://github.com/realm/realm-studio/releases/tag/v10.0.0-beta.1) or +later will be able to open the new file format. + +### Enhancements + +* Add support for next generation sync. Support for syncing to MongoDB instead + of Realm Object Server. Applications must be created at realm.mongodb.com +* The memory mapping scheme for Realm files has changed to better support + opening very large files. +* Add support for the ObjectId data type. This is an automatically-generated + unique identifier similar to a GUID or a UUID. + ([PR #6450](https://github.com/realm/realm-swift/pull/6450)). +* Add support for the Decimal128 data type. This is a 128-bit IEEE 754 decimal + floating point number similar to NSDecimalNumber. + ([PR #6450](https://github.com/realm/realm-swift/pull/6450)). +* Add support for embedded objects. Embedded objects are objects which are + owned by a single parent object, and are deleted when that parent object is + deleted. They are defined by subclassing `EmbeddedObject` / + `RLMEmbeddedObject` rather than `Object` / `RLMObject`. +* Add `-[RLMSyncUser customData]`/`SyncUser.customData`. Custom data is + configured in your MongoDB Realm App. +* Add `-[RLMApp callFunctionNamed:arguments]`/`RealmApp.functions`. This is the + entry point for calling Remote MongoDB Realm functions. Functions allow you + to define and execute server-side logic for your application. Functions are + written in modern JavaScript (ES6+) and execute in a serverless manner. When + you call a function, you can dynamically access components of the current + application as well as information about the request to execute the function + and the logged in user that sent the request. +* Add `-[RLMApp mongoClientWithServiceName]`/`RealmApp.mongoClient`. This is + the entry point for calling your Remote MongoDB Service. The read operations + are `-[RLMMongoCollection findWhere:completion:]`, `-[RLMMongoCollection + countWhere:completion:]`and `-[RLMMongoCollection + aggregateWithPipeline:completion:]`. The write operations are + `-[RLMMongoCollection insertOneDocument:completion:]`, `-[RLMMongoCollection + insertManyDocuments:completion:]`, `-[RLMMongoCollection + updateOneDocument:completion:]`, `-[RLMMongoCollection + updateManyDocuments:completion:]`, `-[RLMMongoCollection + deleteOneDocument:completion:]`, and `-[RLMMongoCollection + deleteManyDocuments:completion:]`. If you are already familiar with MongoDB + drivers, it is important to understand that the remote MongoCollection only + provides access to the operations available in MongoDB Realm. +* Change `[RLMSyncUser + configurationWithPartitionValue:]`/`SyncUser.configuration(with:)` to accept + all BSON types. Partition values can currently be of types `String`, `Int`, + or `ObjectId`. Opening a realm by partition value is the equivalent of + previously opening a realm by URL. In this case, partitions are meant to be + more closely associated with your data. E.g., if you are running a `Dog` + kennel, and have a field `breed` that acts as your partition key, you could + open up realms based on the breed of the dogs. + +### Breaking Changes + +* We no longer support Realm Cloud (legacy), but instead the new "MongoDB + Realm" Cloud. MongoDB Realm is a serverless platform that enables developers + to quickly build applications without having to set up server infrastructure. + MongoDB Realm is built on top of MongoDB Atlas, automatically integrating the + connection to your database. +* Remove support for Query-based sync, including the configuration parameters + and the `RLMSyncSubscription` and `SyncSubscription` types ([#6437](https://github.com/realm/realm-swift/pull/6437)). +* Primary key properties are no longer marked as being indexed. This reflects + an internal change to how primary keys are handled that should not have any + other visible effects. ([#6440](https://github.com/realm/realm-swift/pull/6440)). +* Remove everything related to sync permissions, including both the path-based + permission system and the object-level privileges for query-based sync. ([#6445](https://github.com/realm/realm-swift/pulls/6445)) +* Primary key uniqueness is now enforced when creating new objects during + migrations, rather than only at the end of migrations. Previously new objects + could be created with duplicate primary keys during a migration as long as + the property was changed to a unique value before the end of the migration, + but now a unique value must be supplied when creating the object. +* Remove support for Realm Object Server. + +### Compatibility + +* File format: Generates Realms with format v11 (Reads and upgrades all previous formats) +* MongoDB Realm: 84893c5 or later. +* APIs are backwards compatible with all previous releases in the 10.0.0-alpha series. +* `List.index(of:)` would give incorrect results if it was the very first thing + called on that List after a Realm was refreshed following a write which + modified the List. (Since 5.0.0, [#6606](https://github.com/realm/realm-swift/issues/6606)). +* If a ThreadSafeReference was the only remaining reference to a Realm, + multiple copies of the file could end up mapped into memory at once. This + probably did not have any symptoms other than increased memory usage. (Since 5.0.0). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.5. + +### Internal + +* Upgraded realm-core from v6.0.3 to v10.0.0-beta.1 +* Upgraded realm-sync from v5.0.1 to v10.0.0-beta.2 +* Upgraded realm-core from v6.0.6 to v6.0.7 +* Upgraded realm-sync from v5.0.5 to v5.0.6 +* Upgraded realm-core from v6.0.6 to v6.0.8 +* Upgraded realm-sync from v5.0.5 to v5.0.7 + +5.1.0 Release notes (2020-06-22) +============================================================= + +### Enhancements + +* Allow opening full-sync Realms in read-only mode. This disables local schema + initialization, which makes it possible to open a Realm which the user does + not have write access to without using asyncOpen. In addition, it will report + errors immediately when an operation would require writing to the Realm + rather than reporting it via the sync error handler only after the server + rejects the write. + +### Fixed + +* Opening a Realm using a configuration object read from an existing Realm + would incorrectly bind the new Realm to the original Realm's thread/queue, + resulting in "Realm accessed from incorrect thread." exceptions. + ([#6574](https://github.com/realm/realm-swift/issues/6574), + [#6559](https://github.com/realm/realm-swift/issues/6559), since 5.0.0). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.5. + +5.0.3 Release notes (2020-06-10) +============================================================= + +### Fixed + +* `-[RLMObject isFrozen]` always returned false. ([#6568](https://github.com/realm/realm-swift/issues/6568), since 5.0.0). +* Freezing an object within the write transaction that the object was created + in now throws an exception rather than crashing when the object is first + used. +* The schema for frozen Realms was not properly initialized, leading to crashes + when accessing a RLMLinkingObjects property. + ([#6568](https://github.com/realm/realm-swift/issues/6568), since 5.0.0). +* Observing `Object.isInvalidated` via a keypath literal would produce a + warning in Swift 5.2 due to the property not being marked as @objc. + ([#6554](https://github.com/realm/realm-swift/issues/6554)) + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.5. + +5.0.2 Release notes (2020-06-02) +============================================================= + +### Fixed + +* Fix errSecDuplicateItem (-25299) errors when opening a synchronized Realm + when upgrading from pre-5.0 versions of Realm. + ([#6538](https://github.com/realm/realm-swift/issues/6538), [#6494](https://github.com/realm/realm-swift/issues/6494), since 5.0.0). +* Opening Realms stored on filesystems which do not support preallocation (such + as ExFAT) would give "Operation not supported" exceptions. + ([#6508](https://github.com/realm/realm-swift/issues/6508), since 3.2.0). +* 'NoSuchTable' exceptions would sometimes be thrown after upgrading a Relam + file to the v10 format. ([Core #3701](https://github.com/realm/realm-core/issues/3701), since 5.0.0) +* If the upgrade process was interrupted/killed for various reasons, the + following run could stop with some assertions failing. No instances of this + happening were reported to us. (Since 5.0.0). +* Queries filtering a `List` where the query was on an indexed property over a + link would sometimes give incomplete results. + ([#6540](https://github.com/realm/realm-swift/issues/6540), since 4.1.0 but + more common since 5.0.0) +* Opening a file in read-only mode would attempt to make a spurious write to + the file, causing errors if the file was in read-only storage (since 5.0.0). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.5. + +### Internal + +* Upgraded realm-core from v6.0.4 to v6.0.6 +* Upgraded realm-sync from v5.0.3 to v5.0.5 + +5.0.1 Release notes (2020-05-27) +============================================================= + +### Enhancements + +* Add prebuilt binary for Xcode 11.5 to the release package. + +### Fixed + +* Fix linker error when building a xcframework for Catalyst. + ([#6511](https://github.com/realm/realm-swift/issues/6511), since 4.3.1). +* Fix building for iOS devices when using Swift Package Manager + ([#6522](https://github.com/realm/realm-swift/issues/6522), since 5.0.0). +* `List` and `RealmOptional` properties on frozen objects were not initialized + correctly and would always report `nil` or an empty list. + ([#6527](https://github.com/realm/realm-swift/issues/6527), since 5.0.0). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.5. + +5.0.0 Release notes (2020-05-15) +============================================================= + +NOTE: This version bumps the Realm file format to version 10. It is not +possible to downgrade version 9 or earlier. Files created with older versions +of Realm will be automatically upgraded. Only +[Studio 3.11](https://github.com/realm/realm-studio/releases/tag/v3.11.0) or later will be able +to open the new file format. + +### Enhancements + +* Storing large binary blobs in Realm files no longer forces the file to be at + least 8x the size of the largest blob. +* Reduce the size of transaction logs stored inside the Realm file, reducing + file size growth from large transactions. +* Add support for frozen objects. `Realm`, `Results`, `List` and `Object` now + have `freeze()` methods which return a frozen copy of the object. These + objects behave similarly to creating unmanaged deep copies of the source + objects. They can be read from any thread and do not update when writes are + made to the Realm, but creating frozen objects does not actually copy data + out of the Realm and so can be much faster and use less memory. Frozen + objects cannot be mutated or observed for changes (as they never change). + ([PR #6427](https://github.com/realm/realm-swift/pull/6427)). +* Add the `isFrozen` property to `Realm`, `Results`, `List` and `Object`. +* Add `Realm.Configuration.maxNumberOfActiveVersions`. Each time a write + transaction is performed, a new version is created inside the Realm, and then + any versions which are no longer in use are cleaned up. If too many versions + are kept alive while performing writes (either due to a background thread + performing a long operation that doesn't let the Realm on that thread + refresh, or due to holding onto frozen versions for a long time) the Realm + file will grow in size, potentially to the point where it is too large to be + opened. Setting this configuration option will make write transactions which + would cause the live version count to exceed the limit to instead fail. +* Add support for queue-confined Realms. Rather than being bound to a specific + thread, queue-confined Realms are bound to a serial dispatch queue and can be + used within blocks dispatched to that queue regardless of what thread they + happen to run on. In addition, change notifications will be delivered to that + queue rather than the thread's run loop. ([PR #6478](https://github.com/realm/realm-swift/pull/6478)). +* Add an option to deliver object and collection notifications to a specific + serial queue rather than the current thread. ([PR #6478](https://github.com/realm/realm-swift/pull/6478)). +* Add Combine publishers for Realm types. Realm collections have a `.publisher` + property which publishes the collection each time it changes, and a + `.changesetPublisher` which publishes a `RealmCollectionChange` each time the + collection changes. Corresponding publishers for Realm Objects can be + obtained with the `publisher()` and `changesetPublisher()` global functions. +* Extend Combine publishers which output Realm types with a `.freeze()` + function which will make the publisher instead output frozen objects. +* String primary keys no longer require a separate index, improving insertion + and deletion performance without hurting lookup performance. +* Reduce the encrypted page reclaimer's impact on battery life when encryption + is used. ([Core #3461](https://github.com/realm/realm-core/pull/3461)). + +### Fixed + +* The uploaded bytes in sync progress notifications was sometimes incorrect and + wouldn't exactly equal the uploadable bytes when the uploaded completed. +* macOS binaries were built with the incorrect deployment target (10.14 rather + than 10.9), resulting in linker warnings. ([#6299](https://github.com/realm/realm-swift/issues/6299), since 3.18.0). +* An internal datastructure for List properties could be double-deleted if the + last reference was released from a thread other than the one which the List + was created on at the wrong time. This would typically manifest as + "pthread_mutex_destroy() failed", but could also result in other kinds of + crashes. ([#6333](https://github.com/realm/realm-swift/issues/6333)). +* Sorting on float or double properties containing NaN values had inconsistent + results and would sometimes crash due to out-of-bounds memory accesses. + ([#6357](https://github.com/realm/realm-swift/issues/6357)). + +### Breaking Changes + +* The ObjectChange type in Swift is now generic and includes a reference to the + object which changed. When using `observe(on:)` to receive notifications on a + dispatch queue, the object will be confined to that queue. +* The Realm instance passed in the callback to asyncOpen() is now confined to + the callback queue passed to asyncOpen() rather than the thread which the + callback happens to be called on. This means that the Realm instance may be + stored and reused in further blocks dispatched to that queue, but the queue + must now be a serial queue. +* Files containing Date properties written by version of Realm prior to 1.0 can + no longer be opened. +* Files containing Any properties can no longer be opened. This property type + was never documented and was deprecated in 1.0. +* Deleting objects now preserves the order of objects reported by unsorted + Results rather than performing a swap operation before the delete. Note that + it is still not safe to assume that the order of objects in an unsorted + Results is the order that the objects were created in. +* The minimum supported deployment target for iOS when using Swift Package + Manager to install Realm is now iOS 11. + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Realm Studio: 3.11 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.4.1. + +### Internal + +* Upgraded realm-core from v5.23.8 to v6.0.4 +* Upgraded realm-sync from v4.9.5 to v5.0.3 + +5.0.0-beta.6 Release notes (2020-05-08) +============================================================= + +### Enhancements + +* Add support for queue-confined Realms. Rather than being bound to a specific + thread, queue-confined Realms are bound to a serial dispatch queue and can be + used within blocks dispatched to that queue regardless of what thread they + happen to run on. In addition, change notifications will be delivered to that + queue rather than the thread's run loop. ([PR #6478](https://github.com/realm/realm-swift/pull/6478)). +* Add an option to deliver object and collection notifications to a specific + serial queue rather than the current thread. ([PR #6478](https://github.com/realm/realm-swift/pull/6478)). + +### Fixed + +* The uploaded bytes in sync progress notifications was sometimes incorrect and + wouldn't exactly equal the uploadable bytes when the uploaded completed. + +### Breaking Changes + +* The Realm instance passed in the callback to asyncOpen() is now confined to + the callback queue passed to asyncOpen() rather than the thread which the + callback happens to be called on. This means that the Realm instance may be + stored and reused in further blocks dispatched to that queue, but the queue + must now be a serial queue. + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.4.1. + +### Internal + +* Upgraded realm-core from v6.0.3 to v6.0.4 +* Upgraded realm-sync from v5.0.1 to v5.0.3 + +4.4.1 Release notes (2020-04-16) +============================================================= + +### Enhancements + +* Upgrade Xcode 11.4 binaries to Xcode 11.4.1. + +### Fixed + +* Fix a "previous <= m_schema_transaction_version_max" assertion failure caused + by a race condition that could occur after performing a migration. (Since 3.0.0). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.4.1. + +5.0.0-beta.3 Release notes (2020-02-26) +============================================================= + +Based on 4.3.2 and also includes all changes since 4.3.0. + +### Enhancements + +* Add support for frozen objects. `Realm`, `Results`, `List` and `Object` now + have `freeze()` methods which return a frozen copy of the object. These + objects behave similarly to creating unmanaged deep copies of the source + objects. They can be read from any thread and do not update when writes are + made to the Realm, but creating frozen objects does not actually copy data + out of the Realm and so can be much faster and use less memory. Frozen + objects cannot be mutated or observed for changes (as they never change). + ([PR #6427](https://github.com/realm/realm-swift/pull/6427)). +* Add the `isFrozen` property to `Realm`, `Results`, `List` and `Object`. +* Add `Realm.Configuration.maxNumberOfActiveVersions`. Each time a write + transaction is performed, a new version is created inside the Realm, and then + any versions which are no longer in use are cleaned up. If too many versions + are kept alive while performing writes (either due to a background thread + performing a long operation that doesn't let the Realm on that thread + refresh, or due to holding onto frozen versions for a long time) the Realm + file will grow in size, potentially to the point where it is too large to be + opened. Setting this configuration option will make write transactions which + would cause the live version count to exceed the limit to instead fail. + + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.3. + +### Internal + +* Upgraded realm-core from v6.0.0-beta.3 to v6.0.3 +* Upgraded realm-sync from v5.0.0-beta.2 to v5.0.1 + +5.0.0-beta.2 Release notes (2020-01-13) +============================================================= + +Based on 4.3.0 and also includes all changes since 4.1.1. + +### Fixed + +* Fix compilation when using CocoaPods targeting iOS versions older than 11 (since 5.0.0-alpha). + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.3. + +### Internal + +* Upgraded realm-core from v6.0.0-beta.2 to v6.0.0-beta.3 +* Upgraded realm-sync from v5.0.0-beta.1 to v5.0.0-beta.2 + +5.0.0-beta.1 Release notes (2019-12-13) +============================================================= + +Based on 4.1.1 and also includes all changes since 4.1.0. + +NOTE: This version bumps the Realm file format to version 10. It is not possible to downgrade version 9 or earlier. Files created with older versions of Realm will be automatically upgraded. + +### Enhancements + +* String primary keys no longer require a separate index, improving insertion + and deletion performance without hurting lookup performance. +* Reduce the encrypted page reclaimer's impact on battery life when encryption + is used. ([Core #3461](https://github.com/realm/realm-core/pull/3461)). + +### Fixed + +* Fix an error when a table-backed Results was accessed immediately after + deleting the object previously at the index being accessed (since + 5.0.0-alpha.1). +* macOS binaries were built with the incorrect deployment target (10.14 rather + than 10.9), resulting in linker warnings. ([#6299](https://github.com/realm/realm-swift/issues/6299), since 3.18.0). +* An internal datastructure for List properties could be double-deleted if the + last reference was released from a thread other than the one which the List + was created on at the wrong time. This would typically manifest as + "pthread_mutex_destroy() failed", but could also result in other kinds of + crashes. ([#6333](https://github.com/realm/realm-swift/issues/6333)). +* Sorting on float or double properties containing NaN values had inconsistent + results and would sometimes crash due to out-of-bounds memory accesses. + ([#6357](https://github.com/realm/realm-swift/issues/6357)). + +### Known Issues + +* Changing which property of an object is the primary key in a migration will + break incoming links to objects of that type. +* Changing the primary key of an object with Data properties in a migration + will crash. + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* APIs are backwards compatible with all previous releases in the 5.x.y series. +* Carthage release for Swift is built with Xcode 11.3. + +### Internal + +* Upgraded realm-core from v6.0.0-alpha.24 to v6.0.0-beta.2 +* Upgraded realm-sync from 4.7.1-core6.5 to v5.0.0-beta.1 + +5.0.0-alpha.1 Release notes (2019-11-14) +============================================================= + +Based on 4.1.0. + +### Enhancements + +* Add `-[RLMRealm fileExistsForConfiguration:]`/`Realm.fileExists(for:)`, + which checks if a local Realm file exists for the given configuration. +* Add `-[RLMRealm deleteFilesForConfiguration:]`/`Realm.deleteFiles(for:)` + to delete the Realm file and all auxiliary files for the given configuration. +* Storing large binary blobs in Realm files no longer forces the file to be at + least 8x the size of the largest blob. +* Reduce the size of transaction logs stored inside the Realm file, reducing + file size growth from large transactions. + +NOTE: This version bumps the Realm file format to version 10. It is not +possible to downgrade version 9 or earlier. Files created with older versions +of Realm will be automatically upgraded. This automatic upgrade process is not +yet well tested. Do not open Realm files with data you care about with this +alpha version. + +### Breaking Changes + +* Files containing Date properties written by version of Realm prior to 1.0 can + no longer be opened. +* Files containing Any properties can no longer be opened. This property type + was never documented and was deprecated in 1.0. + +### Compatibility + +* File format: Generates Realms with format v10 (Reads and upgrades v9) +* Realm Object Server: 3.21.0 or later. +* APIs are backwards compatible with all previous releases in the 4.x.y series. +* Carthage release for Swift is built with Xcode 11.3. +* Carthage release for Swift is built with Xcode 11.2.1. + +### Internal + +* Upgraded realm-core from 5.23.6 to v6.0.0-alpha.24. +* Upgraded realm-sync from 4.8.2 to 4.7.1-core6.5. + +4.4.0 Release notes (2020-03-26) +============================================================= + +Swift 4.0 and Xcode 10.3 are now the minimum supported versions. + +### Enhancements + +* Allow setting the `fileUrl` for synchronized Realms. An appropriate local + path based on the sync URL will still be used if it is not overridden. + ([PR #6454](https://github.com/realm/realm-swift/pull/6454)). +* Add Xcode 11.4 binaries to the release package. + +### Fixed + +* None. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.4. + +4.3.2 Release notes (2020-02-06) +============================================================= + +### Enhancements + +* Similar to `autoreleasepool()`, `realm.write()` now returns the value which + the block passed to it returns. Returning `Void` from the block is still allowed. + +### Fixed + +* Fix a memory leak attributed to `property_copyAttributeList` the first time a + Realm is opened when using Realm Swift. ([#6409](https://github.com/realm/realm-swift/issues/6409), since 4.0.0). +* Connecting to a `realms:` sync URL would crash at runtime on iOS 11 (and no + other iOS versions) inside the SSL validation code. (Since 4.3.1). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.3. + +### Internal + +* Upgraded realm-sync from 4.9.4 to 4.9.5. + +4.3.1 Release notes (2020-01-16) +============================================================= + +### Enhancements + +* Reduce the encrypted page reclaimer's impact on battery life when encryption + is used. ([Core #3461](https://github.com/realm/realm-core/pull/3461)). + +### Fixed + +* macOS binaries were built with the incorrect deployment target (10.14 rather + than 10.9), resulting in linker warnings. ([#6299](https://github.com/realm/realm-swift/issues/6299), since 3.18.0). +* An internal datastructure for List properties could be double-deleted if the + last reference was released from a thread other than the one which the List + was created on at the wrong time. This would typically manifest as + "pthread_mutex_destroy() failed", but could also result in other kinds of + crashes. ([#6333](https://github.com/realm/realm-swift/issues/6333)). +* Sorting on float or double properties containing NaN values had inconsistent + results and would sometimes crash due to out-of-bounds memory accesses. + ([#6357](https://github.com/realm/realm-swift/issues/6357)). +* A NOT query on a `List` which happened to have the objects in a + different order than the underlying table would sometimes include the object + immediately before an object which matches the query. ([#6289](https://github.com/realm/realm-swift/issues/6289), since 0.90.0). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.3. + +### Internal + +* Upgraded realm-core from 5.23.6 to 5.23.8. +* Upgraded realm-sync from 4.9.0 to 4.9.4. + +4.3.0 Release notes (2019-12-19) +============================================================= + +### Enhancements + +* Add the ability to set a custom logger function on `RLMSyncManager` which is + called instead of the default NSLog-based logger. +* Expose configuration options for the various types of sync connection + timeouts and heartbeat intervals on `RLMSyncManager`. +* Add an option to have `Realm.asyncOpen()` report an error if the connection + times out rather than swallowing the error and attempting to reconnect until + it succeeds. + +### Fixed + +* Fix a crash when using value(forKey:) on a LinkingObjects property (including + when doing so indirectly, such as by querying on that property). + ([#6366](https://github.com/realm/realm-swift/issues/6366), since 4.0.0). +* Fix a rare crash in `ClientHistoryImpl::integrate_server_changesets()` which + would only happen in Debug builds (since v3.0.0). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.3. + +### Internal + +* Upgraded realm-sync from 4.8.2 to 4.9.0. + +4.2.0 Release notes (2019-12-16) +============================================================= + +### Enhancements + +* Add `-[RLMRealm fileExistsForConfiguration:]`/`Realm.fileExists(for:)`, + which checks if a local Realm file exists for the given configuration. +* Add `-[RLMRealm deleteFilesForConfiguration:]`/`Realm.deleteFiles(for:)` + to delete the Realm file and all auxiliary files for the given configuration. + +### Fixed + +* None. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.3. + +4.1.1 Release notes (2019-11-18) +============================================================= + +### Fixed + +* The UpdatePolicy passed to `realm.add()` or `realm.create()` was not properly + propagated when adding objects within a `List`, which could result in + spurious change notifications when using `.modified`. + ([#6321](https://github.com/realm/realm-swift/issues/6321), since v3.16.0) +* Fix a rare deadlock when a Realm collection or object was observed, then + `refresh()` was explicitly called, and then the NotificationToken from the + observation was destroyed on a different thread (since 0.98.0). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.2. + +4.1.0 Release notes (2019-11-13) +============================================================= + +### Enhancements + +* Improve performance of queries over a link where the final target property + has an index. +* Restore support for storing `@objc enum` properties on RealmSwift.Object + subclasses (broken in 4.0.0), and add support for storing them in + RealmOptional properties. + +### Fixed + +* The sync client would fail to reconnect after failing to integrate a + changeset. The bug would lead to further corruption of the client’s Realm + file. ([RSYNC-48](https://jira.mongodb.org/browse/RSYNC-48), since v3.2.0). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.2. + +### Internal + +* Upgraded realm-core from 5.23.5 to 5.23.6. +* Upgraded realm-sync from 4.7.11 to 4.8.2 + +4.0.0 Release notes (2019-11-08) +============================================================= + +### Breaking Changes + +* All previously deprecated functionality has now been removed entirely. +* The schema discovery logic for RealmSwift.Object subclasses has been + rewritten in Swift. This should not have any effect on valid class + definitions, but there may be types of invalid definitions which previously + worked by coincidence and no longer do. +* `SyncSubscription` no longer has a generic type parameter, as the type was + not actually used for anything. +* The following Swift types have changed from `final class` to `struct`: + - AnyRealmCollection + - LinkingObjects + - ObjectiveCSupport + - Realm + - Results + - SyncSubscription + - ThreadSafeReference + There is no intended change in semantics from this, but certain edge cases + may behave differently. +* The designated initializers defined by RLMObject and Object other than + zero-argument `init` have been replaced with convenience initializers. +* The implementation of the path-based permissions API has been redesigned to + accomodate changes to the server. This should be mostly a transparent change, + with two main exceptions: + 1. SyncPermission objects are no longer live Realm objects, and retrieving + permissions gives an Array rather than Results. + Getting up-to-date permissions now requires calling retrievePermissions() again + rather than observing the permissions. + 2. The error codes for permissions functions have changed. Rather than a + separate error type and set of error codes, permission functions now produce + SyncAuthErrors. + +### Enhancements + +* Improve performance of initializing Realm objects with List properties. + +### Fixed + +* None. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.2. + +3.21.0 Release notes (2019-11-04) +============================================================= + +### Enhancements + +* Add prebuilt binaries for Xcode 11.2. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.2. + +3.20.0 Release notes (2019-10-21) +============================================================= + +### Enhancements + +* Add support for custom refresh token authentication. This allows a user to be + authorized with an externally-issued refresh token when ROS is configured to + recognize the external issuer as a refresh token validator. + ([PR #6311](https://github.com/realm/realm-swift/pull/6311)). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11. + +3.19.1 Release notes (2019-10-17) +============================================================= + +### Enhancements + +* Improve performance of sync changeset integration. Transactions involving a + very large number of objects and cheap operations on each object are as much + as 20% faster. + +### Fixed + +* Fix a crash when a RLMArray/List of primitives was observed and then the + containing object was deleted before the first time that the background + notifier could run. + ([Issue #6234](https://github.com/realm/realm-swift/issues/6234, since 3.0.0)). +* Remove an incorrect assertion that would cause crashes inside + `TableInfoCache::get_table_info()`, with messages like "Assertion failed: info.object_id_index == 0 [3, 0]". + (Since 3.18.0, [#6268](https://github.com/realm/realm-swift/issues/6268) and [#6257](https://github.com/realm/realm-swift/issues/6257)). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.0. + +### Internal + +* Upgrade to REALM_SYNC_VERSION=4.7.11 + +3.19.0 Release notes (2019-09-27) +============================================================= + +### Enhancements + +* Expose ObjectSchema.objectClass in Swift as looking up the class via + NSClassFromString() can be complicated for Swift types. + ([PR #6244](https://github.com/realm/realm-swift/pull/6244)). +* Add support for suppressing notifications using closure-based write/transaction methods. + ([PR #6252](https://github.com/realm/realm-swift/pull/6252)). + +### Fixed + +* IN or chained OR equals queries on an unindexed string column would fail to + match some results if any of the strings were 64 bytes or longer. + ([Core #3386](https://github.com/realm/realm-core/pull/3386), since 3.14.2). +* Query Based Sync subscriptions for queries involving a null timestamp were + not sent to the server correctly and would match no objects. + ([Core #3389](https://github.com/realm/realm-core/pull/3388), since 3.17.3). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.0. + +### Internal + +* Upgrade to REALM_CORE_VERSION=5.23.5 +* Upgrade to REALM_SYNC_VERSION=4.7.8 + +3.18.0 Release notes (2019-09-13) +============================================================= + +The file format for synchronized Realms has changed. Old Realms will be +automatically upgraded when they are opened. Once upgraded, the files will not +be openable by older versions of Realm. The upgrade should not take a +significant amount of time to run or run any risk of errors. + +This does not effect non-synchronized Realms. + +### Enhancements + +* Improve performance of queries on Date properties + ([Core #3344](https://github.com/realm/realm-core/pull/3344), [Core #3351](https://github.com/realm/realm-core/pull/3351)). +* Syncronized Realms are now more aggressive about trimming local history that + is no longer needed. This should reduce file size growth in write-heavy + workloads. ([Sync #3007](https://github.com/realm/realm-sync/issues/3007)). +* Add support for building Realm as an xcframework. + ([PR #6238](https://github.com/realm/realm-swift/pull/6238)). +* Add prebuilt libraries for Xcode 11 to the release package. + ([PR #6248](https://github.com/realm/realm-swift/pull/6248)). +* Add a prebuilt library for Catalyst/UIKit For Mac to the release package + ([PR #6248](https://github.com/realm/realm-swift/pull/6248)). + +### Fixed + +* If a signal interrupted a msync() call, Realm would throw an exception and + the write transaction would fail. This behavior has new been changed to retry + the system call instead. ([Core #3352](https://github.com/realm/realm-core/issues/3352)) +* Queries on the sum or average of an integer property would sometimes give + incorrect results. ([Core #3356](https://github.com/realm/realm-core/pull/3356)). +* Opening query-based synchronized Realms with a small number of subscriptions + performed an unneccesary write transaction. ([ObjectStore #815](https://github.com/realm/realm-object-store/pull/815)). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 11.0 + +### Deprecations + +* `RLMIdentityProviderNickname` has been deprecated in favor of `RLMIdentityProviderUsernamePassword`. +* `+[RLMIdentityProvider credentialsWithNickname]` has been deprecated in favor of `+[RLMIdentityProvider credentialsWithUsername]`. +* `Sync.nickname(String, Bool)` has been deprecated in favor of `Sync.usernamePassword(String, String, Bool)`. + +3.17.3 Release notes (2019-07-24) +============================================================= + +### Enhancements + +* Add Xcode 10.3 binaries to the release package. Remove the Xcode 9.2 and 9.3 binaries. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 10.3. + +3.17.1 Release notes (2019-07-10) +============================================================= + +### Enhancements + +* Add support for canceling asynchronous opens using a new AsyncOpenTask + returned from the asyncOpen() call. ([PR #6193](https://github.com/realm/realm-swift/pull/6193)). +* Importing the Realm SPM package can now be done by pinning to a version + rather than a branch. + +### Fixed + +* Queries on a List/RLMArray which checked an indexed int property would + sometimes give incorrect results. + ([#6154](https://github.com/realm/realm-swift/issues/6154)), since v3.15.0) +* Queries involving an indexed int property had a memory leak if run multiple + times. ([#6186](https://github.com/realm/realm-swift/issues/6186)), since v3.15.0) +* Creating a subscription with `includeLinkingObjects:` performed unneccesary + comparisons, making it extremely slow when large numbers of objects were + involved. ([Core #3311](https://github.com/realm/realm-core/issues/3311), since v3.15.0) + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 10.2.1. + +3.17.0 Release notes (2019-06-28) +============================================================= + +### Enhancements + +* Add support for including Realm via Swift Package Manager. This currently + requires depending on the branch "master" rather than pinning to a version + (i.e. `.package(url: "https://github.com/realm/realm-swift", .branch("master"))`). + ([#6187](https://github.com/realm/realm-swift/pull/6187)). +* Add Codable conformance to RealmOptional and List, and Encodable conformance to Results. + ([PR #6172](https://github.com/realm/realm-swift/pull/6172)). + +### Fixed + +* Attempting to observe an unmanaged LinkingObjects object crashed rather than + throwing an approriate exception (since v0.100.0). +* Opening an encrypted Realm could potentially report that a valid file was + corrupted if the system was low on free memory. + (since 3.14.0, [Core #3267](https://github.com/realm/realm-core/issues/3267)) +* Calling `Realm.asyncOpen()` on multiple Realms at once would sometimes crash + due to a `FileNotFound` exception being thrown on a background worker thread. + (since 3.16.0, [ObjectStore #806](https://github.com/realm/realm-object-store/pull/806)). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 10.2.1. + +3.16.2 Release notes (2019-06-14) +============================================================= + +### Enhancements + +* Add support for Xcode 11 Beta 1. Xcode betas are only supported when building + from source, and not when using a prebuilt framework. + ([PR #6164](https://github.com/realm/realm-swift/pull/6164)). + +### Fixed + +* Using asyncOpen on query-based Realms which didn't already exist on the local + device would fail with error 214. + ([#6178](https://github.com/realm/realm-swift/issues/6178), since 3.16.0). +* asyncOpen on query-based Realms did not wait for the server-created + permission objects to be downloaded, resulting in crashes if modifications to + the permissions were made before creating a subscription for the first time (since 3.0.0). +* EINTR was not handled correctly in the notification worker, which may have + resulted in inconsistent and rare assertion failures in + `ExternalCommitHelper::listen()` when building with assertions enabled. + (PR: [#804](https://github.com/realm/realm-object-store/pull/804), since 0.91.0). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 10.2.1. + +3.16.1 Release notes (2019-05-31) +============================================================= + +### Fixed + +* The static type passed at compile time to `realm.create()` was checked for a + primary key rather than the actual type passed at runtime, resulting in + exceptions like "''RealmSwiftObject' does not have a primary key and can not + be updated'" being thrown even if the object type being created has a primary + key. (since 3.16.0, [#6159](https://github.com/realm/realm-swift/issues/6159)). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 10.2.1. + +3.16.0 Release notes (2019-05-29) +============================================================= + +### Enhancements + +* Add an option to only set the properties which have values different from the + existing ones when updating an existing object with + `Realm.create()`/`-[RLMObject createOrUpdateInRealm:withValue:]`. This makes + notifications report only the properties which have actually changed, and + improves Object Server performance by reducing the number of operations to + merge. (Issue: [#5970](https://github.com/realm/realm-swift/issues/5970), + PR: [#6149](https://github.com/realm/realm-swift/pull/6149)). +* Using `-[RLMRealm asyncOpenWithConfiguration:callbackQueue:]`/`Realm.asyncOpen()` to open a + synchronized Realm which does not exist on the local device now uses an + optimized transfer method to download the initial data for the Realm, greatly + speeding up the first start time for applications which use full + synchronization. This is currently not applicable to query-based + synchronization. (PR: [#6106](https://github.com/realm/realm-swift/pull/6106)). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 10.2.1. + +3.15.0 Release notes (2019-05-06) +============================================================= + +The minimum version of Realm Object Server has been increased to 3.21.0 and +attempting to connect to older versions will produce protocol mismatch errors. +Realm Cloud has already been upgraded to this version, and users using that do +not need to worry about this. + +### Enhancements + +* Add `createdAt`, `updatedAt`, `expiresAt` and `timeToLive` properties to + `RLMSyncSubscription`/`SyncSubscription`. These properties will be `nil` for + subscriptions created with older versions of Realm, but will be automatically + populated for newly-created subscriptions. +* Add support for transient subscriptions by setting the `timeToLive` when + creating the subscription. The next time a subscription is created or updated + after that time has elapsed the subscription will be automatically removed. +* Add support for updating existing subscriptions with a new query or limit. + This is done by passing `update: true` (in swift) or setting + `options.overwriteExisting = YES` (in obj-c) when creating the subscription, + which will make it update the existing subscription with the same name rather + than failing if one already exists with that name. +* Add an option to include the objects from + `RLMLinkingObjects`/`LinkingObjects` properties in sync subscriptions, + similarly to how `RLMArray`/`List` automatically pull in the contained + objects. +* Improve query performance for chains of OR conditions (or an IN condition) on + an unindexed integer or string property. + ([Core PR #2888](https://github.com/realm/realm-core/pull/2888) and + [Core PR #3250](https://github.com/realm/realm-core/pull/3250)). +* Improve query performance for equality conditions on indexed integer properties. + ([Core PR #3272](https://github.com/realm/realm-core/pull/3272)). +* Adjust the file allocation algorithm to reduce fragmentation caused by large + numbers of small blocks. +* Improve file allocator logic to reduce fragmentation and improve commit + performance after many writes. ([Core PR #3278](https://github.com/realm/realm-core/pull/3278)). + +### Fixed + +* Making a query that compares two integer properties could cause a + segmentation fault on x86 (i.e. macOS only). + ([Core PR #3253](https://github.com/realm/realm-core/pull/3256)). +* The `downloadable_bytes` parameter passed to sync progress callbacks reported + a value which correlated to the amount of data left to download, but not + actually the number of bytes which would be downloaded. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.21.0 or later. +* Carthage release for Swift is built with Xcode 10.2.1. + +3.14.2 Release notes (2019-04-25) +============================================================= + +### Enhancements + +* Updating `RLMSyncManager.customRequestHeaders` will immediately update all + currently active sync session with the new headers rather than requiring + manually closing the Realm and reopening it. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.11.0 or later. +* Carthage release for Swift is built with Xcode 10.2.1. + +3.14.1 Release notes (2019-04-04) +============================================================= + +### Fixed + +* Fix "Cannot find interface declaration for 'RealmSwiftObject', superclass of + 'MyRealmObjectClass'" errors when building for a simulator with Xcode 10.2 + with "Install Objective-C Compatibility Header" enabled. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.11.0 or later. +* Carthage release for Swift is built with Xcode 10.2. + +3.14.0 Release notes (2019-03-27) +============================================================= + +### Enhancements + +* Reduce memory usage when committing write transactions. +* Improve performance of compacting encrypted Realm files. + ([PR #3221](https://github.com/realm/realm-core/pull/3221)). +* Add a Xcode 10.2 build to the release package. + +### Fixed + +* Fix a memory leak whenever Realm makes a HTTP(s) request to the Realm Object + Server (Issue [#6058](https://github.com/realm/realm-swift/issues/6058), since 3.8.0). +* Fix an assertion failure when creating an object in a synchronized Realm + after creating an object with a null int primary key in the same write + transaction. + ([PR #3227](https://github.com/realm/realm-core/pull/3227)). +* Fix some new warnings when building with Xcode 10.2 beta. +* Properly clean up sync sessions when the last Realm object using the session + is deallocated while the session is explicitly suspended (since 3.9.0). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.11.0 or later. +* Carthage release for Swift is built with Xcode 10.2. + +### Internal + +* Throw an exception rather than crashing with an assertion failure in more + cases when opening invalid Realm files. +* Upgrade to REALM_CORE_VERSION=5.14.0 +* Upgrade to REALM_SYNC_VERSION=3.15.1 + +3.13.1 Release notes (2019-01-03) +============================================================= + +### Fixed + +* Fix a crash when iterating over `Realm.subscriptions()` using for-in. + (Since 3.13.0, PR [#6050](https://github.com/realm/realm-swift/pull/6050)). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.11.0 or later. + +3.13.0 Release notes (2018-12-14) +============================================================= + +### Enhancements + +* Add `Realm.subscriptions()`/`-[RLMRealm subscriptions]` and + `Realm.subscription(named:)`/`-[RLMRealm subscriptionWithName:]` to enable + looking up existing query-based sync subscriptions. + (PR: https://github.com/realm/realm-swift/pull/6029). + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.11.0 or later. + +3.12.0 Release notes (2018-11-26) +============================================================= + +### Enhancements + +* Add a User-Agent header to HTTP requests made to the Realm Object Server. By + default, this contains information about the Realm library version and your + app's bundle ID. The application identifier can be customized by setting + `RLMSyncManager.sharedManager.userAgent`/`SyncManager.shared.userAgent` prior + to opening a synchronized Realm. + (PR: https://github.com/realm/realm-swift/pull/6007). +* Add Xcode 10.1 binary to the prebuilt package. + +### Fixed + +* None. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.11.0 or later. + +### Internal + +* None. + + +3.11.2 Release notes (2018-11-15) +============================================================= + +### Enhancements + +* Improve the performance of the merge algorithm used for integrating remote + changes from the server. In particular, changesets involving many objects + which all link to a single object should be greatly improved. + +### Fixed + +* Fix a memory leak when removing notification blocks from collections. + PR: [#702](https://github.com/realm/realm-object-store/pull/702), since 1.1.0. +* Fix re-sorting or distincting an already-sorted Results using values from + linked objects. Previously the unsorted order was used to read the values + from the linked objects. + PR [#3102](https://github.com/realm/realm-core/pull/3102), since 3.1.0. +* Fix a set of bugs which could lead to bad changeset assertions when using + sync. The assertions would look something like the following: + `[realm-core-5.10.0] Assertion failed: ndx < size() with (ndx, size()) = [742, 742]`. + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.11.0 or later. + +### Internal + +* None. + + +3.11.1 Release notes (2018-10-19) +============================================================= + +### Enhancements + +* None. + +### Fixed + +* Fix `SyncUser.requestEmailConfirmation` not triggering the email confirmation + flow on ROS. (PR [#5953](https://github.com/realm/realm-swift/pull/5953), since 3.5.0) +* Add some missing validation in the getters and setters of properties on + managed Realm objects, which would sometimes result in an application + crashing with a segfault rather than the appropriate exception being thrown + when trying to write to an object which has been deleted. + (PR [#5952](https://github.com/realm/realm-swift/pull/5952), since 2.8.0) + +### Compatibility + +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* Realm Object Server: 3.11.0 or later. + +### Internal + +* None. + + +3.11.0 Release notes (2018-10-04) +============================================================= + +### Enhancements +* Reduce memory usage when integrating synchronized changes sent by ROS. +* Devices will now report download progress for read-only Realms, allowing the + server to compact Realms more aggressively and reducing the amount of + server-side storage space required. + +### Fixed +* Fix a crash when adding an object with a non-`@objc` `String?` property which + has not been explicitly ignored to a Realm on watchOS 5 (and possibly other + platforms when building with Xcode 10). + (Issue: [5929](https://github.com/realm/realm-swift/issues/5929)). +* Fix some merge algorithm bugs which could result in `BadChangesetError` + being thrown when integrating changes sent by the server. + +### Compatibility +* File format: Generates Realms with format v9 (Reads and upgrades all previous formats) +* **NOTE!!! + You will need to upgrade your Realm Object Server to at least version 3.11.0 + or use [Realm Cloud](https://cloud.realm.io). + If you try to connect to a ROS v3.10.x or previous, you will see an error + like `Wrong protocol version in Sync HTTP request, client protocol version = 25, + server protocol version = 24`.** + +### Internal +* Update to Sync 3.12.2. + + +3.10.0 Release notes (2018-09-19) +============================================================= + +Prebuilt binaries are now built for Xcode 9.2, 9.3, 9.4 and 10.0. + +Older versions of Xcode are still supported when building from source, but you +should be migrating to at least Xcode 9.2 as soon as possible. + +### Enhancements + +* Add support for Watch Series 4 by adding an arm64_32 slice to the library. + +3.9.0 Release notes (2018-09-10) +============================================================= + +### Enhancements + +* Expose RLMSyncUser.refreshToken publicly so that it can be used for custom + HTTP requests to Realm Object Server. +* Add RLMSyncSession.connectionState, which reports whether the session is + currently connected to the Realm Object Server or if it is offline. +* Add `-suspend` and `-resume` methods to `RLMSyncSession` to enable manually + pausing data synchronization. +* Add support for limiting the number of objects matched by a query-based sync + subscription. This requires a server running ROS 3.10.1 or newer. + +### Bugfixes + +* Fix crash when getting the description of a `MigrationObject` which has + `List` properties. +* Fix crash when calling `dynamicList()` on a `MigrationObject`. + +3.8.0 Release notes (2018-09-05) +============================================================= + +### Enhancements + +* Remove some old and no longer applicable migration logic which created an + unencrypted file in the sync metadata directory containing a list of ROS URLs + connected to. +* Add support for pinning SSL certificates used for https and realms + connections by setting `RLMSyncManager.sharedManager.pinnedCertificatePaths` + in obj-c and `SyncManager.shared.pinnedCertificatePaths` in Swift. + +### Bugfixes + +* Fix warnings when building Realm as a static framework with CocoaPods. + +3.7.6 Release notes (2018-08-08) +============================================================= + +### Enhancements + +* Speed up the actual compaction when using compact-on-launch. +* Reduce memory usage when locally merging changes from sync. +* When first connecting to a server, wait to begin uploading changes until + after all changes have been downloaded to reduce the server-side load for + query-based sync. + +3.7.5 Release notes (2018-07-23) +============================================================= + +### Enhancements + +* Improve performance of applying remote changesets from sync. +* Improve performance of creating objects with string primary keys. +* Improve performance of large write transactions. +* Adjust file space allocation strategy to reduce fragmentation, producing + smaller Realm files and typically better performance. +* Close network connections immediately when a sync session is destroyed. +* Report more information in `InvalidDatabase` exceptions. + +### Bugfixes + +* Fix permission denied errors for RLMPlatform.h when building with CocoaPods + and Xcode 10 beta 3. +* Fix a use-after-free when canceling a write transaction which could result in + incorrect "before" values in KVO observations (typically `nil` when a non-nil + value is expected). +* Fix several bugs in the merge algorithm that could lead to memory corruption + and crashes with errors like "bad changeset" and "unreachable code". + +3.7.4 Release notes (2018-06-19) +============================================================= + +### Bugfixes + +* Fix a bug which could potentially flood Realm Object Server with PING + messages after a client device comes back online. + +3.7.3 Release notes (2018-06-18) +============================================================= + +### Enhancements + +* Avoid performing potentially large amounts of pointless background work for + LinkingObjects instances which are accessed and then not immediate deallocated. + +### Bugfixes + +* Fix crashes which could result from extremely fragmented Realm files. +* Fix a bug that could result in a crash with the message "bad changeset error" + when merging changesets from the server. + +3.7.2 Release notes (2018-06-13) +============================================================= + +### Enhancements + +* Add some additional consistency checks that will hopefully produce better + errors when the "prev_ref + prev_size <= ref" assertion failure occurs. + +### Bugfixes + +* Fix a problem in the changeset indexing algorithm that would sometimes + cause "bad permission object" and "bad changeset" errors. +* Fix a large number of linking warnings about symbol visibility by aligning + compiler flags used. +* Fix large increase in size of files produced by `Realm.writeCopy()` introduced in 3.6.0. + +3.7.1 Release notes (2018-06-07) +============================================================= + +* Add support for compiling Realm Swift with Xcode 10 beta 1. + +3.7.0 Release notes (2018-06-06) +============================================================= + +The feature known as Partial Sync has been renamed to Query-based +Synchronization. This has impacted a number of API's. See below for the +details. + +### Deprecations + +* `+[RLMSyncConfiguration initWithUser] has been deprecated in favor of `-[RLMSyncUser configurationWithURL:url]. +* `+[RLMSyncConfiguration automaticConfiguration] has been deprecated in favor of `-[RLMSyncUser configuration]. +* `+[RLMSyncConfiguration automaticConfigurationForUser] has been deprecated in favor of `-[RLMSyncUser configuration]. +* `-[RLMSyncConfiguration isPartial] has been deprecated in favor of `-[RLMSyncConfiguration fullSynchronization]`. + +### Enhancements + +* Add `-[RLMRealm syncSession]` and `Realm.syncSession` to obtain the session used for a synchronized Realm. +* Add `-[RLMSyncUser configuration]`. Query-based sync is the default sync mode for this configuration. +* Add `-[RLMSyncUser configurationWithURL:url]`. Query-based sync is the default sync mode for this configuration. + +3.6.0 Release notes (2018-05-29) +============================================================= + +### Enhancements + +* Improve performance of sync metadata operations and resolving thread-safe + references. +* `shouldCompactOnLaunch` is now supported for compacting the local data of + synchronized Realms. + +### Bugfixes + +* Fix a potential deadlock when a sync session progress callback held the last + strong reference to the sync session. +* Fix some cases where comparisons to `nil` in queries were not properly + serialized when subscribing to a query. +* Don't delete objects added during a migration after a call to `-[RLMMigration + deleteDataForClassName:]`. +* Fix incorrect results and/or crashes when multiple `-[RLMMigration + enumerateObjects:block:]` blocks deleted objects of the same type. +* Fix some edge-cases where `-[RLMMigration enumerateObjects:block:]` + enumerated the incorrect objects following deletions. +* Restore the pre-3.5.0 behavior for Swift optional properties missing an ivar + rather than crashing. + +3.5.0 Release notes (2018-04-25) +============================================================= + +### Enhancements + +* Add wrapper functions for email confirmation and password reset to `SyncUser`. + +### Bugfixes + +* Fix incorrect results when using optional chaining to access a RealmOptional + property in Release builds, or otherwise interacting with a RealmOptional + object after the owning Object has been deallocated. + +3.4.0 Release notes (2018-04-19) +============================================================= + +The prebuilt binary for Carthage is now built for Swift 4.1. + +### Enhancements + +* Expose `RLMSyncManager.authorizationHeaderName`/`SyncManager.authorizationHeaderName` + as a way to override the transport header for Realm Object Server authorization. +* Expose `RLMSyncManager.customRequestHeaders`/`SyncManager.customRequestHeaders` + which allows custom HTTP headers to be appended on requests to the Realm Object Server. +* Expose `RLMSSyncConfiguration.urlPrefix`/`SyncConfiguration.urlPrefix` as a mechanism + to replace the default path prefix in Realm Sync WebSocket requests. + +3.3.2 Release notes (2018-04-03) +============================================================= + +Add a prebuilt binary for Xcode 9.3. + +3.3.1 Release notes (2018-03-28) +============================================================= + +Realm Object Server v3.0.0 or newer is required when using synchronized Realms. + +### Enhancements + +* Expose `RLMObject.object(forPrimaryKey:)` as a factory method for Swift so + that it is callable with recent versions of Swift. + +### Bugfixes + +* Exclude the RLMObject-derived Permissions classes from the types repored by + `Realm.Configuration.defaultConfiguration.objectTypes` to avoid a failed + cast. +* Cancel pending `Realm.asyncOpen()` calls when authentication fails with a + non-transient error such as missing the Realm path in the URL. +* Fix "fcntl() inside prealloc()" errors on APFS. + +3.3.0 Release notes (2018-03-19) +============================================================= + +Realm Object Server v3.0.0 or newer is required when using synchronized Realms. + +### Enhancements + +* Add `Realm.permissions`, `Realm.permissions(forType:)`, and `Realm.permissions(forClassNamed:)` as convenience + methods for accessing the permissions of the Realm or a type. + +### Bugfixes + +* Fix `+[RLMClassPermission objectInRealm:forClass:]` to work for classes that are part of the permissions API, + such as `RLMPermissionRole`. +* Fix runtime errors when applications define an `Object` subclass with the + same name as one of the Permissions object types. + +3.2.0 Release notes (2018-03-15) +============================================================= + +Realm Object Server v3.0.0 or newer is required when using synchronized Realms. + +### Enhancements + +* Added an improved API for adding subscriptions in partially-synchronized Realms. `Results.subscribe()` can be + used to subscribe to any result set, and the returned `SyncSubscription` object can be used to observe the state + of the subscription and ultimately to remove the subscription. See the documentation for more information + (). +* Added a fine-grained permissions system for use with partially-synchronized Realms. This allows permissions to be + defined at the level of individual objects or classes. See the documentation for more information + (). +* Added `SyncConfiguration.automatic()` and `SyncConfiguration.automatic(user:)`. + These methods return a `Realm.Configuration` appropriate for syncing with the default + synced Realm for the current (or specified) user. These should be considered the preferred methods + for accessing synced Realms going forwards. +* Added `+[RLMSyncSession sessionForRealm:]` to retrieve the sync session corresponding to a `RLMRealm`. + +### Bugfixes + +* Fix incorrect initalization of `RLMSyncManager` that made it impossible to + set `errorHandler`. +* Fix compiler warnings when building with Xcode 9.3. +* Fix some warnings when running with UBsan. + +3.2.0-rc.1 Release notes (2018-03-14) +============================================================= + +Realm Object Server v3.0.0-rc.1 or newer is required when using synchronized Realms. + +### Enhancements + +* Added `SyncConfiguration.automatic()` and `SyncConfiguration.automatic(user:)`. + These methods return a `Realm.Configuration` appropriate for syncing with the default + synced Realm for the current (or specified). These should be considered the preferred methods + for accessing synced Realms going forwards. +* A role is now automatically created for each user with that user as its only member. + This simplifies the common use case of restricting access to specific objects to a single user. + This role can be accessed at `PermissionUser.role`. +* Improved error reporting when the server rejects a schema change due to a lack of permissions. + +### Bugfixes + +* Fix incorrect initalization of `RLMSyncManager` that made it impossible to + set `errorHandler`. +* Fix compiler warnings when building with Xcode 9.3. + +3.2.0-beta.3 Release notes (2018-03-01) +============================================================= + +Realm Object Server v3.0.0-alpha.9 or newer is required when using synchronized Realms. + +### Bugfixes + +* Fix a crash that would occur when using partial sync with Realm Object Server v3.0.0-alpha.9. + +3.2.0-beta.2 Release notes (2018-02-28) +============================================================= + +Realm Object Server v3.0.0-alpha.8 or newer is required when using synchronized Realms. + +### Enhancements + +* Added `findOrCreate(forRoleNamed:)` and `findOrCreate(forRole:)` to `List` + to simplify the process of adding permissions for a role. +* Added `+permissionForRoleNamed:inArray:`, `+permissionForRoleNamed:onRealm:`, + `+permissionForRoleNamed:onClass:realm:`, `+permissionForRoleNamed:onClassNamed:realm:`, + and `+permissionForRoleNamed:onObject:` to `RLMSyncPermission` to simplify the process + of adding permissions for a role. +* Added `+[RLMSyncSession sessionForRealm:]` to retrieve the sync session corresponding to a `RLMRealm`. + +### Bugfixes + +* `PermissionRole.users` and `PermissionUser.roles` are now public as intended. +* Fixed the handling of `setPermissions` in `-[RLMRealm privilegesForRealm]` and related methods. + +3.2.0-beta.1 Release notes (2018-02-19) +============================================================= + +### Enhancements + +* Added an improved API for adding subscriptions in partially-synchronized Realms. `Results.subscribe()` can be + used to subscribe to any result set, and the returned `SyncSubscription` object can be used to observe the state + of the subscription and ultimately to remove the subscription. +* Added a fine-grained permissions system for use with partially-synchronized Realms. This allows permissions to be + defined at the level of individual objects or classes. See `Permission` and related types for more information. + +### Bugfixes + +* Fix some warnings when running with UBsan. + +3.1.1 Release notes (2018-02-03) +============================================================= + +Prebuilt Swift frameworks for Carthage are now built with Xcode 9.2. + +### Bugfixes + +* Fix a memory leak when opening Realms with an explicit `objectTypes` array + from Swift. + +3.1.0 Release notes (2018-01-16) +============================================================= + +* Prebuilt frameworks are now included for Swift 3.2.3 and 4.0.3. +* Prebuilt frameworks are no longer included for Swift 3.0.x. +* Building from source with Xcode versions prior to Xcode 8.3 is no longer supported. + +### Enhancements + +* Add `Results.distinct(by:)` / `-[RLMResults distinctResultsUsingKeyPaths:]`, which return a `Results` + containing only objects with unique values at the given key paths. +* Improve performance of change checking for notifications in certain cases. +* Realm Object Server errors not explicitly recognized by the client are now reported to the application + regardless. +* Add support for JSON Web Token as a sync credential source. +* Add support for Nickname and Anonymous Auth as a sync credential source. +* Improve allocator performance when writing to a highly fragmented file. This + should significantly improve performance when inserting large numbers of + objects which have indexed properties. +* Improve write performance for complex object graphs involving many classes + linking to each other. + +### Bugfixes + +* Add a missing check for a run loop in the permission API methods which + require one. +* Fix some cases where non-fatal sync errors were being treated as fatal errors. + +3.0.2 Release notes (2017-11-08) +============================================================= + +Prebuilt frameworks are now included for Swift 3.2.2 and 4.0.2. + +### Bugfixes + +* Fix a crash when a linking objects property is retrieved from a model object instance via + Swift subscripting. +* Fix incorrect behavior if a call to `posix_fallocate` is interrupted. + +3.0.1 Release notes (2017-10-26) +============================================================= + +### Bugfixes + +* Explicitly exclude KVO-generated object subclasses from the schema. +* Fix regression where the type of a Realm model class is not properly determined, causing crashes + when a type value derived at runtime by `type(of:)` is passed into certain APIs. +* Fix a crash when an `Object` subclass has implicitly ignored `let` + properties. +* Fix several cases where adding a notification block from within a + notification callback could produce incorrect results. + +3.0.0 Release notes (2017-10-16) +============================================================= + +### Breaking Changes +* iOS 7 is no longer supported. +* Synchronized Realms require a server running Realm Object Server v2.0 or higher. +* Computed properties on Realm object types are detected and no + longer added to the automatically generated schema. +* The Objective-C and Swift `create(_:, value: update:)` APIs now + correctly nil out nullable properties when updating an existing + object when the `value` argument specifies nil or `NSNull` for + the property value. +* `-[RLMRealm addOrUpdateObjects:]` and `-[RLMRealm deleteObjects:]` now + require their argument to conform to `NSFastEnumeration`, to match similar + APIs that also take collections. +* The way interactive sync errors (client reset and permission denied) + are delivered to the user has been changed. Instead of a block which can + be invoked to immediately delete the offending Realm file, an opaque + token object of type `RLMSyncErrorActionToken` will be returned in the + error object's `userInfo` dictionary. This error object can be passed + into the new `+[RLMSyncSession immediatelyHandleError:]` API to delete + the files. +* The return types of the `SyncError.clientResetInfo()` and + `SyncError.deleteRealmUserInfo()` APIs have been changed. They now return + `RLMSyncErrorActionToken`s or `SyncError.ActionToken`s instead of closures. +* The class methods `Object.className()`, `Object.objectUtilClass()`, and + the property `Object.isInvalidated` can no longer be overriden. +* The callback which runs when a sync user login succeeds or fails + now runs on the main queue by default, or can be explicitly specified + by a new `callbackQueue` parameter on the `{RLM}SyncUser.logIn(...)` API. +* Fix empty strings, binary data, and null on the right side of `BEGINSWITH`, + `ENDSWITH` and `CONTAINS` operators in predicates to match Foundation's + semantics of never matching any strings or data. +* Swift `Object` comparison and hashing behavior now works the same way as + that of `RLMObject` (objects are now only considered equatable if their + model class defines a primary key). +* Fix the way the hash property works on `Object` when the object model has + no primary key. +* Fix an issue where if a Swift model class defined non-generic managed + properties after generic Realm properties (like `List`), the schema + would be constructed incorrectly. Fixes an issue where creating such + models from an array could fail. +* Loosen `RLMArray` and `RLMResults`'s generic constraint from `RLMObject` to + `NSObject`. This may result in having to add some casts to disambiguate + types. +* Remove `RLMSyncPermissionResults`. `RLMSyncPermission`s are now vended out + using a `RLMResults`. This results collection supports all normal collection + operations except for setting values using key-value coding (since + `RLMSyncPermission`s are immutable) and the property aggregation operations. +* `RLMSyncUserInfo` has been significantly enhanced. It now contains metadata + about a user stored on the Realm Object Server, as well as a list of all user account + data associated with that user. +* Starting with Swift 4, `List` now conforms to `MutableCollection` instead of + `RangeReplaceableCollection`. For Swift 4, the empty collection initializer has been + removed, and default implementations of range replaceable collection methods that + make sense for `List` have been added. +* `List.removeLast()` now throws an exception if the list is empty, to more closely match + the behavior of the standard library's `Collection.removeLast()` implementation. +* `RealmCollection`'s associated type `Element` has been renamed `ElementType`. +* The following APIs have been renamed: + +| Old API | New API | +|:------------------------------------------------------------|:---------------------------------------------------------------| +| `NotificationToken.stop()` | `NotificationToken.invalidate()` | +| `-[RLMNotificationToken stop]` | `-[RLMNotificationToken invalidate]` | +| `RealmCollection.addNotificationBlock(_:)` | `RealmCollection.observe(_:)` | +| `RLMSyncProgress` | `RLMSyncProgressMode` | +| `List.remove(objectAtIndex:)` | `List.remove(at:)` | +| `List.swap(_:_:)` | `List.swapAt(_:_:)` | +| `SyncPermissionValue` | `SyncPermission` | +| `RLMSyncPermissionValue` | `RLMSyncPermission` | +| `-[RLMSyncPermission initWithRealmPath:userID:accessLevel]` | `-[RLMSyncPermission initWithRealmPath:identity:accessLevel:]` | +| `RLMSyncPermission.userId` | `RLMSyncPermission.identity` | +| `-[RLMRealm addOrUpdateObjectsInArray:]` | `-[RLMRealm addOrUpdateObjects:]` | + +* The following APIs have been removed: + +| Removed API | Replacement | +|:-------------------------------------------------------------|:------------------------------------------------------------------------------------------| +| `Object.className` | None, was erroneously present. | +| `RLMPropertyTypeArray` | `RLMProperty.array` | +| `PropertyType.array` | `Property.array` | +| `-[RLMArray sortedResultsUsingProperty:ascending:]` | `-[RLMArray sortedResultsUsingKeyPath:ascending:]` | +| `-[RLMCollection sortedResultsUsingProperty:ascending:]` | `-[RLMCollection sortedResultsUsingKeyPath:ascending:]` | +| `-[RLMResults sortedResultsUsingProperty:ascending:]` | `-[RLMResults sortedResultsUsingKeyPath:ascending:]` | +| `+[RLMSortDescriptor sortDescriptorWithProperty:ascending:]` | `+[RLMSortDescriptor sortDescriptorWithKeyPath:ascending:]` | +| `RLMSortDescriptor.property` | `RLMSortDescriptor.keyPath` | +| `AnyRealmCollection.sorted(byProperty:ascending:)` | `AnyRealmCollection.sorted(byKeyPath:ascending:)` | +| `List.sorted(byProperty:ascending:)` | `List.sorted(byKeyPath:ascending:)` | +| `LinkingObjects.sorted(byProperty:ascending:)` | `LinkingObjects.sorted(byKeyPath:ascending:)` | +| `Results.sorted(byProperty:ascending:)` | `Results.sorted(byKeyPath:ascending:)` | +| `SortDescriptor.init(property:ascending:)` | `SortDescriptor.init(keyPath:ascending:)` | +| `SortDescriptor.property` | `SortDescriptor.keyPath` | +| `+[RLMRealm migrateRealm:configuration:]` | `+[RLMRealm performMigrationForConfiguration:error:]` | +| `RLMSyncManager.disableSSLValidation` | `RLMSyncConfiguration.enableSSLValidation` | +| `SyncManager.disableSSLValidation` | `SyncConfiguration.enableSSLValidation` | +| `RLMSyncErrorBadResponse` | `RLMSyncAuthErrorBadResponse` | +| `RLMSyncPermissionResults` | `RLMResults` | +| `SyncPermissionResults` | `Results` | +| `RLMSyncPermissionChange` | `-[RLMSyncUser applyPermission:callback]` / `-[RLMSyncUser deletePermission:callback:]` | +| `-[RLMSyncUser permissionRealmWithError:]` | `-[RLMSyncUser retrievePermissionsWithCallback:]` | +| `RLMSyncPermissionOffer` | `-[RLMSyncUser createOfferForRealmAtURL:accessLevel:expiration:callback:]` | +| `RLMSyncPermissionOfferResponse` | `-[RLMSyncUser acceptOfferForToken:callback:]` | +| `-[NSError rlmSync_clientResetBlock]` | `-[NSError rlmSync_errorActionToken]` / `-[NSError rlmSync_clientResetBackedUpRealmPath]` | +| `-[NSError rlmSync_deleteRealmBlock]` | `-[NSError rlmSync_errorActionToken]` | + +### Enhancements +* `List` can now contain values of types `Bool`, `Int`, `Int8`, `Int16`, + `Int32`, `Int64`, `Float`, `Double`, `String`, `Data`, and `Date` (and + optional versions of all of these) in addition to `Object` subclasses. + Querying `List`s containing values other than `Object` subclasses is not yet + implemented. +* `RLMArray` can now be constrained with the protocols `RLMBool`, `RLMInt`, + `RLMFloat`, `RLMDouble`, `RLMString`, `RLMData`, and `RLMDate` in addition to + protocols defined with `RLM_ARRAY_TYPE`. By default `RLMArray`s of + non-`RLMObject` types can contain null. Indicating that the property is + required (by overriding `+requiredProperties:`) will instead make the values + within the array required. Querying `RLMArray`s containing values other than + `RLMObject` subclasses is not yet implemented. +* Add a new error code to denote 'permission denied' errors when working + with synchronized Realms, as well as an accompanying block that can be + called to inform the binding that the offending Realm's files should be + deleted immediately. This allows recovering from 'permission denied' + errors in a more robust manner. See the documentation for + `RLMSyncErrorPermissionDeniedError` for more information. +* Add Swift `Object.isSameObject(as:_)` API to perform the same function as + the existing Objective-C API `-[RLMObject isEqualToObject:]`. +* Opening a synced Realm whose local copy was created with an older version of + Realm Mobile Platfrom when a migration is not possible to the current version + will result in an `RLMErrorIncompatibleSyncedFile` / `incompatibleSyncedFile` + error. When such an error occurs, the original file is moved to a backup + location, and future attempts to open the synchronized Realm will result in a new + file being created. If you wish to migrate any data from the backup Realm you can + open it using the backup Realm configuration available on the error object. +* Add a preview of partial synchronization. Partial synchronization allows a + synchronized Realm to be opened in such a way that only objects requested by + the user are synchronized to the device. You can use it by setting the + `isPartial` property on a `SyncConfiguration`, opening the Realm, and then + calling `Realm.subscribe(to:where:callback:)` with the type of object you're + interested in, a string containing a query determining which objects you want + to subscribe to, and a callback which will report the results. You may add as + many subscriptions to a synced Realm as necessary. + +### Bugfixes +* Realm no longer throws an "unsupported instruction" exception in some cases + when opening a synced Realm asynchronously. +* Realm Swift APIs that filter or look up the index of an object based on a + format string now properly handle optional arguments in their variadic argument + list. +* `-[RLMResults indexOfObject:]` now properly accounts for access + level. +* Fix a race condition that could lead to a crash accessing to the freed configuration object + if a default configuration was set from a different thread. +* Fixed an issue that crash when enumerating after clearing data during migration. +* Fix a bug where a synced Realm couldn't be reopened even after a successful client reset + in some cases. +* Fix a bug where the sync subsystem waited too long in certain cases to reconnect to the server. +* Fix a bug where encrypted sync-related metadata was incorrectly deleted from upgrading users, + resulting in all users being logged out. +* Fix a bug where permission-related data continued to be synced to a client even after the user + that data belonged to logged out. +* Fix an issue where collection notifications might be delivered inconsistently if a notification + callback was added within another callback for the same collection. + +3.0.0-rc.2 Release notes (2017-10-14) +============================================================= + +### Enhancements +* Reinstate `RLMSyncPermissionSortPropertyUserID` to allow users to sort permissions + to their own Realms they've granted to others. + +### Bugfixes +* `-[RLMResults indexOfObject:]` now properly accounts for access + level. +* Fix a race condition that could lead to a crash accessing to the freed configuration object + if a default configuration was set from a different thread. +* Fixed an issue that crash when enumerating after clearing data during migration. +* Fix a bug where a synced Realm couldn't be reopened even after a successful client reset + in some cases. +* Fix a bug where the sync subsystem waited too long in certain cases to reconnect to the server. +* Fix a bug where encrypted sync-related metadata was incorrectly deleted from upgrading users, + resulting in all users being logged out. +* Fix a bug where permission-related data continued to be synced to a client even after the user + that data belonged to logged out. +* Fix an issue where collection notifications might be delivered inconsistently if a notification + callback was added within another callback for the same collection. + +3.0.0-rc.1 Release notes (2017-10-03) +============================================================= + +### Breaking Changes +* Remove `RLMSyncPermissionSortPropertyUserID` to reflect changes in how the + Realm Object Server reports permissions for a user. +* Remove `RLMSyncPermissionOffer` and `RLMSyncPermissionOfferResponse` classes + and associated helper methods and functions. Use the + `-[RLMSyncUser createOfferForRealmAtURL:accessLevel:expiration:callback:]` + and `-[RLMSyncUser acceptOfferForToken:callback:]` methods instead. + +### Bugfixes + +* The keychain item name used by Realm to manage the encryption keys for + sync-related metadata is now set to a per-app name based on the bundle + identifier. Keys that were previously stored within the single, shared Realm + keychain item will be transparently migrated to the per-application keychain + item. +* Fix downloading of the Realm core binaries when Xcode's command-line tools are + set as the active developer directory for command-line interactions. +* Fix a crash that could occur when resolving a ThreadSafeReference to a `List` + whose parent object had since been deleted. + +3.0.0-beta.4 Release notes (2017-09-22) +============================================================= + +### Breaking Changes + +* Rename `List.remove(objectAtIndex:)` to `List.remove(at:)` to match the name + used by 'RangeReplaceableCollection'. +* Rename `List.swap()` to `List.swapAt()` to match the name used by 'Array'. +* Loosen `RLMArray` and `RLMResults`'s generic constraint from `RLMObject` to + `NSObject`. This may result in having to add some casts to disambiguate + types. +* Remove `RLMPropertyTypeArray` in favor of a separate bool `array` property on + `RLMProperty`/`Property`. +* Remove `RLMSyncPermissionResults`. `RLMSyncPermission`s are now vended out + using a `RLMResults`. This results collection supports all normal collection + operations except for setting values using KVO (since `RLMSyncPermission`s are + immutable) and the property aggregation operations. +* `RealmCollection`'s associated type `Element` has been renamed `ElementType`. +* Realm Swift collection types (`List`, `Results`, `AnyRealmCollection`, and + `LinkingObjects` have had their generic type parameter changed from `T` to + `Element`). +* `RealmOptional`'s generic type parameter has been changed from `T` to `Value`. +* `RLMSyncUserInfo` has been significantly enhanced. It now contains metadata + about a user stored on the Realm Object Server, as well as a list of all user account + data associated with that user. +* Starting with Swift 4, `List` now conforms to `MutableCollection` instead of + `RangeReplaceableCollection`. For Swift 4, the empty collection initializer has been + removed, and default implementations of range replaceable collection methods that + make sense for `List` have been added. +* `List.removeLast()` now throws an exception if the list is empty, to more closely match + the behavior of the standard library's `Collection.removeLast()` implementation. + +### Enhancements + +* `List` can now contain values of types `Bool`, `Int`, `Int8`, `Int16`, + `Int32`, `Int64`, `Float`, `Double`, `String`, `Data`, and `Date` (and + optional versions of all of these) in addition to `Object` subclasses. + Querying `List`s containing values other than `Object` subclasses is not yet + implemented. +* `RLMArray` can now be constrained with the protocols `RLMBool`, `RLMInt`, + `RLMFloat`, `RLMDouble`, `RLMString`, `RLMData`, and `RLMDate` in addition to + protocols defined with `RLM_ARRAY_TYPE`. By default `RLMArray`s of + non-`RLMObject` types can contain null. Indicating that the property is + required (by overriding `+requiredProperties:`) will instead make the values + within the array required. Querying `RLMArray`s containing values other than + `RLMObject` subclasses is not yet implemented. +* Opening a synced Realm whose local copy was created with an older version of + Realm Mobile Platfrom when a migration is not possible to the current version + will result in an `RLMErrorIncompatibleSyncedFile` / `incompatibleSyncedFile` + error. When such an error occurs, the original file is moved to a backup + location, and future attempts to open the synchronized Realm will result in a new + file being created. If you wish to migrate any data from the backup Realm you can + open it using the backup Realm configuration available on the error object. +* Add preview support for partial synchronization. Partial synchronization is + allows a synchronized Realm to be opened in such a way that only objects + requested by the user are synchronized to the device. You can use it by setting + the `isPartial` property on a `SyncConfiguration`, opening the Realm, and then + calling `Realm.subscribe(to:where:callback:)` with the type of object you're + interested in, a string containing a query determining which objects you want + to subscribe to, and a callback which will report the results. You may add as + many subscriptions to a synced Realm as necessary. + +### Bugfixes + +* Realm Swift APIs that filter or look up the index of an object based on a + format string now properly handle optional arguments in their variadic argument + list. + +3.0.0-beta.3 Release notes (2017-08-23) +============================================================= + +### Breaking Changes + +* iOS 7 is no longer supported. +* Computed properties on Realm object types are detected and no + longer added to the automatically generated schema. +* `-[RLMRealm addOrUpdateObjectsInArray:]` has been renamed to + `-[RLMRealm addOrUpdateObjects:]` for consistency with similar methods + that add or delete objects. +* `-[RLMRealm addOrUpdateObjects:]` and `-[RLMRealm deleteObjects:]` now + require their argument to conform to `NSFastEnumeration`, to match similar + APIs that also take collections. +* Remove deprecated `{RLM}SyncPermission` and `{RLM}SyncPermissionChange` + classes. +* `{RLM}SyncPermissionValue` has been renamed to just `{RLM}SyncPermission`. + Its `userId` property has been renamed `identity`, and its + `-initWithRealmPath:userID:accessLevel:` initializer has been renamed + `-initWithRealmPath:identity:accessLevel:`. +* Remove deprecated `-[RLMSyncUser permissionRealmWithError:]` and + `SyncUser.permissionRealm()` APIs. Use the new permissions system. +* Remove deprecated error `RLMSyncErrorBadResponse`. Use + `RLMSyncAuthErrorBadResponse` instead. +* The way interactive sync errors (client reset and permission denied) + are delivered to the user has been changed. Instead of a block which can + be invoked to immediately delete the offending Realm file, an opaque + token object of type `RLMSyncErrorActionToken` will be returned in the + error object's `userInfo` dictionary. This error object can be passed + into the new `+[RLMSyncSession immediatelyHandleError:]` API to delete + the files. +* Remove `-[NSError rlmSync_clientResetBlock]` and + `-[NSError rlmSync_deleteRealmBlock]` APIs. +* The return types of the `SyncError.clientResetInfo()` and + `SyncError.deleteRealmUserInfo()` APIs have been changed. They now return + `RLMSyncErrorActionToken`s or `SyncError.ActionToken`s instead of closures. +* The (erroneously added) instance property `Object.className` has been + removed. +* The class methods `Object.className()`, `Object.objectUtilClass()`, and + the property `Object.isInvalidated` can no longer be overriden. +* The callback which runs when a sync user login succeeds or fails + now runs on the main queue by default, or can be explicitly specified + by a new `callbackQueue` parameter on the `{RLM}SyncUser.logIn(...)` API. +* Rename `{RLM}NotificationToken.stop()` to `invalidate()` and + `{RealmCollection,SyncPermissionResults}.addNotificationBlock(_:)` to + `observe(_:)` to mirror Foundation's new KVO APIs. +* The `RLMSyncProgress` enum has been renamed `RLMSyncProgressMode`. +* Remove deprecated `{RLM}SyncManager.disableSSLValidation` property. Disable + SSL validation on a per-Realm basis by setting the `enableSSLValidation` + property on `{RLM}SyncConfiguration` instead. +* Fix empty strings, binary data, and null on the right side of `BEGINSWITH`, + `ENDSWITH` and `CONTAINS` operators in predicates to match Foundation's + semantics of never matching any strings or data. +* Swift `Object` comparison and hashing behavior now works the same way as + that of `RLMObject` (objects are now only considered equatable if their + model class defines a primary key). +* Fix the way the hash property works on `Object` when the object model has + no primary key. +* Fix an issue where if a Swift model class defined non-generic managed + properties after generic Realm properties (like `List`), the schema + would be constructed incorrectly. Fixes an issue where creating such + models from an array could fail. + +### Enhancements + +* Add Swift `Object.isSameObject(as:_)` API to perform the same function as + the existing Objective-C API `-[RLMObject isEqualToObject:]`. +* Expose additional authentication-related errors that might be reported by + a Realm Object Server. +* An error handler can now be registered on `{RLM}SyncUser`s in order to + report authentication-related errors that affect the user. + +### Bugfixes + +* Sync users are now automatically logged out upon receiving certain types + of errors that indicate they are no longer logged into the server. For + example, users who are authenticated using third-party credentials will find + themselves logged out of the Realm Object Server if the third-party identity + service indicates that their credential is no longer valid. +* Address high CPU usage and hangs in certain cases when processing collection + notifications in highly-connected object graphs. + +3.0.0-beta.2 Release notes (2017-07-26) +============================================================= + +### Breaking Changes + +* Remove the following deprecated Objective-C APIs: + `-[RLMArray sortedResultsUsingProperty:ascending:]`, + `-[RLMCollection sortedResultsUsingProperty:ascending:]`, + `-[RLMResults sortedResultsUsingProperty:ascending:]`, + `+[RLMSortDescriptor sortDescriptorWithProperty:ascending:]`, + `RLMSortDescriptor.property`. + These APIs have been superseded by equivalent APIs that take + or return key paths instead of property names. +* Remove the following deprecated Objective-C API: + `+[RLMRealm migrateRealm:configuration:]`. + Please use `+[RLMRealm performMigrationForConfiguration:error:]` instead. +* Remove the following deprecated Swift APIs: + `AnyRealmCollection.sorted(byProperty:, ascending:)`, + `LinkingObjects.sorted(byProperty:, ascending:)`, + `List.sorted(byProperty:, ascending:)`, + `Results.sorted(byProperty:, ascending:)`, + `SortDescriptor.init(property:, ascending:)`, + `SortDescriptor.property`. + These APIs have been superseded by equivalent APIs that take + or return key paths instead of property names. +* The Objective-C and Swift `create(_:, value: update:)` APIs now + correctly nil out nullable properties when updating an existing + object when the `value` argument specifies nil or `NSNull` for + the property value. + +### Enhancements + +* It is now possible to create and log in multiple Realm Object Server users + with the same identity if they originate from different servers. Note that + if the URLs are different aliases for the same authentication server each + user will still be treated as separate (e.g. they will have their own copy + of each synchronized Realm opened using them). It is highly encouraged that + users defined using the access token credential type be logged in with an + authentication server URL specified; this parameter will become mandatory + in a future version of the SDK. +* Add `-[RLMSyncUser retrieveInfoForUser:identityProvider:completion:]` + API allowing administrator users to retrieve information about a user based + on their provider identity (for example, a username). Requires any edition + of the Realm Object Server 1.8.2 or later. + +### Bugfixes + +* Realm no longer throws an "unsupported instruction" exception in some cases + when opening a synced Realm asynchronously. + +3.0.0-beta Release notes (2017-07-14) +============================================================= + +### Breaking Changes + +* Synchronized Realms require a server running Realm Object Server v2.0 or higher. + +### Enhancements + +* Add a new error code to denote 'permission denied' errors when working + with synchronized Realms, as well as an accompanying block that can be + called to inform the binding that the offending Realm's files should be + deleted immediately. This allows recovering from 'permission denied' + errors in a more robust manner. See the documentation for + `RLMSyncErrorPermissionDeniedError` for more information. +* Add `-[RLMSyncPermissionValue initWithRealmPath:username:accessLevel:]` + API allowing permissions to be applied to a user based on their username + (usually, an email address). Requires any edition of the Realm Object + Server 1.6.0 or later. +* Improve performance of creating Swift objects which contain at least one List + property. + +### Bugfixes + +* `List.description` now reports the correct types for nested lists. +* Fix unmanaged object initialization when a nested property type returned + `false` from `Object.shouldIncludeInDefaultSchema()`. +* Don't clear RLMArrays on self-assignment. + +2.10.2 Release notes (2017-09-27) +============================================================= + +### Bugfixes + +* The keychain item name used by Realm to manage the encryption keys for + sync-related metadata is now set to a per-app name based on the bundle + identifier. Keys that were previously stored within the single, shared Realm + keychain item will be transparently migrated to the per-application keychain + item. +* Fix downloading of the Realm core binaries when Xcode's command-line tools are + set as the active developer directory for command-line interactions. +* Fix a crash that could occur when resolving a ThreadSafeReference to a `List` + whose parent object had since been deleted. + +2.10.1 Release notes (2017-09-14) +============================================================= + +Swift binaries are now produced for Swift 3.0, 3.0.1, 3.0.2, 3.1, 3.2 and 4.0. + +### Enhancements + +* Auxiliary files are excluded from backup by default. + +### Bugfixes + +* Fix more cases where assigning an RLMArray property to itself would clear the + RLMArray. + +2.10.0 Release notes (2017-08-21) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* Expose additional authentication-related errors that might be reported by + a Realm Object Server. +* An error handler can now be registered on `{RLM}SyncUser`s in order to + report authentication-related errors that affect the user. + +### Bugfixes + +* Sorting Realm collection types no longer throws an exception on iOS 7. +* Sync users are now automatically logged out upon receiving certain types + of errors that indicate they are no longer logged into the server. For + example, users who are authenticated using third-party credentials will find + themselves logged out of the Realm Object Server if the third-party identity + service indicates that their credential is no longer valid. +* Address high CPU usage and hangs in certain cases when processing collection + notifications in highly-connected object graphs. + +2.9.1 Release notes (2017-08-01) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* The `shouldCompactOnLaunch` block is no longer invoked if the Realm at that + path is already open on other threads. +* Fix an assertion failure in collection notifications when changes are made to + the schema via sync while the notification block is active. + +2.9.0 Release notes (2017-07-26) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* Add a new error code to denote 'permission denied' errors when working + with synchronized Realms, as well as an accompanying block that can be + called to inform the binding that the offending Realm's files should be + deleted immediately. This allows recovering from 'permission denied' + errors in a more robust manner. See the documentation for + `RLMSyncErrorPermissionDeniedError` for more information. +* Add `-[RLMSyncPermissionValue initWithRealmPath:username:accessLevel:]` + API allowing permissions to be applied to a user based on their username + (usually, an email address). Requires any edition of the Realm Object + Server 1.6.0 or later. +* Improve performance of creating Swift objects which contain at least one List + property. +* It is now possible to create and log in multiple Realm Object Server users + with the same identity if they originate from different servers. Note that + if the URLs are different aliases for the same authentication server each + user will still be treated as separate (e.g. they will have their own copy + of each synchronized Realm opened using them). It is highly encouraged that + users defined using the access token credential type be logged in with an + authentication server URL specified; this parameter will become mandatory + in a future version of the SDK. +* Add `-[RLMSyncUser retrieveInfoForUser:identityProvider:completion:]` + API allowing administrator users to retrieve information about a user based + on their provider identity (for example, a username). Requires any edition + of the Realm Object Server 1.8.2 or later. + +### Bugfixes + +* `List.description` now reports the correct types for nested lists. +* Fix unmanaged object initialization when a nested property type returned + `false` from `Object.shouldIncludeInDefaultSchema()`. +* Don't clear RLMArrays on self-assignment. + +2.8.3 Release notes (2017-06-20) +============================================================= + +### Bugfixes + +* Properly update RealmOptional properties when adding an object with `add(update: true)`. +* Add some missing quotes in error messages. +* Fix a performance regression when creating objects with primary keys. + +2.8.2 Release notes (2017-06-16) +============================================================= + +### Bugfixes + +* Fix an issue where synchronized Realms would eventually disconnect from the + remote server if the user object used to define their sync configuration + was destroyed. +* Restore support for changing primary keys in migrations (broken in 2.8.0). +* Revert handling of adding objects with nil properties to a Realm to the + pre-2.8.0 behavior. + +2.8.1 Release notes (2017-06-12) +============================================================= + +Add support for building with Xcode 9 Beta 1. + +### Bugfixes + +* Fix setting a float property to NaN. +* Fix a crash when using compact on launch in combination with collection + notifications. + +2.8.0 Release notes (2017-06-02) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* Enable encryption on watchOS. +* Add `-[RLMSyncUser changePassword:forUserID:completion:]` API to change an + arbitrary user's password if the current user has administrative privileges + and using Realm's 'password' authentication provider. + Requires any edition of the Realm Object Server 1.6.0 or later. + +### Bugfixes + +* Suppress `-Wdocumentation` warnings in Realm C++ headers when using CocoaPods + with Xcode 8.3.2. +* Throw an appropriate error rather than crashing when an RLMArray is assigned + to an RLMArray property of a different type. +* Fix crash in large (>4GB) encrypted Realm files. +* Improve accuracy of sync progress notifications. +* Fix an issue where synchronized Realms did not connect to the remote server + in certain situations, such as when an application was offline when the Realms + were opened but later regained network connectivity. + +2.7.0 Release notes (2017-05-03) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* Use reachability API to minimize the reconnection delay if the network + connection was lost. +* Add `-[RLMSyncUser changePassword:completion:]` API to change the current + user's password if using Realm's 'password' authentication provider. + Requires any edition of the Realm Object Server 1.4.0 or later. +* `{RLM}SyncConfiguration` now has an `enableSSLValidation` property + (and default parameter in the Swift initializer) to allow SSL validation + to be specified on a per-server basis. +* Transactions between a synced Realm and a Realm Object Server can now + exceed 16 MB in size. +* Add new APIs for changing and retrieving permissions for synchronized Realms. + These APIs are intended to replace the existing Realm Object-based permissions + system. Requires any edition of the Realm Object Server 1.1.0 or later. + +### Bugfixes + +* Support Realm model classes defined in Swift with overridden Objective-C + names (e.g. `@objc(Foo) class SwiftFoo: Object {}`). +* Fix `-[RLMMigration enumerateObjects:block:]` returning incorrect `oldObject` + objects when enumerating a class name after previously deleting a `newObject`. +* Fix an issue where `Realm.asyncOpen(...)` would fail to work when opening a + synchronized Realm for which the user only had read permissions. +* Using KVC to set a `List` property to `nil` now clears it to match the + behavior of `RLMArray` properties. +* Fix crash from `!m_awaiting_pong` assertion failure when using synced Realms. +* Fix poor performance or hangs when performing case-insensitive queries on + indexed string properties that contain many characters that don't differ + between upper and lower case (e.g., numbers, punctuation). + +2.6.2 Release notes (2017-04-21) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix an issue where calling `Realm.asyncOpen(...)` with a synchronized Realm + configuration would fail with an "Operation canceled" error. +* Fix initial collection notification sometimes not being delivered for synced + Realms. +* Fix circular links sometimes resulting in objects not being marked as + modified in change notifications. + +2.6.1 Release notes (2017-04-18) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix an issue where calling `Realm.asyncOpen(...)` with a synchronized Realm + configuration would crash in error cases rather than report the error. + This is a small source breaking change if you were relying on the error + being reported to be a `Realm.Error`. + +2.6.0 Release notes (2017-04-18) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* Add a `{RLM}SyncUser.isAdmin` property indicating whether a user is a Realm + Object Server administrator. +* Add an API to asynchronously open a Realm and deliver it to a block on a + given queue. This performs all work needed to get the Realm to + a usable state (such as running potentially time-consuming migrations) on a + background thread before dispatching to the given queue. In addition, + synchronized Realms wait for all remote content available at the time the + operation began to be downloaded and available locally. +* Add `shouldCompactOnLaunch` block property when configuring a Realm to + determine if it should be compacted before being returned. +* Speed up case-insensitive queries on indexed string properties. +* Add RLMResults's collection aggregate methods to RLMArray. +* Add support for calling the aggregate methods on unmanaged Lists. + +### Bugfixes + +* Fix a deadlock when multiple processes open a Realm at the same time. +* Fix `value(forKey:)`/`value(forKeyPath:)` returning incorrect values for `List` properties. + +2.5.1 Release notes (2017-04-05) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix CocoaPods installation with static libraries and multiple platforms. +* Fix uncaught "Bad version number" exceptions on the notification worker thread + followed by deadlocks when Realms refresh. + +2.5.0 Release notes (2017-03-28) +============================================================= + +Files written by Realm this version cannot be read by earlier versions of Realm. +Old files can still be opened and files open in read-only mode will not be +modified. + +If using synchronized Realms, the Realm Object Server must be running version +1.3.0 or later. + +Swift binaries are now produced for Swift 3.0, 3.0.1, 3.0.2 and 3.1. + +### API Breaking Changes + +* None. + +### Enhancements + +* Add support for multi-level object equality comparisons against `NULL`. +* Add support for the `[d]` modifier on string comparison operators to perform + diacritic-insensitive comparisons. +* Explicitly mark `[[RLMRealm alloc] init]` as unavailable. +* Include the name of the problematic class in the error message when an + invalid property type is marked as the primary key. + +### Bugfixes + +* Fix incorrect column type assertions which could occur after schemas were + merged by sync. +* Eliminate an empty write transaction when opening a synced Realm. +* Support encrypting synchronized Realms by respecting the `encryptionKey` value + of the Realm's configuration. +* Fix crash when setting an `{NS}Data` property close to 16MB. +* Fix for reading `{NS}Data` properties incorrectly returning `nil`. +* Reduce file size growth in cases where Realm versions were pinned while + starting write transactions. +* Fix an assertion failure when writing to large `RLMArray`/`List` properties. +* Fix uncaught `BadTransactLog` exceptions when pulling invalid changesets from + synchronized Realms. +* Fix an assertion failure when an observed `RLMArray`/`List` is deleted after + being modified. + +2.4.4 Release notes (2017-03-13) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* Add `(RLM)SyncPermission` class to allow reviewing access permissions for + Realms. Requires any edition of the Realm Object Server 1.1.0 or later. +* Further reduce the number of files opened per thread-specific Realm on macOS, + iOS and watchOS. + +### Bugfixes + +* Fix a crash that could occur if new Realm instances were created while the + application was exiting. +* Fix a bug that could lead to bad version number errors when delivering + change notifications. +* Fix a potential use-after-free bug when checking validity of results. +* Fix an issue where a sync session might not close properly if it receives + an error while being torn down. +* Fix some issues where a sync session might not reconnect to the server properly + or get into an inconsistent state if revived after invalidation. +* Fix an issue where notifications might not fire when the children of an + observed object are changed. +* Fix an issue where progress notifications on sync sessions might incorrectly + report out-of-date values. +* Fix an issue where multiple threads accessing encrypted data could result in + corrupted data or crashes. +* Fix an issue where certain `LIKE` queries could hang. +* Fix an issue where `-[RLMRealm writeCopyToURL:encryptionKey:error]` could create + a corrupt Realm file. +* Fix an issue where incrementing a synced Realm's schema version without actually + changing the schema could cause a crash. + +2.4.3 Release notes (2017-02-20) +============================================================= + +### API Breaking Changes + +* None. + +### Enhancements + +* Avoid copying copy-on-write data structures, which can grow the file, when the + write does not actually change existing values. +* Improve performance of deleting all objects in an RLMResults. +* Reduce the number of files opened per thread-specific Realm on macOS. +* Improve startup performance with large numbers of `RLMObject`/`Object` + subclasses. + +### Bugfixes + +* Fix synchronized Realms not downloading remote changes when an access token + expires and there are no local changes to upload. +* Fix an issue where values set on a Realm object using `setValue(value:, forKey:)` + that were not themselves Realm objects were not properly converted into Realm + objects or checked for validity. +* Fix an issue where `-[RLMSyncUser sessionForURL:]` could erroneously return a + non-nil value when passed in an invalid URL. +* `SyncSession.Progress.fractionTransferred` now returns 1 if there are no + transferrable bytes. +* Fix sync progress notifications registered on background threads by always + dispatching on a dedicated background queue. +* Fix compilation issues with Xcode 8.3 beta 2. +* Fix incorrect sync progress notification values for Realms originally created + using a version of Realm prior to 2.3.0. +* Fix LLDB integration to be able to display summaries of `RLMResults` once more. +* Reject Swift properties with names which cause them to fall in to ARC method + families rather than crashing when they are accessed. +* Fix sorting by key path when the declared property order doesn't match the order + of properties in the Realm file, which can happen when properties are added in + different schema versions. + +2.4.2 Release notes (2017-01-30) +============================================================= + +### Bugfixes + +* Fix an issue where RLMRealm instances could end up in the autorelease pool + for other threads. + +2.4.1 Release notes (2017-01-27) +============================================================= + +### Bugfixes + +* Fix an issue where authentication tokens were not properly refreshed + automatically before expiring. + +2.4.0 Release notes (2017-01-26) +============================================================= + +This release drops support for compiling with Swift 2.x. +Swift 3.0.0 is now the minimum Swift version supported. + +### API Breaking Changes + +* None. + +### Enhancements + +* Add change notifications for individual objects with an API similar to that + of collection notifications. + +### Bugfixes + +* Fix Realm Objective-C compilation errors with Xcode 8.3 beta 1. +* Fix several error handling issues when renewing expired authentication + tokens for synchronized Realms. +* Fix a race condition leading to bad_version exceptions being thrown in + Realm's background worker thread. + +2.3.0 Release notes (2017-01-19) +============================================================= + +### Sync Breaking Changes + +* Make `PermissionChange`'s `id` property a primary key. + +### API Breaking Changes + +* None. + +### Enhancements + +* Add `SyncPermissionOffer` and `SyncPermissionOfferResponse` classes to allow + creating and accepting permission change events to synchronized Realms between + different users. +* Support monitoring sync transfer progress by registering notification blocks + on `SyncSession`. Specify the transfer direction (`.upload`/`.download`) and + mode (`.reportIndefinitely`/`.forCurrentlyOutstandingWork`) to monitor. + +### Bugfixes + +* Fix a call to `commitWrite(withoutNotifying:)` committing a transaction that + would not have triggered a notification incorrectly skipping the next + notification. +* Fix incorrect results and crashes when conflicting object insertions are + merged by the synchronization mechanism when there is a collection + notification registered for that object type. + +2.2.0 Release notes (2017-01-12) +============================================================= + +### Sync Breaking Changes (In Beta) + +* Sync-related error reporting behavior has been changed. Errors not related + to a particular user or session are only reported if they are classed as + 'fatal' by the underlying sync engine. +* Added `RLMSyncErrorClientResetError` to `RLMSyncError` enum. + +### API Breaking Changes + +* The following Objective-C APIs have been deprecated in favor of newer or preferred versions: + +| Deprecated API | New API | +|:------------------------------------------------------------|:------------------------------------------------------------| +| `-[RLMArray sortedResultsUsingProperty:]` | `-[RLMArray sortedResultsUsingKeyPath:]` | +| `-[RLMCollection sortedResultsUsingProperty:]` | `-[RLMCollection sortedResultsUsingKeyPath:]` | +| `-[RLMResults sortedResultsUsingProperty:]` | `-[RLMResults sortedResultsUsingKeyPath:]` | +| `+[RLMSortDescriptor sortDescriptorWithProperty:ascending]` | `+[RLMSortDescriptor sortDescriptorWithKeyPath:ascending:]` | +| `RLMSortDescriptor.property` | `RLMSortDescriptor.keyPath` | + +* The following Swift APIs have been deprecated in favor of newer or preferred versions: + +| Deprecated API | New API | +|:------------------------------------------------------|:-------------------------------------------------| +| `LinkingObjects.sorted(byProperty:ascending:)` | `LinkingObjects.sorted(byKeyPath:ascending:)` | +| `List.sorted(byProperty:ascending:)` | `List.sorted(byKeyPath:ascending:)` | +| `RealmCollection.sorted(byProperty:ascending:)` | `RealmCollection.sorted(byKeyPath:ascending:)` | +| `Results.sorted(byProperty:ascending:)` | `Results.sorted(byKeyPath:ascending:)` | +| `SortDescriptor(property:ascending:)` | `SortDescriptor(keyPath:ascending:)` | +| `SortDescriptor.property` | `SortDescriptor.keyPath` | + +### Enhancements + +* Introduce APIs for safely passing objects between threads. Create a + thread-safe reference to a thread-confined object by passing it to the + `+[RLMThreadSafeReference referenceWithThreadConfined:]`/`ThreadSafeReference(to:)` + constructor, which you can then safely pass to another thread to resolve in + the new Realm with `-[RLMRealm resolveThreadSafeReference:]`/`Realm.resolve(_:)`. +* Realm collections can now be sorted by properties over to-one relationships. +* Optimized `CONTAINS` queries to use Boyer-Moore algorithm + (around 10x speedup on large datasets). + +### Bugfixes + +* Setting `deleteRealmIfMigrationNeeded` now also deletes the Realm if a file + format migration is required, such as when moving from a file last accessed + with Realm 0.x to 1.x, or 1.x to 2.x. +* Fix queries containing nested `SUBQUERY` expressions. +* Fix spurious incorrect thread exceptions when a thread id happens to be + reused while an RLMRealm instance from the old thread still exists. +* Fixed various bugs in aggregate methods (max, min, avg, sum). + +2.1.2 Release notes (2016--12-19) +============================================================= + +This release adds binary versions of Swift 3.0.2 frameworks built with Xcode 8.2. + +### Sync Breaking Changes (In Beta) + +* Rename occurences of "iCloud" with "CloudKit" in APIs and comments to match + naming in the Realm Object Server. + +### API Breaking Changes + +* None. + +### Enhancements + +* Add support for 'LIKE' queries (wildcard matching). + +### Bugfixes + +* Fix authenticating with CloudKit. +* Fix linker warning about "Direct access to global weak symbol". + +2.1.1 Release notes (2016-12-02) +============================================================= + +### Enhancements + +* Add `RealmSwift.ObjectiveCSupport.convert(object:)` methods to help write + code that interoperates between Realm Objective-C and Realm Swift APIs. +* Throw exceptions when opening a Realm with an incorrect configuration, like: + * `readOnly` set with a sync configuration. + * `readOnly` set with a migration block. + * migration block set with a sync configuration. +* Greatly improve performance of write transactions which make a large number of + changes to indexed properties, including the automatic migration when opening + files written by Realm 1.x. + +### Bugfixes + +* Reset sync metadata Realm in case of decryption error. +* Fix issue preventing using synchronized Realms in Xcode Playgrounds. +* Fix assertion failure when migrating a model property from object type to + `RLMLinkingObjects` type. +* Fix a `LogicError: Bad version number` exception when using `RLMResults` with + no notification blocks and explicitly called `-[RLMRealm refresh]` from that + thread. +* Logged-out users are no longer returned from `+[RLMSyncUser currentUser]` or + `+[RLMSyncUser allUsers]`. +* Fix several issues which could occur when the 1001st object of a given type + was created or added to an RLMArray/List, including crashes when rerunning + existing queries and possibly data corruption. +* Fix a potential crash when the application exits due to a race condition in + the destruction of global static variables. +* Fix race conditions when waiting for sync uploads or downloads to complete + which could result in crashes or the callback being called too early. + +2.1.0 Release notes (2016-11-18) +============================================================= + +### Sync Breaking Changes (In Beta) + +* None. + +### API breaking changes + +* None. + +### Enhancements + +* Add the ability to skip calling specific notification blocks when committing + a write transaction. + +### Bugfixes + +* Deliver collection notifications when beginning a write transaction which + advances the read version of a Realm (previously only Realm-level + notifications were sent). +* Fix some scenarios which would lead to inconsistent states when using + collection notifications. +* Fix several race conditions in the notification functionality. +* Don't send Realm change notifications when canceling a write transaction. + +2.0.4 Release notes (2016-11-14) +============================================================= + +### Sync Breaking Changes (In Beta) + +* Remove `RLMAuthenticationActions` and replace + `+[RLMSyncCredential credentialWithUsername:password:actions:]` with + `+[RLMSyncCredential credentialsWithUsername:password:register:]`. +* Rename `+[RLMSyncUser authenticateWithCredential:]` to + `+[RLMSyncUser logInWithCredentials:]`. +* Rename "credential"-related types and methods to + `RLMSyncCredentials`/`SyncCredentials` and consistently refer to credentials + in the plural form. +* Change `+[RLMSyncUser all]` to return a dictionary of identifiers to users and + rename to: + * `+[RLMSyncUser allUsers]` in Objective-C. + * `SyncUser.allUsers()` in Swift 2. + * `SyncUser.all` in Swift 3. +* Rename `SyncManager.sharedManager()` to `SyncManager.shared` in Swift 3. +* Change `Realm.Configuration.syncConfiguration` to take a `SyncConfiguration` + struct rather than a named tuple. +* `+[RLMSyncUser logInWithCredentials:]` now invokes its callback block on a + background queue. + +### API breaking changes + +* None. + +### Enhancements + +* Add `+[RLMSyncUser currentUser]`. +* Add the ability to change read, write and management permissions for + synchronized Realms using the management Realm obtained via the + `-[RLMSyncUser managementRealmWithError:]` API and the + `RLMSyncPermissionChange` class. + +### Bugfixes + +* None. + +2.0.3 Release notes (2016-10-27) +============================================================= + +This release adds binary versions of Swift 3.0.1 frameworks built with Xcode 8.1 +GM seed. + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix a `BadVersion` exception caused by a race condition when delivering + collection change notifications. +* Fix an assertion failure when additional model classes are added and + `deleteRealmIfMigrationNeeded` is enabled. +* Fix a `BadTransactLog` exception when deleting an `RLMResults` in a synced + Realm. +* Fix an assertion failure when a write transaction is in progress at the point + of process termination. +* Fix a crash that could occur when working with a `RLMLinkingObject` property + of an unmanaged object. + +2.0.2 Release notes (2016-10-05) +============================================================= + +This release is not protocol-compatible with previous version of the Realm +Mobile Platform. + +### API breaking changes + +* Rename Realm Swift's `User` to `SyncUser` to make clear that it relates to the + Realm Mobile Platform, and to avoid potential conflicts with other `User` types. + +### Bugfixes + +* Fix Realm headers to be compatible with pre-C++11 dialects of Objective-C++. +* Fix incorrect merging of RLMArray/List changes when objects with the same + primary key are created on multiple devices. +* Fix bad transaction log errors after deleting objects on a different device. +* Fix a BadVersion error when a background worker finishes running while older + results from that worker are being delivered to a different thread. + +2.0.1 Release notes (2016-09-29) +============================================================= + +### Bugfixes + +* Fix an assertion failure when opening a Realm file written by a 1.x version + of Realm which has an indexed nullable int or bool property. + +2.0.0 Release notes (2016-09-27) +============================================================= + +This release introduces support for the Realm Mobile Platform! +See for an overview +of these great new features. + +### API breaking changes + +* By popular demand, `RealmSwift.Error` has been moved from the top-level + namespace into a `Realm` extension and is now `Realm.Error`, so that it no + longer conflicts with `Swift.Error`. +* Files written by Realm 2.0 cannot be read by 1.x or earlier versions. Old + files can still be opened. + +### Enhancements + +* The .log, .log_a and .log_b files no longer exist and the state tracked in + them has been moved to the main Realm file. This reduces the number of open + files needed by Realm, improves performance of both opening and writing to + Realms, and eliminates a small window where committing write transactions + would prevent other processes from opening the file. + +### Bugfixes + +* Fix an assertion failure when sorting by zero properties. +* Fix a mid-commit crash in one process also crashing all other processes with + the same Realm open. +* Properly initialize new nullable float and double properties added to + existing objects to null rather than 0. +* Fix a stack overflow when objects with indexed string properties had very + long common prefixes. +* Fix a race condition which could lead to crashes when using async queries or + collection notifications. +* Fix a bug which could lead to incorrect state when an object which links to + itself is deleted from the Realm. + +1.1.0 Release notes (2016-09-16) +============================================================= + +This release brings official support for Xcode 8, Swift 2.3 and Swift 3.0. +Prebuilt frameworks are now built with Xcode 7.3.1 and Xcode 8.0. + +### API breaking changes + +* Deprecate `migrateRealm:` in favor of new `performMigrationForConfiguration:error:` method + that follows Cocoa's NSError conventions. +* Fix issue where `RLMResults` used `id `instead of its generic type as the return + type of subscript. + +### Enhancements + +* Improve error message when using NSNumber incorrectly in Swift models. +* Further reduce the download size of the prebuilt static libraries. +* Improve sort performance, especially on non-nullable columns. +* Allow partial initialization of object by `initWithValue:`, deferring + required property checks until object is added to Realm. + +### Bugfixes + +* Fix incorrect truncation of the constant value for queries of the form + `column < value` for `float` and `double` columns. +* Fix crash when an aggregate is accessed as an `Int8`, `Int16`, `Int32`, or `Int64`. +* Fix a race condition that could lead to a crash if an RLMArray or List was + deallocated on a different thread than it was created on. +* Fix a crash when the last reference to an observed object is released from + within the observation. +* Fix a crash when `initWithValue:` is used to create a nested object for a class + with an uninitialized schema. +* Enforce uniqueness for `RealmOptional` primary keys when using the `value` setter. + +1.0.2 Release notes (2016-07-13) +============================================================= + +### API breaking changes + +* Attempting to add an object with no properties to a Realm now throws rather than silently + doing nothing. + +### Enhancements + +* Swift: A `write` block may now `throw`, reverting any changes already made in + the transaction. +* Reduce address space used when committing write transactions. +* Significantly reduce the download size of prebuilt binaries and slightly + reduce the final size contribution of Realm to applications. +* Improve performance of accessing RLMArray properties and creating objects + with List properties. + +### Bugfixes + +* Fix a crash when reading the shared schema from an observed Swift object. +* Fix crashes or incorrect results when passing an array of values to + `createOrUpdate` after reordering the class's properties. +* Ensure that the initial call of a Results notification block is always passed + .Initial even if there is a write transaction between when the notification + is added and when the first notification is delivered. +* Fix a crash when deleting all objects in a Realm while fast-enumerating query + results from that Realm. +* Handle EINTR from flock() rather than crashing. +* Fix incorrect behavior following a call to `[RLMRealm compact]`. +* Fix live updating and notifications for Results created from a predicate involving + an inverse relationship to be triggered when an object at the other end of the relationship + is modified. + +1.0.1 Release notes (2016-06-12) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Significantly improve performance of opening Realm files, and slightly + improve performance of committing write transactions. + +### Bugfixes + +* Swift: Fix an error thrown when trying to create or update `Object` instances via + `add(:_update:)` with a primary key property of type `RealmOptional`. +* Xcode playground in Swift release zip now runs successfully. +* The `key` parameter of `Realm.objectForPrimaryKey(_:key:)`/ `Realm.dynamicObjectForPrimaryKey(_:key:)` + is now marked as optional. +* Fix a potential memory leak when closing Realms after a Realm file has been + opened on multiple threads which are running in active run loops. +* Fix notifications breaking on tvOS after a very large number of write + transactions have been committed. +* Fix a "Destruction of mutex in use" assertion failure after an error while + opening a file. +* Realm now throws an exception if an `Object` subclass is defined with a managed Swift `lazy` property. + Objects with ignored `lazy` properties should now work correctly. +* Update the LLDB script to work with recent changes to the implementation of `RLMResults`. +* Fix an assertion failure when a Realm file is deleted while it is still open, + and then a new Realm is opened at the same path. Note that this is still not + a supported scenario, and may break in other ways. + +1.0.0 Release notes (2016-05-25) +============================================================= + +No changes since 0.103.2. + +0.103.2 Release notes (2016-05-24) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Improve the error messages when an I/O error occurs in `writeCopyToURL`. + +### Bugfixes + +* Fix an assertion failure which could occur when opening a Realm after opening + that Realm failed previously in some specific ways in the same run of the + application. +* Reading optional integers, floats, and doubles from within a migration block + now correctly returns `nil` rather than 0 when the stored value is `nil`. + +0.103.1 Release notes (2016-05-19) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix a bug that sometimes resulted in a single object's NSData properties + changing from `nil` to a zero-length non-`nil` NSData when a different object + of the same type was deleted. + +0.103.0 Release notes (2016-05-18) +============================================================= + +### API breaking changes + +* All functionality deprecated in previous releases has been removed entirely. +* Support for Xcode 6.x & Swift prior to 2.2 has been completely removed. +* `RLMResults`/`Results` now become empty when a `RLMArray`/`List` or object + they depend on is deleted, rather than throwing an exception when accessed. +* Migrations are no longer run when `deleteRealmIfMigrationNeeded` is set, + recreating the file instead. + +### Enhancements + +* Added `invalidated` properties to `RLMResults`/`Results`, `RLMLinkingObjects`/`LinkingObjects`, + `RealmCollectionType` and `AnyRealmCollection`. These properties report whether the Realm + the object is associated with has been invalidated. +* Some `NSError`s created by Realm now have more descriptive user info payloads. + +### Bugfixes + +* None. + +0.102.1 Release notes (2016-05-13) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Return `RLMErrorSchemaMismatch` error rather than the more generic `RLMErrorFail` + when a migration is required. +* Improve the performance of allocating instances of `Object` subclasses + that have `LinkingObjects` properties. + +### Bugfixes + +* `RLMLinkingObjects` properties declared in Swift subclasses of `RLMObject` + now work correctly. +* Fix an assertion failure when deleting all objects of a type, inserting more + objects, and then deleting some of the newly inserted objects within a single + write transaction when there is an active notification block for a different + object type which links to the objects being deleted. +* Fix crashes and/or incorrect results when querying over multiple levels of + `LinkingObjects` properties. +* Fix opening read-only Realms on multiple threads at once. +* Fix a `BadTransactLog` exception when storing dates before the unix epoch (1970-01-01). + +0.102.0 Release notes (2016-05-09) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Add a method to rename properties during migrations: + * Swift: `Migration.renamePropertyForClass(_:oldName:newName:)` + * Objective-C: `-[RLMMigration renamePropertyForClass:oldName:newName:]` +* Add `deleteRealmIfMigrationNeeded` to + `RLMRealmConfiguration`/`Realm.Configuration`. When this is set to `true`, + the Realm file will be automatically deleted and recreated when there is a + schema mismatch rather than migrated to the new schema. + +### Bugfixes + +* Fix `BETWEEN` queries that traverse `RLMArray`/`List` properties to ensure that + a single related object satisfies the `BETWEEN` criteria, rather than allowing + different objects in the array to satisfy the lower and upper bounds. +* Fix a race condition when a Realm is opened on one thread while it is in the + middle of being closed on another thread which could result in crashes. +* Fix a bug which could result in changes made on one thread being applied + incorrectly on other threads when those threads are refreshed. +* Fix crash when migrating to the new date format introduced in 0.101.0. +* Fix crash when querying inverse relationships when objects are deleted. + +0.101.0 Release notes (2016-05-04) +============================================================= + +### API breaking changes + +* Files written by this version of Realm cannot be read by older versions of + Realm. Existing files will automatically be upgraded when they are opened. + +### Enhancements + +* Greatly improve performance of collection change calculation for complex + object graphs, especially for ones with cycles. +* NSDate properties now support nanoseconds precision. +* Opening a single Realm file on multiple threads now shares a single memory + mapping of the file for all threads, significantly reducing the memory + required to work with large files. +* Crashing while in the middle of a write transaction no longer blocks other + processes from performing write transactions on the same file. +* Improve the performance of refreshing a Realm (including via autorefresh) + when there are live Results/RLMResults objects for that Realm. + +### Bugfixes + +* Fix an assertion failure of "!more_before || index >= std::prev(it)->second)" + in `IndexSet::do_add()`. +* Fix a crash when an `RLMArray` or `List` object is destroyed from the wrong + thread. + +0.100.0 Release notes (2016-04-29) +============================================================= + +### API breaking changes + +* `-[RLMObject linkingObjectsOfClass:forProperty]` and `Object.linkingObjects(_:forProperty:)` + are deprecated in favor of properties of type `RLMLinkingObjects` / `LinkingObjects`. + +### Enhancements + +* The automatically-maintained inverse direction of relationships can now be exposed as + properties of type `RLMLinkingObjects` / `LinkingObjects`. These properties automatically + update to reflect the objects that link to the target object, can be used in queries, and + can be filtered like other Realm collection types. +* Queries that compare objects for equality now support multi-level key paths. + +### Bugfixes + +* Fix an assertion failure when a second write transaction is committed after a + write transaction deleted the object containing an RLMArray/List which had an + active notification block. +* Queries that compare `RLMArray` / `List` properties using != now give the correct results. + +0.99.1 Release notes (2016-04-26) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix a scenario that could lead to the assertion failure + "m_advancer_sg->get_version_of_current_transaction() == + new_notifiers.front()->version()". + +0.99.0 Release notes (2016-04-22) +============================================================= + +### API breaking changes + +* Deprecate properties of type `id`/`AnyObject`. This type was rarely used, + rarely useful and unsupported in every other Realm binding. +* The block for `-[RLMArray addNotificationBlock:]` and + `-[RLMResults addNotificationBlock:]` now takes another parameter. +* The following Objective-C APIs have been deprecated in favor of newer or preferred versions: + +| Deprecated API | New API | +|:-------------------------------------------------------|:------------------------------------------------------| +| `-[RLMRealm removeNotification:]` | `-[RLMNotificationToken stop]` | +| `RLMRealmConfiguration.path` | `RLMRealmConfiguration.fileURL` | +| `RLMRealm.path` | `RLMRealmConfiguration.fileURL` | +| `RLMRealm.readOnly` | `RLMRealmConfiguration.readOnly` | +| `+[RLMRealm realmWithPath:]` | `+[RLMRealm realmWithURL:]` | +| `+[RLMRealm writeCopyToPath:error:]` | `+[RLMRealm writeCopyToURL:encryptionKey:error:]` | +| `+[RLMRealm writeCopyToPath:encryptionKey:error:]` | `+[RLMRealm writeCopyToURL:encryptionKey:error:]` | +| `+[RLMRealm schemaVersionAtPath:error:]` | `+[RLMRealm schemaVersionAtURL:encryptionKey:error:]` | +| `+[RLMRealm schemaVersionAtPath:encryptionKey:error:]` | `+[RLMRealm schemaVersionAtURL:encryptionKey:error:]` | + +* The following Swift APIs have been deprecated in favor of newer or preferred versions: + +| Deprecated API | New API | +|:----------------------------------------------|:-----------------------------------------| +| `Realm.removeNotification(_:)` | `NotificationToken.stop()` | +| `Realm.Configuration.path` | `Realm.Configuration.fileURL` | +| `Realm.path` | `Realm.Configuration.fileURL` | +| `Realm.readOnly` | `Realm.Configuration.readOnly` | +| `Realm.writeCopyToPath(_:encryptionKey:)` | `Realm.writeCopyToURL(_:encryptionKey:)` | +| `schemaVersionAtPath(_:encryptionKey:error:)` | `schemaVersionAtURL(_:encryptionKey:)` | + +### Enhancements + +* Add information about what rows were added, removed, or modified to the + notifications sent to the Realm collections. +* Improve error when illegally appending to an `RLMArray` / `List` property from a default value + or the standalone initializer (`init()`) before the schema is ready. + +### Bugfixes + +* Fix a use-after-free when an associated object's dealloc method is used to + remove observers from an RLMObject. +* Fix a small memory leak each time a Realm file is opened. +* Return a recoverable `RLMErrorAddressSpaceExhausted` error rather than + crash when there is insufficient available address space on Realm + initialization or write commit. + +0.98.8 Release notes (2016-04-15) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fixed a bug that caused some encrypted files created using + `-[RLMRealm writeCopyToPath:encryptionKey:error:]` to fail to open. + +0.98.7 Release notes (2016-04-13) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Mark further initializers in Objective-C as NS_DESIGNATED_INITIALIZER to prevent that these aren't + correctly defined in Swift Object subclasses, which don't qualify for auto-inheriting the required initializers. +* `-[RLMResults indexOfObjectWithPredicate:]` now returns correct results + for `RLMResults` instances that were created by filtering an `RLMArray`. +* Adjust how RLMObjects are destroyed in order to support using an associated + object on an RLMObject to remove KVO observers from that RLMObject. +* `-[RLMResults indexOfObjectWithPredicate:]` now returns the index of the first matching object for a + sorted `RLMResults`, matching its documented behavior. +* Fix a crash when canceling a transaction that set a relationship. +* Fix a crash when a query referenced a deleted object. + +0.98.6 Release notes (2016-03-25) +============================================================= + +Prebuilt frameworks are now built with Xcode 7.3. + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix running unit tests on iOS simulators and devices with Xcode 7.3. + +0.98.5 Release notes (2016-03-14) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix a crash when opening a Realm on 32-bit iOS devices. + +0.98.4 Release notes (2016-03-10) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Properly report changes made by adding an object to a Realm with + addOrUpdate:/createOrUpdate: to KVO observers for existing objects with that + primary key. +* Fix crashes and assorted issues when a migration which added object link + properties is rolled back due to an error in the migration block. +* Fix assertion failures when deleting objects within a migration block of a + type which had an object link property added in that migration. +* Fix an assertion failure in `Query::apply_patch` when updating certain kinds + of queries after a write transaction is committed. + +0.98.3 Release notes (2016-02-26) +============================================================= + +### Enhancements + +* Initializing the shared schema is 3x faster. + +### Bugfixes + +* Using Realm Objective-C from Swift while having Realm Swift linked no longer causes that the + declared `ignoredProperties` are not taken into account. +* Fix assertion failures when rolling back a migration which added Object link + properties to a class. +* Fix potential errors when cancelling a write transaction which modified + multiple `RLMArray`/`List` properties. +* Report the correct value for inWriteTransaction after attempting to commit a + write transaction fails. +* Support CocoaPods 1.0 beginning from prerelease 1.0.0.beta.4 while retaining + backwards compatibility with 0.39. + +0.98.2 Release notes (2016-02-18) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Aggregate operations (`ANY`, `NONE`, `@count`, `SUBQUERY`, etc.) are now supported for key paths + that begin with an object relationship so long as there is a `RLMArray`/`List` property at some + point in a key path. +* Predicates of the form `%@ IN arrayProperty` are now supported. + +### Bugfixes + +* Use of KVC collection operators on Swift collection types no longer throws an exception. +* Fix reporting of inWriteTransaction in notifications triggered by + `beginWriteTransaction`. +* The contents of `List` and `Optional` properties are now correctly preserved when copying + a Swift object from one Realm to another, and performing other operations that result in a + Swift object graph being recursively traversed from Objective-C. +* Fix a deadlock when queries are performed within a Realm notification block. +* The `ANY` / `SOME` / `NONE` qualifiers are now required in comparisons involving a key path that + traverse a `RLMArray`/`List` property. Previously they were only required if the first key in the + key path was an `RLMArray`/`List` property. +* Fix several scenarios where the default schema would be initialized + incorrectly if the first Realm opened used a restricted class subset (via + `objectClasses`/`objectTypes`). + +0.98.1 Release notes (2016-02-10) +============================================================= + +### Bugfixes + +* Fix crashes when deleting an object containing an `RLMArray`/`List` which had + previously been queried. +* Fix a crash when deleting an object containing an `RLMArray`/`List` with + active notification blocks. +* Fix duplicate file warnings when building via CocoaPods. +* Fix crash or incorrect results when calling `indexOfObject:` on an + `RLMResults` derived from an `RLMArray`. + +0.98.0 Release notes (2016-02-04) +============================================================= + +### API breaking changes + +* `+[RLMRealm realmWithPath:]`/`Realm.init(path:)` now inherits from the default + configuration. +* Swift 1.2 is no longer supported. + +### Enhancements + +* Add `addNotificationBlock` to `RLMResults`, `Results`, `RLMArray`, and + `List`, which calls the given block whenever the collection changes. +* Do a lot of the work for keeping `RLMResults`/`Results` up-to-date after + write transactions on a background thread to help avoid blocking the main + thread. +* `NSPredicate`'s `SUBQUERY` operator is now supported. It has the following limitations: + * `@count` is the only operator that may be applied to the `SUBQUERY` expression. + * The `SUBQUERY(…).@count` expression must be compared with a constant. + * Correlated subqueries are not yet supported. + +### Bugfixes + +* None. + +0.97.1 Release notes (2016-01-29) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Swift: Added `Error` enum allowing to catch errors e.g. thrown on initializing + `RLMRealm`/`Realm` instances. +* Fail with `RLMErrorFileNotFound` instead of the more generic `RLMErrorFileAccess`, + if no file was found when a realm was opened as read-only or if the directory part + of the specified path was not found when a copy should be written. +* Greatly improve performance when deleting objects with one or more indexed + properties. +* Indexing `BOOL`/`Bool` and `NSDate` properties are now supported. +* Swift: Add support for indexing optional properties. + +### Bugfixes + +* Fix incorrect results or crashes when using `-[RLMResults setValue:forKey:]` + on an RLMResults which was filtered on the key being set. +* Fix crashes when an RLMRealm is deallocated from the wrong thread. +* Fix incorrect results from aggregate methods on `Results`/`RLMResults` after + objects which were previously in the results are deleted. +* Fix a crash when adding a new property to an existing class with over a + million objects in the Realm. +* Fix errors when opening encrypted Realm files created with writeCopyToPath. +* Fix crashes or incorrect results for queries that use relationship equality + in cases where the `RLMResults` is kept alive and instances of the target class + of the relationship are deleted. + +0.97.0 Release notes (2015-12-17) +============================================================= + +### API breaking changes + +* All functionality deprecated in previous releases has been removed entirely. +* Add generic type annotations to NSArrays and NSDictionaries in public APIs. +* Adding a Realm notification block on a thread not currently running from + within a run loop throws an exception rather than silently never calling the + notification block. + +### Enhancements + +* Support for tvOS. +* Support for building Realm Swift from source when using Carthage. +* The block parameter of `-[RLMRealm transactionWithBlock:]`/`Realm.write(_:)` is + now marked as `__attribute__((noescape))`/`@noescape`. +* Many forms of queries with key paths on both sides of the comparison operator + are now supported. +* Add support for KVC collection operators in `RLMResults` and `RLMArray`. +* Fail instead of deadlocking in `+[RLMRealm sharedSchema]`, if a Swift property is initialized + to a computed value, which attempts to open a Realm on its own. + +### Bugfixes + +* Fix poor performance when calling `-[RLMRealm deleteObjects:]` on an + `RLMResults` which filtered the objects when there are other classes linking + to the type of the deleted objects. +* An exception is now thrown when defining `Object` properties of an unsupported + type. + +0.96.3 Release notes (2015-12-04) +============================================================= + +### Enhancements + +* Queries are no longer limited to 16 levels of grouping. +* Rework the implementation of encrypted Realms to no longer interfere with + debuggers. + +### Bugfixes + +* Fix crash when trying to retrieve object instances via `dynamicObjects`. +* Throw an exception when querying on a link providing objects, which are from a different Realm. +* Return empty results when querying on a link providing an unattached object. +* Fix crashes or incorrect results when calling `-[RLMRealm refresh]` during + fast enumeration. +* Add `Int8` support for `RealmOptional`, `MinMaxType` and `AddableType`. +* Set the default value for newly added non-optional NSData properties to a + zero-byte NSData rather than nil. +* Fix a potential crash when deleting all objects of a class. +* Fix performance problems when creating large numbers of objects with + `RLMArray`/`List` properties. +* Fix memory leak when using Object(value:) for subclasses with + `List` or `RealmOptional` properties. +* Fix a crash when computing the average of an optional integer property. +* Fix incorrect search results for some queries on integer properties. +* Add error-checking for nil realm parameters in many methods such as + `+[RLMObject allObjectsInRealm:]`. +* Fix a race condition between commits and opening Realm files on new threads + that could lead to a crash. +* Fix several crashes when opening Realm files. +* `-[RLMObject createInRealm:withValue:]`, `-[RLMObject createOrUpdateInRealm:withValue:]`, and + their variants for the default Realm now always match the contents of an `NSArray` against properties + in the same order as they are defined in the model. + +0.96.2 Release notes (2015-10-26) +============================================================= + +Prebuilt frameworks are now built with Xcode 7.1. + +### Bugfixes + +* Fix ignoring optional properties in Swift. +* Fix CocoaPods installation on case-sensitive file systems. + +0.96.1 Release notes (2015-10-20) +============================================================= + +### Bugfixes + +* Support assigning `Results` to `List` properties via KVC. +* Honor the schema version set in the configuration in `+[RLMRealm migrateRealm:]`. +* Fix crash when using optional Int16/Int32/Int64 properties in Swift. + +0.96.0 Release notes (2015-10-14) +============================================================= + +* No functional changes since beta2. + +0.96.0-beta2 Release notes (2015-10-08) +============================================================= + +### Bugfixes + +* Add RLMOptionalBase.h to the podspec. + +0.96.0-beta Release notes (2015-10-07) +============================================================= + +### API breaking changes + +* CocoaPods v0.38 or greater is now required to install Realm and RealmSwift + as pods. + +### Enhancements + +* Functionality common to both `List` and `Results` is now declared in a + `RealmCollectionType` protocol that both types conform to. +* `Results.realm` now returns an `Optional` in order to conform to + `RealmCollectionType`, but will always return `.Some()` since a `Results` + cannot exist independently from a `Realm`. +* Aggregate operations are now available on `List`: `min`, `max`, `sum`, + `average`. +* Committing write transactions (via `commitWrite` / `commitWriteTransaction` and + `write` / `transactionWithBlock`) now optionally allow for handling errors when + the disk is out of space. +* Added `isEmpty` property on `RLMRealm`/`Realm` to indicate if it contains any + objects. +* The `@count`, `@min`, `@max`, `@sum` and `@avg` collection operators are now + supported in queries. + +### Bugfixes + +* Fix assertion failure when inserting NSData between 8MB and 16MB in size. +* Fix assertion failure when rolling back a migration which removed an object + link or `RLMArray`/`List` property. +* Add the path of the file being opened to file open errors. +* Fix a crash that could be triggered by rapidly opening and closing a Realm + many times on multiple threads at once. +* Fix several places where exception messages included the name of the wrong + function which failed. + +0.95.3 Release notes (2015-10-05) +============================================================= + +### Bugfixes + +* Compile iOS Simulator framework architectures with `-fembed-bitcode-marker`. +* Fix crashes when the first Realm opened uses a class subset and later Realms + opened do not. +* Fix inconsistent errors when `Object(value: ...)` is used to initialize the + default value of a property of an `Object` subclass. +* Throw an exception when a class subset has objects with array or object + properties of a type that are not part of the class subset. + +0.95.2 Release notes (2015-09-24) +============================================================= + +* Enable bitcode for iOS and watchOS frameworks. +* Build libraries with Xcode 7 final rather than the GM. + +0.95.1 Release notes (2015-09-23) +============================================================= + +### Enhancements + +* Add missing KVO handling for moving and exchanging objects in `RLMArray` and + `List`. + +### Bugfixes + +* Setting the primary key property on persisted `RLMObject`s / `Object`s + via subscripting or key-value coding will cause an exception to be thrown. +* Fix crash due to race condition in `RLMRealmConfiguration` where the default + configuration was in the process of being copied in one thread, while + released in another. +* Fix crash when a migration which removed an object or array property is + rolled back due to an error. + +0.95.0 Release notes (2015-08-25) +============================================================= + +### API breaking changes + +* The following APIs have been deprecated in favor of the new `RLMRealmConfiguration` class in Realm Objective-C: + +| Deprecated API | New API | +|:------------------------------------------------------------------|:---------------------------------------------------------------------------------| +| `+[RLMRealm realmWithPath:readOnly:error:]` | `+[RLMRealm realmWithConfiguration:error:]` | +| `+[RLMRealm realmWithPath:encryptionKey:readOnly:error:]` | `+[RLMRealm realmWithConfiguration:error:]` | +| `+[RLMRealm setEncryptionKey:forRealmsAtPath:]` | `-[RLMRealmConfiguration setEncryptionKey:]` | +| `+[RLMRealm inMemoryRealmWithIdentifier:]` | `+[RLMRealm realmWithConfiguration:error:]` | +| `+[RLMRealm defaultRealmPath]` | `+[RLMRealmConfiguration defaultConfiguration]` | +| `+[RLMRealm setDefaultRealmPath:]` | `+[RLMRealmConfiguration setDefaultConfiguration:]` | +| `+[RLMRealm setDefaultRealmSchemaVersion:withMigrationBlock]` | `RLMRealmConfiguration.schemaVersion` and `RLMRealmConfiguration.migrationBlock` | +| `+[RLMRealm setSchemaVersion:forRealmAtPath:withMigrationBlock:]` | `RLMRealmConfiguration.schemaVersion` and `RLMRealmConfiguration.migrationBlock` | +| `+[RLMRealm migrateRealmAtPath:]` | `+[RLMRealm migrateRealm:]` | +| `+[RLMRealm migrateRealmAtPath:encryptionKey:]` | `+[RLMRealm migrateRealm:]` | + +* The following APIs have been deprecated in favor of the new `Realm.Configuration` struct in Realm Swift for Swift 1.2: + +| Deprecated API | New API | +|:--------------------------------------------------------------|:-----------------------------------------------------------------------------| +| `Realm.defaultPath` | `Realm.Configuration.defaultConfiguration` | +| `Realm(path:readOnly:encryptionKey:error:)` | `Realm(configuration:error:)` | +| `Realm(inMemoryIdentifier:)` | `Realm(configuration:error:)` | +| `Realm.setEncryptionKey(:forPath:)` | `Realm(configuration:error:)` | +| `setDefaultRealmSchemaVersion(schemaVersion:migrationBlock:)` | `Realm.Configuration.schemaVersion` and `Realm.Configuration.migrationBlock` | +| `setSchemaVersion(schemaVersion:realmPath:migrationBlock:)` | `Realm.Configuration.schemaVersion` and `Realm.Configuration.migrationBlock` | +| `migrateRealm(path:encryptionKey:)` | `migrateRealm(configuration:)` | + +* The following APIs have been deprecated in favor of the new `Realm.Configuration` struct in Realm Swift for Swift 2.0: + +| Deprecated API | New API | +|:--------------------------------------------------------------|:-----------------------------------------------------------------------------| +| `Realm.defaultPath` | `Realm.Configuration.defaultConfiguration` | +| `Realm(path:readOnly:encryptionKey:) throws` | `Realm(configuration:) throws` | +| `Realm(inMemoryIdentifier:)` | `Realm(configuration:) throws` | +| `Realm.setEncryptionKey(:forPath:)` | `Realm(configuration:) throws` | +| `setDefaultRealmSchemaVersion(schemaVersion:migrationBlock:)` | `Realm.Configuration.schemaVersion` and `Realm.Configuration.migrationBlock` | +| `setSchemaVersion(schemaVersion:realmPath:migrationBlock:)` | `Realm.Configuration.schemaVersion` and `Realm.Configuration.migrationBlock` | +| `migrateRealm(path:encryptionKey:)` | `migrateRealm(configuration:)` | + +* `List.extend` in Realm Swift for Swift 2.0 has been replaced with `List.appendContentsOf`, + mirroring changes to `RangeReplaceableCollectionType`. + +* Object properties on `Object` subclasses in Realm Swift must be marked as optional, + otherwise a runtime exception will be thrown. + +### Enhancements + +* Persisted properties of `RLMObject`/`Object` subclasses are now Key-Value + Observing compliant. +* The different options used to create Realm instances have been consolidated + into a single `RLMRealmConfiguration`/`Realm.Configuration` object. +* Enumerating Realm collections (`RLMArray`, `RLMResults`, `List<>`, + `Results<>`) now enumerates over a copy of the collection, making it no + longer an error to modify a collection during enumeration (either directly, + or indirectly by modifying objects to make them no longer match a query). +* Improve performance of object insertion in Swift to bring it roughly in line + with Objective-C. +* Allow specifying a specific list of `RLMObject` / `Object` subclasses to include + in a given Realm via `RLMRealmConfiguration.objectClasses` / `Realm.Configuration.objectTypes`. + +### Bugfixes + +* Subscripting on `RLMObject` is now marked as nullable. + +0.94.1 Release notes (2015-08-10) +============================================================= + +### API breaking changes + +* Building for watchOS requires Xcode 7 beta 5. + +### Enhancements + +* `Object.className` is now marked as `final`. + +### Bugfixes + +* Fix crash when adding a property to a model without updating the schema + version. +* Fix unnecessary redownloading of the core library when building from source. +* Fix crash when sorting by an integer or floating-point property on iOS 7. + +0.94.0 Release notes (2015-07-29) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Reduce the amount of memory used by RLMRealm notification listener threads. +* Avoid evaluating results eagerly when filtering and sorting. +* Add nullability annotations to the Objective-C API to provide enhanced compiler + warnings and bridging to Swift. +* Make `RLMResult`s and `RLMArray`s support Objective-C generics. +* Add support for building watchOS and bitcode-compatible apps. +* Make the exceptions thrown in getters and setters more informative. +* Add `-[RLMArray exchangeObjectAtIndex:withObjectAtIndex]` and `List.swap(_:_:)` + to allow exchanging the location of two objects in the given `RLMArray` / `List`. +* Added anonymous analytics on simulator/debugger runs. +* Add `-[RLMArray moveObjectAtIndex:toIndex:]` and `List.move(from:to:)` to + allow moving objects in the given `RLMArray` / `List`. + +### Bugfixes + +* Processes crashing due to an uncaught exception inside a write transaction will + no longer cause other processes using the same Realm to hang indefinitely. +* Fix incorrect results when querying for < or <= on ints that + require 64 bits to represent with a CPU that supports SSE 4.2. +* An exception will no longer be thrown when attempting to reset the schema + version or encryption key on an open Realm to the current value. +* Date properties on 32 bit devices will retain 64 bit second precision. +* Wrap calls to the block passed to `enumerate` in an autoreleasepool to reduce + memory growth when migrating a large amount of objects. +* In-memory realms no longer write to the Documents directory on iOS or + Application Support on OS X. + +0.93.2 Release notes (2015-06-12) +============================================================= + +### Bugfixes + +* Fixed an issue where the packaged OS X Realm.framework was built with + `GCC_GENERATE_TEST_COVERAGE_FILES` and `GCC_INSTRUMENT_PROGRAM_FLOW_ARCS` + enabled. +* Fix a memory leak when constructing standalone Swift objects with NSDate + properties. +* Throw an exception rather than asserting when an invalidated object is added + to an RLMArray. +* Fix a case where data loss would occur if a device was hard-powered-off + shortly after a write transaction was committed which had to expand the Realm + file. + +0.93.1 Release notes (2015-05-29) +============================================================= + +### Bugfixes + +* Objects are no longer copied into standalone objects during object creation. This fixes an issue where + nested objects with a primary key are sometimes duplicated rather than updated. +* Comparison predicates with a constant on the left of the operator and key path on the right now give + correct results. An exception is now thrown for predicates that do not yet support this ordering. +* Fix some crashes in `index_string.cpp` with int primary keys or indexed int properties. + +0.93.0 Release notes (2015-05-27) +============================================================= + +### API breaking changes + +* Schema versions are now represented as `uint64_t` (Objective-C) and `UInt64` (Swift) so that they have + the same representation on all architectures. + +### Enhancements + +* Swift: `Results` now conforms to `CVarArgType` so it can + now be passed as an argument to `Results.filter(_:...)` + and `List.filter(_:...)`. +* Swift: Made `SortDescriptor` conform to the `Equatable` and + `StringLiteralConvertible` protocols. +* Int primary keys are once again automatically indexed. +* Improve error reporting when attempting to mark a property of a type that + cannot be indexed as indexed. + +### Bugfixes + +* Swift: `RealmSwift.framework` no longer embeds `Realm.framework`, + which now allows apps using it to pass iTunes Connect validation. + +0.92.4 Release notes (2015-05-22) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Swift: Made `Object.init()` a required initializer. +* `RLMObject`, `RLMResults`, `Object` and `Results` can now be safely + deallocated (but still not used) from any thread. +* Improve performance of `-[RLMArray indexOfObjectWhere:]` and `-[RLMArray + indexOfObjectWithPredicate:]`, and implement them for standalone RLMArrays. +* Improved performance of most simple queries. + +### Bugfixes + +* The interprocess notification mechanism no longer uses dispatch worker threads, preventing it from + starving other GCD clients of the opportunity to execute blocks when dozens of Realms are open at once. + +0.92.3 Release notes (2015-05-13) +============================================================= + +### API breaking changes + +* Swift: `Results.average(_:)` now returns an optional, which is `nil` if and only if the results + set is empty. + +### Enhancements + +* Swift: Added `List.invalidated`, which returns if the given `List` is no longer + safe to be accessed, and is analogous to `-[RLMArray isInvalidated]`. +* Assertion messages are automatically logged to Crashlytics if it's loaded + into the current process to make it easier to diagnose crashes. + +### Bugfixes + +* Swift: Enumerating through a standalone `List` whose objects themselves + have list properties won't crash. +* Swift: Using a subclass of `RealmSwift.Object` in an aggregate operator of a predicate + no longer throws a spurious type error. +* Fix incorrect results for when using OR in a query on a `RLMArray`/`List<>`. +* Fix incorrect values from `[RLMResults count]`/`Results.count` when using + `!=` on an int property with no other query conditions. +* Lower the maximum doubling threshold for Realm file sizes from 128MB to 16MB + to reduce the amount of wasted space. + +0.92.2 Release notes (2015-05-08) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Exceptions raised when incorrect object types are used with predicates now contain more detailed information. +* Added `-[RLMMigration deleteDataForClassName:]` and `Migration.deleteData(_:)` + to enable cleaning up after removing object subclasses + +### Bugfixes + +* Prevent debugging of an application using an encrypted Realm to work around + frequent LLDB hangs. Until the underlying issue is addressed you may set + REALM_DISABLE_ENCRYPTION=YES in your application's environment variables to + have requests to open an encrypted Realm treated as a request for an + unencrypted Realm. +* Linked objects are properly updated in `createOrUpdateInRealm:withValue:`. +* List properties on Objects are now properly initialized during fast enumeration. + +0.92.1 Release notes (2015-05-06) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* `-[RLMRealm inWriteTransaction]` is now public. +* Realm Swift is now available on CoocaPods. + +### Bugfixes + +* Force code re-signing after stripping architectures in `strip-frameworks.sh`. + +0.92.0 Release notes (2015-05-05) +============================================================= + +### API breaking changes + +* Migration blocks are no longer called when a Realm file is first created. +* The following APIs have been deprecated in favor of newer method names: + +| Deprecated API | New API | +|:-------------------------------------------------------|:------------------------------------------------------| +| `-[RLMMigration createObject:withObject:]` | `-[RLMMigration createObject:withValue:]` | +| `-[RLMObject initWithObject:]` | `-[RLMObject initWithValue:]` | +| `+[RLMObject createInDefaultRealmWithObject:]` | `+[RLMObject createInDefaultRealmWithValue:]` | +| `+[RLMObject createInRealm:withObject:]` | `+[RLMObject createInRealm:withValue:]` | +| `+[RLMObject createOrUpdateInDefaultRealmWithObject:]` | `+[RLMObject createOrUpdateInDefaultRealmWithValue:]` | +| `+[RLMObject createOrUpdateInRealm:withObject:]` | `+[RLMObject createOrUpdateInRealm:withValue:]` | + +### Enhancements + +* `Int8` properties defined in Swift are now treated as integers, rather than + booleans. +* NSPredicates created using `+predicateWithValue:` are now supported. + +### Bugfixes + +* Compound AND predicates with no subpredicates now correctly match all objects. + +0.91.5 Release notes (2015-04-28) +============================================================= + +### Bugfixes + +* Fix issues with removing search indexes and re-enable it. + +0.91.4 Release notes (2015-04-27) +============================================================= + +### Bugfixes + +* Temporarily disable removing indexes from existing columns due to bugs. + +0.91.3 Release notes (2015-04-17) +============================================================= + +### Bugfixes + +* Fix `Extra argument 'objectClassName' in call` errors when building via + CocoaPods. + +0.91.2 Release notes (2015-04-16) +============================================================= + +* Migration blocks are no longer called when a Realm file is first created. + +### Enhancements + +* `RLMCollection` supports collection KVC operations. +* Sorting `RLMResults` is 2-5x faster (typically closer to 2x). +* Refreshing `RLMRealm` after a write transaction which inserts or modifies + strings or `NSData` is committed on another thread is significantly faster. +* Indexes are now added and removed from existing properties when a Realm file + is opened, rather than only when properties are first added. + +### Bugfixes + +* `+[RLMSchema dynamicSchemaForRealm:]` now respects search indexes. +* `+[RLMProperty isEqualToProperty:]` now checks for equal `indexed` properties. + +0.91.1 Release notes (2015-03-12) +============================================================= + +### Enhancements + +* The browser will automatically refresh when the Realm has been modified + from another process. +* Allow using Realm in an embedded framework by setting + `APPLICATION_EXTENSION_API_ONLY` to YES. + +### Bugfixes + +* Fix a crash in CFRunLoopSourceInvalidate. + +0.91.0 Release notes (2015-03-10) +============================================================= + +### API breaking changes + +* `attributesForProperty:` has been removed from `RLMObject`. You now specify indexed + properties by implementing the `indexedProperties` method. +* An exception will be thrown when calling `setEncryptionKey:forRealmsAtPath:`, + `setSchemaVersion:forRealmAtPath:withMigrationBlock:`, and `migrateRealmAtPath:` + when a Realm at the given path is already open. +* Object and array properties of type `RLMObject` will no longer be allowed. + +### Enhancements + +* Add support for sharing Realm files between processes. +* The browser will no longer show objects that have no persisted properties. +* `RLMSchema`, `RLMObjectSchema`, and `RLMProperty` now have more useful descriptions. +* Opening an encrypted Realm while a debugger is attached to the process no + longer throws an exception. +* `RLMArray` now exposes an `isInvalidated` property to indicate if it can no + longer be accessed. + +### Bugfixes + +* An exception will now be thrown when calling `-beginWriteTransaction` from within a notification + triggered by calling `-beginWriteTransaction` elsewhere. +* When calling `delete:` we now verify that the object being deleted is persisted in the target Realm. +* Fix crash when calling `createOrUpdate:inRealm` with nested linked objects. +* Use the key from `+[RLMRealm setEncryptionKey:forRealmsAtPath:]` in + `-writeCopyToPath:error:` and `+migrateRealmAtPath:`. +* Comparing an RLMObject to a non-RLMObject using `-[RLMObject isEqual:]` or + `-isEqualToObject:` now returns NO instead of crashing. +* Improved error message when an `RLMObject` subclass is defined nested within + another Swift declaration. +* Fix crash when the process is terminated by the OS on iOS while encrypted realms are open. +* Fix crash after large commits to encrypted realms. + +0.90.6 Release notes (2015-02-20) +============================================================= + +### Enhancements + +* Improve compatibility of encrypted Realms with third-party crash reporters. + +### Bugfixes + +* Fix incorrect results when using aggregate functions on sorted RLMResults. +* Fix data corruption when using writeCopyToPath:encryptionKey:. +* Maybe fix some assertion failures. + +0.90.5 Release notes (2015-02-04) +============================================================= + +### Bugfixes + +* Fix for crashes when encryption is enabled on 64-bit iOS devices. + +0.90.4 Release notes (2015-01-29) +============================================================= + +### Bugfixes + +* Fix bug that resulted in columns being dropped and recreated during migrations. + +0.90.3 Release notes (2015-01-27) +============================================================= + +### Enhancements + +* Calling `createInDefaultRealmWithObject:`, `createInRealm:withObject:`, + `createOrUpdateInDefaultRealmWithObject:` or `createOrUpdateInRealm:withObject:` + is a no-op if the argument is an RLMObject of the same type as the receiver + and is already backed by the target realm. + +### Bugfixes + +* Fix incorrect column type assertions when the first Realm file opened is a + read-only file that is missing tables. +* Throw an exception when adding an invalidated or deleted object as a link. +* Throw an exception when calling `createOrUpdateInRealm:withObject:` when the + receiver has no primary key defined. + +0.90.1 Release notes (2015-01-22) +============================================================= + +### Bugfixes + +* Fix for RLMObject being treated as a model object class and showing up in the browser. +* Fix compilation from the podspec. +* Fix for crash when calling `objectsWhere:` with grouping in the query on `allObjects`. + +0.90.0 Release notes (2015-01-21) +============================================================= + +### API breaking changes + +* Rename `-[RLMRealm encryptedRealmWithPath:key:readOnly:error:]` to + `-[RLMRealm realmWithPath:encryptionKey:readOnly:error:]`. +* `-[RLMRealm setSchemaVersion:withMigrationBlock]` is no longer global and must be called + for each individual Realm path used. You can now call `-[RLMRealm setDefaultRealmSchemaVersion:withMigrationBlock]` + for the default Realm and `-[RLMRealm setSchemaVersion:forRealmAtPath:withMigrationBlock:]` for all others; + +### Enhancements + +* Add `-[RLMRealm writeCopyToPath:encryptionKey:error:]`. +* Add support for comparing string columns to other string columns in queries. + +### Bugfixes + +* Roll back changes made when an exception is thrown during a migration. +* Throw an exception if the number of items in a RLMResults or RLMArray changes + while it's being fast-enumerated. +* Also encrypt the temporary files used when encryption is enabled for a Realm. +* Fixed crash in JSONImport example on OS X with non-en_US locale. +* Fixed infinite loop when opening a Realm file in the Browser at the same time + as it is open in a 32-bit simulator. +* Fixed a crash when adding primary keys to older realm files with no primary + keys on any objects. +* Fixed a crash when removing a primary key in a migration. +* Fixed a crash when multiple write transactions with no changes followed by a + write transaction with changes were committed without the main thread + RLMRealm getting a chance to refresh. +* Fixed incomplete results when querying for non-null relationships. +* Improve the error message when a Realm file is opened in multiple processes + at once. + +0.89.2 Release notes (2015-01-02) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix an assertion failure when invalidating a Realm which is in a write + transaction, has already been invalidated, or has never been used. +* Fix an assertion failure when sorting an empty RLMArray property. +* Fix a bug resulting in the browser never becoming visible on 10.9. +* Write UTF-8 when generating class files from a realm file in the Browser. + +0.89.1 Release notes (2014-12-22) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Improve the error message when a Realm can't be opened due to lacking write + permissions. + +### Bugfixes + +* Fix an assertion failure when inserting rows after calling `deleteAllObjects` + on a Realm. +* Separate dynamic frameworks are now built for the simulator and devices to + work around App Store submission errors due to the simulator version not + being automatically stripped from dynamic libraries. + +0.89.0 Release notes (2014-12-18) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Add support for encrypting Realm files on disk. +* Support using KVC-compliant objects without getters or with custom getter + names to initialize RLMObjects with `createObjectInRealm` and friends. + +### Bugfixes + +* Merge native Swift default property values with defaultPropertyValues(). +* Don't leave the database schema partially updated when opening a realm fails + due to a migration being needed. +* Fixed issue where objects with custom getter names couldn't be used to + initialize other objects. +* Fix a major performance regression on queries on string properties. +* Fix a memory leak when circularly linked objects are added to a Realm. + +0.88.0 Release notes (2014-12-02) +============================================================= + +### API breaking changes + +* Deallocating an RLMRealm instance in a write transaction lacking an explicit + commit/cancel will now be automatically cancelled instead of committed. +* `-[RLMObject isDeletedFromRealm]` has been renamed to `-[RLMObject isInvalidated]`. + +### Enhancements + +* Add `-[RLMRealm writeCopyToPath:]` to write a compacted copy of the Realm + another file. +* Add support for case insensitive, BEGINSWITH, ENDSWITH and CONTAINS string + queries on array properties. +* Make fast enumeration of `RLMArray` and `RLMResults` ~30% faster and + `objectAtIndex:` ~55% faster. +* Added a lldb visualizer script for displaying the contents of persisted + RLMObjects when debugging. +* Added method `-setDefaultRealmPath:` to change the default Realm path. +* Add `-[RLMRealm invalidate]` to release data locked by the current thread. + +### Bugfixes + +* Fix for crash when running many simultaneous write transactions on background threads. +* Fix for crashes caused by opening Realms at multiple paths simultaneously which have had + properties re-ordered during migration. +* Don't run the query twice when `firstObject` or `lastObject` are called on an + `RLMResults` which has not had its results accessed already. +* Fix for bug where schema version is 0 for new Realm created at the latest version. +* Fix for error message where no migration block is specified when required. + +0.87.4 Release notes (2014-11-07) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* None. + +### Bugfixes + +* Fix browser location in release zip. + +0.87.3 Release notes (2014-11-06) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Added method `-linkingObjectsOfClass:forProperty:` to RLMObject to expose inverse + relationships/backlinks. + +### Bugfixes + +* Fix for crash due to missing search index when migrating an object with a string primary key + in a database created using an older versions (0.86.3 and earlier). +* Throw an exception when passing an array containing a + non-RLMObject to -[RLMRealm addObjects:]. +* Fix for crash when deleting an object from multiple threads. + +0.87.0 Release notes (2014-10-21) +============================================================= + +### API breaking changes + +* RLMArray has been split into two classes, `RLMArray` and `RLMResults`. RLMArray is + used for object properties as in previous releases. Moving forward all methods used to + enumerate, query, and sort objects return an instance of a new class `RLMResults`. This + change was made to support diverging apis and the future addition of change notifications + for queries. +* The api for migrations has changed. You now call `setSchemaVersion:withMigrationBlock:` to + register a global migration block and associated version. This block is applied to Realms as + needed when opened for Realms at a previous version. The block can be applied manually if + desired by calling `migrateRealmAtPath:`. +* `arraySortedByProperty:ascending:` was renamed to `sortedResultsUsingProperty:ascending` +* `addObjectsFromArray:` on both `RLMRealm` and `RLMArray` has been renamed to `addObjects:` + and now accepts any container class which implements `NSFastEnumeration` +* Building with Swift support now requires Xcode 6.1 + +### Enhancements + +* Add support for sorting `RLMArray`s by multiple columns with `sortedResultsUsingDescriptors:` +* Added method `deleteAllObjects` on `RLMRealm` to clear a Realm. +* Added method `createObject:withObject:` on `RLMMigration` which allows object creation during migrations. +* Added method `deleteObject:` on `RLMMigration` which allows object deletion during migrations. +* Updating to core library version 0.85.0. +* Implement `objectsWhere:` and `objectsWithPredicate:` for array properties. +* Add `cancelWriteTransaction` to revert all changes made in a write transaction and end the transaction. +* Make creating `RLMRealm` instances on background threads when an instance + exists on another thread take a fifth of the time. +* Support for partial updates when calling `createOrUpdateWithObject:` and `addOrUpdateObject:` +* Re-enable Swift support on OS X + +### Bugfixes + +* Fix exceptions when trying to set `RLMObject` properties after rearranging + the properties in a `RLMObject` subclass. +* Fix crash on IN query with several thousand items. +* Fix crash when querying indexed `NSString` properties. +* Fixed an issue which prevented in-memory Realms from being used accross multiple threads. +* Preserve the sort order when querying a sorted `RLMResults`. +* Fixed an issue with migrations where if a Realm file is deleted after a Realm is initialized, + the newly created Realm can be initialized with an incorrect schema version. +* Fix crash in `RLMSuperSet` when assigning to a `RLMArray` property on a standalone object. +* Add an error message when the protocol for an `RLMArray` property is not a + valid object type. +* Add an error message when an `RLMObject` subclass is defined nested within + another Swift class. + +0.86.3 Release notes (2014-10-09) +============================================================= + +### Enhancements + +* Add support for != in queries on object relationships. + +### Bugfixes + +* Re-adding an object to its Realm no longer throws an exception and is now a no-op + (as it was previously). +* Fix another bug which would sometimes result in subclassing RLMObject + subclasses not working. + +0.86.2 Release notes (2014-10-06) +============================================================= + +### Bugfixes + +* Fixed issues with packaging "Realm Browser.app" for release. + +0.86.1 Release notes (2014-10-03) +============================================================= + +### Bugfixes + +* Fix a bug which would sometimes result in subclassing RLMObject subclasses + not working. + +0.86.0 Release notes (2014-10-03) +============================================================= + +### API breaking changes + +* Xcode 6 is now supported from the main Xcode project `Realm.xcodeproj`. + Xcode 5 is no longer supported. + +### Enhancements + +* Support subclassing RLMObject models. Although you can now persist subclasses, + polymorphic behavior is not supported (i.e. setting a property to an + instance of its subclass). +* Add support for sorting RLMArray properties. +* Speed up inserting objects with `addObject:` by ~20%. +* `readonly` properties are automatically ignored rather than having to be + added to `ignoredProperties`. +* Updating to core library version 0.83.1. +* Return "[deleted object]" rather than throwing an exception when + `-description` is called on a deleted RLMObject. +* Significantly improve performance of very large queries. +* Allow passing any enumerable to IN clauses rather than just NSArray. +* Add `objectForPrimaryKey:` and `objectInRealm:forPrimaryKey:` convenience + methods to fetch an object by primary key. + +### Bugfixes + +* Fix error about not being able to persist property 'hash' with incompatible + type when building for devices with Xcode 6. +* Fix spurious notifications of new versions of Realm. +* Fix for updating nested objects where some types do not have primary keys. +* Fix for inserting objects from JSON with NSNull values when default values + should be used. +* Trying to add a persisted RLMObject to a different Realm now throws an + exception rather than creating an uninitialized object. +* Fix validation errors when using IN on array properties. +* Fix errors when an IN clause has zero items. +* Fix for chained queries ignoring all but the last query's conditions. + +0.85.0 Release notes (2014-09-15) +============================================================= + +### API breaking changes + +* Notifications for a refresh being needed (when autorefresh is off) now send + the notification type RLMRealmRefreshRequiredNotification rather than + RLMRealmDidChangeNotification. + +### Enhancements + +* Updating to core library version 0.83.0. +* Support for primary key properties (for int and string columns). Declaring a property + to be the primary key ensures uniqueness for that property for all objects of a given type. + At the moment indexes on primary keys are not yet supported but this will be added in a future + release. +* Added methods to update or insert (upsert) for objects with primary keys defined. +* `[RLMObject initWithObject:]` and `[RLMObject createInRealmWithObject:]` now support + any object type with kvc properties. +* The Swift support has been reworked to work around Swift not being supported + in Frameworks on iOS 7. +* Improve performance when getting the count of items matching a query but not + reading any of the objects in the results. +* Add a return value to `-[RLMRealm refresh]` that indicates whether or not + there was anything to refresh. +* Add the class name to the error message when an RLMObject is missing a value + for a property without a default. +* Add support for opening Realms in read-only mode. +* Add an automatic check for updates when using Realm in a simulator (the + checker code is not compiled into device builds). This can be disabled by + setting the REALM_DISABLE_UPDATE_CHECKER environment variable to any value. +* Add support for Int16 and Int64 properties in Swift classes. + +### Bugfixes + +* Realm change notifications when beginning a write transaction are now sent + after updating rather than before, to match refresh. +* `-isEqual:` now uses the default `NSObject` implementation unless a primary key + is specified for an RLMObject. When a primary key is specified, `-isEqual:` calls + `-isEqualToObject:` and a corresponding implementation for `-hash` is also implemented. + +0.84.0 Release notes (2014-08-28) +============================================================= + +### API breaking changes + +* The timer used to trigger notifications has been removed. Notifications are now + only triggered by commits made in other threads, and can not currently be triggered + by changes made by other processes. Interprocess notifications will be re-added in + a future commit with an improved design. + +### Enhancements + +* Updating to core library version 0.82.2. +* Add property `deletedFromRealm` to RLMObject to indicate objects which have been deleted. +* Add support for the IN operator in predicates. +* Add support for the BETWEEN operator in link queries. +* Add support for multi-level link queries in predicates (e.g. `foo.bar.baz = 5`). +* Switch to building the SDK from source when using CocoaPods and add a + Realm.Headers subspec for use in targets that should not link a copy of Realm + (such as test targets). +* Allow unregistering from change notifications in the change notification + handler block. +* Significant performance improvements when holding onto large numbers of RLMObjects. +* Realm-Xcode6.xcodeproj now only builds using Xcode6-Beta6. +* Improved performance during RLMArray iteration, especially when mutating + contained objects. + +### Bugfixes + +* Fix crashes and assorted bugs when sorting or querying a RLMArray returned + from a query. +* Notifications are no longer sent when initializing new RLMRealm instances on background + threads. +* Handle object cycles in -[RLMObject description] and -[RLMArray description]. +* Lowered the deployment target for the Xcode 6 projects and Swift examples to + iOS 7.0, as they didn't actually require 8.0. +* Support setting model properties starting with the letter 'z' +* Fixed crashes that could result from switching between Debug and Relase + builds of Realm. + +0.83.0 Release notes (2014-08-13) +============================================================= + +### API breaking changes + +* Realm-Xcode6.xcodeproj now only builds using Xcode6-Beta5. +* Properties to be persisted in Swift classes must be explicitly declared as `dynamic`. +* Subclasses of RLMObject subclasses now throw an exception on startup, rather + than when added to a Realm. + +### Enhancements + +* Add support for querying for nil object properties. +* Improve error message when specifying invalid literals when creating or + initializing RLMObjects. +* Throw an exception when an RLMObject is used from the incorrect thread rather + than crashing in confusing ways. +* Speed up RLMRealm instantiation and array property iteration. +* Allow array and objection relation properties to be missing or null when + creating a RLMObject from a NSDictionary. + +### Bugfixes + +* Fixed a memory leak when querying for objects. +* Fixed initializing array properties on standalone Swift RLMObject subclasses. +* Fix for queries on 64bit integers. + +0.82.0 Release notes (2014-08-05) +============================================================= + +### API breaking changes + +* Realm-Xcode6.xcodeproj now only builds using Xcode6-Beta4. + +### Enhancements + +* Updating to core library version 0.80.5. +* Now support disabling the `autorefresh` property on RLMRealm instances. +* Building Realm-Xcode6 for iOS now builds a universal framework for Simulator & Device. +* Using NSNumber properties (unsupported) now throws a more informative exception. +* Added `[RLMRealm defaultRealmPath]` +* Proper implementation for [RLMArray indexOfObjectWhere:] +* The default Realm path on OS X is now ~/Library/Application Support/[bundle + identifier]/default.realm rather than ~/Documents +* We now check that the correct framework (ios or osx) is used at compile time. + +### Bugfixes + +* Fixed rapid growth of the realm file size. +* Fixed a bug which could cause a crash during RLMArray destruction after a query. +* Fixed bug related to querying on float properties: `floatProperty = 1.7` now works. +* Fixed potential bug related to the handling of array properties (RLMArray). +* Fixed bug where array properties accessed the wrong property. +* Fixed bug that prevented objects with custom getters to be added to a Realm. +* Fixed a bug where initializing a standalone object with an array literal would + trigger an exception. +* Clarified exception messages when using unsupported NSPredicate operators. +* Clarified exception messages when using unsupported property types on RLMObject subclasses. +* Fixed a memory leak when breaking out of a for-in loop on RLMArray. +* Fixed a memory leak when removing objects from a RLMArray property. +* Fixed a memory leak when querying for objects. + + +0.81.0 Release notes (2014-07-22) +============================================================= + +### API breaking changes + +* None. + +### Enhancements + +* Updating to core library version 0.80.3. +* Added support for basic querying of RLMObject and RLMArray properties (one-to-one and one-to-many relationships). + e.g. `[Person objectsWhere:@"dog.name == 'Alfonso'"]` or `[Person objectsWhere:@"ANY dogs.name == 'Alfonso'"]` + Supports all normal operators for numeric and date types. Does not support NSData properties or `BEGINSWITH`, `ENDSWITH`, `CONTAINS` + and other options for string properties. +* Added support for querying for object equality in RLMObject and RLMArray properties (one-to-one and one-to-many relationships). + e.g. `[Person objectsWhere:@"dog == %@", myDog]` `[Person objectsWhere:@"ANY dogs == %@", myDog]` `[Person objectsWhere:@"ANY friends.dog == %@", dog]` + Only supports comparing objects for equality (i.e. ==) +* Added a helper method to RLMRealm to perform a block inside a transaction. +* OSX framework now supported in CocoaPods. + +### Bugfixes + +* Fixed Unicode support in property names and string contents (Chinese, Russian, etc.). Closing #612 and #604. +* Fixed bugs related to migration when properties are removed. +* Fixed keyed subscripting for standalone RLMObjects. +* Fixed bug related to double clicking on a .realm file to launch the Realm Browser (thanks to Dean Moore). + + +0.80.0 Release notes (2014-07-15) +============================================================= + +### API breaking changes + +* Rename migration methods to -migrateDefaultRealmWithBlock: and -migrateRealmAtPath:withBlock: +* Moved Realm specific query methods from RLMRealm to class methods on RLMObject (-allObjects: to +allObjectsInRealm: ect.) + +### Enhancements + +* Added +createInDefaultRealmWithObject: method to RLMObject. +* Added support for array and object literals when calling -createWithObject: and -initWithObject: variants. +* Added method -deleteObjects: to batch delete objects from a Realm +* Support for defining RLMObject models entirely in Swift (experimental, see known issues). +* RLMArrays in Swift support Sequence-style enumeration (for obj in array). +* Implemented -indexOfObject: for RLMArray + +### Known Issues for Swift-defined models + +* Properties other than String, NSData and NSDate require a default value in the model. This can be an empty (but typed) array for array properties. +* The previous caveat also implies that not all models defined in Objective-C can be used for object properties. Only Objective-C models with only implicit (i.e. primitives) or explicit default values can be used. However, any Objective-C model object can be used in a Swift array property. +* Array property accessors don't work until its parent object has been added to a realm. +* Realm-Bridging-Header.h is temporarily exposed as a public header. This is temporary and will be private again once rdar://17633863 is fixed. +* Does not leverage Swift generics and still uses RLM-prefix everywhere. This is coming in #549. + + +0.22.0 Release notes +============================================================= + +### API breaking changes + +* Rename schemaForObject: to schemaForClassName: on RLMSchema +* Removed -objects:where: and -objects:orderedBy:where: from RLMRealm +* Removed -indexOfObjectWhere:, -objectsWhere: and -objectsOrderedBy:where: from RLMArray +* Removed +objectsWhere: and +objectsOrderedBy:where: from RLMObject + +### Enhancements + +* New Xcode 6 project for experimental swift support. +* New Realm Editor app for reading and editing Realm db files. +* Added support for migrations. +* Added support for RLMArray properties on objects. +* Added support for creating in-memory default Realm. +* Added -objectsWithClassName:predicateFormat: and -objectsWithClassName:predicate: to RLMRealm +* Added -indexOfObjectWithPredicateFormat:, -indexOfObjectWithPredicate:, -objectsWithPredicateFormat:, -objectsWithPredi +* Added +objectsWithPredicateFormat: and +objectsWithPredicate: to RLMObject +* Now allows predicates comparing two object properties of the same type. + + +0.20.0 Release notes (2014-05-28) +============================================================= + +Completely rewritten to be much more object oriented. + +### API breaking changes + +* Everything + +### Enhancements + +* None. + +### Bugfixes + +* None. + + +0.11.0 Release notes (not released) +============================================================= + +The Objective-C API has been updated and your code will break! + +### API breaking changes + +* `RLMTable` objects can only be created with an `RLMRealm` object. +* Renamed `RLMContext` to `RLMTransactionManager` +* Renamed `RLMContextDidChangeNotification` to `RLMRealmDidChangeNotification` +* Renamed `contextWithDefaultPersistence` to `managerForDefaultRealm` +* Renamed `contextPersistedAtPath:` to `managerForRealmWithPath:` +* Renamed `realmWithDefaultPersistence` to `defaultRealm` +* Renamed `realmWithDefaultPersistenceAndInitBlock` to `defaultRealmWithInitBlock` +* Renamed `find:` to `firstWhere:` +* Renamed `where:` to `allWhere:` +* Renamed `where:orderBy:` to `allWhere:orderBy:` + +### Enhancements + +* Added `countWhere:` on `RLMTable` +* Added `sumOfColumn:where:` on `RLMTable` +* Added `averageOfColumn:where:` on `RLMTable` +* Added `minOfProperty:where:` on `RLMTable` +* Added `maxOfProperty:where:` on `RLMTable` +* Added `toJSONString` on `RLMRealm`, `RLMTable` and `RLMView` +* Added support for `NOT` operator in predicates +* Added support for default values +* Added validation support in `createInRealm:withObject:` + +### Bugfixes + +* None. + + +0.10.0 Release notes (2014-04-23) +============================================================= + +TightDB is now Realm! The Objective-C API has been updated +and your code will break! + +### API breaking changes + +* All references to TightDB have been changed to Realm. +* All prefixes changed from `TDB` to `RLM`. +* `TDBTransaction` and `TDBSmartContext` have merged into `RLMRealm`. +* Write transactions now take an optional rollback parameter (rather than needing to return a boolean). +* `addColumnWithName:` and variant methods now return the index of the newly created column if successful, `NSNotFound` otherwise. + +### Enhancements + +* `createTableWithName:columns:` has been added to `RLMRealm`. +* Added keyed subscripting for RLMTable's first column if column is of type RLMPropertyTypeString. +* `setRow:atIndex:` has been added to `RLMTable`. +* `RLMRealm` constructors now have variants that take an writable initialization block +* New object interface - tables created/retrieved using `tableWithName:objectClass:` return custom objects + +### Bugfixes + +* None. + + +0.6.0 Release notes (2014-04-11) +============================================================= + +### API breaking changes + +* `contextWithPersistenceToFile:error:` renamed to `contextPersistedAtPath:error:` in `TDBContext` +* `readWithBlock:` renamed to `readUsingBlock:` in `TDBContext` +* `writeWithBlock:error:` renamed to `writeUsingBlock:error:` in `TDBContext` +* `readTable:withBlock:` renamed to `readTable:usingBlock:` in `TDBContext` +* `writeTable:withBlock:error:` renamed to `writeTable:usingBlock:error:` in `TDBContext` +* `findFirstRow` renamed to `indexOfFirstMatchingRow` on `TDBQuery`. +* `findFirstRowFromIndex:` renamed to `indexOfFirstMatchingRowFromIndex:` on `TDBQuery`. +* Return `NSNotFound` instead of -1 when appropriate. +* Renamed `castClass` to `castToTytpedTableClass` on `TDBTable`. +* `removeAllRows`, `removeRowAtIndex`, `removeLastRow`, `addRow` and `insertRow` methods + on table now return void instead of BOOL. + +### Enhancements +* A `TDBTable` can now be queried using `where:` and `where:orderBy:` taking + `NSPredicate` and `NSSortDescriptor` as arguments. +* Added `find:` method on `TDBTable` to find first row matching predicate. +* `contextWithDefaultPersistence` class method added to `TDBContext`. Will create a context persisted + to a file in app/documents folder. +* `renameColumnWithIndex:to:` has been added to `TDBTable`. +* `distinctValuesInColumnWithIndex` has been added to `TDBTable`. +* `dateIsBetween::`, `doubleIsBetween::`, `floatIsBetween::` and `intIsBetween::` + have been added to `TDBQuery`. +* Column names in Typed Tables can begin with non-capital letters too. The generated `addX` + selector can look odd. For example, a table with one column with name `age`, + appending a new row will look like `[table addage:7]`. +* Mixed typed values are better validated when rows are added, inserted, + or modified as object literals. +* `addRow`, `insertRow`, and row updates can be done using objects + derived from `NSObject`. +* `where` has been added to `TDBView`and `TDBViewProtocol`. +* Adding support for "smart" contexts (`TDBSmartContext`). + +### Bugfixes + +* Modifications of a `TDBView` and `TDBQuery` now throw an exception in a readtransaction. + + +0.5.0 Release notes (2014-04-02) +============================================================= + +The Objective-C API has been updated and your code will break! +Of notable changes a fast interface has been added. +This interface includes specific methods to get and set values into Tightdb. +To use these methods import ``. + +### API breaking changes + +* `getTableWithName:` renamed to `tableWithName:` in `TDBTransaction`. +* `addColumnWithName:andType:` renamed to `addColumnWithName:type:` in `TDBTable`. +* `columnTypeOfColumn:` renamed to `columnTypeOfColumnWithIndex` in `TDBTable`. +* `columnNameOfColumn:` renamed to `nameOfColumnWithIndex:` in `TDBTable`. +* `addColumnWithName:andType:` renamed to `addColumnWithName:type:` in `TDBDescriptor`. +* Fast getters and setters moved from `TDBRow.h` to `TDBRowFast.h`. + +### Enhancements + +* Added `minDateInColumnWithIndex` and `maxDateInColumnWithIndex` to `TDBQuery`. +* Transactions can now be started directly on named tables. +* You can create dynamic tables with initial schema. +* `TDBTable` and `TDBView` now have a shared protocol so they can easier be used interchangeably. + +### Bugfixes + +* Fixed bug in 64 bit iOS when inserting BOOL as NSNumber. + + +0.4.0 Release notes (2014-03-26) +============================================================= + +### API breaking changes + +* Typed interface Cursor has now been renamed to Row. +* TDBGroup has been renamed to TDBTransaction. +* Header files are renamed so names match class names. +* Underscore (_) removed from generated typed table classes. +* TDBBinary has been removed; use NSData instead. +* Underscope (_) removed from generated typed table classes. +* Constructor for TDBContext has been renamed to contextWithPersistenceToFile: +* Table findFirstRow and min/max/sum/avg operations has been hidden. +* Table.appendRow has been renamed to addRow. +* getOrCreateTable on Transaction has been removed. +* set*:inColumnWithIndex:atRowIndex: methods have been prefixed with TDB +* *:inColumnWithIndex:atRowIndex: methods have been prefixed with TDB +* addEmptyRow on table has been removed. Use [table addRow:nil] instead. +* TDBMixed removed. Use id and NSObject instead. +* insertEmptyRow has been removed from table. Use insertRow:nil atIndex:index instead. + +#### Enhancements + +* Added firstRow, lastRow selectors on view. +* firstRow and lastRow on table now return nil if table is empty. +* getTableWithName selector added on group. +* getting and creating table methods on group no longer take error argument. +* [TDBQuery parent] and [TDBQuery subtable:] selectors now return self. +* createTable method added on Transaction. Throws exception if table with same name already exists. +* Experimental support for pinning transactions on Context. +* TDBView now has support for object subscripting. + +### Bugfixes + +* None. + + +0.3.0 Release notes (2014-03-14) +============================================================= + +The Objective-C API has been updated and your code will break! + +### API breaking changes + +* Most selectors have been renamed in the binding! +* Prepend TDB-prefix on all classes and types. + +### Enhancements + +* Return types and parameters changed from size_t to NSUInteger. +* Adding setObject to TightdbTable (t[2] = @[@1, @"Hello"] is possible). +* Adding insertRow to TightdbTable. +* Extending appendRow to accept NSDictionary. + +### Bugfixes + +* None. + + +0.2.0 Release notes (2014-03-07) +============================================================= + +The Objective-C API has been updated and your code will break! + +### API breaking changes + +* addRow renamed to addEmptyRow + +### Enhancements + +* Adding a simple class for version numbering. +* Adding get-version and set-version targets to build.sh. +* tableview now supports sort on column with column type bool, date and int +* tableview has method for checking the column type of a specified column +* tableview has method for getting the number of columns +* Adding methods getVersion, getCoreVersion and isAtLeast. +* Adding appendRow to TightdbTable. +* Adding object subscripting. +* Adding method removeColumn on table. + +### Bugfixes + +* None. diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/NSError+RLMSync.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/NSError+RLMSync.h new file mode 100644 index 000000000..5ef323a24 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/NSError+RLMSync.h @@ -0,0 +1,46 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2017 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability) + +@class RLMSyncErrorActionToken; + +/// NSError category extension providing methods to get data out of Realm's +/// "client reset" error. +@interface NSError (RLMSync) + +/** + Given an appropriate Atlas App Services error, return the token that + can be passed into `+[RLMSyncSession immediatelyHandleError:]` to + immediately perform error clean-up work, or nil if the error isn't of + a type that provides a token. + */ +- (nullable RLMSyncErrorActionToken *)rlmSync_errorActionToken NS_REFINED_FOR_SWIFT; + +/** + Given an Atlas App Services client reset error, return the path where the + backup copy of the Realm will be placed once the client reset process is + complete. + */ +- (nullable NSString *)rlmSync_clientResetBackedUpRealmPath NS_SWIFT_UNAVAILABLE(""); + +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMAPIKeyAuth.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMAPIKeyAuth.h new file mode 100644 index 000000000..642bdd95d --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMAPIKeyAuth.h @@ -0,0 +1,95 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMUserAPIKey, RLMObjectId; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/// Provider client for user API keys. +RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class +@interface RLMAPIKeyAuth : RLMProviderClient + +/// A block type used to report an error +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMAPIKeyAuthOptionalErrorBlock)(NSError * _Nullable); + +/// A block type used to return an `RLMUserAPIKey` on success, or an `NSError` on failure +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMOptionalUserAPIKeyBlock)(RLMUserAPIKey * _Nullable, NSError * _Nullable); + +/// A block type used to return an array of `RLMUserAPIKey` on success, or an `NSError` on failure +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMUserAPIKeysBlock)(NSArray * _Nullable, NSError * _Nullable); + +/** + Creates a user API key that can be used to authenticate as the current user. + + @param name The name of the API key to be created. + @param completion A callback to be invoked once the call is complete. +*/ +- (void)createAPIKeyWithName:(NSString *)name + completion:(RLMOptionalUserAPIKeyBlock)completion NS_SWIFT_NAME(createAPIKey(named:completion:)); + +/** + Fetches a user API key associated with the current user. + + @param objectId The ObjectId of the API key to fetch. + @param completion A callback to be invoked once the call is complete. + */ +- (void)fetchAPIKey:(RLMObjectId *)objectId + completion:(RLMOptionalUserAPIKeyBlock)completion; + +/** + Fetches the user API keys associated with the current user. + + @param completion A callback to be invoked once the call is complete. + */ +- (void)fetchAPIKeysWithCompletion:(RLMUserAPIKeysBlock)completion; + +/** + Deletes a user API key associated with the current user. + + @param objectId The ObjectId of the API key to delete. + @param completion A callback to be invoked once the call is complete. + */ +- (void)deleteAPIKey:(RLMObjectId *)objectId + completion:(RLMAPIKeyAuthOptionalErrorBlock)completion; + +/** + Enables a user API key associated with the current user. + + @param objectId The ObjectId of the API key to enable. + @param completion A callback to be invoked once the call is complete. + */ +- (void)enableAPIKey:(RLMObjectId *)objectId + completion:(RLMAPIKeyAuthOptionalErrorBlock)completion; + +/** + Disables a user API key associated with the current user. + + @param objectId The ObjectId of the API key to disable. + @param completion A callback to be invoked once the call is complete. + */ +- (void)disableAPIKey:(RLMObjectId *)objectId + completion:(RLMAPIKeyAuthOptionalErrorBlock)completion; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMApp.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMApp.h new file mode 100644 index 000000000..2228232e8 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMApp.h @@ -0,0 +1,235 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@protocol RLMNetworkTransport, RLMBSON; + +@class RLMUser, RLMCredentials, RLMSyncManager, RLMEmailPasswordAuth, RLMPushClient, RLMSyncTimeoutOptions; + +/// A block type used for APIs which asynchronously vend an `RLMUser`. +typedef void(^RLMUserCompletionBlock)(RLMUser * _Nullable, NSError * _Nullable); + +/// A block type used to report an error +typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); + +#pragma mark RLMAppConfiguration + +/// Properties representing the configuration of a client +/// that communicate with a particular Realm application. +@interface RLMAppConfiguration : NSObject + +/// A custom base URL to request against. +@property (nonatomic, strong, nullable) NSString *baseURL; + +/// The custom transport for network calls to the server. +@property (nonatomic, strong, nullable) id transport; + +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppName + __attribute__((deprecated("This field is not used"))); +/// :nodoc: +@property (nonatomic, strong, nullable) NSString *localAppVersion + __attribute__((deprecated("This field is not used"))); + +/// The default timeout for network requests. +@property (nonatomic, assign) NSUInteger defaultRequestTimeoutMS; + +/// If enabled (the default), a single connection is used for all Realms opened +/// with a single sync user. If disabled, a separate connection is used for each +/// Realm. +/// +/// Session multiplexing reduces resources used and typically improves +/// performance. When multiplexing is enabled, the connection is not immediately +/// closed when the last session is closed, and instead remains open for +/// ``RLMSyncTimeoutOptions.connectionLingerTime`` milliseconds (30 seconds by +/// default). +@property (nonatomic, assign) BOOL enableSessionMultiplexing; + +/** + Options for the assorted types of connection timeouts for sync connections. + + If nil default values for all timeouts are used instead. + */ +@property (nonatomic, nullable, copy) RLMSyncTimeoutOptions *syncTimeouts; + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *)baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + +/// :nodoc: +- (instancetype)initWithBaseURL:(nullable NSString *) baseURL + transport:(nullable id)transport + localAppName:(nullable NSString *)localAppName + localAppVersion:(nullable NSString *)localAppVersion + defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS +__attribute__((deprecated("localAppName and localAppVersion are unused"))); + +/** +Create a new Realm App configuration. + +@param baseURL A custom base URL to request against. +@param transport A custom network transport. +*/ +- (instancetype)initWithBaseURL:(nullable NSString *)baseURL + transport:(nullable id)transport; + +/** + Create a new Realm App configuration. + + @param baseURL A custom base URL to request against. + @param transport A custom network transport. + @param defaultRequestTimeoutMS A custom default timeout for network requests. + */ +- (instancetype)initWithBaseURL:(nullable NSString *) baseURL + transport:(nullable id)transport + defaultRequestTimeoutMS:(NSUInteger)defaultRequestTimeoutMS; + +@end + +#pragma mark RLMApp + +/** + The `RLMApp` has the fundamental set of methods for communicating with a Realm + application backend. + + This interface provides access to login and authentication. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // internally thread-safe +@interface RLMApp : NSObject + +/// The configuration for this Realm app. +@property (nonatomic, readonly) RLMAppConfiguration *configuration; + +/// The `RLMSyncManager` for this Realm app. +@property (nonatomic, readonly) RLMSyncManager *syncManager; + +/// Get a dictionary containing all users keyed on id. +@property (nonatomic, readonly) NSDictionary *allUsers; + +/// Get the current user logged into the Realm app. +@property (nonatomic, readonly, nullable) RLMUser *currentUser; + +/// The app ID for this Realm app. +@property (nonatomic, readonly) NSString *appId; + +/** + A client for the email/password authentication provider which + can be used to obtain a credential for logging in. + + Used to perform requests specifically related to the email/password provider. +*/ +@property (nonatomic, readonly) RLMEmailPasswordAuth *emailPasswordAuth; + +/** + Get an application with a given appId and configuration. + + @param appId The unique identifier of your Realm app. + */ ++ (instancetype)appWithId:(NSString *)appId; + +/** + Get an application with a given appId and configuration. + + @param appId The unique identifier of your Realm app. + @param configuration A configuration object to configure this client. + */ ++ (instancetype)appWithId:(NSString *)appId + configuration:(nullable RLMAppConfiguration *)configuration; + +/** + Login to a user for the Realm app. + + @param credentials The credentials identifying the user. + @param completion A callback invoked after completion. + */ +- (void)loginWithCredential:(RLMCredentials *)credentials + completion:(RLMUserCompletionBlock)completion NS_REFINED_FOR_SWIFT; + +/** + Switches the active user to the specified user. + + This sets which user is used by all RLMApp operations which require a user. This is a local operation which does not access the network. + An exception will be throw if the user is not valid. The current user will remain logged in. + + @param syncUser The user to switch to. + @returns The user you intend to switch to + */ +- (RLMUser *)switchToUser:(RLMUser *)syncUser; + +/** + A client which can be used to register devices with the server to receive push notificatons + */ +- (RLMPushClient *)pushClientWithServiceName:(NSString *)serviceName + NS_SWIFT_NAME(pushClient(serviceName:)); + +/** + RLMApp instances are cached internally by Realm and cannot be created directly. + + Use `+[RLMRealm appWithId]` or `+[RLMRealm appWithId:configuration:]` + to obtain a reference to an RLMApp. + */ +- (instancetype)init __attribute__((unavailable("Use +appWithId or appWithId:configuration:."))); + +/** +RLMApp instances are cached internally by Realm and cannot be created directly. + +Use `+[RLMRealm appWithId]` or `+[RLMRealm appWithId:configuration:]` +to obtain a reference to an RLMApp. +*/ ++ (instancetype)new __attribute__((unavailable("Use +appWithId or appWithId:configuration:."))); + +@end + +#pragma mark - Sign In With Apple Extension + +API_AVAILABLE(ios(13.0), macos(10.15), tvos(13.0), watchos(6.0)) +/// Use this delegate to be provided a callback once authentication has succeed or failed +@protocol RLMASLoginDelegate + +/// Callback that is invoked should the authentication fail. +/// @param error An error describing the authentication failure. +- (void)authenticationDidFailWithError:(NSError *)error NS_SWIFT_NAME(authenticationDidComplete(error:)); + +/// Callback that is invoked should the authentication succeed. +/// @param user The newly authenticated user. +- (void)authenticationDidCompleteWithUser:(RLMUser *)user NS_SWIFT_NAME(authenticationDidComplete(user:)); + +@end + +API_AVAILABLE(ios(13.0), macos(10.15), tvos(13.0), watchos(6.0)) +/// Category extension that deals with Sign In With Apple authentication. +/// This is only available on OS's that support `AuthenticationServices` +@interface RLMApp (ASLogin) + +/// Use this delegate to be provided a callback once authentication has succeed or failed. +@property (nonatomic, weak, nullable) id authorizationDelegate; + +/// Sets the ASAuthorizationControllerDelegate to be handled by `RLMApp` +/// @param controller The ASAuthorizationController in which you want `RLMApp` to consume its delegate. +- (void)setASAuthorizationControllerDelegateForController:(ASAuthorizationController *)controller NS_REFINED_FOR_SWIFT; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMArray.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMArray.h new file mode 100644 index 000000000..b2c6c1664 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMArray.h @@ -0,0 +1,652 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMObject, RLMResults; + +/** + `RLMArray` is the container type in Realm used to define to-many relationships. + + Unlike an `NSArray`, `RLMArray`s hold a single type, specified by the `objectClassName` property. + This is referred to in these docs as the “type” of the array. + + When declaring an `RLMArray` property, the type must be marked as conforming to a + protocol by the same name as the objects it should contain (see the + `RLM_COLLECTION_TYPE` macro). In addition, the property can be declared using Objective-C + generics for better compile-time type safety. + + RLM_COLLECTION_TYPE(ObjectType) + ... + @property RLMArray *arrayOfObjectTypes; + + `RLMArray`s can be queried with the same predicates as `RLMObject` and `RLMResult`s. + + `RLMArray`s cannot be created directly. `RLMArray` properties on `RLMObject`s are + lazily created when accessed, or can be obtained by querying a Realm. + + ### Key-Value Observing + + `RLMArray` supports array key-value observing on `RLMArray` properties on `RLMObject` + subclasses, and the `invalidated` property on `RLMArray` instances themselves is + key-value observing compliant when the `RLMArray` is attached to a managed + `RLMObject` (`RLMArray`s on unmanaged `RLMObject`s will never become invalidated). + + Because `RLMArray`s are attached to the object which they are a property of, they + do not require using the mutable collection proxy objects from + `-mutableArrayValueForKey:` or KVC-compatible mutation methods on the containing + object. Instead, you can call the mutation methods on the `RLMArray` directly. + */ + +@interface RLMArray : NSObject + +#pragma mark - Properties + +/** + The number of objects in the array. + */ +@property (nonatomic, readonly, assign) NSUInteger count; + +/** + The type of the objects in the array. + */ +@property (nonatomic, readonly, assign) RLMPropertyType type; + +/** + Indicates whether the objects in the collection can be `nil`. + */ +@property (nonatomic, readonly, getter = isOptional) BOOL optional; + +/** + The class name of the objects contained in the array. + + Will be `nil` if `type` is not RLMPropertyTypeObject. + */ +@property (nonatomic, readonly, copy, nullable) NSString *objectClassName; + +/** + The Realm which manages the array. Returns `nil` for unmanaged arrays. + */ +@property (nonatomic, readonly, nullable) RLMRealm *realm; + +/** + Indicates if the array can no longer be accessed. + */ +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +/** + Indicates if the array is frozen. + + Frozen arrays are immutable and can be accessed from any thread. Frozen arrays + are created by calling `-freeze` on a managed live array. Unmanaged arrays are + never frozen. + */ +@property (nonatomic, readonly, getter = isFrozen) BOOL frozen; + +#pragma mark - Accessing Objects from an Array + +/** + Returns the object at the index specified. + + @param index The index to look up. + + @return An object of the type contained in the array. + */ +- (RLMObjectType)objectAtIndex:(NSUInteger)index; + +/** + Returns an array containing the objects in the array at the indexes specified by a given index set. + `nil` will be returned if the index set contains an index out of the arrays bounds. + + @param indexes The indexes in the array to retrieve objects from. + + @return The objects at the specified indexes. + */ +- (nullable NSArray *)objectsAtIndexes:(NSIndexSet *)indexes; + +/** + Returns the first object in the array. + + Returns `nil` if called on an empty array. + + @return An object of the type contained in the array. + */ +- (nullable RLMObjectType)firstObject; + +/** + Returns the last object in the array. + + Returns `nil` if called on an empty array. + + @return An object of the type contained in the array. + */ +- (nullable RLMObjectType)lastObject; + + + +#pragma mark - Adding, Removing, and Replacing Objects in an Array + +/** + Adds an object to the end of the array. + + @warning This method may only be called during a write transaction. + + @param object An object of the type contained in the array. + */ +- (void)addObject:(RLMObjectType)object; + +/** + Adds an array of objects to the end of the array. + + @warning This method may only be called during a write transaction. + + @param objects An enumerable object such as `NSArray` or `RLMResults` which contains objects of the + same class as the array. + */ +- (void)addObjects:(id)objects; + +/** + Inserts an object at the given index. + + Throws an exception if the index exceeds the bounds of the array. + + @warning This method may only be called during a write transaction. + + @param anObject An object of the type contained in the array. + @param index The index at which to insert the object. + */ +- (void)insertObject:(RLMObjectType)anObject atIndex:(NSUInteger)index; + +/** + Removes an object at the given index. + + Throws an exception if the index exceeds the bounds of the array. + + @warning This method may only be called during a write transaction. + + @param index The array index identifying the object to be removed. + */ +- (void)removeObjectAtIndex:(NSUInteger)index; + +/** + Removes the last object in the array. + + This is a no-op if the array is already empty. + + @warning This method may only be called during a write transaction. +*/ +- (void)removeLastObject; + +/** + Removes all objects from the array. + + @warning This method may only be called during a write transaction. + */ +- (void)removeAllObjects; + +/** + Replaces an object at the given index with a new object. + + Throws an exception if the index exceeds the bounds of the array. + + @warning This method may only be called during a write transaction. + + @param index The index of the object to be replaced. + @param anObject An object (of the same type as returned from the `objectClassName` selector). + */ +- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(RLMObjectType)anObject; + +/** + Moves the object at the given source index to the given destination index. + + Throws an exception if the index exceeds the bounds of the array. + + @warning This method may only be called during a write transaction. + + @param sourceIndex The index of the object to be moved. + @param destinationIndex The index to which the object at `sourceIndex` should be moved. + */ +- (void)moveObjectAtIndex:(NSUInteger)sourceIndex toIndex:(NSUInteger)destinationIndex; + +/** + Exchanges the objects in the array at given indices. + + Throws an exception if either index exceeds the bounds of the array. + + @warning This method may only be called during a write transaction. + + @param index1 The index of the object which should replace the object at index `index2`. + @param index2 The index of the object which should replace the object at index `index1`. + */ +- (void)exchangeObjectAtIndex:(NSUInteger)index1 withObjectAtIndex:(NSUInteger)index2; + +#pragma mark - Querying an Array + +/** + Returns the index of an object in the array. + + Returns `NSNotFound` if the object is not found in the array. + + @param object An object (of the same type as returned from the `objectClassName` selector). + */ +- (NSUInteger)indexOfObject:(RLMObjectType)object; + +/** + Returns the index of the first object in the array matching the predicate. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + + @return The index of the object, or `NSNotFound` if the object is not found in the array. + */ +- (NSUInteger)indexOfObjectWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (NSUInteger)indexOfObjectWhere:(NSString *)predicateFormat args:(va_list)args; + +/** + Returns the index of the first object in the array matching the predicate. + + @param predicate The predicate with which to filter the objects. + + @return The index of the object, or `NSNotFound` if the object is not found in the array. + */ +- (NSUInteger)indexOfObjectWithPredicate:(NSPredicate *)predicate; + +/** + Returns all the objects matching the given predicate in the array. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + + @return An `RLMResults` of objects that match the given predicate. + */ +- (RLMResults *)objectsWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (RLMResults *)objectsWhere:(NSString *)predicateFormat args:(va_list)args; + +/** + Returns all the objects matching the given predicate in the array. + + @param predicate The predicate with which to filter the objects. + + @return An `RLMResults` of objects that match the given predicate + */ +- (RLMResults *)objectsWithPredicate:(NSPredicate *)predicate; + +/** + Returns a sorted `RLMResults` from the array. + + @param keyPath The key path to sort by. + @param ascending The direction to sort in. + + @return An `RLMResults` sorted by the specified key path. + */ +- (RLMResults *)sortedResultsUsingKeyPath:(NSString *)keyPath ascending:(BOOL)ascending; + +/** + Returns a sorted `RLMResults` from the array. + + @param properties An array of `RLMSortDescriptor`s to sort by. + + @return An `RLMResults` sorted by the specified properties. + */ +- (RLMResults *)sortedResultsUsingDescriptors:(NSArray *)properties; + +/** + Returns a distinct `RLMResults` from the array. + + @param keyPaths The key paths to distinct on. + + @return An `RLMResults` with the distinct values of the keypath(s). + */ +- (RLMResults *)distinctResultsUsingKeyPaths:(NSArray *)keyPaths; + +/// :nodoc: +- (RLMObjectType)objectAtIndexedSubscript:(NSUInteger)index; + +/// :nodoc: +- (void)setObject:(RLMObjectType)newValue atIndexedSubscript:(NSUInteger)index; + +#pragma mark - Sectioning an Array + +/** + Sorts and sections this collection from a given property key path, returning the result + as an instance of `RLMSectionedResults`. + + @param keyPath The property key path to sort on. + @param ascending The direction to sort in. + @param keyBlock A callback which is invoked on each element in the Results collection. + This callback is to return the section key for the element in the collection. + + @return An instance of RLMSectionedResults. + */ +- (RLMSectionedResults *)sectionedResultsSortedUsingKeyPath:(NSString *)keyPath + ascending:(BOOL)ascending + keyBlock:(RLMSectionedResultsKeyBlock)keyBlock; + +/** + Sorts and sections this collection from a given array of sort descriptors, returning the result + as an instance of `RLMSectionedResults`. + + @param sortDescriptors An array of `RLMSortDescriptor`s to sort by. + @param keyBlock A callback which is invoked on each element in the Results collection. + This callback is to return the section key for the element in the collection. + + @note The primary sort descriptor must be responsible for determining the section key. + + @return An instance of RLMSectionedResults. + */ +- (RLMSectionedResults *)sectionedResultsUsingSortDescriptors:(NSArray *)sortDescriptors + keyBlock:(RLMSectionedResultsKeyBlock)keyBlock; + + +#pragma mark - Notifications + +/** + Registers a block to be called each time the array changes. + + The block will be asynchronously called with the initial array, and then + called again after each write transaction which changes any of the objects in + the array, which objects are in the results, or the order of the objects in the + array. + + The `changes` parameter will be `nil` the first time the block is called. For + each call after that, it will contain information about which rows in the + array were added, removed or modified. If a write transaction did not modify + any objects in the array, the block is not called at all. See the + `RLMCollectionChange` documentation for information on how the changes are + reported and an example of updating a `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + Person *person = [[Person allObjectsInRealm:realm] firstObject]; + NSLog(@"person.dogs.count: %zu", person.dogs.count); // => 0 + self.token = [person.dogs addNotificationBlock(RLMArray *dogs, + RLMCollectionChange *changes, + NSError *error) { + // Only fired once for the example + NSLog(@"dogs.count: %zu", dogs.count) // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + [person.dogs addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning This method may only be called on a non-frozen managed array. + + @param block The block to be called each time the array changes. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMArray *_Nullable array, + RLMCollectionChange *_Nullable changes, + NSError *_Nullable error))block +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the array changes. + + The block will be asynchronously called with the initial array, and then + called again after each write transaction which changes any of the objects in + the array, which objects are in the results, or the order of the objects in the + array. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the array were added, removed or modified. If a write transaction + did not modify any objects in the array, the block is not called at all. + See the `RLMCollectionChange` documentation for information on how the changes + are reported and an example of updating a `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMArray *_Nullable array, + RLMCollectionChange *_Nullable changes, + NSError *_Nullable error))block + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the array changes. + + The block will be asynchronously called with the initial array, and then + called again after each write transaction which changes any of the objects in + the array, which objects are in the results, or the order of the objects in the + array. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the array were added, removed or modified. If a write transaction + did not modify any objects in the array, the block is not called at all. + See the `RLMCollectionChange` documentation for information on how the changes + are reported and an example of updating a `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMArray *_Nullable array, + RLMCollectionChange *_Nullable changes, + NSError *_Nullable error))block + keyPaths:(nullable NSArray *)keyPaths + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the array changes. + + The block will be asynchronously called with the initial array, and then + called again after each write transaction which changes any of the objects in + the array, which objects are in the results, or the order of the objects in the + array. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the array were added, removed or modified. If a write transaction + did not modify any objects in the array, the block is not called at all. + See the `RLMCollectionChange` documentation for information on how the changes + are reported and an example of updating a `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMArray *_Nullable array, + RLMCollectionChange *_Nullable changes, + NSError *_Nullable error))block + keyPaths:(nullable NSArray *)keyPaths +__attribute__((warn_unused_result)); + +#pragma mark - Aggregating Property Values + +/** + Returns the minimum (lowest) value of the given property among all the objects in the array. + + NSNumber *min = [object.arrayProperty minOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose minimum value is desired. Only properties of + types `int`, `float`, `double`, and `NSDate` are supported. + + @return The minimum value of the property, or `nil` if the array is empty. + */ +- (nullable id)minOfProperty:(NSString *)property; + +/** + Returns the maximum (highest) value of the given property among all the objects in the array. + + NSNumber *max = [object.arrayProperty maxOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose maximum value is desired. Only properties of + types `int`, `float`, `double`, and `NSDate` are supported. + + @return The maximum value of the property, or `nil` if the array is empty. + */ +- (nullable id)maxOfProperty:(NSString *)property; + +/** + Returns the sum of the values of a given property over all the objects in the array. + + NSNumber *sum = [object.arrayProperty sumOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose values should be summed. Only properties of + types `int`, `float`, and `double` are supported. + + @return The sum of the given property. + */ +- (NSNumber *)sumOfProperty:(NSString *)property; + +/** + Returns the average value of a given property over the objects in the array. + + NSNumber *average = [object.arrayProperty averageOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose average value should be calculated. Only + properties of types `int`, `float`, and `double` are supported. + + @return The average value of the given property, or `nil` if the array is empty. + */ +- (nullable NSNumber *)averageOfProperty:(NSString *)property; + +#pragma mark - Freeze + +/** + Returns a frozen (immutable) snapshot of this array. + + The frozen copy is an immutable array which contains the same data as this + array currently contains, but will not update when writes are made to the + containing Realm. Unlike live arrays, frozen arrays can be accessed from any + thread. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning This method may only be called on a managed array. + @warning Holding onto a frozen array for an extended period while performing + write transaction on the Realm may result in the Realm file growing + to large sizes. See `RLMRealmConfiguration.maximumNumberOfActiveVersions` + for more information. + */ +- (instancetype)freeze; + +/** + Returns a live version of this frozen collection. + + This method resolves a reference to a live copy of the same frozen collection. + If called on a live collection, will return itself. +*/ +- (instancetype)thaw; + +#pragma mark - Unavailable Methods + +/** + `-[RLMArray init]` is not available because `RLMArray`s cannot be created directly. + `RLMArray` properties on `RLMObject`s are lazily created when accessed. + */ +- (instancetype)init __attribute__((unavailable("RLMArrays cannot be created directly"))); + +/** + `+[RLMArray new]` is not available because `RLMArray`s cannot be created directly. + `RLMArray` properties on `RLMObject`s are lazily created when accessed. + */ ++ (instancetype)new __attribute__((unavailable("RLMArrays cannot be created directly"))); + +@end + +/// :nodoc: +@interface RLMArray (Swift) +// for use only in Swift class definitions +- (instancetype)initWithObjectClassName:(NSString *)objectClassName; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMAsymmetricObject.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMAsymmetricObject.h new file mode 100644 index 000000000..09deb787e --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMAsymmetricObject.h @@ -0,0 +1,98 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2022 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMObjectSchema, RLMPropertyDescriptor, RLMRealm; +/** + `RLMAsymmetricObject` is a base class used to define asymmetric Realm objects. + + Asymmetric objects can only be created using the `createInRealm:` + function, and cannot be added, removed or queried. + When created, asymmetric objects will be synced unidirectionally to the MongoDB + database and cannot be accessed locally. + + Linking an asymmetric object within an `Object` is not allowed and will throw an error. + + The property types supported on `RLMAsymmetricObject` are the same as for `RLMObject`, + except for that asymmetric objects can only link to embedded objects, so `RLMObject` + and `RLMArray` properties are not supported (`RLMEmbeddedObject` and + `RLMArray` *are*). + */ +@interface RLMAsymmetricObject : RLMObjectBase + +#pragma mark - Creating & Initializing Objects + +/** + Creates an unmanaged instance of a Realm object. + */ +- (instancetype)init NS_DESIGNATED_INITIALIZER; + +/** + Creates an unmanaged instance of a Realm object. + + Pass in an `NSArray` or `NSDictionary` instance to set the values of the object's properties. + */ +- (instancetype)initWithValue:(id)value; + +/** + Returns the class name for a Realm object subclass. + + @warning Do not override. Realm relies on this method returning the exact class + name. + + @return The class name for the model class. + */ ++ (NSString *)className; + +/** + Creates an Asymmetric object, which will be synced unidirectionally and + cannot be queried locally. + + Objects created using this method will not be added to the Realm. + + @warning This method may only be called during a write transaction. + @warning This method always returns nil. + + @param realm The Realm to be used to create the asymmetric object.. + @param value The value used to populate the object. + + @return Returns `nil` + */ ++ (instancetype)createInRealm:(RLMRealm *)realm withValue:(id)value; + +#pragma mark - Properties + +/** + The object schema which lists the managed properties for the object. + */ +@property (nonatomic, readonly) RLMObjectSchema *objectSchema; + +#pragma mark - Dynamic Accessors + +/// :nodoc: +- (nullable id)objectForKeyedSubscript:(NSString *)key; + +/// :nodoc: +- (void)setObject:(nullable id)obj forKeyedSubscript:(NSString *)key; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMAsyncTask.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMAsyncTask.h new file mode 100644 index 000000000..9f7dc58da --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMAsyncTask.h @@ -0,0 +1,67 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2023 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** + A task object which can be used to observe or cancel an async open. + + When a synchronized Realm is opened asynchronously, the latest state of the + Realm is downloaded from the server before the completion callback is invoked. + This task object can be used to observe the state of the download or to cancel + it. This should be used instead of trying to observe the download via the sync + session as the sync session itself is created asynchronously, and may not exist + yet when -[RLMRealm asyncOpenWithConfiguration:completion:] returns. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // is internally thread-safe +@interface RLMAsyncOpenTask : NSObject +/** + Register a progress notification block. + + Each registered progress notification block is called whenever the sync + subsystem has new progress data to report until the task is either cancelled + or the completion callback is called. Progress notifications are delivered on + the main queue. + */ +- (void)addProgressNotificationBlock:(RLMProgressNotificationBlock)block; + +/** + Register a progress notification block which is called on the given queue. + + Each registered progress notification block is called whenever the sync + subsystem has new progress data to report until the task is either cancelled + or the completion callback is called. Progress notifications are delivered on + the supplied queue. + */ +- (void)addProgressNotificationOnQueue:(dispatch_queue_t)queue + block:(RLMProgressNotificationBlock)block; + +/** + Cancel the asynchronous open. + + Any download in progress will be cancelled, and the completion block for this + async open will never be called. If multiple async opens on the same Realm are + happening concurrently, all other opens will fail with the error "operation cancelled". + */ +- (void)cancel; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMBSON.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMBSON.h new file mode 100644 index 000000000..41750fd57 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMBSON.h @@ -0,0 +1,174 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +#pragma mark RLMBSONType + +/** + Allowed BSON types. + */ +typedef NS_ENUM(NSUInteger, RLMBSONType) { + /// BSON Null type + RLMBSONTypeNull, + /// BSON Int32 type + RLMBSONTypeInt32, + /// BSON Int64 type + RLMBSONTypeInt64, + /// BSON Bool type + RLMBSONTypeBool, + /// BSON Double type + RLMBSONTypeDouble, + /// BSON String type + RLMBSONTypeString, + /// BSON Binary type + RLMBSONTypeBinary, + /// BSON Timestamp type + RLMBSONTypeTimestamp, + /// BSON Datetime type + RLMBSONTypeDatetime, + /// BSON ObjectId type + RLMBSONTypeObjectId, + /// BSON Decimal128 type + RLMBSONTypeDecimal128, + /// BSON RegularExpression type + RLMBSONTypeRegularExpression, + /// BSON MaxKey type + RLMBSONTypeMaxKey, + /// BSON MinKey type + RLMBSONTypeMinKey, + /// BSON Document type + RLMBSONTypeDocument, + /// BSON Array type + RLMBSONTypeArray, + /// BSON UUID type + RLMBSONTypeUUID +}; + +#pragma mark RLMBSON + +/** + Protocol representing a BSON value. BSON is a computer data interchange format. + The name "BSON" is based on the term JSON and stands for "Binary JSON". + + The following types conform to RLMBSON: + + `NSNull` + `NSNumber` + `NSString` + `NSData` + `NSDateInterval` + `NSDate` + `RLMObjectId` + `RLMDecimal128` + `NSRegularExpression` + `RLMMaxKey` + `RLMMinKey` + `NSDictionary` + `NSArray` + `NSUUID` + + @see RLMBSONType + @see bsonspec.org + */ +@protocol RLMBSON + +/** + The BSON type for the conforming interface. + */ +@property (readonly) RLMBSONType bsonType NS_REFINED_FOR_SWIFT; + +/** + Whether or not this BSON is equal to another. + + @param other The BSON to compare to + */ +- (BOOL)isEqual:(_Nullable id)other; + +@end + +/// :nodoc: +@interface NSNull (RLMBSON) +@end + +/// :nodoc: +@interface NSNumber (RLMBSON) +@end + +/// :nodoc: +@interface NSString (RLMBSON) +@end + +/// :nodoc: +@interface NSData (RLMBSON) +@end + +/// :nodoc: +@interface NSDateInterval (RLMBSON) +@end + +/// :nodoc: +@interface NSDate (RLMBSON) +@end + +/// :nodoc: +@interface RLMObjectId (RLMBSON) +@end + +/// :nodoc: +@interface RLMDecimal128 (RLMBSON) +@end + +/// :nodoc: +@interface NSRegularExpression (RLMBSON) +@end + +/// MaxKey will always be the greatest value when comparing to other BSON types +RLM_SWIFT_SENDABLE RLM_FINAL +@interface RLMMaxKey : NSObject +@end + +/// MinKey will always be the smallest value when comparing to other BSON types +RLM_SWIFT_SENDABLE RLM_FINAL +@interface RLMMinKey : NSObject +@end + +/// :nodoc: +@interface RLMMaxKey (RLMBSON) +@end + +/// :nodoc: +@interface RLMMinKey (RLMBSON) +@end + +/// :nodoc: +@interface NSDictionary (RLMBSON) +@end + +/// :nodoc: +@interface NSMutableArray (RLMBSON) +@end + +/// :nodoc: +@interface NSArray (RLMBSON) +@end + +/// :nodoc: +@interface NSUUID (RLMBSON) +@end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMCollection.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMCollection.h new file mode 100644 index 000000000..eac117f17 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMCollection.h @@ -0,0 +1,613 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@protocol RLMValue; +@class RLMRealm, RLMResults, RLMSortDescriptor, RLMNotificationToken, RLMCollectionChange, RLMSectionedResults; +typedef RLM_CLOSED_ENUM(int32_t, RLMPropertyType); +/// A callback which is invoked on each element in the Results collection which returns the section key. +typedef id _Nullable(^RLMSectionedResultsKeyBlock)(id); + +/** + A homogenous collection of Realm-managed objects. Examples of conforming types + include `RLMArray`, `RLMSet`, `RLMResults`, and `RLMLinkingObjects`. + */ +@protocol RLMCollection + +#pragma mark - Properties + +/** + The number of objects in the collection. + */ +@property (nonatomic, readonly) NSUInteger count; + +/** + The type of the objects in the collection. + */ +@property (nonatomic, readonly) RLMPropertyType type; + +/** + Indicates whether the objects in the collection can be `nil`. + */ +@property (nonatomic, readonly, getter = isOptional) BOOL optional; + +/** + The class name of the objects contained in the collection. + + Will be `nil` if `type` is not RLMPropertyTypeObject. + */ +@property (nonatomic, readonly, copy, nullable) NSString *objectClassName; + +/** + The Realm which manages this collection, if any. + */ +@property (nonatomic, readonly, nullable) RLMRealm *realm; + +/** + Indicates if the collection is no longer valid. + + The collection becomes invalid if `invalidate` is called on the managing + Realm. Unmanaged collections are never invalidated. + */ +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +#pragma mark - Accessing Objects from a Collection + +/** + Returns the object at the index specified. + + @param index The index to look up. + + @return An object of the type contained in the collection. + */ +- (id)objectAtIndex:(NSUInteger)index; + +@optional + +/** + Returns an array containing the objects in the collection at the indexes + specified by a given index set. `nil` will be returned if the index set + contains an index out of the collections bounds. + + @param indexes The indexes in the collection to retrieve objects from. + + @return The objects at the specified indexes. + */ +- (nullable NSArray *)objectsAtIndexes:(NSIndexSet *)indexes; + +/** + Returns the first object in the collection. + + RLMSet is not ordered, and so for sets this will return an arbitrary object in + the set. It is not guaraneed to be a different object from what `lastObject` + gives even if the set has multiple objects in it. + + Returns `nil` if called on an empty collection. + + @return An object of the type contained in the collection. + */ +- (nullable id)firstObject; + +/** + Returns the last object in the collection. + + RLMSet is not ordered, and so for sets this will return an arbitrary object in + the set. It is not guaraneed to be a different object from what `firstObject` + gives even if the set has multiple objects in it. + + Returns `nil` if called on an empty collection. + + @return An object of the type contained in the collection. + */ +- (nullable id)lastObject; + +/// :nodoc: +- (id)objectAtIndexedSubscript:(NSUInteger)index; + +/** + Returns the index of an object in the collection. + + Returns `NSNotFound` if the object is not found in the collection. + + @param object An object (of the same type as returned from the `objectClassName` selector). + */ +- (NSUInteger)indexOfObject:(id)object; + +/** + Returns the index of the first object in the collection matching the predicate. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + + @return The index of the object, or `NSNotFound` if the object is not found in the collection. + */ +- (NSUInteger)indexOfObjectWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (NSUInteger)indexOfObjectWhere:(NSString *)predicateFormat args:(va_list)args; + +/** + Returns the index of the first object in the collection matching the predicate. + + @param predicate The predicate with which to filter the objects. + + @return The index of the object, or `NSNotFound` if the object is not found in the collection. + */ +- (NSUInteger)indexOfObjectWithPredicate:(NSPredicate *)predicate; + +@required + +#pragma mark - Querying a Collection + +/** + Returns all objects matching the given predicate in the collection. + + This is only supported for managed collections. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + @return An `RLMResults` containing objects that match the given predicate. + */ +- (RLMResults *)objectsWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (RLMResults *)objectsWhere:(NSString *)predicateFormat args:(va_list)args; + +/** + Returns all objects matching the given predicate in the collection. + + This is only supported for managed collections. + + @param predicate The predicate with which to filter the objects. + @return An `RLMResults` containing objects that match the given predicate. + */ +- (RLMResults *)objectsWithPredicate:(NSPredicate *)predicate; + +/** + Returns a sorted `RLMResults` from the collection. + + This is only supported for managed collections. + + @param keyPath The keyPath to sort by. + @param ascending The direction to sort in. + @return An `RLMResults` sorted by the specified key path. + */ +- (RLMResults *)sortedResultsUsingKeyPath:(NSString *)keyPath ascending:(BOOL)ascending; + +/** + Returns a sorted `RLMResults` from the collection. + + This is only supported for managed collections. + + @param properties An array of `RLMSortDescriptor`s to sort by. + @return An `RLMResults` sorted by the specified properties. + */ +- (RLMResults *)sortedResultsUsingDescriptors:(NSArray *)properties; + +/** + Returns a distinct `RLMResults` from the collection. + + This is only supported for managed collections. + + @param keyPaths The key paths used produce distinct results + @return An `RLMResults` made distinct based on the specified key paths + */ +- (RLMResults *)distinctResultsUsingKeyPaths:(NSArray *)keyPaths; + +/** + Returns an `NSArray` containing the results of invoking `valueForKey:` using + `key` on each of the collection's objects. + + @param key The name of the property. + + @return An `NSArray` containing results. + */ +- (nullable id)valueForKey:(NSString *)key; + +/** + Returns the value for the derived property identified by a given key path. + + @param keyPath A key path of the form relationship.property (with one or more relationships). + + @return The value for the derived property identified by keyPath. + */ +- (nullable id)valueForKeyPath:(NSString *)keyPath; + +/** + Invokes `setValue:forKey:` on each of the collection's objects using the specified `value` and `key`. + + @warning This method may only be called during a write transaction. + + @param value The object value. + @param key The name of the property. + */ +- (void)setValue:(nullable id)value forKey:(NSString *)key; + +#pragma mark - Notifications + +/** +Registers a block to be called each time the collection changes. + +The block will be asynchronously called with the initial collection, +and then called again after each write transaction which changes either any +of the objects in the collection, or which objects are in the collection. + +The `change` parameter will be `nil` the first time the block is called. +For each call after that, it will contain information about +which rows in the collection were added, removed or modified. If a +write transaction did not modify any objects in the results collection, +the block is not called at all. See the `RLMCollectionChange` documentation for +information on how the changes are reported and an example of updating a +`UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + +At the time when the block is called, the collection object will be fully +evaluated and up-to-date, and as long as you do not perform a write transaction +on the same thread or explicitly call `-[RLMRealm refresh]`, accessing it will +never perform blocking work. + +Notifications are delivered via the standard run loop, and so can't be +delivered while the run loop is blocked by other activity. When +notifications can't be delivered instantly, multiple notifications may be +coalesced into a single notification. This can include the notification +with the initial results. For example, the following code performs a write +transaction immediately after adding the notification block, so there is no +opportunity for the initial notification to be delivered first. As a +result, the initial notification will reflect the state of the Realm after +the write transaction. + + RLMResults *results = [Dog allObjects]; + NSLog(@"dogs.count: %zu", dogs.count); // => 0 + self.token = [results addNotificationBlock:^(RLMResults *dogs, + RLMCollectionChange *changes, + NSError *error) { + // Only fired once for the example + NSLog(@"dogs.count: %zu", dogs.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + [realm addObject:dog]; + }]; + // end of run loop execution context + +You must retain the returned token for as long as you want updates to continue +to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + +@warning This method cannot be called during a write transaction, or when the + containing Realm is read-only or frozen. + +@param block The block to be called whenever a change occurs. +@return A token which must be held for as long as you want updates to be delivered. +*/ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMResults *_Nullable results, + RLMCollectionChange *_Nullable change, + NSError *_Nullable error))block +__attribute__((warn_unused_result)); + +/** +Registers a block to be called each time the collection changes. + +The block will be asynchronously called with the initial collection, +and then called again after each write transaction which changes either any +of the objects in the collection, or which objects are in the collection. + +The `change` parameter will be `nil` the first time the block is called. +For each call after that, it will contain information about +which rows in the collection were added, removed or modified. If a +write transaction did not modify any objects in the results collection, +the block is not called at all. See the `RLMCollectionChange` documentation for +information on how the changes are reported and an example of updating a +`UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + +At the time when the block is called, the collection object will be fully +evaluated and up-to-date, and as long as you do not perform a write transaction +on the same thread or explicitly call `-[RLMRealm refresh]`, accessing it will +never perform blocking work. + +Notifications are delivered on the given queue. If the queue is blocked and +notifications can't be delivered instantly, multiple notifications may be +coalesced into a single notification. + +You must retain the returned token for as long as you want updates to continue +to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + +@warning This method cannot be called when the containing Realm is read-only or frozen. +@warning The queue must be a serial queue. + +@param block The block to be called whenever a change occurs. +@param queue The serial queue to deliver notifications to. +@return A token which must be held for as long as you want updates to be delivered. +*/ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMResults *_Nullable results, + RLMCollectionChange *_Nullable change, + NSError *_Nullable error))block + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +/** +Registers a block to be called each time the collection changes. + +The block will be asynchronously called with the initial collection, +and then called again after each write transaction which changes either any +of the objects in the collection, or which objects are in the collection. + +The `change` parameter will be `nil` the first time the block is called. +For each call after that, it will contain information about +which rows in the collection were added, removed or modified. If a +write transaction did not modify any objects in the results collection, +the block is not called at all. See the `RLMCollectionChange` documentation for +information on how the changes are reported and an example of updating a +`UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + +At the time when the block is called, the collection object will be fully +evaluated and up-to-date, and as long as you do not perform a write transaction +on the same thread or explicitly call `-[RLMRealm refresh]`, accessing it will +never perform blocking work. + +Notifications are delivered on the given queue. If the queue is blocked and +notifications can't be delivered instantly, multiple notifications may be +coalesced into a single notification. + +You must retain the returned token for as long as you want updates to continue +to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + +@warning This method cannot be called when the containing Realm is read-only or frozen. +@warning The queue must be a serial queue. + +@param block The block to be called whenever a change occurs. +@param queue The serial queue to deliver notifications to. +@param keyPaths The block will be called for changes occurring on these keypaths. If no +key paths are given, notifications are delivered for every property key path. +@return A token which must be held for as long as you want updates to be delivered. +*/ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMResults *_Nullable results, + RLMCollectionChange *_Nullable change, + NSError *_Nullable error))block + keyPaths:(nullable NSArray *)keyPaths + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +#pragma mark - Sectioned Results + +/** + Sorts and sections this collection from a given property key path, returning the result + as an instance of `RLMSectionedResults`. + + @param keyPath The property key path to sort on. + @param ascending The direction to sort in. + @param keyBlock A callback which is invoked on each element in the Results collection. + This callback is to return the section key for the element in the collection. + + @return An instance of RLMSectionedResults. + */ +- (RLMSectionedResults *)sectionedResultsSortedUsingKeyPath:(NSString *)keyPath + ascending:(BOOL)ascending + keyBlock:(RLMSectionedResultsKeyBlock)keyBlock; + +/** + Sorts and sections this collection from a given array of sort descriptors, returning the result + as an instance of `RLMSectionedResults`. + + @param sortDescriptors An array of `RLMSortDescriptor`s to sort by. + @param keyBlock A callback which is invoked on each element in the Results collection. + This callback is to return the section key for the element in the collection. + + @note The primary sort descriptor must be responsible for determining the section key. + + @return An instance of RLMSectionedResults. + */ +- (RLMSectionedResults *)sectionedResultsUsingSortDescriptors:(NSArray *)sortDescriptors + keyBlock:(RLMSectionedResultsKeyBlock)keyBlock; + +#pragma mark - Aggregating Property Values + +/** + Returns the minimum (lowest) value of the given property among all the objects + in the collection. + + NSNumber *min = [results minOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose minimum value is desired. Only properties of + types `int`, `float`, `double`, and `NSDate` are supported. + + @return The minimum value of the property, or `nil` if the Results are empty. + */ +- (nullable id)minOfProperty:(NSString *)property; + +/** + Returns the maximum (highest) value of the given property among all the objects + in the collection. + + NSNumber *max = [results maxOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose maximum value is desired. Only properties of + types `int`, `float`, `double`, and `NSDate` are supported. + + @return The maximum value of the property, or `nil` if the Results are empty. + */ +- (nullable id)maxOfProperty:(NSString *)property; + +/** + Returns the sum of the values of a given property over all the objects in the collection. + + NSNumber *sum = [results sumOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose values should be summed. Only properties of + types `int`, `float`, and `double` are supported. + + @return The sum of the given property. + */ +- (NSNumber *)sumOfProperty:(NSString *)property; + +/** + Returns the average value of a given property over the objects in the collection. + + NSNumber *average = [results averageOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose average value should be calculated. Only + properties of types `int`, `float`, and `double` are supported. + + @return The average value of the given property, or `nil` if the Results are empty. + */ +- (nullable NSNumber *)averageOfProperty:(NSString *)property; + +#pragma mark - Freeze + +/** + Indicates if the collection is frozen. + + Frozen collections are immutable and can be accessed from any thread. The + objects read from a frozen collection will also be frozen. + */ +@property (nonatomic, readonly, getter=isFrozen) BOOL frozen; + +/** + Returns a frozen (immutable) snapshot of this collection. + + The frozen copy is an immutable collection which contains the same data as + this collection currently contains, but will not update when writes are made + to the containing Realm. Unlike live collections, frozen collections can be + accessed from any thread. + + @warning This method cannot be called during a write transaction, or when the containing Realm is read-only. + @warning Holding onto a frozen collection for an extended period while + performing write transaction on the Realm may result in the Realm + file growing to large sizes. See + `RLMRealmConfiguration.maximumNumberOfActiveVersions` + for more information. + */ +- (instancetype)freeze; + +/** + Returns a live version of this frozen collection. + + This method resolves a reference to a live copy of the same frozen collection. + If called on a live collection, will return itself. +*/ +- (instancetype)thaw; + +@end + +/** + An `RLMSortDescriptor` stores a property name and a sort order for use with + `sortedResultsUsingDescriptors:`. It is similar to `NSSortDescriptor`, but supports + only the subset of functionality which can be efficiently run by Realm's query + engine. + + `RLMSortDescriptor` instances are immutable. + */ +RLM_SWIFT_SENDABLE RLM_FINAL +@interface RLMSortDescriptor : NSObject + +#pragma mark - Properties + +/** + The key path which the sort descriptor orders results by. + */ +@property (nonatomic, readonly) NSString *keyPath; + +/** + Whether the descriptor sorts in ascending or descending order. + */ +@property (nonatomic, readonly) BOOL ascending; + +#pragma mark - Methods + +/** + Returns a new sort descriptor for the given key path and sort direction. + */ ++ (instancetype)sortDescriptorWithKeyPath:(NSString *)keyPath ascending:(BOOL)ascending; + +/** + Returns a copy of the receiver with the sort direction reversed. + */ +- (instancetype)reversedSortDescriptor; + +@end + +/** + A `RLMCollectionChange` object encapsulates information about changes to collections + that are reported by Realm notifications. + + `RLMCollectionChange` is passed to the notification blocks registered with + `-addNotificationBlock` on `RLMArray` and `RLMResults`, and reports what rows in the + collection changed since the last time the notification block was called. + + The change information is available in two formats: a simple array of row + indices in the collection for each type of change, and an array of index paths + in a requested section suitable for passing directly to `UITableView`'s batch + update methods. A complete example of updating a `UITableView` named `tv`: + + [tv beginUpdates]; + [tv deleteRowsAtIndexPaths:[changes deletionsInSection:0] withRowAnimation:UITableViewRowAnimationAutomatic]; + [tv insertRowsAtIndexPaths:[changes insertionsInSection:0] withRowAnimation:UITableViewRowAnimationAutomatic]; + [tv reloadRowsAtIndexPaths:[changes modificationsInSection:0] withRowAnimation:UITableViewRowAnimationAutomatic]; + [tv endUpdates]; + + All of the arrays in an `RLMCollectionChange` are always sorted in ascending order. + */ +@interface RLMCollectionChange : NSObject +/// The indices of objects in the previous version of the collection which have +/// been removed from this one. +@property (nonatomic, readonly) NSArray *deletions; + +/// The indices in the new version of the collection which were newly inserted. +@property (nonatomic, readonly) NSArray *insertions; + +/** + The indices in the new version of the collection which were modified. + + For `RLMResults`, this means that one or more of the properties of the object at + that index were modified (or an object linked to by that object was + modified). + + For `RLMArray`, the array itself being modified to contain a + different object at that index will also be reported as a modification. + */ +@property (nonatomic, readonly) NSArray *modifications; + +/// Returns the index paths of the deletion indices in the given section. +- (NSArray *)deletionsInSection:(NSUInteger)section; + +/// Returns the index paths of the insertion indices in the given section. +- (NSArray *)insertionsInSection:(NSUInteger)section; + +/// Returns the index paths of the modification indices in the given section. +- (NSArray *)modificationsInSection:(NSUInteger)section; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMConstants.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMConstants.h new file mode 100644 index 000000000..0bc8db972 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMConstants.h @@ -0,0 +1,156 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#define RLM_HEADER_AUDIT_BEGIN NS_HEADER_AUDIT_BEGIN +#define RLM_HEADER_AUDIT_END NS_HEADER_AUDIT_END + +#define RLM_SWIFT_SENDABLE NS_SWIFT_SENDABLE + +#define RLM_FINAL __attribute__((objc_subclassing_restricted)) + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +// Swift 5 considers NS_ENUM to be "open", meaning there could be values present +// other than the defined cases (which allows adding more cases later without +// it being a breaking change), while older versions consider it "closed". +#ifdef NS_CLOSED_ENUM +#define RLM_CLOSED_ENUM NS_CLOSED_ENUM +#else +#define RLM_CLOSED_ENUM NS_ENUM +#endif + +#if __has_attribute(ns_error_domain) && (!defined(__cplusplus) || !__cplusplus || __cplusplus >= 201103L) +#define RLM_ERROR_ENUM(type, name, domain) \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wignored-attributes\"") \ + NS_ENUM(type, __attribute__((ns_error_domain(domain))) name) \ + _Pragma("clang diagnostic pop") +#else +#define RLM_ERROR_ENUM(type, name, domain) NS_ENUM(type, name) +#endif + +#define RLM_HIDDEN __attribute__((visibility("hidden"))) +#define RLM_VISIBLE __attribute__((visibility("default"))) +#define RLM_HIDDEN_BEGIN _Pragma("GCC visibility push(hidden)") +#define RLM_HIDDEN_END _Pragma("GCC visibility pop") +#define RLM_DIRECT __attribute__((objc_direct)) +#define RLM_DIRECT_MEMBERS __attribute__((objc_direct_members)) + +#pragma mark - Enums + +/** + `RLMPropertyType` is an enumeration describing all property types supported in Realm models. + + For more information, see [Realm Models](https://www.mongodb.com/docs/realm/sdk/swift/fundamentals/object-models-and-schemas/). + */ +typedef RLM_CLOSED_ENUM(int32_t, RLMPropertyType) { + +#pragma mark - Primitive types + /** Integers: `NSInteger`, `int`, `long`, `Int` (Swift) */ + RLMPropertyTypeInt = 0, + /** Booleans: `BOOL`, `bool`, `Bool` (Swift) */ + RLMPropertyTypeBool = 1, + /** Floating-point numbers: `float`, `Float` (Swift) */ + RLMPropertyTypeFloat = 5, + /** Double-precision floating-point numbers: `double`, `Double` (Swift) */ + RLMPropertyTypeDouble = 6, + /** NSUUID, UUID */ + RLMPropertyTypeUUID = 12, + +#pragma mark - Object types + + /** Strings: `NSString`, `String` (Swift) */ + RLMPropertyTypeString = 2, + /** Binary data: `NSData` */ + RLMPropertyTypeData = 3, + /** Any type: `id`, `AnyRealmValue` (Swift) */ + RLMPropertyTypeAny = 9, + /** Dates: `NSDate` */ + RLMPropertyTypeDate = 4, + +#pragma mark - Linked object types + + /** Realm model objects. See [Realm Models](https://www.mongodb.com/docs/realm/sdk/swift/fundamentals/object-models-and-schemas/) for more information. */ + RLMPropertyTypeObject = 7, + /** Realm linking objects. See [Realm Models](https://www.mongodb.com/docs/realm/sdk/swift/fundamentals/relationships/#inverse-relationship) for more information. */ + RLMPropertyTypeLinkingObjects = 8, + + RLMPropertyTypeObjectId = 10, + RLMPropertyTypeDecimal128 = 11 +}; + +#pragma mark - Notification Constants + +/** + A notification indicating that changes were made to a Realm. +*/ +typedef NSString * RLMNotification NS_EXTENSIBLE_STRING_ENUM; + +/** + This notification is posted when a write transaction has been committed to a Realm on a different thread for + the same file. + + It is not posted if `autorefresh` is enabled, or if the Realm is refreshed before the notification has a chance + to run. + + Realms with autorefresh disabled should normally install a handler for this notification which calls + `-[RLMRealm refresh]` after doing some work. Refreshing the Realm is optional, but not refreshing the Realm may lead to + large Realm files. This is because an extra copy of the data must be kept for the stale Realm. + */ +extern RLMNotification const RLMRealmRefreshRequiredNotification NS_SWIFT_NAME(RefreshRequired); + +/** + This notification is posted by a Realm when a write transaction has been + committed to a Realm on a different thread for the same file. + + It is not posted if `-[RLMRealm autorefresh]` is enabled, or if the Realm is + refreshed before the notification has a chance to run. + + Realms with autorefresh disabled should normally install a handler for this + notification which calls `-[RLMRealm refresh]` after doing some work. Refreshing + the Realm is optional, but not refreshing the Realm may lead to large Realm + files. This is because Realm must keep an extra copy of the data for the stale + Realm. + */ +extern RLMNotification const RLMRealmDidChangeNotification NS_SWIFT_NAME(DidChange); + +#pragma mark - Error keys + +/** Key to identify the associated backup Realm configuration in an error's `userInfo` dictionary */ +extern NSString * const RLMBackupRealmConfigurationErrorKey; + +#pragma mark - Other Constants + +/** The schema version used for uninitialized Realms */ +extern const uint64_t RLMNotVersioned; + +/** The corresponding value is the name of an exception thrown by Realm. */ +extern NSString * const RLMExceptionName; + +/** The corresponding value is a Realm file version. */ +extern NSString * const RLMRealmVersionKey; + +/** The corresponding key is the version of the underlying database engine. */ +extern NSString * const RLMRealmCoreVersionKey; + +/** The corresponding key is the Realm invalidated property name. */ +extern NSString * const RLMInvalidatedKey; + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMCredentials.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMCredentials.h new file mode 100644 index 000000000..adff4e7e9 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMCredentials.h @@ -0,0 +1,126 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) +@protocol RLMBSON; + +/// A token representing an identity provider's credentials. +typedef NSString *RLMCredentialsToken; + +/// A type representing the unique identifier of an Atlas App Services identity provider. +typedef NSString *RLMIdentityProvider NS_EXTENSIBLE_STRING_ENUM; + +/// The username/password identity provider. User accounts are handled by Atlas App Services directly without the +/// involvement of a third-party identity provider. +extern RLMIdentityProvider const RLMIdentityProviderUsernamePassword; + +/// A Facebook account as an identity provider. +extern RLMIdentityProvider const RLMIdentityProviderFacebook; + +/// A Google account as an identity provider. +extern RLMIdentityProvider const RLMIdentityProviderGoogle; + +/// An Apple account as an identity provider. +extern RLMIdentityProvider const RLMIdentityProviderApple; + +/// A JSON Web Token as an identity provider. +extern RLMIdentityProvider const RLMIdentityProviderJWT; + +/// An Anonymous account as an identity provider. +extern RLMIdentityProvider const RLMIdentityProviderAnonymous; + +/// An Realm Cloud function as an identity provider. +extern RLMIdentityProvider const RLMIdentityProviderFunction; + +/// A user api key as an identity provider. +extern RLMIdentityProvider const RLMIdentityProviderUserAPIKey; + +/// A server api key as an identity provider. +extern RLMIdentityProvider const RLMIdentityProviderServerAPIKey; + +/** + Opaque credentials representing a specific Realm App user. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class +@interface RLMCredentials : NSObject + +/// The name of the identity provider which generated the credentials token. +@property (nonatomic, readonly) RLMIdentityProvider provider; + +/** + Construct and return credentials from a Facebook account token. + */ ++ (instancetype)credentialsWithFacebookToken:(RLMCredentialsToken)token; + +/** + Construct and return credentials from a Google account token. + */ ++ (instancetype)credentialsWithGoogleAuthCode:(RLMCredentialsToken)token; + +/** + Construct and return credentials from a Google id token. + */ ++ (instancetype)credentialsWithGoogleIdToken:(RLMCredentialsToken)token; + +/** + Construct and return credentials from an Apple account token. + */ ++ (instancetype)credentialsWithAppleToken:(RLMCredentialsToken)token; + +/** + Construct and return credentials for an Atlas App Services function using a mongodb document as a json payload. +*/ ++ (instancetype)credentialsWithFunctionPayload:(NSDictionary> *)payload; + +/** + Construct and return credentials from a user api key. +*/ ++ (instancetype)credentialsWithUserAPIKey:(NSString *)apiKey; + +/** + Construct and return credentials from a server api key. +*/ ++ (instancetype)credentialsWithServerAPIKey:(NSString *)apiKey; + +/** + Construct and return Atlas App Services credentials from an email and password. + */ ++ (instancetype)credentialsWithEmail:(NSString *)email + password:(NSString *)password; + +/** + Construct and return credentials from a JSON Web Token. + */ ++ (instancetype)credentialsWithJWT:(NSString *)token; + +/** + Construct and return anonymous credentials + */ ++ (instancetype)anonymousCredentials; + +/// :nodoc: +- (instancetype)init __attribute__((unavailable("RLMAppCredentials cannot be created directly"))); + +/// :nodoc: ++ (instancetype)new __attribute__((unavailable("RLMAppCredentials cannot be created directly"))); + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMDecimal128.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMDecimal128.h new file mode 100644 index 000000000..f6224bbf2 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMDecimal128.h @@ -0,0 +1,110 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** + A 128-bit IEEE 754-2008 decimal floating point number. + + This type is similar to Swift's built-in Decimal type, but allocates bits + differently, resulting in a different representable range. (NS)Decimal stores a + significand of up to 38 digits long and an exponent from -128 to 127, while + this type stores up to 34 digits of significand and an exponent from -6143 to + 6144. + */ +RLM_SWIFT_SENDABLE // immutable +@interface RLMDecimal128 : NSObject +/// Creates a new zero-initialized decimal128. +- (instancetype)init; + +/// Converts the given value to a RLMDecimal128. +/// +/// The following types can be converted to RLMDecimal128: +/// - NSNumber +/// - NSString +/// - NSDecimalNumber +/// +/// Passing a value with a type not in this list is a fatal error. Passing a +/// string which cannot be parsed as a valid Decimal128 is a fatal error. +- (instancetype)initWithValue:(id)value; + +/// Converts the given number to a RLMDecimal128. +- (instancetype)initWithNumber:(NSNumber *)number; + +/// Parses the given string to a RLMDecimal128. +/// +/// Returns a decimal where `isNaN` is `YES` if the string cannot be parsed as a decimal. `error` is never set +/// and this will never actually return `nil`. +- (nullable instancetype)initWithString:(NSString *)string error:(NSError **)error; + +/// Converts the given number to a RLMDecimal128. ++ (instancetype)decimalWithNumber:(NSNumber *)number; + +/// The minimum value for RLMDecimal128. +@property (class, readonly, copy) RLMDecimal128 *minimumDecimalNumber NS_REFINED_FOR_SWIFT; + +/// The maximum value for RLMDecimal128. +@property (class, readonly, copy) RLMDecimal128 *maximumDecimalNumber NS_REFINED_FOR_SWIFT; + +/// Convert this value to a double. This is a lossy conversion. +@property (nonatomic, readonly) double doubleValue; + +/// Convert this value to a NSDecimal. This may be a lossy conversion. +@property (nonatomic, readonly) NSDecimal decimalValue; + +/// Convert this value to a string. +@property (nonatomic, readonly) NSString *stringValue; + +/// Gets if this Decimal128 represents a NaN value. +@property (nonatomic, readonly) BOOL isNaN; + +/// The magnitude of this RLMDecimal128. +@property (nonatomic, readonly) RLMDecimal128 *magnitude NS_REFINED_FOR_SWIFT; + +/// Replaces this RLMDecimal128 value with its additive inverse. +- (void)negate; + +/// Adds the right hand side to the current value and returns the result. +- (RLMDecimal128 *)decimalNumberByAdding:(RLMDecimal128 *)decimalNumber; + +/// Divides the right hand side to the current value and returns the result. +- (RLMDecimal128 *)decimalNumberByDividingBy:(RLMDecimal128 *)decimalNumber; + +/// Subtracts the right hand side to the current value and returns the result. +- (RLMDecimal128 *)decimalNumberBySubtracting:(RLMDecimal128 *)decimalNumber; + +/// Multiply the right hand side to the current value and returns the result. +- (RLMDecimal128 *)decimalNumberByMultiplyingBy:(RLMDecimal128 *)decimalNumber; + +/// Comparision operator to check if the right hand side is greater than the current value. +- (BOOL)isGreaterThan:(nullable RLMDecimal128 *)decimalNumber; + +/// Comparision operator to check if the right hand side is greater than or equal to the current value. +- (BOOL)isGreaterThanOrEqualTo:(nullable RLMDecimal128 *)decimalNumber; + +/// Comparision operator to check if the right hand side is less than the current value. +- (BOOL)isLessThan:(nullable RLMDecimal128 *)decimalNumber; + +/// Comparision operator to check if the right hand side is less than or equal to the current value. +- (BOOL)isLessThanOrEqualTo:(nullable RLMDecimal128 *)decimalNumber; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMDictionary.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMDictionary.h new file mode 100644 index 000000000..9c8cac538 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMDictionary.h @@ -0,0 +1,559 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2021 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMObject, RLMResults, RLMDictionaryChange; + +/** + `RLMDictionary` is a container type in Realm representing a dynamic collection of key-value pairs. + + Unlike `NSDictionary`, `RLMDictionary`s hold a single key and value type. + This is referred to in these docs as the “type” and “keyType” of the dictionary. + + When declaring an `RLMDictionary` property, the object type and keyType must be marked as conforming to a + protocol by the same name as the objects it should contain. + + RLM_COLLECTION_TYPE(ObjectType) + ... + @property RLMDictionary *objectTypeDictionary; + + `RLMDictionary`s can be queried with the same predicates as `RLMObject` and `RLMResult`s. + + `RLMDictionary`s cannot be created directly. `RLMDictionary` properties on `RLMObject`s are + lazily created when accessed, or can be obtained by querying a Realm. + + `RLMDictionary` only supports `NSString` as a key. Realm disallows the use of `.` or `$` characters within a dictionary key. + + ### Key-Value Observing + + `RLMDictionary` supports dictionary key-value observing on `RLMDictionary` properties on `RLMObject` + subclasses, and the `invalidated` property on `RLMDictionary` instances themselves is + key-value observing compliant when the `RLMDictionary` is attached to a managed + `RLMObject` (`RLMDictionary`s on unmanaged `RLMObject`s will never become invalidated). + */ +@interface RLMDictionary: NSObject + +#pragma mark - Properties + +/** + The number of entries in the dictionary. + */ +@property (nonatomic, readonly, assign) NSUInteger count; + +/** + The type of the objects in the dictionary. + */ +@property (nonatomic, readonly, assign) RLMPropertyType type; + +/** + The type of the key used in this dictionary. + */ +@property (nonatomic, readonly, assign) RLMPropertyType keyType; + +/** + Indicates whether the objects in the collection can be `nil`. + */ +@property (nonatomic, readonly, getter = isOptional) BOOL optional; + +/** + The class name of the objects contained in the dictionary. + + Will be `nil` if `type` is not RLMPropertyTypeObject. + */ +@property (nonatomic, readonly, copy, nullable) NSString *objectClassName; + +/** + The Realm which manages the dictionary. Returns `nil` for unmanaged dictionary. + */ +@property (nonatomic, readonly, nullable) RLMRealm *realm; + +/** + Indicates if the dictionary can no longer be accessed. + */ +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +/** + Indicates if the dictionary is frozen. + + Frozen dictionaries are immutable and can be accessed from any thread. Frozen dictionaries + are created by calling `-freeze` on a managed live dictionary. Unmanaged dictionaries are + never frozen. + */ +@property (nonatomic, readonly, getter = isFrozen) BOOL frozen; + +#pragma mark - Accessing Objects from a Dictionary + +/** + Returns the value associated with a given key. + + @param key The name of the property. + + @discussion If key does not start with “@”, invokes object(forKey:). If key does start + with “@”, strips the “@” and invokes [super valueForKey:] with the rest of the key. + + @return A value associated with a given key or `nil`. + */ +- (nullable id)valueForKey:(nonnull RLMKeyType)key; + +/** + Returns an array containing the dictionary’s keys. + + @note The order of the elements in the array is not defined. + */ +@property(readonly, copy) NSArray *allKeys; + +/** + Returns an array containing the dictionary’s values. + + @note The order of the elements in the array is not defined. + */ +@property(readonly, copy) NSArray *allValues; + +/** + Returns the value associated with a given key. + + @note `nil` will be returned if no value is associated with a given key. NSNull will be returned + where null is associated with the key. + + @param key The key for which to return the corresponding value. + + @return The value associated with key. + */ +- (nullable RLMObjectType)objectForKey:(nonnull RLMKeyType)key; + +/** + Returns the value associated with a given key. + + @note `nil` will be returned if no value is associated with a given key. NSNull will be returned + where null is associated with the key. + + @param key The key for which to return the corresponding value. + + @return The value associated with key. + */ +- (nullable RLMObjectType)objectForKeyedSubscript:(RLMKeyType)key; + +/** + Applies a given block object to the each key-value pair of the dictionary. + + @param block A block object to operate on entries in the dictionary. + + @note If the block sets *stop to YES, the enumeration stops. + */ +- (void)enumerateKeysAndObjectsUsingBlock:(void (^)(RLMKeyType key, RLMObjectType obj, BOOL *stop))block; + +#pragma mark - Adding, Removing, and Replacing Objects in a Dictionary + +/** + Replace the contents of a dictionary with the contents of another dictionary - NSDictionary or RLMDictionary. + + This will remove all elements in this dictionary and then apply each element from the given dictionary. + + @warning This method may only be called during a write transaction. + @warning If otherDictionary is self this will result in an empty dictionary. + */ +- (void)setDictionary:(id)otherDictionary; + +/** + Removes all contents in the dictionary. + + @warning This method may only be called during a write transaction. + */ +- (void)removeAllObjects; + +/** + Removes from the dictionary entries specified by elements in a given array. If a given key does not + exist, no mutation will happen for that key. + + @warning This method may only be called during a write transaction. + */ +- (void)removeObjectsForKeys:(NSArray *)keyArray; + +/** + Removes a given key and its associated value from the dictionary. If the key does not exist the dictionary + will not be modified. + + @warning This method may only be called during a write transaction. + */ +- (void)removeObjectForKey:(RLMKeyType)key; + +/** + Adds a given key-value pair to the dictionary if the key is not present, or updates the value for the given key + if the key already present. + + @warning This method may only be called during a write transaction. + */ +- (void)setObject:(nullable RLMObjectType)obj forKeyedSubscript:(RLMKeyType)key; + +/** + Adds a given key-value pair to the dictionary if the key is not present, or updates the value for the given key + if the key already present. + + @warning This method may only be called during a write transaction. + */ +- (void)setObject:(nullable RLMObjectType)anObject forKey:(RLMKeyType)aKey; + +/** + Adds to the receiving dictionary the entries from another dictionary. + + @note If the receiving dictionary contains the same key(s) as the otherDictionary, then + the receiving dictionary will update each key-value pair for the matching key. + + @warning This method may only be called during a write transaction. + + @param otherDictionary An enumerable object such as `NSDictionary` or `RLMDictionary` which contains objects of the + same type as the receiving dictionary. + */ +- (void)addEntriesFromDictionary:(id )otherDictionary; + +#pragma mark - Querying a Dictionary + +/** + Returns all the values matching the given predicate in the dictionary. + + @note The keys in the dictionary are ignored when quering values, and they will not be returned in the `RLMResults`. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + + @return An `RLMResults` of objects that match the given predicate. + */ +- (RLMResults *)objectsWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (RLMResults *)objectsWhere:(NSString *)predicateFormat args:(va_list)args; + +/** + Returns all the values matching the given predicate in the dictionary. + + @note The keys in the dictionary are ignored when quering values, and they will not be returned in the `RLMResults`. + + @param predicate The predicate with which to filter the objects. + + @return An `RLMResults` of objects that match the given predicate + */ +- (RLMResults *)objectsWithPredicate:(NSPredicate *)predicate; + +/** + Returns a sorted RLMResults of all values in the dictionary. + + @note The keys in the dictionary are ignored when sorting values, and they will not be returned in the `RLMResults`. + + @param keyPath The key path to sort by. + @param ascending The direction to sort in. + + @return An `RLMResults` sorted by the specified key path. + */- (RLMResults *)sortedResultsUsingKeyPath:(NSString *)keyPath ascending:(BOOL)ascending; + +/** + Returns a sorted RLMResults of all values in the dictionary. + + @note The keys in the dictionary are ignored when sorting values, and they will not be returned in the `RLMResults`. + + @param properties An array of `RLMSortDescriptor`s to sort by. + + @return An `RLMResults` sorted by the specified properties. + */ +- (RLMResults *)sortedResultsUsingDescriptors:(NSArray *)properties; + +/** + Returns a distinct `RLMResults` from all values in the dictionary. + + @note The keys in the dictionary are ignored, and they will not be returned in the `RLMResults`. + + @param keyPaths The key paths to distinct on. + + @return An `RLMResults` with the distinct values of the keypath(s). + */ +- (RLMResults *)distinctResultsUsingKeyPaths:(NSArray *)keyPaths; + +#pragma mark - Aggregating Property Values + +/** + Returns the minimum (lowest) value of the given property among all the values in the dictionary. + + NSNumber *min = [object.dictionaryProperty minOfProperty:@"age"]; + + @param property The property whose minimum value is desired. Only properties of + types `int`, `float`, `double`, `NSDate`, `RLMValue` and `RLMDecimal128` are supported. + + @return The minimum value of the property, or `nil` if the dictionary is empty. + */ +- (nullable id)minOfProperty:(NSString *)property; + +/** + Returns the maximum (highest) value of the given property among all the objects in the dictionary. + + NSNumber *max = [object.dictionaryProperty maxOfProperty:@"age"]; + + @param property The property whose minimum value is desired. Only properties of + types `int`, `float`, `double`, `NSDate`, `RLMValue` and `RLMDecimal128` are supported. + + @return The maximum value of the property, or `nil` if the dictionary is empty. + */ +- (nullable id)maxOfProperty:(NSString *)property; + +/** + Returns the sum of distinct values of a given property over all the objects in the dictionary. + + NSNumber *sum = [object.dictionaryProperty sumOfProperty:@"age"]; + + @param property The property whose minimum value is desired. Only properties of + types `int`, `float`, `double`, `RLMValue` and `RLMDecimal128` are supported. + + @return The sum of the given property. + */ +- (NSNumber *)sumOfProperty:(NSString *)property; + +/** + Returns the average value of a given property over the objects in the dictionary. + + NSNumber *average = [object.dictionaryProperty averageOfProperty:@"age"]; + + @param property The property whose minimum value is desired. Only properties of + types `int`, `float`, `double`, `NSDate`, `RLMValue` and `RLMDecimal128` are supported. + + @return The average value of the given property, or `nil` if the dictionary is empty. + */ +- (nullable NSNumber *)averageOfProperty:(NSString *)property; + +#pragma mark - Notifications + +/** + Registers a block to be called each time the dictionary changes. + + The block will be asynchronously called with the initial dictionary, and then + called again after each write transaction which changes any of the keys or values + within the dictionary. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which keys in the dictionary were added, modified or deleted. If a write transaction + did not modify any keys or values in the dictionary, the block is not called at all. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + Person *person = [[Person allObjectsInRealm:realm] firstObject]; + NSLog(@"person.dogs.count: %zu", person.dogs.count); // => 0 + self.token = [person.dogs addNotificationBlock(RLMDictionary *dogs, + RLMDictionaryChange *changes, + NSError *error) { + // Only fired once for the example + NSLog(@"dogs.count: %zu", dogs.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + person.dogs[@"frenchBulldog"] = dog; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning This method may only be called on a non-frozen managed dictionary. + + @param block The block to be called each time the dictionary changes. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMDictionary *_Nullable dictionary, + RLMDictionaryChange *_Nullable changes, + NSError *_Nullable error))block +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the dictionary changes. + + The block will be asynchronously called with the initial dictionary, and then + called again after each write transaction which changes any of the key-value in + the dictionary or which objects are in the results. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which keys in the dictionary were added or modified. If a write transaction + did not modify any objects in the dictionary, the block is not called at all. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMDictionary *_Nullable dictionary, + RLMDictionaryChange *_Nullable changes, + NSError *_Nullable error))block + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the dictionary changes. + + The block will be asynchronously called with the initial dictionary, and then + called again after each write transaction which changes any of the key-value in + the dictionary or which objects are in the results. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which keys in the dictionary were added or modified. If a write transaction + did not modify any objects in the dictionary, the block is not called at all. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMDictionary *_Nullable dictionary, + RLMDictionaryChange *_Nullable changes, + NSError *_Nullable error))block + keyPaths:(nullable NSArray *)keyPaths + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the dictionary changes. + + The block will be asynchronously called with the initial dictionary, and then + called again after each write transaction which changes any of the key-value in + the dictionary or which objects are in the results. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which keys in the dictionary were added or modified. If a write transaction + did not modify any objects in the dictionary, the block is not called at all. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMDictionary *_Nullable dictionary, + RLMDictionaryChange *_Nullable changes, + NSError *_Nullable error))block + keyPaths:(nullable NSArray *)keyPaths +__attribute__((warn_unused_result)); + +#pragma mark - Freeze + +/** + Returns a frozen (immutable) snapshot of a dictionary. + + The frozen copy is an immutable dictionary which contains the same data as this + dictionary currently contains, but will not update when writes are made to the + containing Realm. Unlike live dictionaries, frozen dictionaries can be accessed from any + thread. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning This method may only be called on a managed dictionary. + @warning Holding onto a frozen dictionary for an extended period while performing + write transaction on the Realm may result in the Realm file growing + to large sizes. See `RLMRealmConfiguration.maximumNumberOfActiveVersions` + for more information. + */ +- (instancetype)freeze; + +/** + Returns a live version of this frozen collection. + + This method resolves a reference to a live copy of the same frozen collection. + If called on a live collection, will return itself. +*/ +- (instancetype)thaw; + +#pragma mark - Unavailable Methods +/** + `-[RLMDictionary init]` is not available because `RLMDictionary`s cannot be created directly. + `RLMDictionary` properties on `RLMObject`s are lazily created when accessed. + */ +- (instancetype)init __attribute__((unavailable("RLMDictionary cannot be created directly"))); +/** + `+[RLMDictionary new]` is not available because `RLMDictionary`s cannot be created directly. + `RLMDictionary` properties on `RLMObject`s are lazily created when accessed. + */ ++ (instancetype)new __attribute__((unavailable("RLMDictionary cannot be created directly"))); + +@end + +/** + A `RLMDictionaryChange` object encapsulates information about changes to dictionaries + that are reported by Realm notifications. + + `RLMDictionaryChange` is passed to the notification blocks registered with + `-addNotificationBlock` on `RLMDictionary`, and reports what keys in the + dictionary changed since the last time the notification block was called. + */ +@interface RLMDictionaryChange : NSObject +/// The keys in the new version of the dictionary which were newly inserted. +@property (nonatomic, readonly) NSArray *insertions; + +/// The keys in the new version of the dictionary which were modified. +@property (nonatomic, readonly) NSArray *modifications; + +/// The keys which were deleted from the old version. +@property (nonatomic, readonly) NSArray *deletions; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMEmailPasswordAuth.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMEmailPasswordAuth.h new file mode 100644 index 000000000..748eb26af --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMEmailPasswordAuth.h @@ -0,0 +1,120 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@protocol RLMBSON; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/// A block type used to report an error +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMEmailPasswordAuthOptionalErrorBlock)(NSError * _Nullable); + +/** + A client for the email/password authentication provider which + can be used to obtain a credential for logging in, + and to perform requests specifically related to the email/password provider. +*/ +RLM_SWIFT_SENDABLE RLM_FINAL // is internally thread-safe +@interface RLMEmailPasswordAuth : RLMProviderClient + +/** + Registers a new email identity with the email/password provider, + and sends a confirmation email to the provided address. + + @param email The email address of the user to register. + @param password The password that the user created for the new email/password identity. + @param completionHandler A callback to be invoked once the call is complete. +*/ + +- (void)registerUserWithEmail:(NSString *)email + password:(NSString *)password + completion:(RLMEmailPasswordAuthOptionalErrorBlock)completionHandler NS_SWIFT_NAME(registerUser(email:password:completion:)); + +/** + Confirms an email identity with the email/password provider. + + @param token The confirmation token that was emailed to the user. + @param tokenId The confirmation token id that was emailed to the user. + @param completionHandler A callback to be invoked once the call is complete. +*/ +- (void)confirmUser:(NSString *)token + tokenId:(NSString *)tokenId + completion:(RLMEmailPasswordAuthOptionalErrorBlock)completionHandler; + +/** + Re-sends a confirmation email to a user that has registered but + not yet confirmed their email address. + + @param email The email address of the user to re-send a confirmation for. + @param completionHandler A callback to be invoked once the call is complete. +*/ +- (void)resendConfirmationEmail:(NSString *)email + completion:(RLMEmailPasswordAuthOptionalErrorBlock)completionHandler; + +/** + Retries custom confirmation function for a given email address. + + @param email The email address of the user to retry custom confirmation logic. + @param completionHandler A callback to be invoked once the call is complete. + */ +- (void)retryCustomConfirmation:(NSString *)email + completion:(RLMEmailPasswordAuthOptionalErrorBlock)completionHandler; + +/** + Sends a password reset email to the given email address. + + @param email The email address of the user to send a password reset email for. + @param completionHandler A callback to be invoked once the call is complete. +*/ +- (void)sendResetPasswordEmail:(NSString *)email + completion:(RLMEmailPasswordAuthOptionalErrorBlock)completionHandler; + +/** + Resets the password of an email identity using the + password reset token emailed to a user. + + @param password The new password. + @param token The password reset token that was emailed to the user. + @param tokenId The password reset token id that was emailed to the user. + @param completionHandler A callback to be invoked once the call is complete. +*/ +- (void)resetPasswordTo:(NSString *)password + token:(NSString *)token + tokenId:(NSString *)tokenId + completion:(RLMEmailPasswordAuthOptionalErrorBlock)completionHandler; + +/** + Resets the password of an email identity using the + password reset function set up in the application. + + @param email The email address of the user. + @param password The desired new password. + @param args A list of arguments passed in as a BSON array. + @param completionHandler A callback to be invoked once the call is complete. +*/ +- (void)callResetPasswordFunction:(NSString *)email + password:(NSString *)password + args:(NSArray> *)args + completion:(RLMEmailPasswordAuthOptionalErrorBlock)completionHandler NS_REFINED_FOR_SWIFT; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) + diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMEmbeddedObject.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMEmbeddedObject.h new file mode 100644 index 000000000..4db6248ca --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMEmbeddedObject.h @@ -0,0 +1,367 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMObjectSchema, RLMPropertyDescriptor, RLMRealm, RLMNotificationToken, RLMPropertyChange; +typedef void (^RLMObjectChangeBlock)(BOOL deleted, + NSArray *_Nullable changes, + NSError *_Nullable error); +/** + `RLMEmbeddedObject` is a base class used to define Realm model objects. + + Embedded objects work similarly to normal objects, but are owned by a single + parent Object (which itself may be embedded). Unlike normal top-level objects, + embedded objects cannot be directly created in or added to a Realm. Instead, + they can only be created as part of a parent object, or by assigning an + unmanaged object to a parent object's property. Embedded objects are + automatically deleted when the parent object is deleted or when the parent is + modified to no longer point at the embedded object, either by reassigning an + RLMObject property or by removing the embedded object from the array containing + it. + + Embedded objects can only ever have a single parent object which links to them, + and attempting to link to an existing managed embedded object will throw an + exception. + + The property types supported on `RLMEmbeddedObject` are the same as for + `RLMObject`, except for that embedded objects cannot link to top-level objects, + so `RLMObject` and `RLMArray` properties are not supported + (`RLMEmbeddedObject` and `RLMArray` *are*). + + Embedded objects cannot have primary keys or indexed properties. + */ + +@interface RLMEmbeddedObject : RLMObjectBase + +#pragma mark - Creating & Initializing Objects + +/** + Creates an unmanaged instance of a Realm object. + + Unmanaged embedded objects can be added to a Realm by assigning them to an + object property of a managed Realm object or by adding them to a managed + RLMArray. + */ +- (instancetype)init NS_DESIGNATED_INITIALIZER; + +/** + Creates an unmanaged instance of a Realm object. + + Pass in an `NSArray` or `NSDictionary` instance to set the values of the object's properties. + + Unmanaged embedded objects can be added to a Realm by assigning them to an + object property of a managed Realm object or by adding them to a managed + RLMArray. + */ +- (instancetype)initWithValue:(id)value; + +/** + Returns the class name for a Realm object subclass. + + @warning Do not override. Realm relies on this method returning the exact class + name. + + @return The class name for the model class. + */ ++ (NSString *)className; + +#pragma mark - Properties + +/** + The Realm which manages the object, or `nil` if the object is unmanaged. + */ +@property (nonatomic, readonly, nullable) RLMRealm *realm; + +/** + The object schema which lists the managed properties for the object. + */ +@property (nonatomic, readonly) RLMObjectSchema *objectSchema; + +/** + Indicates if the object can no longer be accessed because it is now invalid. + + An object can no longer be accessed if the object has been deleted from the Realm that manages it, or + if `invalidate` is called on that Realm. + */ +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +/** + Indicates if this object is frozen. + + @see `-[RLMEmbeddedObject freeze]` + */ +@property (nonatomic, readonly, getter = isFrozen) BOOL frozen; + +#pragma mark - Customizing your Objects + +/** + Override this method to specify the default values to be used for each property. + + @return A dictionary mapping property names to their default values. + */ ++ (nullable NSDictionary *)defaultPropertyValues; + +/** + Override this method to specify the names of properties to ignore. These properties will not be managed by the Realm + that manages the object. + + @return An array of property names to ignore. + */ ++ (nullable NSArray *)ignoredProperties; + +/** + Override this method to specify the names of properties that are non-optional (i.e. cannot be assigned a `nil` value). + + By default, all properties of a type whose values can be set to `nil` are + considered optional properties. To require that an object in a Realm always + store a non-`nil` value for a property, add the name of the property to the + array returned from this method. + + Properties of `RLMEmbeddedObject` type cannot be non-optional. Array and + `NSNumber` properties can be non-optional, but there is no reason to do so: + arrays do not support storing nil, and if you want a non-optional number you + should instead use the primitive type. + + @return An array of property names that are required. + */ ++ (NSArray *)requiredProperties; + +/** + Override this method to provide information related to properties containing linking objects. + + Each property of type `RLMLinkingObjects` must have a key in the dictionary returned by this method consisting + of the property name. The corresponding value must be an instance of `RLMPropertyDescriptor` that describes the class + and property that the property is linked to. + + return @{ @"owners": [RLMPropertyDescriptor descriptorWithClass:Owner.class propertyName:@"dogs"] }; + + @return A dictionary mapping property names to `RLMPropertyDescriptor` instances. + */ ++ (NSDictionary *)linkingObjectsProperties; + +#pragma mark - Notifications + +/** + Registers a block to be called each time the object changes. + + The block will be asynchronously called after each write transaction which + deletes the object or modifies any of the managed properties of the object, + including self-assignments that set a property to its existing value. + + For write transactions performed on different threads or in differen + processes, the block will be called when the managing Realm is + (auto)refreshed to a version including the changes, while for local write + transactions it will be called at some point in the future after the write + transaction is committed. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When notifications + can't be delivered instantly, multiple notifications may be coalesced into a + single notification. + + Unlike with `RLMArray` and `RLMResults`, there is no "initial" callback made + after you add a new notification block. + + Only objects which are managed by a Realm can be observed in this way. You + must retain the returned token for as long as you want updates to be sent to + the block. To stop receiving updates, call `-invalidate` on the token. + + It is safe to capture a strong reference to the observed object within the + callback block. There is no retain cycle due to that the callback is retained + by the returned token and not by the object itself. + + @warning This method cannot be called during a write transaction, when the + containing Realm is read-only, or on an unmanaged object. + + @param block The block to be called whenever a change occurs. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(RLMObjectChangeBlock)block; + +/** + Registers a block to be called each time the object changes. + + The block will be asynchronously called after each write transaction which + deletes the object or modifies any of the managed properties of the object, + including self-assignments that set a property to its existing value. + + For write transactions performed on different threads or in different + processes, the block will be called when the managing Realm is + (auto)refreshed to a version including the changes, while for local write + transactions it will be called at some point in the future after the write + transaction is committed. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + Unlike with `RLMArray` and `RLMResults`, there is no "initial" callback made + after you add a new notification block. + + Only objects which are managed by a Realm can be observed in this way. You + must retain the returned token for as long as you want updates to be sent to + the block. To stop receiving updates, call `-invalidate` on the token. + + It is safe to capture a strong reference to the observed object within the + callback block. There is no retain cycle due to that the callback is retained + by the returned token and not by the object itself. + + @warning This method cannot be called during a write transaction, when the + containing Realm is read-only, or on an unmanaged object. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(RLMObjectChangeBlock)block queue:(dispatch_queue_t)queue; + +/** + Registers a block to be called each time the object changes. + + The block will be asynchronously called after each write transaction which + deletes the object or modifies any of the managed properties of the object, + including self-assignments that set a property to its existing value. + + For write transactions performed on different threads or in different + processes, the block will be called when the managing Realm is + (auto)refreshed to a version including the changes, while for local write + transactions it will be called at some point in the future after the write + transaction is committed. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + Unlike with `RLMArray` and `RLMResults`, there is no "initial" callback made + after you add a new notification block. + + Only objects which are managed by a Realm can be observed in this way. You + must retain the returned token for as long as you want updates to be sent to + the block. To stop receiving updates, call `-invalidate` on the token. + + It is safe to capture a strong reference to the observed object within the + callback block. There is no retain cycle due to that the callback is retained + by the returned token and not by the object itself. + + @warning This method cannot be called during a write transaction, when the + containing Realm is read-only, or on an unmanaged object. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(RLMObjectChangeBlock)block keyPaths:(NSArray *)keyPaths queue:(dispatch_queue_t)queue; + +/** + Registers a block to be called each time the object changes. + + The block will be asynchronously called after each write transaction which + deletes the object or modifies any of the managed properties of the object, + including self-assignments that set a property to its existing value. + + For write transactions performed on different threads or in different + processes, the block will be called when the managing Realm is + (auto)refreshed to a version including the changes, while for local write + transactions it will be called at some point in the future after the write + transaction is committed. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + Unlike with `RLMArray` and `RLMResults`, there is no "initial" callback made + after you add a new notification block. + + Only objects which are managed by a Realm can be observed in this way. You + must retain the returned token for as long as you want updates to be sent to + the block. To stop receiving updates, call `-invalidate` on the token. + + It is safe to capture a strong reference to the observed object within the + callback block. There is no retain cycle due to that the callback is retained + by the returned token and not by the object itself. + + @warning This method cannot be called during a write transaction, when the + containing Realm is read-only, or on an unmanaged object. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(RLMObjectChangeBlock)block keyPaths:(NSArray *)keyPaths; + +#pragma mark - Other Instance Methods + +/** + Returns YES if another Realm object instance points to the same object as the + receiver in the Realm managing the receiver. + + For frozen objects and object types with a primary key, `isEqual:` is + overridden to use the same logic as this method (along with a corresponding + implementation for `hash`). Non-frozen objects without primary keys use + pointer identity for `isEqual:` and `hash`. + + @param object The object to compare the receiver to. + + @return Whether the object represents the same object as the receiver. + */ +- (BOOL)isEqualToObject:(RLMEmbeddedObject *)object; + +/** + Returns a frozen (immutable) snapshot of this object. + + The frozen copy is an immutable object which contains the same data as this + object currently contains, but will not update when writes are made to the + containing Realm. Unlike live objects, frozen objects can be accessed from any + thread. + + - warning: Holding onto a frozen object for an extended period while performing write + transaction on the Realm may result in the Realm file growing to large sizes. See + `Realm.Configuration.maximumNumberOfActiveVersions` for more information. + - warning: This method can only be called on a managed object. + */ +- (instancetype)freeze NS_RETURNS_RETAINED; + +/** + Returns a live (mutable) reference of this object. + + This method creates a managed accessor to a live copy of the same frozen object. + Will return self if called on an already live object. + */ +- (instancetype)thaw; + +#pragma mark - Dynamic Accessors + +/// :nodoc: +- (nullable id)objectForKeyedSubscript:(NSString *)key; + +/// :nodoc: +- (void)setObject:(nullable id)obj forKeyedSubscript:(NSString *)key; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMError.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMError.h new file mode 100644 index 000000000..514ceee3f --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMError.h @@ -0,0 +1,442 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2022 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@protocol RLMValue; + +#pragma mark - Error Domains + +/** Error code is a value from the RLMError enum. */ +extern NSString *const RLMErrorDomain; + +/** An error domain identifying non-specific system errors. */ +extern NSString *const RLMUnknownSystemErrorDomain; + +/** + The error domain string for all SDK errors related to errors reported + by the synchronization manager error handler, as well as general sync + errors that don't fall into any of the other categories. + */ +extern NSString *const RLMSyncErrorDomain; + +/** + The error domain string for all SDK errors related to the authentication + endpoint. + */ +extern NSString *const RLMSyncAuthErrorDomain; + +/** +The error domain string for all SDK errors related to the Atlas App Services +endpoint. +*/ +extern NSString *const RLMAppErrorDomain; + +#pragma mark - RLMError + +/// A user info key containing the error code. This is provided for backwards +/// compatibility only and should not be used. +extern NSString *const RLMErrorCodeKey __attribute((deprecated("use -[NSError code]"))); + +/// A user info key containing the name of the error code. This is for +/// debugging purposes only and should not be relied on. +extern NSString *const RLMErrorCodeNameKey; + +/// A user info key present in sync errors which originate from the server, +/// containing the URL of the server-side logs associated with the error. +extern NSString * const RLMServerLogURLKey; + +/// A user info key containing a HTTP status code. Some ``RLMAppError`` codes +/// include this, most notably ``RLMAppErrorHttpRequestFailed``. +extern NSString * const RLMHTTPStatusCodeKey; + +/// A user info key containing a `RLMCompensatingWriteInfo` which includes +/// further details about what was reverted by the server. +extern NSString *const RLMCompensatingWriteInfoKey; + +/** + `RLMError` is an enumeration representing all recoverable errors. It is + associated with the Realm error domain specified in `RLMErrorDomain`. + */ +typedef RLM_ERROR_ENUM(NSInteger, RLMError, RLMErrorDomain) { + /** Denotes a general error that occurred when trying to open a Realm. */ + RLMErrorFail = 1, + + /** Denotes a file I/O error that occurred when trying to open a Realm. */ + RLMErrorFileAccess = 2, + + /** + Denotes a file permission error that occurred when trying to open a Realm. + + This error can occur if the user does not have permission to open or create + the specified file in the specified access mode when opening a Realm. + */ + RLMErrorFilePermissionDenied = 3, + + /** + Denotes an error where a file was to be written to disk, but another + file with the same name already exists. + */ + RLMErrorFileExists = 4, + + /** + Denotes an error that occurs if a file could not be found. + + This error may occur if a Realm file could not be found on disk when + trying to open a Realm as read-only, or if the directory part of the + specified path was not found when trying to write a copy. + */ + RLMErrorFileNotFound = 5, + + /** + Denotes an error that occurs if a file format upgrade is required to open + the file, but upgrades were explicitly disabled or the file is being open + in read-only mode. + */ + RLMErrorFileFormatUpgradeRequired = 6, + + /** + Denotes an error that occurs if the database file is currently open in + another process which cannot share with the current process due to an + architecture mismatch. + + This error may occur if trying to share a Realm file between an i386 + (32-bit) iOS Simulator and the Realm Studio application. In this case, + please use the 64-bit version of the iOS Simulator. + */ + RLMErrorIncompatibleLockFile = 8, + + /** + Denotes an error that occurs when there is insufficient available address + space to mmap the Realm file. + */ + RLMErrorAddressSpaceExhausted = 9, + + /** + Denotes an error that occurs if there is a schema version mismatch and a + migration is required. + */ + RLMErrorSchemaMismatch = 10, + + /** + Denotes an error where an operation was requested which cannot be + performed on an open file. + */ + RLMErrorAlreadyOpen = 12, + + /// Denotes an error where an input value was invalid. + RLMErrorInvalidInput = 13, + + /// Denotes an error where a write failed due to insufficient disk space. + RLMErrorOutOfDiskSpace = 14, + + /** + Denotes an error where a Realm file could not be opened because another + process has opened the same file in a way incompatible with inter-process + sharing. For example, this can result from opening the backing file for an + in-memory Realm in non-in-memory mode. + */ + RLMErrorIncompatibleSession = 15, + + /** + Denotes an error that occurs if the file is a valid Realm file, but has a + file format version which is not supported by this version of Realm. This + typically means that the file was written by a newer version of Realm, but + may also mean that it is from a pre-1.0 version of Realm (or for + synchronized files, pre-10.0). + */ + RLMErrorUnsupportedFileFormatVersion = 16, + + /** + Denotes an error that occurs if a synchronized Realm is opened in more + than one process at once. + */ + RLMErrorMultipleSyncAgents = 17, + + /// A subscription was rejected by the server. + RLMErrorSubscriptionFailed = 18, + + /// A file operation failed in a way which does not have a more specific error code. + RLMErrorFileOperationFailed = 19, + + /** + Denotes an error that occurs if the file being opened is not a valid Realm + file. Some of the possible causes of this are: + 1. The file at the given URL simply isn't a Realm file at all. + 2. The wrong encryption key was given. + 3. The Realm file is encrypted and no encryption key was given. + 4. The Realm file isn't encrypted but an encryption key was given. + 5. The file on disk has become corrupted. + */ + RLMErrorInvalidDatabase = 20, + + /** + Denotes an error that occurs if a Realm is opened in the wrong history + mode. Typically this means that either a local Realm is being opened as a + synchronized Realm or vice versa. + */ + RLMErrorIncompatibleHistories = 21, + + /** + Denotes an error that occurs if objects were written to a flexible sync + Realm without any active subscriptions for that object type. All objects + created in flexible sync Realms must match at least one active + subscription or the server will reject the write. + */ + RLMErrorNoSubscriptionForWrite = 22, +}; + +#pragma mark - RLMSyncError + +/// A user info key for use with `RLMSyncErrorClientResetError`. +extern NSString *const kRLMSyncPathOfRealmBackupCopyKey; + +/// A user info key for use with certain error types. +extern NSString *const kRLMSyncErrorActionTokenKey; + +/** + An error related to a problem that might be reported by the synchronization manager + error handler, or a callback on a sync-related API that performs asynchronous work. + */ +typedef RLM_ERROR_ENUM(NSInteger, RLMSyncError, RLMSyncErrorDomain) { + /// An error that indicates a problem with the session (a specific Realm opened for sync). + RLMSyncErrorClientSessionError = 4, + + /// An error that indicates a problem with a specific user. + RLMSyncErrorClientUserError = 5, + + /** + An error that indicates an internal, unrecoverable problem + with the underlying synchronization engine. + */ + RLMSyncErrorClientInternalError = 6, + + /** + An error that indicates the Realm needs to be reset. + + A synced Realm may need to be reset because Atlas App Services encountered an + error and had to be restored from a backup. If the backup copy of the remote Realm + is of an earlier version than the local copy of the Realm, the server will ask the + client to reset the Realm. + + The reset process is as follows: the local copy of the Realm is copied into a recovery + directory for safekeeping, and then deleted from the original location. The next time + the Realm for that partition value is opened, the Realm will automatically be re-downloaded from + Atlas App Services, and can be used as normal. + + Data written to the Realm after the local copy of the Realm diverged from the backup + remote copy will be present in the local recovery copy of the Realm file. The + re-downloaded Realm will initially contain only the data present at the time the Realm + was backed up on the server. + + The client reset process can be initiated in one of two ways. + + The `userInfo` dictionary contains an opaque token object under the key + `kRLMSyncErrorActionTokenKey`. This token can be passed into + `+[RLMSyncSession immediatelyHandleError:]` in order to immediately perform the client + reset process. This should only be done after your app closes and invalidates every + instance of the offending Realm on all threads (note that autorelease pools may make this + difficult to guarantee). + + If `+[RLMSyncSession immediatelyHandleError:]` is not called, the client reset process + will be automatically carried out the next time the app is launched and the + `RLMSyncManager` is accessed. + + The value for the `kRLMSyncPathOfRealmBackupCopyKey` key in the `userInfo` dictionary + describes the path of the recovered copy of the Realm. This copy will not actually be + created until the client reset process is initiated. + + @see `-[NSError rlmSync_errorActionToken]`, `-[NSError rlmSync_clientResetBackedUpRealmPath]` + */ + RLMSyncErrorClientResetError = 7, + + /// :nodoc: + RLMSyncErrorUnderlyingAuthError = 8, + + /** + An error that indicates the user does not have permission to perform an operation + upon a synced Realm. For example, a user may receive this error if they attempt to + open a Realm they do not have at least read access to, or write to a Realm they only + have read access to. + + This error may also occur if a user incorrectly opens a Realm they have read-only + permissions to without using the `asyncOpen()` APIs. + + A Realm that suffers a permission denied error is, by default, flagged so that its + local copy will be deleted the next time the application starts. + + The `userInfo` dictionary contains an opaque token object under the key + `kRLMSyncErrorActionTokenKey`. This token can be passed into + `+[RLMSyncSession immediatelyHandleError:]` in order to immediately delete the local + copy. This should only be done after your app closes and invalidates every instance + of the offending Realm on all threads (note that autorelease pools may make this + difficult to guarantee). + + @warning It is strongly recommended that, if a Realm has encountered a permission denied + error, its files be deleted before attempting to re-open it. + + @see `-[NSError rlmSync_errorActionToken]` + */ + RLMSyncErrorPermissionDeniedError = 9, + + /** + An error that indicates that the server has rejected the requested flexible sync subscriptions. + */ + RLMSyncErrorInvalidFlexibleSyncSubscriptions = 10, + + /** + An error that indicates that the server has reverted a write made by this + client. This can happen due to not having write permission, or because an + object was created in a flexible sync Realm which does not match any + active subscriptions. + + This error is informational and does not require any explicit handling. + */ + RLMSyncErrorWriteRejected = 11, + + /** + A connection error without a more specific error code occurred. + + Realm internally handles retrying connections with appropriate backoffs, + so connection errors are normally logged and not reported to the error + handler. The exception is if + ``RLMSyncConfiguration.cancelAsyncOpenOnNonFatalErrors`` is set to `true`, + in which case async opens will be canceled on connection failures and the + error will be reported to the completion handler. + + Note that connection timeouts are reported as + (errorDomain: NSPosixErrorDomain, error: ETIMEDOUT) + and not as one of these error codes. + */ + RLMSyncErrorConnectionFailed = 12, + + /** + Connecting to the server failed due to a TLS issue such as an invalid certificate. + */ + RLMSyncErrorTLSHandshakeFailed = 13, +}; + +#pragma mark - RLMSyncAuthError + +// NEXT-MAJOR: This was a ROS thing and should have been removed in v10 +/// :nodoc: +typedef RLM_ERROR_ENUM(NSInteger, RLMSyncAuthError, RLMSyncAuthErrorDomain) { + RLMSyncAuthErrorBadResponse = 1, + RLMSyncAuthErrorBadRemoteRealmPath = 2, + RLMSyncAuthErrorHTTPStatusCodeError = 3, + RLMSyncAuthErrorClientSessionError = 4, + RLMSyncAuthErrorInvalidParameters = 601, + RLMSyncAuthErrorMissingPath = 602, + RLMSyncAuthErrorInvalidCredential = 611, + RLMSyncAuthErrorUserDoesNotExist = 612, + RLMSyncAuthErrorUserAlreadyExists = 613, + RLMSyncAuthErrorAccessDeniedOrInvalidPath = 614, + RLMSyncAuthErrorInvalidAccessToken = 615, + RLMSyncAuthErrorFileCannotBeShared = 703, +} __attribute__((deprecated("Errors of this type are no longer reported"))); + +#pragma mark - RLMSyncAppError + +/// An error which occurred when making a request to Atlas App Services. +typedef RLM_ERROR_ENUM(NSInteger, RLMAppError, RLMAppErrorDomain) { + /// An unknown error has occurred + RLMAppErrorUnknown = -1, + + /// A HTTP request completed with an error status code. The failing status + /// code can be found in the ``RLMHTTPStatusCodeKey`` key of the userInfo + /// dictionary. + RLMAppErrorHttpRequestFailed = 1, + + /// A user's session is in an invalid state. Logging out and back in may rectify this. + RLMAppErrorInvalidSession, + /// A request sent to the server was malformed in some way. + RLMAppErrorBadRequest, + /// A request was made using a nonexistent user. + RLMAppErrorUserNotFound, + /// A request was made against an App using a User which does not belong to that App. + RLMAppErrorUserAppDomainMismatch, + /// The auth provider has limited the domain names which can be used for email addresses, and the given one is not allowed. + RLMAppErrorDomainNotAllowed, + /// The request body size exceeded a server-configured limit. + RLMAppErrorReadSizeLimitExceeded, + /// A request had an invalid parameter. + RLMAppErrorInvalidParameter, + /// A request was missing a required parameter. + RLMAppErrorMissingParameter, + /// Executing the requested server function failed with an error. + RLMAppErrorFunctionExecutionError, + /// The server encountered an internal error. + RLMAppErrorInternalServerError, + /// Authentication failed due to the request auth provider not existing. + RLMAppErrorAuthProviderNotFound, + /// The requested value does not exist. + RLMAppErrorValueNotFound, + /// The value being created already exists. + RLMAppErrorValueAlreadyExists, + /// A value with the same name as the value being created already exists. + RLMAppErrorValueDuplicateName, + /// The called server function does not exist. + RLMAppErrorFunctionNotFound, + /// The called server function has a syntax error. + RLMAppErrorFunctionSyntaxError, + /// The called server function is invalid in some way. + RLMAppErrorFunctionInvalid, + /// Registering an API key with the auth provider failed due to it already existing. + RLMAppErrorAPIKeyAlreadyExists, + /// The operation failed due to exceeding the server-configured time limit. + RLMAppErrorExecutionTimeLimitExceeded, + /// The body of the called function does not define a callable thing. + RLMAppErrorNotCallable, + /// Email confirmation failed for a user because the user has already confirmed their email. + RLMAppErrorUserAlreadyConfirmed, + /// The user cannot be used because it has been disabled. + RLMAppErrorUserDisabled, + /// An auth error occurred which does not have a more specific error code. + RLMAppErrorAuthError, + /// Account registration failed due to the user name already being taken. + RLMAppErrorAccountNameInUse, + /// A login request failed due to an invalid password. + RLMAppErrorInvalidPassword, + /// Operation failed due to server-side maintenance. + RLMAppErrorMaintenanceInProgress, + /// Operation failed due to an error reported by MongoDB. + RLMAppErrorMongoDBError, +}; + +/// Extended information about a write which was rejected by the server. +/// +/// The server will sometimes reject writes made by the client for reasons such +/// as permissions, additional server-side validation failing, or because the +/// object didn't match any flexible sync subscriptions. When this happens, a +/// ``RLMSyncErrorWriteRejected`` error is reported which contains an array of +/// `RLMCompensatingWriteInfo` objects in the ``RLMCompensatingWriteInfoKey`` +/// userInfo key with information about what writes were rejected and why. +/// +/// This information is intended for debugging and logging purposes only. The +/// `reason` strings are generated by the server and are not guaranteed to be +/// stable, so attempting to programmatically do anything with them will break +/// without warning. +RLM_SWIFT_SENDABLE RLM_FINAL +@interface RLMCompensatingWriteInfo : NSObject +/// The class name of the object being written to. +@property (nonatomic, readonly) NSString *objectType; +/// The primary key of the object being written to. +@property (nonatomic, readonly) id primaryKey NS_REFINED_FOR_SWIFT; +/// A human-readable string describing why the write was rejected. +@property (nonatomic, readonly) NSString *reason; +@end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMFindOneAndModifyOptions.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMFindOneAndModifyOptions.h new file mode 100644 index 000000000..3cce99f23 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMFindOneAndModifyOptions.h @@ -0,0 +1,80 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) +@protocol RLMBSON; +@class RLMSortDescriptor; + +/// Options to use when executing a `findOneAndUpdate`, `findOneAndReplace`, +/// or `findOneAndDelete` command on a `RLMMongoCollection`. +@interface RLMFindOneAndModifyOptions : NSObject + +/// Limits the fields to return for all matching documents. +@property (nonatomic, nullable) id projection NS_REFINED_FOR_SWIFT; + +/// The order in which to return matching documents. +@property (nonatomic, nullable) id sort NS_REFINED_FOR_SWIFT +__attribute__((deprecated("Use `sorting` instead, which correctly sort more than one sort attribute", "sorting"))); + +/// The order in which to return matching documents. +@property (nonatomic) NSArray> *sorting NS_REFINED_FOR_SWIFT; + + +/// Whether or not to perform an upsert, default is false +/// (only available for find_one_and_replace and find_one_and_update) +@property (nonatomic) BOOL upsert; + +/// When true then the new document is returned, +/// Otherwise the old document is returned (default) +/// (only available for findOneAndReplace and findOneAndUpdate) +@property (nonatomic) BOOL shouldReturnNewDocument; + +/// Options to use when executing a `findOneAndUpdate`, `findOneAndReplace`, +/// or `findOneAndDelete` command on a `RLMMongoCollection`. +/// @param projection Limits the fields to return for all matching documents. +/// @param sort The order in which to return matching documents. +/// @param upsert Whether or not to perform an upsert, default is false +/// (only available for findOneAndReplace and findOneAndUpdate) +/// @param shouldReturnNewDocument When true then the new document is returned, +/// Otherwise the old document is returned (default), +/// (only available for findOneAndReplace and findOneAndUpdate) +- (instancetype)initWithProjection:(id _Nullable)projection + sort:(id _Nullable)sort + upsert:(BOOL)upsert + shouldReturnNewDocument:(BOOL)shouldReturnNewDocument +__attribute__((deprecated("Please use `initWithProjection:sorting:upsert:shouldReturnNewDocument:`"))) + NS_SWIFT_UNAVAILABLE("Please see FindOneAndModifyOptions"); + +/// Options to use when executing a `findOneAndUpdate`, `findOneAndReplace`, +/// or `findOneAndDelete` command on a `RLMMongoCollection`. +/// @param projection Limits the fields to return for all matching documents. +/// @param sorting The order in which to return matching documents. +/// @param upsert Whether or not to perform an upsert, default is false +/// (only available for findOneAndReplace and findOneAndUpdate) +/// @param shouldReturnNewDocument When true then the new document is returned, +/// Otherwise the old document is returned (default), +/// (only available for findOneAndReplace and findOneAndUpdate) +- (instancetype)initWithProjection:(id _Nullable)projection + sorting:(NSArray> *)sorting + upsert:(BOOL)upsert + shouldReturnNewDocument:(BOOL)shouldReturnNewDocument; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMFindOptions.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMFindOptions.h new file mode 100644 index 000000000..043a85374 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMFindOptions.h @@ -0,0 +1,77 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@protocol RLMBSON; + +/// Options to use when executing a `find` command on a `RLMMongoCollection`. +@interface RLMFindOptions : NSObject + +/// The maximum number of documents to return. Specifying 0 will return all documents. +@property (nonatomic) NSInteger limit; + +/// Limits the fields to return for all matching documents. +@property (nonatomic, nullable) id projection NS_REFINED_FOR_SWIFT; + +/// The order in which to return matching documents. +@property (nonatomic, nullable) id sort NS_REFINED_FOR_SWIFT +__attribute__((deprecated("Use `sorting` instead, which correctly sort more than one sort attribute", "sorting"))); + +/// The order in which to return matching documents. +@property (nonatomic) NSArray> *sorting NS_REFINED_FOR_SWIFT; + +/// Options to use when executing a `find` command on a `RLMMongoCollection`. +/// @param limit The maximum number of documents to return. Specifying 0 will return all documents. +/// @param projection Limits the fields to return for all matching documents. +/// @param sort The order in which to return matching documents. +- (instancetype)initWithLimit:(NSInteger)limit + projection:(id _Nullable)projection + sort:(id _Nullable)sort +__attribute__((deprecated("Please use `initWithLimit:projection:sorting:`"))) + NS_SWIFT_UNAVAILABLE("Please see FindOption"); + + +/// Options to use when executing a `find` command on a `RLMMongoCollection`. +/// @param projection Limits the fields to return for all matching documents. +/// @param sort The order in which to return matching documents. +- (instancetype)initWithProjection:(id _Nullable)projection + sort:(id _Nullable)sort __deprecated +__attribute__((deprecated("Please use `initWithProjection:sorting:`"))) + NS_SWIFT_UNAVAILABLE("Please see FindOption"); + + +/// Options to use when executing a `find` command on a `RLMMongoCollection`. +/// @param limit The maximum number of documents to return. Specifying 0 will return all documents. +/// @param projection Limits the fields to return for all matching documents. +/// @param sorting The order in which to return matching documents. +- (instancetype)initWithLimit:(NSInteger)limit + projection:(id _Nullable)projection + sorting:(NSArray> *)sorting; + +/// Options to use when executing a `find` command on a `RLMMongoCollection`. +/// @param projection Limits the fields to return for all matching documents. +/// @param sorting The order in which to return matching documents. +- (instancetype)initWithProjection:(id _Nullable)projection + sorting:(NSArray> *)sorting; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMLogger.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMLogger.h new file mode 100644 index 000000000..96ab91967 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMLogger.h @@ -0,0 +1,99 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2023 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability) + +/// An enum representing different levels of sync-related logging that can be configured. +typedef RLM_CLOSED_ENUM(NSUInteger, RLMLogLevel) { + /// Nothing will ever be logged. + RLMLogLevelOff, + /// Only fatal errors will be logged. + RLMLogLevelFatal, + /// Only errors will be logged. + RLMLogLevelError, + /// Warnings and errors will be logged. + RLMLogLevelWarn, + /// Information about sync events will be logged. Fewer events will be logged in order to avoid overhead. + RLMLogLevelInfo, + /// Information about sync events will be logged. More events will be logged than with `RLMLogLevelInfo`. + RLMLogLevelDetail, + /// Log information that can aid in debugging. + /// + /// - warning: Will incur a measurable performance impact. + RLMLogLevelDebug, + /// Log information that can aid in debugging. More events will be logged than with `RLMLogLevelDebug`. + /// + /// - warning: Will incur a measurable performance impact. + RLMLogLevelTrace, + /// Log information that can aid in debugging. More events will be logged than with `RLMLogLevelTrace`. + /// + /// - warning: Will incur a measurable performance impact. + RLMLogLevelAll +} NS_SWIFT_NAME(LogLevel); + +/// A log callback function which can be set on RLMLogger. +/// +/// The log function may be called from multiple threads simultaneously, and is +/// responsible for performing its own synchronization if any is required. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void (^RLMLogFunction)(RLMLogLevel level, NSString *message); + +/** + `RLMLogger` is used for creating your own custom logging logic. + + You can define your own logger creating an instance of `RLMLogger` and define the log function which will be + invoked whenever there is a log message. + Set this custom logger as you default logger using `setDefaultLogger`. + + RLMLogger.defaultLogger = [[RLMLogger alloc] initWithLevel:RLMLogLevelDebug + logFunction:^(RLMLogLevel level, NSString * message) { + NSLog(@"Realm Log - %lu, %@", (unsigned long)level, message); + }]; + + @note By default default log threshold level is `RLMLogLevelInfo`, and logging strings are output to Apple System Logger. +*/ +@interface RLMLogger : NSObject + +/** + Gets the logging threshold level used by the logger. + */ +@property (nonatomic) RLMLogLevel level; + +/// :nodoc: +- (instancetype)init NS_UNAVAILABLE; + +/** + Creates a logger with the associated log level and the logic function to define your own logging logic. + + @param level The log level to be set for the logger. + @param logFunction The log function which will be invoked whenever there is a log message. +*/ +- (instancetype)initWithLevel:(RLMLogLevel)level logFunction:(RLMLogFunction)logFunction; + +#pragma mark RLMLogger Default Logger API + +/** + The current default logger. When setting a logger as default, this logger will be used whenever information must be logged. + */ +@property (class) RLMLogger *defaultLogger NS_SWIFT_NAME(shared); + +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMMigration.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMMigration.h new file mode 100644 index 000000000..4a6652a19 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMMigration.h @@ -0,0 +1,129 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMSchema; +@class RLMArray; +@class RLMObject; + +/** + A block type which provides both the old and new versions of an object in the Realm. Object + properties can only be accessed using keyed subscripting. + + @see `-[RLMMigration enumerateObjects:block:]` + + @param oldObject The object from the original Realm (read-only). + @param newObject The object from the migrated Realm (read-write). +*/ +typedef void (^RLMObjectMigrationBlock)(RLMObject * __nullable oldObject, RLMObject * __nullable newObject); + +/** + `RLMMigration` instances encapsulate information intended to facilitate a schema migration. + + A `RLMMigration` instance is passed into a user-defined `RLMMigrationBlock` block when updating + the version of a Realm. This instance provides access to the old and new database schemas, the + objects in the Realm, and provides functionality for modifying the Realm during the migration. + */ +@interface RLMMigration : NSObject + +#pragma mark - Properties + +/** + Returns the old `RLMSchema`. This is the schema which describes the Realm before the + migration is applied. + */ +@property (nonatomic, readonly) RLMSchema *oldSchema NS_REFINED_FOR_SWIFT; + +/** + Returns the new `RLMSchema`. This is the schema which describes the Realm after the + migration is applied. + */ +@property (nonatomic, readonly) RLMSchema *newSchema NS_REFINED_FOR_SWIFT; + + +#pragma mark - Altering Objects during a Migration + +/** + Enumerates all the objects of a given type in the Realm, providing both the old and new versions + of each object. Within the block, object properties can only be accessed using keyed subscripting. + + @param className The name of the `RLMObject` class to enumerate. + + @warning All objects returned are of a type specific to the current migration and should not be cast + to `className`. Instead, treat them as `RLMObject`s and use keyed subscripting to access + properties. + */ +- (void)enumerateObjects:(NSString *)className + block:(__attribute__((noescape)) RLMObjectMigrationBlock)block NS_REFINED_FOR_SWIFT; + +/** + Creates and returns an `RLMObject` instance of type `className` in the Realm being migrated. + + The `value` argument is used to populate the object. It can be a key-value coding compliant object, an array or + dictionary returned from the methods in `NSJSONSerialization`, or an array containing one element for each managed + property. An exception will be thrown if any required properties are not present and those properties were not defined + with default values. + + When passing in an `NSArray` as the `value` argument, all properties must be present, valid and in the same order as + the properties defined in the model. + + @param className The name of the `RLMObject` class to create. + @param value The value used to populate the object. + */ +- (RLMObject *)createObject:(NSString *)className withValue:(id)value NS_REFINED_FOR_SWIFT; + +/** + Deletes an object from a Realm during a migration. + + It is permitted to call this method from within the block passed to `-[enumerateObjects:block:]`. + + @param object Object to be deleted from the Realm being migrated. + */ +- (void)deleteObject:(RLMObject *)object NS_REFINED_FOR_SWIFT; + +/** + Deletes the data for the class with the given name. + + All objects of the given class will be deleted. If the `RLMObject` subclass no longer exists in your program, + any remaining metadata for the class will be removed from the Realm file. + + @param name The name of the `RLMObject` class to delete. + + @return A Boolean value indicating whether there was any data to delete. + */ +- (BOOL)deleteDataForClassName:(NSString *)name NS_REFINED_FOR_SWIFT; + +/** + Renames a property of the given class from `oldName` to `newName`. + + @param className The name of the class whose property should be renamed. This class must be present + in both the old and new Realm schemas. + @param oldName The old persisted property name for the property to be renamed. There must not be a property with this name in the + class as defined by the new Realm schema. + @param newName The new persisted property name for the property to be renamed. There must not be a property with this name in the + class as defined by the old Realm schema. + */ +- (void)renamePropertyForClass:(NSString *)className oldName:(NSString *)oldName + newName:(NSString *)newName NS_REFINED_FOR_SWIFT; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMMongoClient.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMMongoClient.h new file mode 100644 index 000000000..50a1c226d --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMMongoClient.h @@ -0,0 +1,47 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMApp; + +/// The `RLMMongoClient` enables reading and writing on a MongoDB database via the Realm Cloud service. +/// +/// It provides access to instances of `RLMMongoDatabase`, which in turn provide access to specific +/// `RLMMongoCollection`s that hold your data. +/// +/// - Note: +/// Before you can read or write data, a user must log in. +/// +/// - SeeAlso: +/// `RLMApp`, `RLMMongoDatabase`, `RLMMongoCollection` +RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class +@interface RLMMongoClient : NSObject + +/// The name of the client +@property (nonatomic, readonly) NSString *name; + +/// Gets a `RLMMongoDatabase` instance for the given database name. +/// @param name the name of the database to retrieve +- (RLMMongoDatabase *)databaseWithName:(NSString *)name NS_SWIFT_NAME(database(named:)); + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMMongoCollection.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMMongoCollection.h new file mode 100644 index 000000000..0feae60ac --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMMongoCollection.h @@ -0,0 +1,330 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) +@protocol RLMBSON; + +@class RLMFindOptions, RLMFindOneAndModifyOptions, RLMUpdateResult, RLMChangeStream, RLMObjectId; + +/// Delegate which is used for subscribing to changes on a `[RLMMongoCollection watch]` stream. +@protocol RLMChangeEventDelegate +/// The stream was opened. +/// @param changeStream The RLMChangeStream subscribing to the stream changes. +- (void)changeStreamDidOpen:(RLMChangeStream *)changeStream; +/// The stream has been closed. +/// @param error If an error occured when closing the stream, an error will be passed. +- (void)changeStreamDidCloseWithError:(nullable NSError *)error; +/// A error has occured while streaming. +/// @param error The streaming error. +- (void)changeStreamDidReceiveError:(NSError *)error; +/// Invoked when a change event has been received. +/// @param changeEvent The change event in BSON format. +- (void)changeStreamDidReceiveChangeEvent:(id)changeEvent; +@end + +/// Acts as a middleman and processes events with WatchStream +RLM_SWIFT_SENDABLE RLM_FINAL // is internally thread-safe +@interface RLMChangeStream : NSObject +/// Stops a watch streaming session. +- (void)close; +/// :nodoc: +- (instancetype)init NS_UNAVAILABLE; +@end + +/// The `RLMMongoCollection` represents a MongoDB collection. +/// +/// You can get an instance from a `RLMMongoDatabase`. +/// +/// Create, read, update, and delete methods are available. +/// +/// Operations against the Realm Cloud server are performed asynchronously. +/// +/// - Note: +/// Before you can read or write data, a user must log in. +/// - Usage: +/// RLMMongoClient *client = [self.app mongoClient:@"mongodb1"]; +/// RLMMongoDatabase *database = [client databaseWithName:@"test_data"]; +/// RLMMongoCollection *collection = [database collectionWithName:@"Dog"]; +/// [collection insertOneDocument:@{@"name": @"fido", @"breed": @"cane corso"} completion:...]; +/// +/// - SeeAlso: +/// `RLMMongoClient`, `RLMMongoDatabase` +RLM_SWIFT_SENDABLE RLM_FINAL // is internally thread-safe +@interface RLMMongoCollection : NSObject +/// Block which returns an object id on a successful insert, or an error should one occur. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMMongoInsertBlock)(id _Nullable, NSError * _Nullable); +/// Block which returns an array of object ids on a successful insertMany, or an error should one occur. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMMongoInsertManyBlock)(NSArray> * _Nullable, NSError * _Nullable); +/// Block which returns an array of Documents on a successful find operation, or an error should one occur. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMMongoFindBlock)(NSArray> *> * _Nullable, + NSError * _Nullable); +/// Block which returns a Document on a successful findOne operation, or an error should one occur. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMMongoFindOneBlock)(NSDictionary> * _Nullable_result, + NSError * _Nullable); +/// Block which returns the number of Documents in a collection on a successful count operation, or an error should one occur. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMMongoCountBlock)(NSInteger, NSError * _Nullable); +/// Block which returns an RLMUpdateResult on a successful update operation, or an error should one occur. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMMongoUpdateBlock)(RLMUpdateResult * _Nullable, NSError * _Nullable); +/// Block which returns the deleted Document on a successful delete operation, or an error should one occur. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMMongoDeleteBlock)(NSDictionary> * _Nullable_result, + NSError * _Nullable); + +/// The name of this mongodb collection. +@property (nonatomic, readonly) NSString *name; + +/// Encodes the provided value to BSON and inserts it. If the value is missing an identifier, one will be +/// generated for it. +/// @param document A `Document` value to insert. +/// @param completion The result of attempting to perform the insert. An Id will be returned for the inserted object on sucess +- (void)insertOneDocument:(NSDictionary> *)document + completion:(RLMMongoInsertBlock)completion NS_REFINED_FOR_SWIFT; + +/// Encodes the provided values to BSON and inserts them. If any values are missing identifiers, +/// they will be generated. +/// @param documents The `Document` values in a bson array to insert. +/// @param completion The result of the insert, returns an array inserted document ids in order +- (void)insertManyDocuments:(NSArray> *> *)documents + completion:(RLMMongoInsertManyBlock)completion NS_REFINED_FOR_SWIFT; + +/// Finds the documents in this collection which match the provided filter. +/// @param filterDocument A `Document` as bson that should match the query. +/// @param options `RLMFindOptions` to use when executing the command. +/// @param completion The resulting bson array of documents or error if one occurs +- (void)findWhere:(NSDictionary> *)filterDocument + options:(RLMFindOptions *)options + completion:(RLMMongoFindBlock)completion NS_REFINED_FOR_SWIFT; + +/// Finds the documents in this collection which match the provided filter. +/// @param filterDocument A `Document` as bson that should match the query. +/// @param completion The resulting bson array as a string or error if one occurs +- (void)findWhere:(NSDictionary> *)filterDocument + completion:(RLMMongoFindBlock)completion NS_REFINED_FOR_SWIFT; + +/// Returns one document from a collection or view which matches the +/// provided filter. If multiple documents satisfy the query, this method +/// returns the first document according to the query's sort order or natural +/// order. +/// @param filterDocument A `Document` as bson that should match the query. +/// @param options `RLMFindOptions` to use when executing the command. +/// @param completion The resulting bson or error if one occurs +- (void)findOneDocumentWhere:(NSDictionary> *)filterDocument + options:(RLMFindOptions *)options + completion:(RLMMongoFindOneBlock)completion NS_REFINED_FOR_SWIFT; + +/// Returns one document from a collection or view which matches the +/// provided filter. If multiple documents satisfy the query, this method +/// returns the first document according to the query's sort order or natural +/// order. +/// @param filterDocument A `Document` as bson that should match the query. +/// @param completion The resulting bson or error if one occurs +- (void)findOneDocumentWhere:(NSDictionary> *)filterDocument + completion:(RLMMongoFindOneBlock)completion NS_REFINED_FOR_SWIFT; + +/// Runs an aggregation framework pipeline against this collection. +/// @param pipeline A bson array made up of `Documents` containing the pipeline of aggregation operations to perform. +/// @param completion The resulting bson array of documents or error if one occurs +- (void)aggregateWithPipeline:(NSArray> *> *)pipeline + completion:(RLMMongoFindBlock)completion NS_REFINED_FOR_SWIFT; + +/// Counts the number of documents in this collection matching the provided filter. +/// @param filterDocument A `Document` as bson that should match the query. +/// @param limit The max amount of documents to count +/// @param completion Returns the count of the documents that matched the filter. +- (void)countWhere:(NSDictionary> *)filterDocument + limit:(NSInteger)limit + completion:(RLMMongoCountBlock)completion NS_REFINED_FOR_SWIFT; + +/// Counts the number of documents in this collection matching the provided filter. +/// @param filterDocument A `Document` as bson that should match the query. +/// @param completion Returns the count of the documents that matched the filter. +- (void)countWhere:(NSDictionary> *)filterDocument + completion:(RLMMongoCountBlock)completion NS_REFINED_FOR_SWIFT; + +/// Deletes a single matching document from the collection. +/// @param filterDocument A `Document` as bson that should match the query. +/// @param completion The result of performing the deletion. Returns the count of deleted objects +- (void)deleteOneDocumentWhere:(NSDictionary> *)filterDocument + completion:(RLMMongoCountBlock)completion NS_REFINED_FOR_SWIFT; + +/// Deletes multiple documents +/// @param filterDocument Document representing the match criteria +/// @param completion The result of performing the deletion. Returns the count of the deletion +- (void)deleteManyDocumentsWhere:(NSDictionary> *)filterDocument + completion:(RLMMongoCountBlock)completion NS_REFINED_FOR_SWIFT; + +/// Updates a single document matching the provided filter in this collection. +/// @param filterDocument A bson `Document` representing the match criteria. +/// @param updateDocument A bson `Document` representing the update to be applied to a matching document. +/// @param upsert When true, creates a new document if no document matches the query. +/// @param completion The result of the attempt to update a document. +- (void)updateOneDocumentWhere:(NSDictionary> *)filterDocument + updateDocument:(NSDictionary> *)updateDocument + upsert:(BOOL)upsert + completion:(RLMMongoUpdateBlock)completion NS_REFINED_FOR_SWIFT; + +/// Updates a single document matching the provided filter in this collection. +/// @param filterDocument A bson `Document` representing the match criteria. +/// @param updateDocument A bson `Document` representing the update to be applied to a matching document. +/// @param completion The result of the attempt to update a document. +- (void)updateOneDocumentWhere:(NSDictionary> *)filterDocument + updateDocument:(NSDictionary> *)updateDocument + completion:(RLMMongoUpdateBlock)completion NS_REFINED_FOR_SWIFT; + +/// Updates multiple documents matching the provided filter in this collection. +/// @param filterDocument A bson `Document` representing the match criteria. +/// @param updateDocument A bson `Document` representing the update to be applied to a matching document. +/// @param upsert When true, creates a new document if no document matches the query. +/// @param completion The result of the attempt to update a document. +- (void)updateManyDocumentsWhere:(NSDictionary> *)filterDocument + updateDocument:(NSDictionary> *)updateDocument + upsert:(BOOL)upsert + completion:(RLMMongoUpdateBlock)completion NS_REFINED_FOR_SWIFT; + +/// Updates multiple documents matching the provided filter in this collection. +/// @param filterDocument A bson `Document` representing the match criteria. +/// @param updateDocument A bson `Document` representing the update to be applied to a matching document. +/// @param completion The result of the attempt to update a document. +- (void)updateManyDocumentsWhere:(NSDictionary> *)filterDocument + updateDocument:(NSDictionary> *)updateDocument + completion:(RLMMongoUpdateBlock)completion NS_REFINED_FOR_SWIFT; + +/// Updates a single document in a collection based on a query filter and +/// returns the document in either its pre-update or post-update form. Unlike +/// `updateOneDocument`, this action allows you to atomically find, update, and +/// return a document with the same command. This avoids the risk of other +/// update operations changing the document between separate find and update +/// operations. +/// @param filterDocument A bson `Document` representing the match criteria. +/// @param updateDocument A bson `Document` representing the update to be applied to a matching document. +/// @param options `RemoteFindOneAndModifyOptions` to use when executing the command. +/// @param completion The result of the attempt to update a document. +- (void)findOneAndUpdateWhere:(NSDictionary> *)filterDocument + updateDocument:(NSDictionary> *)updateDocument + options:(RLMFindOneAndModifyOptions *)options + completion:(RLMMongoFindOneBlock)completion NS_REFINED_FOR_SWIFT; + +/// Updates a single document in a collection based on a query filter and +/// returns the document in either its pre-update or post-update form. Unlike +/// `updateOneDocument`, this action allows you to atomically find, update, and +/// return a document with the same command. This avoids the risk of other +/// update operations changing the document between separate find and update +/// operations. +/// @param filterDocument A bson `Document` representing the match criteria. +/// @param updateDocument A bson `Document` representing the update to be applied to a matching document. +/// @param completion The result of the attempt to update a document. +- (void)findOneAndUpdateWhere:(NSDictionary> *)filterDocument + updateDocument:(NSDictionary> *)updateDocument + completion:(RLMMongoFindOneBlock)completion NS_REFINED_FOR_SWIFT; + +/// Overwrites a single document in a collection based on a query filter and +/// returns the document in either its pre-replacement or post-replacement +/// form. Unlike `updateOneDocument`, this action allows you to atomically find, +/// replace, and return a document with the same command. This avoids the +/// risk of other update operations changing the document between separate +/// find and update operations. +/// @param filterDocument A `Document` that should match the query. +/// @param replacementDocument A `Document` describing the replacement. +/// @param options `RLMFindOneAndModifyOptions` to use when executing the command. +/// @param completion The result of the attempt to replace a document. +- (void)findOneAndReplaceWhere:(NSDictionary> *)filterDocument + replacementDocument:(NSDictionary> *)replacementDocument + options:(RLMFindOneAndModifyOptions *)options + completion:(RLMMongoFindOneBlock)completion NS_REFINED_FOR_SWIFT; + +/// Overwrites a single document in a collection based on a query filter and +/// returns the document in either its pre-replacement or post-replacement +/// form. Unlike `updateOneDocument`, this action allows you to atomically find, +/// replace, and return a document with the same command. This avoids the +/// risk of other update operations changing the document between separate +/// find and update operations. +/// @param filterDocument A `Document` that should match the query. +/// @param replacementDocument A `Document` describing the update. +/// @param completion The result of the attempt to replace a document. +- (void)findOneAndReplaceWhere:(NSDictionary> *)filterDocument + replacementDocument:(NSDictionary> *)replacementDocument + completion:(RLMMongoFindOneBlock)completion NS_REFINED_FOR_SWIFT; + +/// Removes a single document from a collection based on a query filter and +/// returns a document with the same form as the document immediately before +/// it was deleted. Unlike `deleteOneDocument`, this action allows you to atomically +/// find and delete a document with the same command. This avoids the risk of +/// other update operations changing the document between separate find and +/// delete operations. +/// @param filterDocument A `Document` that should match the query. +/// @param options `RLMFindOneAndModifyOptions` to use when executing the command. +/// @param completion The result of the attempt to delete a document. +- (void)findOneAndDeleteWhere:(NSDictionary> *)filterDocument + options:(RLMFindOneAndModifyOptions *)options + completion:(RLMMongoDeleteBlock)completion NS_REFINED_FOR_SWIFT; + +/// Removes a single document from a collection based on a query filter and +/// returns a document with the same form as the document immediately before +/// it was deleted. Unlike `deleteOneDocument`, this action allows you to atomically +/// find and delete a document with the same command. This avoids the risk of +/// other update operations changing the document between separate find and +/// delete operations. +/// @param filterDocument A `Document` that should match the query. +/// @param completion The result of the attempt to delete a document. +- (void)findOneAndDeleteWhere:(NSDictionary> *)filterDocument + completion:(RLMMongoDeleteBlock)completion NS_REFINED_FOR_SWIFT; + +/// Opens a MongoDB change stream against the collection to watch for changes. The resulting stream will be notified +/// of all events on this collection that the active user is authorized to see based on the configured MongoDB +/// rules. +/// @param delegate The delegate that will react to events and errors from the resulting change stream. +/// @param queue Dispatches streaming events to an optional queue, if no queue is provided the main queue is used +- (RLMChangeStream *)watchWithDelegate:(id)delegate + delegateQueue:(nullable dispatch_queue_t)queue NS_REFINED_FOR_SWIFT; + +/// Opens a MongoDB change stream against the collection to watch for changes +/// made to specific documents. The documents to watch must be explicitly +/// specified by their _id. +/// @param filterIds The list of _ids in the collection to watch. +/// @param delegate The delegate that will react to events and errors from the resulting change stream. +/// @param queue Dispatches streaming events to an optional queue, if no queue is provided the main queue is used +- (RLMChangeStream *)watchWithFilterIds:(NSArray *)filterIds + delegate:(id)delegate + delegateQueue:(nullable dispatch_queue_t)queue NS_REFINED_FOR_SWIFT; + +/// Opens a MongoDB change stream against the collection to watch for changes. The provided BSON document will be +/// used as a match expression filter on the change events coming from the stream. +/// +/// See https://docs.mongodb.com/manual/reference/operator/aggregation/match/ for documentation around how to define +/// a match filter. +/// +/// Defining the match expression to filter ChangeEvents is similar to defining the match expression for triggers: +/// https://docs.mongodb.com/realm/triggers/database-triggers/ +/// @param matchFilter The $match filter to apply to incoming change events +/// @param delegate The delegate that will react to events and errors from the resulting change stream. +/// @param queue Dispatches streaming events to an optional queue, if no queue is provided the main queue is used +- (RLMChangeStream *)watchWithMatchFilter:(NSDictionary> *)matchFilter + delegate:(id)delegate + delegateQueue:(nullable dispatch_queue_t)queue NS_REFINED_FOR_SWIFT; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMMongoDatabase.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMMongoDatabase.h new file mode 100644 index 000000000..177fbc1b8 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMMongoDatabase.h @@ -0,0 +1,51 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMMongoCollection; + +/// The `RLMMongoDatabase` represents a MongoDB database, which holds a group +/// of collections that contain your data. +/// +/// It can be retrieved from the `RLMMongoClient`. +/// +/// Use it to get `RLMMongoCollection`s for reading and writing data. +/// +/// - Note: +/// Before you can read or write data, a user must log in`. +/// +/// - SeeAlso: +/// `RLMMongoClient`, `RLMMongoCollection` +RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class +@interface RLMMongoDatabase : NSObject + +/// The name of this database +@property (nonatomic, readonly) NSString *name; + +/// Gets a collection. +/// @param name The name of the collection to return +/// @returns The collection +- (RLMMongoCollection *)collectionWithName:(NSString *)name; +// NEXT-MAJOR: NS_SWIFT_NAME(collection(named:)) + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMNetworkTransport.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMNetworkTransport.h new file mode 100644 index 000000000..2884b4296 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMNetworkTransport.h @@ -0,0 +1,132 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/// Allowed HTTP methods to be used with `RLMNetworkTransport`. +typedef RLM_CLOSED_ENUM(int32_t, RLMHTTPMethod) { + /// GET is used to request data from a specified resource. + RLMHTTPMethodGET = 0, + /// POST is used to send data to a server to create/update a resource. + RLMHTTPMethodPOST = 1, + /// PATCH is used to send data to a server to update a resource. + RLMHTTPMethodPATCH = 2, + /// PUT is used to send data to a server to create/update a resource. + RLMHTTPMethodPUT = 3, + /// The DELETE method deletes the specified resource. + RLMHTTPMethodDELETE = 4 +}; + +/// An HTTP request that can be made to an arbitrary server. +@interface RLMRequest : NSObject + +/// The HTTP method of this request. +@property (nonatomic, assign) RLMHTTPMethod method; + +/// The URL to which this request will be made. +@property (nonatomic, strong) NSString *url; + +/// The number of milliseconds that the underlying transport should spend on an +/// HTTP round trip before failing with an error. +@property (nonatomic, assign) NSTimeInterval timeout; + +/// The HTTP headers of this request. +@property (nonatomic, strong) NSDictionary* headers; + +/// The body of the request. +@property (nonatomic, strong) NSString* body; + +@end + +/// The contents of an HTTP response. +@interface RLMResponse : NSObject + +/// The status code of the HTTP response. +@property (nonatomic, assign) NSInteger httpStatusCode; + +/// A custom status code provided by the SDK. +@property (nonatomic, assign) NSInteger customStatusCode; + +/// The headers of the HTTP response. +@property (nonatomic, strong) NSDictionary* headers; + +/// The body of the HTTP response. +@property (nonatomic, strong) NSString *body; + +@end + +/// Delegate which is used for subscribing to changes. +@protocol RLMEventDelegate +/// Invoked when a change event has been received. +/// @param event The change event encoded as NSData +- (void)didReceiveEvent:(NSData *)event; +/// A error has occurred while subscribing to changes. +/// @param error The error that has occurred. +- (void)didReceiveError:(NSError *)error; +/// The stream was opened. +- (void)didOpen; +/// The stream has been closed. +/// @param error The error that has occurred. +- (void)didCloseWithError:(NSError *_Nullable)error; +@end + +/// A block for receiving an `RLMResponse` from the `RLMNetworkTransport`. +RLM_SWIFT_SENDABLE // invoked on a backgroun thread +typedef void(^RLMNetworkTransportCompletionBlock)(RLMResponse *); + +/// Transporting protocol for foreign interfaces. Allows for custom +/// request/response handling. +RLM_SWIFT_SENDABLE // used from multiple threads so must be internally thread-safe +@protocol RLMNetworkTransport + +/** + Sends a request to a given endpoint. + + @param request The request to send. + @param completionBlock A callback invoked on completion of the request. +*/ +- (void)sendRequestToServer:(RLMRequest *)request + completion:(RLMNetworkTransportCompletionBlock)completionBlock; + +/// Starts an event stream request. +/// @param request The RLMRequest to start. +/// @param subscriber The RLMEventDelegate which will subscribe to changes from the server. +- (NSURLSession *)doStreamRequest:(RLMRequest *)request + eventSubscriber:(id)subscriber; + +@end + +/// Transporting protocol for foreign interfaces. Allows for custom +/// request/response handling. +RLM_SWIFT_SENDABLE // is internally thread-safe +@interface RLMNetworkTransport : NSObject + +/** + Sends a request to a given endpoint. + + @param request The request to send. + @param completionBlock A callback invoked on completion of the request. +*/ +- (void)sendRequestToServer:(RLMRequest *) request + completion:(RLMNetworkTransportCompletionBlock)completionBlock; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMObject.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMObject.h new file mode 100644 index 000000000..9bcfbe310 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMObject.h @@ -0,0 +1,811 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMNotificationToken; +@class RLMObjectSchema; +@class RLMPropertyChange; +@class RLMPropertyDescriptor; +@class RLMRealm; +@class RLMResults; + +/** + `RLMObject` is a base class for model objects representing data stored in Realms. + + Define your model classes by subclassing `RLMObject` and adding properties to be managed. + Then instantiate and use your custom subclasses instead of using the `RLMObject` class directly. + + // Dog.h + @interface Dog : RLMObject + @property NSString *name; + @property BOOL adopted; + @end + + // Dog.m + @implementation Dog + @end //none needed + + ### Supported property types + + - `NSString` + - `NSInteger`, `int`, `long`, `float`, and `double` + - `BOOL` or `bool` + - `NSDate` + - `NSData` + - `NSNumber`, where `X` is one of `RLMInt`, `RLMFloat`, `RLMDouble` or `RLMBool`, for optional number properties + - `RLMObject` subclasses, to model many-to-one relationships. + - `RLMArray`, where `X` is an `RLMObject` subclass, to model many-to-many relationships. + + ### Querying + + You can initiate queries directly via the class methods: `allObjects`, `objectsWhere:`, and `objectsWithPredicate:`. + These methods allow you to easily query a custom subclass for instances of that class in the default Realm. + + To search in a Realm other than the default Realm, use the `allObjectsInRealm:`, `objectsInRealm:where:`, + and `objectsInRealm:withPredicate:` class methods. + + @see `RLMRealm` + + ### Relationships + + See our [Realm Swift Documentation](https://www.mongodb.com/docs/realm/sdk/swift/fundamentals/relationships/#relationships) for more details. + + ### Key-Value Observing + + All `RLMObject` properties (including properties you create in subclasses) are + [Key-Value Observing compliant](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html), + except for `realm` and `objectSchema`. + + Keep the following tips in mind when observing Realm objects: + + 1. Unlike `NSMutableArray` properties, `RLMArray` properties do not require + using the proxy object returned from `-mutableArrayValueForKey:`, or defining + KVC mutation methods on the containing class. You can simply call methods on + the `RLMArray` directly; any changes will be automatically observed by the containing + object. + 2. Unmanaged `RLMObject` instances cannot be added to a Realm while they have any + observed properties. + 3. Modifying managed `RLMObject`s within `-observeValueForKeyPath:ofObject:change:context:` + is not recommended. Properties may change even when the Realm is not in a write + transaction (for example, when `-[RLMRealm refresh]` is called after changes + are made on a different thread), and notifications sent prior to the change + being applied (when `NSKeyValueObservingOptionPrior` is used) may be sent at + times when you *cannot* begin a write transaction. + */ + +@interface RLMObject : RLMObjectBase + +#pragma mark - Creating & Initializing Objects + +/** + Creates an unmanaged instance of a Realm object. + + Call `addObject:` on an `RLMRealm` instance to add an unmanaged object into that Realm. + + @see `[RLMRealm addObject:]` + */ +- (instancetype)init NS_DESIGNATED_INITIALIZER; + + +/** + Creates an unmanaged instance of a Realm object. + + Pass in an `NSArray` or `NSDictionary` instance to set the values of the object's properties. + + Call `addObject:` on an `RLMRealm` instance to add an unmanaged object into that Realm. + + @see `[RLMRealm addObject:]` + */ +- (instancetype)initWithValue:(id)value; + + +/** + Returns the class name for a Realm object subclass. + + @warning Do not override. Realm relies on this method returning the exact class + name. + + @return The class name for the model class. + */ ++ (NSString *)className; + +/** + Creates an instance of a Realm object with a given value, and adds it to the default Realm. + + If nested objects are included in the argument, `createInDefaultRealmWithValue:` will be recursively called + on them. + + The `value` argument can be a key-value coding compliant object, an array or dictionary returned from the methods in + `NSJSONSerialization`, or an array containing one element for each managed property. + + An exception will be thrown if any required properties are not present and those properties + were not defined with default values. + + If the `value` argument is an array, all properties must be present, valid and in the same + order as the properties defined in the model. + + @param value The value used to populate the object. + + @see `defaultPropertyValues` + */ ++ (instancetype)createInDefaultRealmWithValue:(id)value; + +/** + Creates an instance of a Realm object with a given value, and adds it to the specified Realm. + + If nested objects are included in the argument, `createInRealm:withValue:` will be recursively called + on them. + + The `value` argument can be a key-value coding compliant object, an array or dictionary returned from the methods in + `NSJSONSerialization`, or an array containing one element for each managed property. + + An exception will be thrown if any required properties are not present and those properties + were not defined with default values. + + If the `value` argument is an array, all properties must be present, valid and in the same + order as the properties defined in the model. + + @param realm The Realm which should manage the newly-created object. + @param value The value used to populate the object. + + @see `defaultPropertyValues` + */ ++ (instancetype)createInRealm:(RLMRealm *)realm withValue:(id)value; + +/** + Creates or updates a Realm object within the default Realm. + + This method may only be called on Realm object types with a primary key defined. If there is already + an object with the same primary key value in the default Realm, its values are updated and the object + is returned. Otherwise, this method creates and populates a new instance of the object in the default Realm. + + If nested objects are included in the argument, `createOrUpdateInDefaultRealmWithValue:` will be + recursively called on them if they have primary keys, `createInDefaultRealmWithValue:` if they do not. + + The `value` argument is used to populate the object. It can be a Realm object, a key-value coding + compliant object, an array or dictionary returned from the methods in `NSJSONSerialization`, or an + array containing one element for each managed property. + + If the object is being created, an exception will be thrown if any required properties + are not present and those properties were not defined with default values. + + If the `value` argument is a Realm object already managed by the default Realm, the + argument's type is the same as the receiver, and the objects have identical values for + their managed properties, this method does nothing. + + If the object is being updated, each property defined in its schema will be set by copying from + `value` using key-value coding. If the `value` argument does not respond to `valueForKey:` for a + given property name (or getter name, if defined), that value will remain untouched. + Nullable properties on the object can be set to nil by using `NSNull` as the updated value. + Each property is set even if the existing value is the same as the new value being set, and + notifications will report them all being changed. See `createOrUpdateModifiedInDefaultRealmWithValue:` + for a version of this function which only sets the values which have changed. + + If the `value` argument is an array, all properties must be present, valid and in the same + order as the properties defined in the model. + + @param value The value used to populate the object. + + @see `defaultPropertyValues`, `primaryKey` + */ ++ (instancetype)createOrUpdateInDefaultRealmWithValue:(id)value; + +/** + Creates or updates a Realm object within the default Realm. + + This method may only be called on Realm object types with a primary key defined. If there is already + an object with the same primary key value in the default Realm, its values are updated and the object + is returned. Otherwise, this method creates and populates a new instance of the object in the default Realm. + + If nested objects are included in the argument, `createOrUpdateModifiedInDefaultRealmWithValue:` will be + recursively called on them if they have primary keys, `createInDefaultRealmWithValue:` if they do not. + + The `value` argument is used to populate the object. It can be a Realm object, a key-value coding + compliant object, an array or dictionary returned from the methods in `NSJSONSerialization`, or an + array containing one element for each managed property. + + If the object is being created, an exception will be thrown if any required properties + are not present and those properties were not defined with default values. + + If the `value` argument is a Realm object already managed by the default Realm, the + argument's type is the same as the receiver, and the objects have identical values for + their managed properties, this method does nothing. + + If the object is being updated, each property defined in its schema will be set by copying from + `value` using key-value coding. If the `value` argument does not respond to `valueForKey:` for a + given property name (or getter name, if defined), that value will remain untouched. + Nullable properties on the object can be set to nil by using `NSNull` as the updated value. + Unlike `createOrUpdateInDefaultRealmWithValue:`, only properties which have changed in value are + set, and any change notifications produced by this call will report only which properies have + actually changed. + + Checking which properties have changed imposes a small amount of overhead, and so this method + may be slower when all or nearly all of the properties being set have changed. If most or all + of the properties being set have not changed, this method will be much faster than unconditionally + setting all of them, and will also reduce how much data has to be written to the Realm, saving + both i/o time and disk space. + + If the `value` argument is an array, all properties must be present, valid and in the same + order as the properties defined in the model. + + @param value The value used to populate the object. + + @see `defaultPropertyValues`, `primaryKey` + */ ++ (instancetype)createOrUpdateModifiedInDefaultRealmWithValue:(id)value; + +/** + Creates or updates an Realm object within a specified Realm. + + This method may only be called on Realm object types with a primary key defined. If there is already + an object with the same primary key value in the given Realm, its values are updated and the object + is returned. Otherwise this method creates and populates a new instance of this object in the given Realm. + + If nested objects are included in the argument, `createOrUpdateInRealm:withValue:` will be + recursively called on them if they have primary keys, `createInRealm:withValue:` if they do not. + + The `value` argument is used to populate the object. It can be a Realm object, a key-value coding + compliant object, an array or dictionary returned from the methods in `NSJSONSerialization`, or an + array containing one element for each managed property. + + If the object is being created, an exception will be thrown if any required properties + are not present and those properties were not defined with default values. + + If the `value` argument is a Realm object already managed by the given Realm, the + argument's type is the same as the receiver, and the objects have identical values for + their managed properties, this method does nothing. + + If the object is being updated, each property defined in its schema will be set by copying from + `value` using key-value coding. If the `value` argument does not respond to `valueForKey:` for a + given property name (or getter name, if defined), that value will remain untouched. + Nullable properties on the object can be set to nil by using `NSNull` as the updated value. + Each property is set even if the existing value is the same as the new value being set, and + notifications will report them all being changed. See `createOrUpdateModifiedInRealm:withValue:` + for a version of this function which only sets the values which have changed. + + If the `value` argument is an array, all properties must be present, valid and in the same + order as the properties defined in the model. + + @param realm The Realm which should own the object. + @param value The value used to populate the object. + + @see `defaultPropertyValues`, `primaryKey` + */ ++ (instancetype)createOrUpdateInRealm:(RLMRealm *)realm withValue:(id)value; + +/** + Creates or updates an Realm object within a specified Realm. + + This method may only be called on Realm object types with a primary key defined. If there is already + an object with the same primary key value in the given Realm, its values are updated and the object + is returned. Otherwise this method creates and populates a new instance of this object in the given Realm. + + If nested objects are included in the argument, `createOrUpdateInRealm:withValue:` will be + recursively called on them if they have primary keys, `createInRealm:withValue:` if they do not. + + The `value` argument is used to populate the object. It can be a Realm object, a key-value coding + compliant object, an array or dictionary returned from the methods in `NSJSONSerialization`, or an + array containing one element for each managed property. + + If the object is being created, an exception will be thrown if any required properties + are not present and those properties were not defined with default values. + + If the `value` argument is a Realm object already managed by the given Realm, the + argument's type is the same as the receiver, and the objects have identical values for + their managed properties, this method does nothing. + + If the object is being updated, each property defined in its schema will be set by copying from + `value` using key-value coding. If the `value` argument does not respond to `valueForKey:` for a + given property name (or getter name, if defined), that value will remain untouched. + Nullable properties on the object can be set to nil by using `NSNull` as the updated value. + Unlike `createOrUpdateInRealm:withValue:`, only properties which have changed in value are + set, and any change notifications produced by this call will report only which properies have + actually changed. + + Checking which properties have changed imposes a small amount of overhead, and so this method + may be slower when all or nearly all of the properties being set have changed. If most or all + of the properties being set have not changed, this method will be much faster than unconditionally + setting all of them, and will also reduce how much data has to be written to the Realm, saving + both i/o time and disk space. + + If the `value` argument is an array, all properties must be present, valid and in the same + order as the properties defined in the model. + + @param realm The Realm which should own the object. + @param value The value used to populate the object. + + @see `defaultPropertyValues`, `primaryKey` + */ ++ (instancetype)createOrUpdateModifiedInRealm:(RLMRealm *)realm withValue:(id)value; + +#pragma mark - Properties + +/** + The Realm which manages the object, or `nil` if the object is unmanaged. + */ +@property (nonatomic, readonly, nullable) RLMRealm *realm; + +/** + The object schema which lists the managed properties for the object. + */ +@property (nonatomic, readonly) RLMObjectSchema *objectSchema; + +/** + Indicates if the object can no longer be accessed because it is now invalid. + + An object can no longer be accessed if the object has been deleted from the Realm that manages it, or + if `invalidate` is called on that Realm. + */ +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +/** + Indicates if this object is frozen. + + @see `-[RLMObject freeze]` + */ +@property (nonatomic, readonly, getter = isFrozen) BOOL frozen; + + +#pragma mark - Customizing your Objects + +/** + Returns an array of property names for properties which should be indexed. + + Only string, integer, boolean, and `NSDate` properties are supported. + + @return An array of property names. + */ ++ (NSArray *)indexedProperties; + +/** + Override this method to specify the default values to be used for each property. + + @return A dictionary mapping property names to their default values. + */ ++ (nullable NSDictionary *)defaultPropertyValues; + +/** + Override this method to specify the name of a property to be used as the primary key. + + Only properties of types `RLMPropertyTypeString` and `RLMPropertyTypeInt` can be designated as the primary key. + Primary key properties enforce uniqueness for each value whenever the property is set, which incurs minor overhead. + Indexes are created automatically for primary key properties. + + @return The name of the property designated as the primary key. + */ ++ (nullable NSString *)primaryKey; + +/** + Override this method to specify the names of properties to ignore. These properties will not be managed by the Realm + that manages the object. + + @return An array of property names to ignore. + */ ++ (nullable NSArray *)ignoredProperties; + +/** + Override this method to specify the names of properties that are non-optional (i.e. cannot be assigned a `nil` value). + + By default, all properties of a type whose values can be set to `nil` are considered optional properties. + To require that an object in a Realm always store a non-`nil` value for a property, + add the name of the property to the array returned from this method. + + Properties of `RLMObject` type cannot be non-optional. Array and `NSNumber` properties + can be non-optional, but there is no reason to do so: arrays do not support storing nil, and + if you want a non-optional number you should instead use the primitive type. + + @return An array of property names that are required. + */ ++ (NSArray *)requiredProperties; + +/** + Override this method to provide information related to properties containing linking objects. + + Each property of type `RLMLinkingObjects` must have a key in the dictionary returned by this method consisting + of the property name. The corresponding value must be an instance of `RLMPropertyDescriptor` that describes the class + and property that the property is linked to. + + return @{ @"owners": [RLMPropertyDescriptor descriptorWithClass:Owner.class propertyName:@"dogs"] }; + + @return A dictionary mapping property names to `RLMPropertyDescriptor` instances. + */ ++ (NSDictionary *)linkingObjectsProperties; + +#pragma mark - Getting & Querying Objects from the Default Realm + +/** + Returns all objects of this object type from the default Realm. + + @return An `RLMResults` containing all objects of this type in the default Realm. + */ ++ (RLMResults *)allObjects; + +/** + Returns all objects of this object type matching the given predicate from the default Realm. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + + @return An `RLMResults` containing all objects of this type in the default Realm that match the given predicate. + */ ++ (RLMResults *)objectsWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: ++ (RLMResults<__kindof RLMObject *> *)objectsWhere:(NSString *)predicateFormat args:(va_list)args; + + +/** + Returns all objects of this object type matching the given predicate from the default Realm. + + @param predicate The predicate with which to filter the objects. + + @return An `RLMResults` containing all objects of this type in the default Realm that match the given predicate. + */ ++ (RLMResults *)objectsWithPredicate:(nullable NSPredicate *)predicate; + +/** + Retrieves the single instance of this object type with the given primary key from the default Realm. + + Returns the object from the default Realm which has the given primary key, or + `nil` if the object does not exist. This is slightly faster than the otherwise + equivalent `[[SubclassName objectsWhere:@"primaryKeyPropertyName = %@", key] firstObject]`. + + This method requires that `primaryKey` be overridden on the receiving subclass. + + @return An object of this object type, or `nil` if an object with the given primary key does not exist. + @see `-primaryKey` + */ ++ (nullable instancetype)objectForPrimaryKey:(nullable id)primaryKey NS_SWIFT_NAME(object(forPrimaryKey:)); + + +#pragma mark - Querying Specific Realms + +/** + Returns all objects of this object type from the specified Realm. + + @param realm The Realm to query. + + @return An `RLMResults` containing all objects of this type in the specified Realm. + */ ++ (RLMResults *)allObjectsInRealm:(RLMRealm *)realm; + +/** + Returns all objects of this object type matching the given predicate from the specified Realm. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + @param realm The Realm to query. + + @return An `RLMResults` containing all objects of this type in the specified Realm that match the given predicate. + */ ++ (RLMResults *)objectsInRealm:(RLMRealm *)realm where:(NSString *)predicateFormat, ...; + +/// :nodoc: ++ (RLMResults<__kindof RLMObject *> *)objectsInRealm:(RLMRealm *)realm where:(NSString *)predicateFormat args:(va_list)args; + +/** + Returns all objects of this object type matching the given predicate from the specified Realm. + + @param predicate A predicate to use to filter the elements. + @param realm The Realm to query. + + @return An `RLMResults` containing all objects of this type in the specified Realm that match the given predicate. + */ ++ (RLMResults *)objectsInRealm:(RLMRealm *)realm withPredicate:(nullable NSPredicate *)predicate; + +/** + Retrieves the single instance of this object type with the given primary key from the specified Realm. + + Returns the object from the specified Realm which has the given primary key, or + `nil` if the object does not exist. This is slightly faster than the otherwise + equivalent `[[SubclassName objectsInRealm:realm where:@"primaryKeyPropertyName = %@", key] firstObject]`. + + This method requires that `primaryKey` be overridden on the receiving subclass. + + @return An object of this object type, or `nil` if an object with the given primary key does not exist. + @see `-primaryKey` + */ ++ (nullable instancetype)objectInRealm:(RLMRealm *)realm forPrimaryKey:(nullable id)primaryKey NS_SWIFT_NAME(object(in:forPrimaryKey:)); + +#pragma mark - Notifications + +/** + A callback block for `RLMObject` notifications. + + If the object is deleted from the managing Realm, the block is called with + `deleted` set to `YES` and the other two arguments are `nil`. The block will + never be called again after this. + + If the object is modified, the block will be called with `deleted` set to + `NO`, a `nil` error, and an array of `RLMPropertyChange` objects which + indicate which properties of the objects were modified. + + `error` is always `nil` and will be removed in a future version. + */ +typedef void (^RLMObjectChangeBlock)(BOOL deleted, + NSArray *_Nullable changes, + NSError *_Nullable error); + +/** + Registers a block to be called each time the object changes. + + The block will be asynchronously called after each write transaction which + deletes the object or modifies any of the managed properties of the object, + including self-assignments that set a property to its existing value. + + For write transactions performed on different threads or in different + processes, the block will be called when the managing Realm is + (auto)refreshed to a version including the changes, while for local write + transactions it will be called at some point in the future after the write + transaction is committed. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When notifications + can't be delivered instantly, multiple notifications may be coalesced into a + single notification. + + Unlike with `RLMArray` and `RLMResults`, there is no "initial" callback made + after you add a new notification block. + + Only objects which are managed by a Realm can be observed in this way. You + must retain the returned token for as long as you want updates to be sent to + the block. To stop receiving updates, call `-invalidate` on the token. + + It is safe to capture a strong reference to the observed object within the + callback block. There is no retain cycle due to that the callback is retained + by the returned token and not by the object itself. + + @warning This method cannot be called during a write transaction, when the + containing Realm is read-only, or on an unmanaged object. + + @param block The block to be called whenever a change occurs. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(RLMObjectChangeBlock)block; + +/** + Registers a block to be called each time the object changes. + + The block will be asynchronously called after each write transaction which + deletes the object or modifies any of the managed properties of the object, + including self-assignments that set a property to its existing value. + + For write transactions performed on different threads or in different + processes, the block will be called when the managing Realm is + (auto)refreshed to a version including the changes, while for local write + transactions it will be called at some point in the future after the write + transaction is committed. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + Unlike with `RLMArray` and `RLMResults`, there is no "initial" callback made + after you add a new notification block. + + Only objects which are managed by a Realm can be observed in this way. You + must retain the returned token for as long as you want updates to be sent to + the block. To stop receiving updates, call `-invalidate` on the token. + + It is safe to capture a strong reference to the observed object within the + callback block. There is no retain cycle due to that the callback is retained + by the returned token and not by the object itself. + + @warning This method cannot be called during a write transaction, when the + containing Realm is read-only, or on an unmanaged object. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(RLMObjectChangeBlock)block queue:(dispatch_queue_t)queue; + +/** + Registers a block to be called each time the object changes. + + The block will be asynchronously called after each write transaction which + deletes the object or modifies any of the managed properties of the object, + including self-assignments that set a property to its existing value. + + For write transactions performed on different threads or in different + processes, the block will be called when the managing Realm is + (auto)refreshed to a version including the changes, while for local write + transactions it will be called at some point in the future after the write + transaction is committed. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + Unlike with `RLMArray` and `RLMResults`, there is no "initial" callback made + after you add a new notification block. + + Only objects which are managed by a Realm can be observed in this way. You + must retain the returned token for as long as you want updates to be sent to + the block. To stop receiving updates, call `-invalidate` on the token. + + It is safe to capture a strong reference to the observed object within the + callback block. There is no retain cycle due to that the callback is retained + by the returned token and not by the object itself. + + @warning This method cannot be called during a write transaction, when the + containing Realm is read-only, or on an unmanaged object. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(RLMObjectChangeBlock)block keyPaths:(NSArray *)keyPaths queue:(dispatch_queue_t)queue; + +/** + Registers a block to be called each time the object changes. + + The block will be asynchronously called after each write transaction which + deletes the object or modifies any of the managed properties of the object, + including self-assignments that set a property to its existing value. + + For write transactions performed on different threads or in different + processes, the block will be called when the managing Realm is + (auto)refreshed to a version including the changes, while for local write + transactions it will be called at some point in the future after the write + transaction is committed. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + Unlike with `RLMArray` and `RLMResults`, there is no "initial" callback made + after you add a new notification block. + + Only objects which are managed by a Realm can be observed in this way. You + must retain the returned token for as long as you want updates to be sent to + the block. To stop receiving updates, call `-invalidate` on the token. + + It is safe to capture a strong reference to the observed object within the + callback block. There is no retain cycle due to that the callback is retained + by the returned token and not by the object itself. + + @warning This method cannot be called during a write transaction, when the + containing Realm is read-only, or on an unmanaged object. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(RLMObjectChangeBlock)block keyPaths:(NSArray *)keyPaths; + + +#pragma mark - Other Instance Methods + +/** + Returns YES if another Realm object instance points to the same object as the receiver in the Realm managing + the receiver. + + For frozen objects and object types with a primary key, `isEqual:` is + overridden to use the same logic as this method (along with a corresponding + implementation for `hash`). Non-frozen objects without primary keys use + pointer identity for `isEqual:` and `hash`. + + @param object The object to compare the receiver to. + + @return Whether the object represents the same object as the receiver. + */ +- (BOOL)isEqualToObject:(RLMObject *)object; + +/** + Returns a frozen (immutable) snapshot of this object. + + The frozen copy is an immutable object which contains the same data as this + object currently contains, but will not update when writes are made to the + containing Realm. Unlike live objects, frozen objects can be accessed from any + thread. + + - warning: Holding onto a frozen object for an extended period while performing write + transaction on the Realm may result in the Realm file growing to large sizes. See + `Realm.Configuration.maximumNumberOfActiveVersions` for more information. + - warning: This method can only be called on a managed object. + */ +- (instancetype)freeze NS_RETURNS_RETAINED; + +/** + Returns a live (mutable) reference of this object. + + This method creates a managed accessor to a live copy of the same frozen object. + Will return self if called on an already live object. + */ +- (instancetype)thaw; + +#pragma mark - Dynamic Accessors + +/// :nodoc: +- (nullable id)objectForKeyedSubscript:(NSString *)key; + +/// :nodoc: +- (void)setObject:(nullable id)obj forKeyedSubscript:(NSString *)key; + +@end + +/** + Information about a specific property which changed in an `RLMObject` change notification. + */ +@interface RLMPropertyChange : NSObject + +/** + The name of the property which changed. + */ +@property (nonatomic, readonly, strong) NSString *name; + +/** + The value of the property before the change occurred. This will always be `nil` + if the change happened on the same thread as the notification and for `RLMArray` + properties. + + For object properties this will give the object which was previously linked to, + but that object will have its new values and not the values it had before the + changes. This means that `previousValue` may be a deleted object, and you will + need to check `invalidated` before accessing any of its properties. + */ +@property (nonatomic, readonly, strong, nullable) id previousValue; + +/** + The value of the property after the change occurred. This will always be `nil` + for `RLMArray` properties. + */ +@property (nonatomic, readonly, strong, nullable) id value; +@end + +#pragma mark - RLMArray Property Declaration + +/** + Properties on `RLMObject`s of type `RLMArray` must have an associated type. A type is associated + with an `RLMArray` property by defining a protocol for the object type that the array should contain. + To define the protocol for an object, you can use the macro RLM_ARRAY_TYPE: + + RLM_ARRAY_TYPE(ObjectType) + ... + @property RLMArray *arrayOfObjectTypes; + */ +#define RLM_ARRAY_TYPE(RLM_OBJECT_SUBCLASS)\ +__attribute__((deprecated("RLM_ARRAY_TYPE has been deprecated. Use RLM_COLLECTION_TYPE instead."))) \ +@protocol RLM_OBJECT_SUBCLASS \ +@end + +/** + Properties on `RLMObject`s of type `RLMSet` / `RLMArray` must have an associated type. A type is associated + with an `RLMSet` / `RLMArray` property by defining a protocol for the object type that the array should contain. + To define the protocol for an object, you can use the macro RLM_COLLECTION_TYPE: + + RLM_COLLECTION_TYPE(ObjectType) + ... + @property RLMSet *setOfObjectTypes; + @property RLMArray *arrayOfObjectTypes; + */ +#define RLM_COLLECTION_TYPE(RLM_OBJECT_SUBCLASS)\ +@protocol RLM_OBJECT_SUBCLASS \ +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMObjectBase.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMObjectBase.h new file mode 100644 index 000000000..7e9c83c8f --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMObjectBase.h @@ -0,0 +1,40 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/// :nodoc: +@interface RLMObjectBase : NSObject + +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +- (instancetype)init NS_DESIGNATED_INITIALIZER; + ++ (NSString *)className; + +// Returns whether the class is included in the default set of classes managed by a Realm. ++ (BOOL)shouldIncludeInDefaultSchema; + ++ (nullable NSString *)_realmObjectName; ++ (nullable NSDictionary *)_realmColumnNames; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMObjectBase_Dynamic.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMObjectBase_Dynamic.h new file mode 100644 index 000000000..fb74a5b27 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMObjectBase_Dynamic.h @@ -0,0 +1,82 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMObjectSchema, RLMRealm; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +/** + Returns the Realm that manages the object, if one exists. + + @warning This function is useful only in specialized circumstances, for example, when building components + that integrate with Realm. If you are simply building an app on Realm, it is + recommended to retrieve the Realm that manages the object via `RLMObject`. + + @param object An `RLMObjectBase` obtained via a Swift `Object` or `RLMObject`. + + @return The Realm which manages this object. Returns `nil `for unmanaged objects. + */ +FOUNDATION_EXTERN RLMRealm * _Nullable RLMObjectBaseRealm(RLMObjectBase * _Nullable object); + +/** + Returns an `RLMObjectSchema` which describes the managed properties of the object. + + @warning This function is useful only in specialized circumstances, for example, when building components + that integrate with Realm. If you are simply building an app on Realm, it is + recommended to retrieve `objectSchema` via `RLMObject`. + + @param object An `RLMObjectBase` obtained via a Swift `Object` or `RLMObject`. + + @return The object schema which lists the managed properties for the object. + */ +FOUNDATION_EXTERN RLMObjectSchema * _Nullable RLMObjectBaseObjectSchema(RLMObjectBase * _Nullable object); + +/** + Returns the object corresponding to a key value. + + @warning This function is useful only in specialized circumstances, for example, when building components + that integrate with Realm. If you are simply building an app on Realm, it is + recommended to retrieve key values via `RLMObject`. + + @warning Will throw an `NSUndefinedKeyException` if `key` is not present on the object. + + @param object An `RLMObjectBase` obtained via a Swift `Object` or `RLMObject`. + @param key The name of the property. + + @return The object for the property requested. + */ +FOUNDATION_EXTERN id _Nullable RLMObjectBaseObjectForKeyedSubscript(RLMObjectBase * _Nullable object, NSString *key); + +/** + Sets a value for a key on the object. + + @warning This function is useful only in specialized circumstances, for example, when building components + that integrate with Realm. If you are simply building an app on Realm, it is + recommended to set key values via `RLMObject`. + + @warning Will throw an `NSUndefinedKeyException` if `key` is not present on the object. + + @param object An `RLMObjectBase` obtained via a Swift `Object` or `RLMObject`. + @param key The name of the property. + @param obj The object to set as the value of the key. + */ +FOUNDATION_EXTERN void RLMObjectBaseSetObjectForKeyedSubscript(RLMObjectBase * _Nullable object, NSString *key, id _Nullable obj); + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMObjectId.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMObjectId.h new file mode 100644 index 000000000..32ef7b047 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMObjectId.h @@ -0,0 +1,79 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** + A 12-byte (probably) unique object identifier. + + ObjectIds are similar to a GUID or a UUID, and can be used to uniquely identify + objects without a centralized ID generator. An ObjectID consists of: + + 1. A 4 byte timestamp measuring the creation time of the ObjectId in seconds + since the Unix epoch. + 2. A 5 byte random value + 3. A 3 byte counter, initialized to a random value. + + ObjectIds are intended to be fast to generate. Sorting by an ObjectId field + will typically result in the objects being sorted in creation order. + */ +RLM_SWIFT_SENDABLE // immutable +@interface RLMObjectId : NSObject +/// Creates a new randomly-initialized ObjectId. ++ (nonnull instancetype)objectId NS_SWIFT_NAME(generate()); + +/// Creates a new zero-initialized ObjectId. +- (instancetype)init; + +/// Creates a new ObjectId from the given 24-byte hexadecimal string. +/// +/// Returns `nil` and sets `error` if the string is not 24 characters long or +/// contains any characters other than 0-9a-fA-F. +/// +/// @param string The string to parse. +- (nullable instancetype)initWithString:(NSString *)string + error:(NSError **)error; + +/// Creates a new ObjectId using the given date, machine identifier, process identifier. +/// +/// @param timestamp A timestamp as NSDate. +/// @param machineIdentifier The machine identifier. +/// @param processIdentifier The process identifier. +- (instancetype)initWithTimestamp:(NSDate *)timestamp + machineIdentifier:(int)machineIdentifier + processIdentifier:(int)processIdentifier; + +/// Comparision operator to check if the right hand side is greater than the current value. +- (BOOL)isGreaterThan:(nullable RLMObjectId *)objectId; +/// Comparision operator to check if the right hand side is greater than or equal to the current value. +- (BOOL)isGreaterThanOrEqualTo:(nullable RLMObjectId *)objectId; +/// Comparision operator to check if the right hand side is less than the current value. +- (BOOL)isLessThan:(nullable RLMObjectId *)objectId; +/// Comparision operator to check if the right hand side is less than or equal to the current value. +- (BOOL)isLessThanOrEqualTo:(nullable RLMObjectId *)objectId; + +/// Get the ObjectId as a 24-character hexadecimal string. +@property (nonatomic, readonly) NSString *stringValue; +/// Get the timestamp for the RLMObjectId +@property (nonatomic, readonly) NSDate *timestamp; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMObjectSchema.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMObjectSchema.h new file mode 100644 index 000000000..9c4666b7c --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMObjectSchema.h @@ -0,0 +1,83 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMProperty; + +/** + This class represents Realm model object schemas. + + When using Realm, `RLMObjectSchema` instances allow performing migrations and + introspecting the database's schema. + + Object schemas map to tables in the core database. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // not actually immutable, but the public API kinda is +@interface RLMObjectSchema : NSObject + +#pragma mark - Properties + +/** + An array of `RLMProperty` instances representing the managed properties of a class described by the schema. + + @see `RLMProperty` + */ +@property (nonatomic, readonly, copy) NSArray *properties; + +/** + The name of the class the schema describes. + */ +@property (nonatomic, readonly) NSString *className; + +/** + The property which serves as the primary key for the class the schema describes, if any. + */ +@property (nonatomic, readonly, nullable) RLMProperty *primaryKeyProperty; + +/** + Whether this object type is embedded. + */ +@property (nonatomic, readonly) BOOL isEmbedded; + +/** + Whether this object is asymmetric. + */ +@property (nonatomic, readonly) BOOL isAsymmetric; + +#pragma mark - Methods + +/** + Retrieves an `RLMProperty` object by the property name. + + @param propertyName The property's name. + + @return An `RLMProperty` object, or `nil` if there is no property with the given name. + */ +- (nullable RLMProperty *)objectForKeyedSubscript:(NSString *)propertyName; + +/** + Returns whether two `RLMObjectSchema` instances are equal. + */ +- (BOOL)isEqualToObjectSchema:(RLMObjectSchema *)objectSchema; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMProperty.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMProperty.h new file mode 100644 index 000000000..7f2594d3b --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMProperty.h @@ -0,0 +1,149 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/// :nodoc: +@protocol RLMInt @end +/// :nodoc: +@protocol RLMBool @end +/// :nodoc: +@protocol RLMDouble @end +/// :nodoc: +@protocol RLMFloat @end +/// :nodoc: +@protocol RLMString @end +/// :nodoc: +@protocol RLMDate @end +/// :nodoc: +@protocol RLMData @end +/// :nodoc: +@protocol RLMDecimal128 @end +/// :nodoc: +@protocol RLMObjectId @end +/// :nodoc: +@protocol RLMUUID @end + +/// :nodoc: +@interface NSNumber () +@end + +/** + `RLMProperty` instances represent properties managed by a Realm in the context + of an object schema. Such properties may be persisted to a Realm file or + computed from other data from the Realm. + + When using Realm, `RLMProperty` instances allow performing migrations and + introspecting the database's schema. + + These property instances map to columns in the core database. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // not actually immutable, but the public API kinda is +@interface RLMProperty : NSObject + +#pragma mark - Properties + +/** + The name of the property. + */ +@property (nonatomic, readonly) NSString *name; + +/** + The type of the property. + + @see `RLMPropertyType` + */ +@property (nonatomic, readonly) RLMPropertyType type; + +/** + Indicates whether this property is indexed. + + @see `RLMObject` + */ +@property (nonatomic, readonly) BOOL indexed; + +/** + For `RLMObject` and `RLMCollection` properties, the name of the class of object stored in the property. + */ +@property (nonatomic, readonly, copy, nullable) NSString *objectClassName; + +/** + For linking objects properties, the property name of the property the linking objects property is linked to. + */ +@property (nonatomic, readonly, copy, nullable) NSString *linkOriginPropertyName; + +/** + Indicates whether this property is optional. + */ +@property (nonatomic, readonly) BOOL optional; + +/** + Indicates whether this property is an array. + */ +@property (nonatomic, readonly) BOOL array; + +/** + Indicates whether this property is a set. + */ +@property (nonatomic, readonly) BOOL set; + +/** + Indicates whether this property is a dictionary. + */ +@property (nonatomic, readonly) BOOL dictionary; + +/** + Indicates whether this property is an array or set. + */ +@property (nonatomic, readonly) BOOL collection; + +#pragma mark - Methods + +/** + Returns whether a given property object is equal to the receiver. + */ +- (BOOL)isEqualToProperty:(RLMProperty *)property; + +@end + + +/** + An `RLMPropertyDescriptor` instance represents a specific property on a given class. + */ +RLM_SWIFT_SENDABLE RLM_FINAL +@interface RLMPropertyDescriptor : NSObject + +/** + Creates and returns a property descriptor. + + @param objectClass The class of this property descriptor. + @param propertyName The name of this property descriptor. + */ ++ (instancetype)descriptorWithClass:(Class)objectClass propertyName:(NSString *)propertyName; + +/// The class of the property. +@property (nonatomic, readonly) Class objectClass; + +/// The name of the property. +@property (nonatomic, readonly) NSString *propertyName; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMProviderClient.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMProviderClient.h new file mode 100644 index 000000000..ac649960a --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMProviderClient.h @@ -0,0 +1,40 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMApp; + +/// Base provider client interface. +RLM_SWIFT_SENDABLE +@interface RLMProviderClient : NSObject + +/// The app associated with this provider client. +@property (nonatomic, strong, readonly) RLMApp *app; + +/** + Initialize a provider client with a given app. + @param app The app for this provider client. + */ +- (instancetype)initWithApp:(RLMApp *)app; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMPushClient.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMPushClient.h new file mode 100644 index 000000000..0628c3ada --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMPushClient.h @@ -0,0 +1,47 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMApp, RLMUser; + +/// A block type used to report an error +RLM_SWIFT_SENDABLE // invoked on a backgroun thread +typedef void(^RLMOptionalErrorBlock)(NSError * _Nullable); + +/// A client which can be used to register devices with the server to receive push notificatons +RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class +@interface RLMPushClient : NSObject + +/// The push notification service name the device will be registered with on the server +@property (nonatomic, readonly, nonnull) NSString *serviceName; + +/// Request to register device token to the server +- (void)registerDeviceWithToken:(NSString *)token + user:(RLMUser *)user + completion:(RLMOptionalErrorBlock)completion NS_SWIFT_NAME(registerDevice(token:user:completion:)); + +/// Request to deregister a device for a user +- (void)deregisterDeviceForUser:(RLMUser *)user + completion:(RLMOptionalErrorBlock)completion NS_SWIFT_NAME(deregisterDevice(user:completion:)); + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMRealm+Sync.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMRealm+Sync.h new file mode 100644 index 000000000..ff20e43c2 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMRealm+Sync.h @@ -0,0 +1,38 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2017 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import + +@class RLMResults, RLMSyncSession; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +/// +@interface RLMRealm (Sync) + +/** + Get the RLMSyncSession used by this Realm. Will be nil if this is not a + synchronized Realm. +*/ +@property (nonatomic, nullable, readonly) RLMSyncSession *syncSession; + +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMRealm.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMRealm.h new file mode 100644 index 000000000..0935e5301 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMRealm.h @@ -0,0 +1,962 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMRealmConfiguration, RLMRealm, RLMObject, RLMSchema, RLMMigration, RLMNotificationToken, RLMThreadSafeReference, RLMAsyncOpenTask, RLMSyncSubscriptionSet; + +/** + A callback block for opening Realms asynchronously. + + Returns the Realm if the open was successful, or an error otherwise. + */ +typedef void(^RLMAsyncOpenRealmCallback)(RLMRealm * _Nullable realm, NSError * _Nullable error); + +/// The Id of the asynchronous transaction. +typedef unsigned RLMAsyncTransactionId; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** + An `RLMRealm` instance (also referred to as "a Realm") represents a Realm + database. + + Realms can either be stored on disk (see `+[RLMRealm realmWithURL:]`) or in + memory (see `RLMRealmConfiguration`). + + `RLMRealm` instances are cached internally, and constructing equivalent `RLMRealm` + objects (for example, by using the same path or identifier) multiple times on a single thread + within a single iteration of the run loop will normally return the same + `RLMRealm` object. + + If you specifically want to ensure an `RLMRealm` instance is + destroyed (for example, if you wish to open a Realm, check some property, and + then possibly delete the Realm file and re-open it), place the code which uses + the Realm within an `@autoreleasepool {}` and ensure you have no other + strong references to it. + + @warning Non-frozen `RLMRealm` instances are thread-confined and cannot be + shared across threads or dispatch queues. Trying to do so will cause an + exception to be thrown. You must call this method on each thread you want to + interact with the Realm on. For dispatch queues, this means that you must call + it in each block which is dispatched, as a queue is not guaranteed to run all + of its blocks on the same thread. + */ + +@interface RLMRealm : NSObject + +#pragma mark - Creating & Initializing a Realm + +/** + Obtains an instance of the default Realm. + + The default Realm is used by the `RLMObject` class methods + which do not take an `RLMRealm` parameter, but is otherwise not special. The + default Realm is persisted as *default.realm* under the *Documents* directory of + your Application on iOS, in your application's *Application Support* + directory on macOS, and in the *Cache* directory on tvOS. + + The default Realm is created using the default `RLMRealmConfiguration`, which + can be changed via `+[RLMRealmConfiguration setDefaultConfiguration:]`. + + @return The default `RLMRealm` instance for the current thread. + */ ++ (instancetype)defaultRealm; + +/** + Obtains an instance of the default Realm bound to the given queue. + + Rather than being confined to the thread they are opened on, queue-bound + RLMRealms are confined to the given queue. They can be accessed from any + thread as long as it is from within a block dispatch to the queue, and + notifications will be delivered to the queue instead of a thread's run loop. + + Realms can only be confined to a serial queue. Queue-confined RLMRealm + instances can be obtained when not on that queue, but attempting to do + anything with that instance without first dispatching to the queue will throw + an incorrect thread exception. + + The default Realm is created using the default `RLMRealmConfiguration`, which + can be changed via `+[RLMRealmConfiguration setDefaultConfiguration:]`. + + @param queue A serial dispatch queue to confine the Realm to. + @return The default `RLMRealm` instance for the given queue. + */ ++ (instancetype)defaultRealmForQueue:(dispatch_queue_t)queue; + +/** + Obtains an `RLMRealm` instance with the given configuration. + + @param configuration A configuration object to use when creating the Realm. + @param error If an error occurs, upon return contains an `NSError` object + that describes the problem. If you are not interested in + possible errors, pass in `NULL`. + + @return An `RLMRealm` instance. + */ ++ (nullable instancetype)realmWithConfiguration:(RLMRealmConfiguration *)configuration error:(NSError **)error; + +/** + Obtains an `RLMRealm` instance with the given configuration bound to the given queue. + + Rather than being confined to the thread they are opened on, queue-bound + RLMRealms are confined to the given queue. They can be accessed from any + thread as long as it is from within a block dispatch to the queue, and + notifications will be delivered to the queue instead of a thread's run loop. + + Realms can only be confined to a serial queue. Queue-confined RLMRealm + instances can be obtained when not on that queue, but attempting to do + anything with that instance without first dispatching to the queue will throw + an incorrect thread exception. + + @param configuration A configuration object to use when creating the Realm. + @param queue A serial dispatch queue to confine the Realm to. + @param error If an error occurs, upon return contains an `NSError` object + that describes the problem. If you are not interested in + possible errors, pass in `NULL`. + + @return An `RLMRealm` instance. + */ ++ (nullable instancetype)realmWithConfiguration:(RLMRealmConfiguration *)configuration + queue:(nullable dispatch_queue_t)queue + error:(NSError **)error; + +/** + Obtains an `RLMRealm` instance persisted at a specified file URL. + + @param fileURL The local URL of the file the Realm should be saved at. + + @return An `RLMRealm` instance. + */ ++ (instancetype)realmWithURL:(NSURL *)fileURL; + +/** + Asynchronously open a Realm and deliver it to a block on the given queue. + + Opening a Realm asynchronously will perform all work needed to get the Realm to + a usable state (such as running potentially time-consuming migrations) on a + background thread before dispatching to the given queue. In addition, + synchronized Realms wait for all remote content available at the time the + operation began to be downloaded and available locally. + + The Realm passed to the callback function is confined to the callback queue as + if `-[RLMRealm realmWithConfiguration:queue:error]` was used. + + @param configuration A configuration object to use when opening the Realm. + @param callbackQueue The serial dispatch queue on which the callback should be run. + @param callback A callback block. If the Realm was successfully opened, + it will be passed in as an argument. + Otherwise, an `NSError` describing what went wrong will be + passed to the block instead. + */ ++ (RLMAsyncOpenTask *)asyncOpenWithConfiguration:(RLMRealmConfiguration *)configuration + callbackQueue:(dispatch_queue_t)callbackQueue + callback:(RLMAsyncOpenRealmCallback)callback; + +/** + The `RLMSchema` used by the Realm. + */ +@property (nonatomic, readonly) RLMSchema *schema; + +/** + Indicates if the Realm is currently engaged in a write transaction. + + @warning Do not simply check this property and then start a write transaction whenever an object needs to be + created, updated, or removed. Doing so might cause a large number of write transactions to be created, + degrading performance. Instead, always prefer performing multiple updates during a single transaction. + */ +@property (nonatomic, readonly) BOOL inWriteTransaction; + +/** + The `RLMRealmConfiguration` object that was used to create this `RLMRealm` instance. + */ +@property (nonatomic, readonly) RLMRealmConfiguration *configuration; + +/** + Indicates if this Realm contains any objects. + */ +@property (nonatomic, readonly) BOOL isEmpty; + +/** + Indicates if this Realm is frozen. + + @see `-[RLMRealm freeze]` + */ +@property (nonatomic, readonly, getter=isFrozen) BOOL frozen; + +/** + Returns a frozen (immutable) snapshot of this Realm. + + A frozen Realm is an immutable snapshot view of a particular version of a + Realm's data. Unlike normal RLMRealm instances, it does not live-update to + reflect writes made to the Realm, and can be accessed from any thread. Writing + to a frozen Realm is not allowed, and attempting to begin a write transaction + will throw an exception. + + All objects and collections read from a frozen Realm will also be frozen. + */ +- (RLMRealm *)freeze NS_RETURNS_RETAINED; + +/** + Returns a live reference of this Realm. + + All objects and collections read from the returned Realm will no longer be frozen. + This method will return `self` if it is not already frozen. + */ +- (RLMRealm *)thaw; + +#pragma mark - File Management + +/** + Writes a compacted and optionally encrypted copy of the Realm to the given local URL. + + The destination file cannot already exist. + + Note that if this method is called from within a write transaction, the + *current* data is written, not the data from the point when the previous write + transaction was committed. + + @param fileURL Local URL to save the Realm to. + @param key Optional 64-byte encryption key to encrypt the new file with. + @param error If an error occurs, upon return contains an `NSError` object + that describes the problem. If you are not interested in + possible errors, pass in `NULL`. + + @return `YES` if the Realm was successfully written to disk, `NO` if an error occurred. + */ +- (BOOL)writeCopyToURL:(NSURL *)fileURL encryptionKey:(nullable NSData *)key error:(NSError **)error; + +/** + Writes a copy of the Realm to a given location specified by a given configuration. + + If the configuration supplied is derived from a `RLMUser` then this Realm will be copied with + sync functionality enabled. + + The destination file cannot already exist. + + @param configuration A Realm Configuration. + @param error If an error occurs, upon return contains an `NSError` object + that describes the problem. If you are not interested in + possible errors, pass in `NULL`. + + @return `YES` if the Realm was successfully written to disk, `NO` if an error occurred. + */ +- (BOOL)writeCopyForConfiguration:(RLMRealmConfiguration *)configuration error:(NSError **)error; + +/** + Checks if the Realm file for the given configuration exists locally on disk. + + For non-synchronized, non-in-memory Realms, this is equivalent to + `-[NSFileManager.defaultManager fileExistsAtPath:config.path]`. For + synchronized Realms, it takes care of computing the actual path on disk based + on the server, virtual path, and user as is done when opening the Realm. + + @param config A Realm configuration to check the existence of. + @return YES if the Realm file for the given configuration exists on disk, NO otherwise. + */ ++ (BOOL)fileExistsForConfiguration:(RLMRealmConfiguration *)config; + +/** + Deletes the local Realm file and associated temporary files for the given configuration. + + This deletes the ".realm", ".note" and ".management" files which would be + created by opening the Realm with the given configuration. It does not delete + the ".lock" file (which contains no persisted data and is recreated from + scratch every time the Realm file is opened). + + The Realm must not be currently open on any thread or in another process. If + it is, this will return NO and report the error RLMErrorAlreadyOpen. Attempting to open + the Realm on another thread while the deletion is happening will block (and + then create a new Realm and open that afterwards). + + If the Realm already does not exist this will return `NO` and report the error NSFileNoSuchFileError; + + @param config A Realm configuration identifying the Realm to be deleted. + @return YES if any files were deleted, NO otherwise. + */ ++ (BOOL)deleteFilesForConfiguration:(RLMRealmConfiguration *)config error:(NSError **)error + __attribute__((swift_error(nonnull_error))); + +#pragma mark - Notifications + +/** + The type of a block to run whenever the data within the Realm is modified. + + @see `-[RLMRealm addNotificationBlock:]` + */ +typedef void (^RLMNotificationBlock)(RLMNotification notification, RLMRealm *realm); + +#pragma mark - Receiving Notification when a Realm Changes + +/** + Adds a notification handler for changes in this Realm, and returns a notification token. + + Notification handlers are called after each write transaction is committed, + either on the current thread or other threads. + + Handler blocks are called on the same thread that they were added on, and may + only be added on threads which are currently within a run loop. Unless you are + specifically creating and running a run loop on a background thread, this will + normally only be the main thread. + + The block has the following definition: + + typedef void(^RLMNotificationBlock)(RLMNotification notification, RLMRealm *realm); + + It receives the following parameters: + + - `NSString` \***notification**: The name of the incoming notification. See + `RLMRealmNotification` for information on what + notifications are sent. + - `RLMRealm` \***realm**: The Realm for which this notification occurred. + + @param block A block which is called to process Realm notifications. + + @return A token object which must be retained as long as you wish to continue + receiving change notifications. + */ +- (RLMNotificationToken *)addNotificationBlock:(RLMNotificationBlock)block __attribute__((warn_unused_result)); + +#pragma mark - Writing to a Realm + +/** + Begins a write transaction on the Realm. + + Only one write transaction can be open at a time for each Realm file. Write + transactions cannot be nested, and trying to begin a write transaction on a + Realm which is already in a write transaction will throw an exception. Calls to + `beginWriteTransaction` from `RLMRealm` instances for the same Realm file in + other threads or other processes will block until the current write transaction + completes or is cancelled. + + Before beginning the write transaction, `beginWriteTransaction` updates the + `RLMRealm` instance to the latest Realm version, as if `refresh` had been + called, and generates notifications if applicable. This has no effect if the + Realm was already up to date. + + It is rarely a good idea to have write transactions span multiple cycles of + the run loop, but if you do wish to do so you will need to ensure that the + Realm participating in the write transaction is kept alive until the write + transaction is committed. + */ +- (void)beginWriteTransaction; + +/** + Commits all write operations in the current write transaction, and ends the + transaction. + + After saving the changes, all notification blocks registered on this specific + `RLMRealm` instance are invoked synchronously. Notification blocks registered + on other threads or on collections are invoked asynchronously. If you do not + want to receive a specific notification for this write tranaction, see + `commitWriteTransactionWithoutNotifying:error:`. + + This method can fail if there is insufficient disk space available to save the + writes made, or due to unexpected i/o errors. This version of the method throws + an exception when errors occur. Use the version with a `NSError` out parameter + instead if you wish to handle errors. + + @warning This method may only be called during a write transaction. + */ +- (void)commitWriteTransaction NS_SWIFT_UNAVAILABLE(""); + +/** + Commits all write operations in the current write transaction, and ends the + transaction. + + After saving the changes, all notification blocks registered on this specific + `RLMRealm` instance are invoked synchronously. Notification blocks registered + on other threads or on collections are invoked asynchronously. If you do not + want to receive a specific notification for this write tranaction, see + `commitWriteTransactionWithoutNotifying:error:`. + + This method can fail if there is insufficient disk space available to save the + writes made, or due to unexpected i/o errors. + + @warning This method may only be called during a write transaction. + + @param error If an error occurs, upon return contains an `NSError` object + that describes the problem. If you are not interested in + possible errors, pass in `NULL`. + + @return Whether the transaction succeeded. + */ +- (BOOL)commitWriteTransaction:(NSError **)error; + +/** + Commits all write operations in the current write transaction, without + notifying specific notification blocks of the changes. + + After saving the changes, all notification blocks registered on this specific + `RLMRealm` instance are invoked synchronously. Notification blocks registered + on other threads or on collections are scheduled to be invoked asynchronously. + + You can skip notifiying specific notification blocks about the changes made + in this write transaction by passing in their associated notification tokens. + This is primarily useful when the write transaction is saving changes already + made in the UI and you do not want to have the notification block attempt to + re-apply the same changes. + + The tokens passed to this method must be for notifications for this specific + `RLMRealm` instance. Notifications for different threads cannot be skipped + using this method. + + This method can fail if there is insufficient disk space available to save the + writes made, or due to unexpected i/o errors. + + @warning This method may only be called during a write transaction. + + @param tokens An array of notification tokens which were returned from adding + callbacks which you do not want to be notified for the changes + made in this write transaction. + @param error If an error occurs, upon return contains an `NSError` object + that describes the problem. If you are not interested in + possible errors, pass in `NULL`. + + @return Whether the transaction succeeded. + */ +- (BOOL)commitWriteTransactionWithoutNotifying:(NSArray *)tokens error:(NSError **)error; + +/** + Reverts all writes made during the current write transaction and ends the transaction. + + This rolls back all objects in the Realm to the state they were in at the + beginning of the write transaction, and then ends the transaction. + + This restores the data for deleted objects, but does not revive invalidated + object instances. Any `RLMObject`s which were added to the Realm will be + invalidated rather than becoming unmanaged. + Given the following code: + + ObjectType *oldObject = [[ObjectType objectsWhere:@"..."] firstObject]; + ObjectType *newObject = [[ObjectType alloc] init]; + + [realm beginWriteTransaction]; + [realm addObject:newObject]; + [realm deleteObject:oldObject]; + [realm cancelWriteTransaction]; + + Both `oldObject` and `newObject` will return `YES` for `isInvalidated`, + but re-running the query which provided `oldObject` will once again return + the valid object. + + KVO observers on any objects which were modified during the transaction will + be notified about the change back to their initial values, but no other + notifications are produced by a cancelled write transaction. + + @warning This method may only be called during a write transaction. + */ +- (void)cancelWriteTransaction; + +/** + Performs actions contained within the given block inside a write transaction. + + @see `[RLMRealm transactionWithoutNotifying:block:error:]` + */ +- (void)transactionWithBlock:(__attribute__((noescape)) void(^)(void))block NS_SWIFT_UNAVAILABLE(""); + +/** + Performs actions contained within the given block inside a write transaction. + + @see `[RLMRealm transactionWithoutNotifying:block:error:]` + */ +- (BOOL)transactionWithBlock:(__attribute__((noescape)) void(^)(void))block error:(NSError **)error; + +/** + Performs actions contained within the given block inside a write transaction. + + @see `[RLMRealm transactionWithoutNotifying:block:error:]` + */ +- (void)transactionWithoutNotifying:(NSArray *)tokens block:(__attribute__((noescape)) void(^)(void))block; + +/** + Performs actions contained within the given block inside a write transaction. + + Write transactions cannot be nested, and trying to execute a write transaction + on a Realm which is already participating in a write transaction will throw an + exception. Calls to `transactionWithBlock:` from `RLMRealm` instances in other + threads will block until the current write transaction completes. + + Before beginning the write transaction, `transactionWithBlock:` updates the + `RLMRealm` instance to the latest Realm version, as if `refresh` had been called, and + generates notifications if applicable. This has no effect if the Realm + was already up to date. + + You can skip notifiying specific notification blocks about the changes made + in this write transaction by passing in their associated notification tokens. + This is primarily useful when the write transaction is saving changes already + made in the UI and you do not want to have the notification block attempt to + re-apply the same changes. + + The tokens passed to this method must be for notifications for this specific + `RLMRealm` instance. Notifications for different threads cannot be skipped + using this method. + + @param tokens An array of notification tokens which were returned from adding + callbacks which you do not want to be notified for the changes + made in this write transaction. + @param block The block containing actions to perform. + @param error If an error occurs, upon return contains an `NSError` object + that describes the problem. If you are not interested in + possible errors, pass in `NULL`. + + @return Whether the transaction succeeded. + */ +- (BOOL)transactionWithoutNotifying:(NSArray *)tokens block:(__attribute__((noescape)) void(^)(void))block error:(NSError **)error; + +/** + Indicates if the Realm is currently performing async write operations. + This becomes YES following a call to `beginAsyncWriteTransaction`, + `commitAsyncWriteTransaction`, or `asyncTransactionWithBlock:`, and remains so + until all scheduled async write work has completed. + + @warning If this is `YES`, closing or invalidating the Realm will block until scheduled work has completed. + */ +@property (nonatomic, readonly) BOOL isPerformingAsynchronousWriteOperations; + +/** + Begins an asynchronous write transaction. + This function asynchronously begins a write transaction on a background + thread, and then invokes the block on the original thread or queue once the + transaction has begun. Unlike `beginWriteTransaction`, this does not block the + calling thread if another thread is current inside a write transaction, and + will always return immediately. + Multiple calls to this function (or the other functions which perform + asynchronous write transactions) will queue the blocks to be called in the + same order as they were queued. This includes calls from inside a write + transaction block, which unlike with synchronous transactions are allowed. + + @param block The block containing actions to perform inside the write transaction. + `block` should end by calling `commitAsyncWriteTransaction`, + `commitWriteTransaction` or `cancelWriteTransaction`. + Returning without one of these calls is equivalent to calling `cancelWriteTransaction`. + + @return An id identifying the asynchronous transaction which can be passed to + `cancelAsyncTransaction:` prior to the block being called to cancel + the pending invocation of the block. + */ +- (RLMAsyncTransactionId)beginAsyncWriteTransaction:(void(^)(void))block; + +/** + Asynchronously commits a write transaction. + The call returns immediately allowing the caller to proceed while the I/O is + performed on a dedicated background thread. This can be used regardless of if + the write transaction was begun with `beginWriteTransaction` or + `beginAsyncWriteTransaction`. + + @param completionBlock A block which will be called on the source thread or + queue once the commit has either completed or failed + with an error. + + @param allowGrouping If `YES`, multiple sequential calls to + `commitAsyncWriteTransaction:` may be batched together + and persisted to stable storage in one group. This + improves write performance, particularly when the + individual transactions being batched are small. In the + event of a crash or power failure, either all of the + grouped transactions will be lost or none will, rather + than the usual guarantee that data has been persisted as + soon as a call to commit has returned. + + @return An id identifying the asynchronous transaction commit can be passed to + `cancelAsyncTransaction:` prior to the completion block being called + to cancel the pending invocation of the block. Note that this does + *not* cancel the commit itself. +*/ +- (RLMAsyncTransactionId)commitAsyncWriteTransaction:(nullable void(^)(NSError *_Nullable))completionBlock + allowGrouping:(BOOL)allowGrouping; + +/** + Asynchronously commits a write transaction. + The call returns immediately allowing the caller to proceed while the I/O is + performed on a dedicated background thread. This can be used regardless of if + the write transaction was begun with `beginWriteTransaction` or + `beginAsyncWriteTransaction`. + + @param completionBlock A block which will be called on the source thread or + queue once the commit has either completed or failed + with an error. + + @return An id identifying the asynchronous transaction commit can be passed to + `cancelAsyncTransaction:` prior to the completion block being called + to cancel the pending invocation of the block. Note that this does + *not* cancel the commit itself. +*/ +- (RLMAsyncTransactionId)commitAsyncWriteTransaction:(void(^)(NSError *_Nullable))completionBlock; + +/** + Asynchronously commits a write transaction. + The call returns immediately allowing the caller to proceed while the I/O is + performed on a dedicated background thread. This can be used regardless of if + the write transaction was begun with `beginWriteTransaction` or + `beginAsyncWriteTransaction`. + + @return An id identifying the asynchronous transaction commit can be passed to + `cancelAsyncTransaction:` prior to the completion block being called + to cancel the pending invocation of the block. Note that this does + *not* cancel the commit itself. +*/ +- (RLMAsyncTransactionId)commitAsyncWriteTransaction; + +/** + Cancels a queued block for an asynchronous transaction. + This can cancel a block passed to either an asynchronous begin or an + asynchronous commit. Canceling a begin cancels that transaction entirely, + while canceling a commit merely cancels the invocation of the completion + callback, and the commit will still happen. + Transactions can only be canceled before the block is invoked, and calling + `cancelAsyncTransaction:` from within the block is a no-op. + + @param asyncTransactionId A transaction id from either `beginAsyncWriteTransaction:` or `commitAsyncWriteTransaction:`. +*/ +- (void)cancelAsyncTransaction:(RLMAsyncTransactionId)asyncTransactionId; + +/** + Asynchronously performs actions contained within the given block inside a + write transaction. + The write transaction is begun asynchronously as if calling + `beginAsyncWriteTransaction:`, and by default the transaction is commited + asynchronously after the block completes. You can also explicitly call + `commitWriteTransaction` or `cancelWriteTransaction` from within the block to + synchronously commit or cancel the write transaction. + + @param block The block containing actions to perform. + + @param completionBlock A block which will be called on the source thread or + queue once the commit has either completed or failed + with an error. + + @return An id identifying the asynchronous transaction which can be passed to + `cancelAsyncTransaction:` prior to the block being called to cancel + the pending invocation of the block. +*/ +- (RLMAsyncTransactionId)asyncTransactionWithBlock:(void(^)(void))block onComplete:(nullable void(^)(NSError *))completionBlock; + +/** + Asynchronously performs actions contained within the given block inside a + write transaction. + The write transaction is begun asynchronously as if calling + `beginAsyncWriteTransaction:`, and by default the transaction is commited + asynchronously after the block completes. You can also explicitly call + `commitWriteTransaction` or `cancelWriteTransaction` from within the block to + synchronously commit or cancel the write transaction. + + @param block The block containing actions to perform. + + @return An id identifying the asynchronous transaction which can be passed to + `cancelAsyncTransaction:` prior to the block being called to cancel + the pending invocation of the block. +*/ +- (RLMAsyncTransactionId)asyncTransactionWithBlock:(void(^)(void))block; + +/** + Updates the Realm and outstanding objects managed by the Realm to point to the + most recent data. + + If the version of the Realm is actually changed, Realm and collection + notifications will be sent to reflect the changes. This may take some time, as + collection notifications are prepared on a background thread. As a result, + calling this method on the main thread is not advisable. + + @return Whether there were any updates for the Realm. Note that `YES` may be + returned even if no data actually changed. + */ +- (BOOL)refresh; + +/** + Set this property to `YES` to automatically update this Realm when changes + happen in other threads. + + If set to `YES` (the default), changes made on other threads will be reflected + in this Realm on the next cycle of the run loop after the changes are + committed. If set to `NO`, you must manually call `-refresh` on the Realm to + update it to get the latest data. + + Note that by default, background threads do not have an active run loop and you + will need to manually call `-refresh` in order to update to the latest version, + even if `autorefresh` is set to `YES`. + + Even with this property enabled, you can still call `-refresh` at any time to + update the Realm before the automatic refresh would occur. + + Write transactions will still always advance a Realm to the latest version and + produce local notifications on commit even if autorefresh is disabled. + + Disabling `autorefresh` on a Realm without any strong references to it will not + have any effect, and `autorefresh` will revert back to `YES` the next time the + Realm is created. This is normally irrelevant as it means that there is nothing + to refresh (as managed `RLMObject`s, `RLMArray`s, and `RLMResults` have strong + references to the Realm that manages them), but it means that setting + `RLMRealm.defaultRealm.autorefresh = NO` in + `application:didFinishLaunchingWithOptions:` and only later storing Realm + objects will not work. + + Defaults to `YES`. + */ +@property (nonatomic) BOOL autorefresh; + +/** + Invalidates all `RLMObject`s, `RLMResults`, `RLMLinkingObjects`, and `RLMArray`s managed by the Realm. + + A Realm holds a read lock on the version of the data accessed by it, so + that changes made to the Realm on different threads do not modify or delete the + data seen by this Realm. Calling this method releases the read lock, + allowing the space used on disk to be reused by later write transactions rather + than growing the file. This method should be called before performing long + blocking operations on a background thread on which you previously read data + from the Realm which you no longer need. + + All `RLMObject`, `RLMResults` and `RLMArray` instances obtained from this + `RLMRealm` instance on the current thread are invalidated. `RLMObject`s and `RLMArray`s + cannot be used. `RLMResults` will become empty. The Realm itself remains valid, + and a new read transaction is implicitly begun the next time data is read from the Realm. + + Calling this method multiple times in a row without reading any data from the + Realm, or before ever reading any data from the Realm, is a no-op. + */ +- (void)invalidate; + +#pragma mark - Accessing Objects + +/** + Returns the same object as the one referenced when the `RLMThreadSafeReference` was first created, + but resolved for the current Realm for this thread. Returns `nil` if this object was deleted after + the reference was created. + + @param reference The thread-safe reference to the thread-confined object to resolve in this Realm. + + @warning A `RLMThreadSafeReference` object must be resolved at most once. + Failing to resolve a `RLMThreadSafeReference` will result in the source version of the + Realm being pinned until the reference is deallocated. + An exception will be thrown if a reference is resolved more than once. + + @warning Cannot call within a write transaction. + + @note Will refresh this Realm if the source Realm was at a later version than this one. + + @see `+[RLMThreadSafeReference referenceWithThreadConfined:]` + */ +- (nullable id)resolveThreadSafeReference:(RLMThreadSafeReference *)reference +NS_REFINED_FOR_SWIFT; + +#pragma mark - Adding and Removing Objects from a Realm + +/** + Adds an object to the Realm. + + Once added, this object is considered to be managed by the Realm. It can be retrieved + using the `objectsWhere:` selectors on `RLMRealm` and on subclasses of `RLMObject`. + + When added, all child relationships referenced by this object will also be added to + the Realm if they are not already in it. + + If the object or any related objects are already being managed by a different Realm + an exception will be thrown. Use `-[RLMObject createInRealm:withObject:]` to insert a copy of a managed object + into a different Realm. + + The object to be added must be valid and cannot have been previously deleted + from a Realm (i.e. `isInvalidated` must be `NO`). + + @warning This method may only be called during a write transaction. + + @param object The object to be added to this Realm. + */ +- (void)addObject:(RLMObject *)object; + +/** + Adds all the objects in a collection to the Realm. + + This is the equivalent of calling `addObject:` for every object in a collection. + + @warning This method may only be called during a write transaction. + + @param objects An enumerable collection such as `NSArray`, `RLMArray`, or `RLMResults`, + containing Realm objects to be added to the Realm. + + @see `addObject:` + */ +- (void)addObjects:(id)objects; + +/** + Adds or updates an existing object into the Realm. + + The object provided must have a designated primary key. If no objects exist in the Realm + with the same primary key value, the object is inserted. Otherwise, the existing object is + updated with any changed values. + + As with `addObject:`, the object cannot already be managed by a different + Realm. Use `-[RLMObject createOrUpdateInRealm:withValue:]` to copy values to + a different Realm. + + If there is a property or KVC value on `object` whose value is nil, and it corresponds + to a nullable property on an existing object being updated, that nullable property will + be set to nil. + + @warning This method may only be called during a write transaction. + + @param object The object to be added or updated. + */ +- (void)addOrUpdateObject:(RLMObject *)object; + +/** + Adds or updates all the objects in a collection into the Realm. + + This is the equivalent of calling `addOrUpdateObject:` for every object in a collection. + + @warning This method may only be called during a write transaction. + + @param objects An enumerable collection such as `NSArray`, `RLMArray`, or `RLMResults`, + containing Realm objects to be added to or updated within the Realm. + + @see `addOrUpdateObject:` + */ +- (void)addOrUpdateObjects:(id)objects; + +/** + Deletes an object from the Realm. Once the object is deleted it is considered invalidated. + + @warning This method may only be called during a write transaction. + + @param object The object to be deleted. + */ +- (void)deleteObject:(RLMObject *)object; + +/** + Deletes one or more objects from the Realm. + + This is the equivalent of calling `deleteObject:` for every object in a collection. + + @warning This method may only be called during a write transaction. + + @param objects An enumerable collection such as `NSArray`, `RLMArray`, or `RLMResults`, + containing objects to be deleted from the Realm. + + @see `deleteObject:` + */ +- (void)deleteObjects:(id)objects; + +/** + Deletes all objects from the Realm. + + @warning This method may only be called during a write transaction. + + @see `deleteObject:` + */ +- (void)deleteAllObjects; + +#pragma mark - Sync Subscriptions + +/** + Represents the active subscriptions for this realm, which can be used to add/remove/update + and search flexible sync subscriptions. + Getting the subscriptions from a local or partition-based configured realm will thrown an exception. + + @warning This feature is currently in beta and its API is subject to change. + */ +@property (nonatomic, readonly, nonnull) RLMSyncSubscriptionSet *subscriptions; + + +#pragma mark - Migrations + +/** + The type of a migration block used to migrate a Realm. + + @param migration A `RLMMigration` object used to perform the migration. The + migration object allows you to enumerate and alter any + existing objects which require migration. + + @param oldSchemaVersion The schema version of the Realm being migrated. + */ +RLM_SWIFT_SENDABLE +typedef void (^RLMMigrationBlock)(RLMMigration *migration, uint64_t oldSchemaVersion); + +/** + Returns the schema version for a Realm at a given local URL. + + @param fileURL Local URL to a Realm file. + @param key 64-byte key used to encrypt the file, or `nil` if it is unencrypted. + @param error If an error occurs, upon return contains an `NSError` object + that describes the problem. If you are not interested in + possible errors, pass in `NULL`. + + @return The version of the Realm at `fileURL`, or `RLMNotVersioned` if the version cannot be read. + */ ++ (uint64_t)schemaVersionAtURL:(NSURL *)fileURL encryptionKey:(nullable NSData *)key + error:(NSError **)error +NS_REFINED_FOR_SWIFT; + +/** + Performs the given Realm configuration's migration block on a Realm at the given path. + + This method is called automatically when opening a Realm for the first time and does + not need to be called explicitly. You can choose to call this method to control + exactly when and how migrations are performed. + + @param configuration The Realm configuration used to open and migrate the Realm. + @return The error that occurred while applying the migration, if any. + + @see RLMMigration + */ ++ (BOOL)performMigrationForConfiguration:(RLMRealmConfiguration *)configuration error:(NSError **)error; + +#pragma mark - Unavailable Methods + +/** + RLMRealm instances are cached internally by Realm and cannot be created directly. + + Use `+[RLMRealm defaultRealm]`, `+[RLMRealm realmWithConfiguration:error:]` or + `+[RLMRealm realmWithURL]` to obtain a reference to an RLMRealm. + */ +- (instancetype)init __attribute__((unavailable("Use +defaultRealm, +realmWithConfiguration: or +realmWithURL:."))); + +/** + RLMRealm instances are cached internally by Realm and cannot be created directly. + + Use `+[RLMRealm defaultRealm]`, `+[RLMRealm realmWithConfiguration:error:]` or + `+[RLMRealm realmWithURL]` to obtain a reference to an RLMRealm. + */ ++ (instancetype)new __attribute__((unavailable("Use +defaultRealm, +realmWithConfiguration: or +realmWithURL:."))); + +/// :nodoc: +- (void)addOrUpdateObjectsFromArray:(id)array __attribute__((unavailable("Renamed to -addOrUpdateObjects:."))); + +@end + +// MARK: - RLMNotificationToken + +/** + A token which is returned from methods which subscribe to changes to a Realm. + + Change subscriptions in Realm return an `RLMNotificationToken` instance, + which can be used to unsubscribe from the changes. You must store a strong + reference to the token for as long as you want to continue to receive notifications. + When you wish to stop, call the `-invalidate` method. Notifications are also stopped if + the token is deallocated. + */ +RLM_SWIFT_SENDABLE // is internally thread-safe +@interface RLMNotificationToken : NSObject +/// Stops notifications for the change subscription that returned this token. +/// +/// @return True if the token was previously valid, and false if it was already invalidated. +- (bool)invalidate; + +/// Stops notifications for the change subscription that returned this token. +- (void)stop __attribute__((unavailable("Renamed to -invalidate."))) NS_REFINED_FOR_SWIFT; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMRealmConfiguration.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMRealmConfiguration.h new file mode 100644 index 000000000..d09e5c215 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMRealmConfiguration.h @@ -0,0 +1,197 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2015 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMEventConfiguration, RLMSyncConfiguration; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** + A block called when opening a Realm for the first time during the life + of a process to determine if it should be compacted before being returned + to the user. It is passed the total file size (data + free space) and the total + bytes used by data in the file. + + Return `YES` to indicate that an attempt to compact the file should be made. + The compaction will be skipped if another process is accessing it. + */ +RLM_SWIFT_SENDABLE +typedef BOOL (^RLMShouldCompactOnLaunchBlock)(NSUInteger totalBytes, NSUInteger bytesUsed); + +/** + A block which receives a subscription set instance, that can be used to add an initial set of subscriptions which will be executed + when the Realm is first opened. + */ +RLM_SWIFT_SENDABLE +typedef void(^RLMFlexibleSyncInitialSubscriptionsBlock)(RLMSyncSubscriptionSet * _Nonnull subscriptions); + +/** + An `RLMRealmConfiguration` instance describes the different options used to + create an instance of a Realm. + + `RLMRealmConfiguration` instances are just plain `NSObject`s. Unlike `RLMRealm`s + and `RLMObject`s, they can be freely shared between threads as long as you do not + mutate them. + + Creating configuration objects for class subsets (by setting the + `objectClasses` property) can be expensive. Because of this, you will normally want to + cache and reuse a single configuration object for each distinct configuration rather than + creating a new object each time you open a Realm. + */ +@interface RLMRealmConfiguration : NSObject + +#pragma mark - Default Configuration + +/** + Returns the default configuration used to create Realms when no other + configuration is explicitly specified (i.e. `+[RLMRealm defaultRealm]`). + + @return The default Realm configuration. + */ ++ (instancetype)defaultConfiguration; + +/** + Sets the default configuration to the given `RLMRealmConfiguration`. + + @param configuration The new default Realm configuration. + */ ++ (void)setDefaultConfiguration:(RLMRealmConfiguration *)configuration; + +#pragma mark - Properties + +/// The local URL of the Realm file. Mutually exclusive with `inMemoryIdentifier`; +/// setting one of the two properties will automatically nil out the other. +@property (nonatomic, copy, nullable) NSURL *fileURL; + +/// A string used to identify a particular in-memory Realm. Mutually exclusive with `fileURL`, +/// `seedFilePath`and `syncConfiguration`; +/// setting any one of the three properties will automatically nil out the other two. +@property (nonatomic, copy, nullable) NSString *inMemoryIdentifier; + +/// A 64-byte key to use to encrypt the data, or `nil` if encryption is not enabled. +@property (nonatomic, copy, nullable) NSData *encryptionKey; + +/// Whether to open the Realm in read-only mode. +/// +/// For non-synchronized Realms, this is required to be able to open Realm +/// files which are not writeable or are in a directory which is not writeable. +/// This should only be used on files which will not be modified by anyone +/// while they are open, and not just to get a read-only view of a file which +/// may be written to by another thread or process. Opening in read-only mode +/// requires disabling Realm's reader/writer coordination, so committing a +/// write transaction from another process will result in crashes. +/// +/// Syncronized Realms must always be writeable (as otherwise no +/// synchronization could happen), and this instead merely disallows performing +/// write transactions on the Realm. In addition, it will skip some automatic +/// writes made to the Realm, such as to initialize the Realm's schema. Setting +/// `readOnly = YES` is not strictly required for Realms which the sync user +/// does not have write access to, but is highly recommended as it will improve +/// error reporting and catch some errors earlier. +/// +/// Realms using query-based sync cannot be opened in read-only mode. +@property (nonatomic) BOOL readOnly; + +/// The current schema version. +@property (nonatomic) uint64_t schemaVersion; + +/// The block which migrates the Realm to the current version. +@property (nonatomic, copy, nullable) RLMMigrationBlock migrationBlock; + +/** + Whether to recreate the Realm file with the provided schema if a migration is required. + This is the case when the stored schema differs from the provided schema or + the stored schema version differs from the version on this configuration. + Setting this property to `YES` deletes the file if a migration would otherwise be required or executed. + + @note Setting this property to `YES` doesn't disable file format migrations. + */ +@property (nonatomic) BOOL deleteRealmIfMigrationNeeded; + +/** + A block called when opening a Realm for the first time during the life + of a process to determine if it should be compacted before being returned + to the user. It is passed the total file size (data + free space) and the total + bytes used by data in the file. + + Return `YES` to indicate that an attempt to compact the file should be made. + The compaction will be skipped if another process is accessing it. + */ +@property (nonatomic, copy, nullable) RLMShouldCompactOnLaunchBlock shouldCompactOnLaunch; + +/// The classes managed by the Realm. +@property (nonatomic, copy, nullable) NSArray *objectClasses; + +/** + The maximum number of live versions in the Realm file before an exception will + be thrown when attempting to start a write transaction. + + Realm provides MVCC snapshot isolation, meaning that writes on one thread do + not overwrite data being read on another thread, and instead write a new copy + of that data. When a Realm refreshes it updates to the latest version of the + data and releases the old versions, allowing them to be overwritten by + subsequent write transactions. + + Under normal circumstances this is not a problem, but if the number of active + versions grow too large, it will have a negative effect on the filesize on + disk. This can happen when performing writes on many different threads at + once, when holding on to frozen objects for an extended time, or when + performing long operations on background threads which do not allow the Realm + to refresh. + + Setting this property to a non-zero value makes it so that exceeding the set + number of versions will instead throw an exception. This can be used with a + low value during development to help identify places that may be problematic, + or in production use to cause the app to crash rather than produce a Realm + file which is too large to be opened. + + */ +@property (nonatomic) NSUInteger maximumNumberOfActiveVersions; + +/** + When opening the Realm for the first time, instead of creating an empty file, + the Realm file will be copied from the provided seed file path and used instead. + This can be used to open a Realm file with pre-populated data. + + If a realm file already exists at the configuration's destination path, the seed file + will not be copied and the already existing realm will be opened instead. + + Note that to use this parameter with a synced Realm configuration + the seed Realm must be appropriately copied to a destination with + `[RLMRealm writeCopyForConfiguration:]` first. + + This option is mutually exclusive with `inMemoryIdentifier`. Setting a `seedFilePath` + will nil out the `inMemoryIdentifier`. + */ +@property (nonatomic, copy, nullable) NSURL *seedFilePath; + +/** + A configuration object representing configuration state for Realms intended + to sync with Atlas Device Sync. + + This property is mutually exclusive with both `inMemoryIdentifier` and `fileURL`; + setting any one of the three properties will automatically nil out the other two. + + @see `RLMSyncConfiguration` + */ +@property (nullable, nonatomic) RLMSyncConfiguration *syncConfiguration; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMRealm_Dynamic.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMRealm_Dynamic.h new file mode 100644 index 000000000..bea162775 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMRealm_Dynamic.h @@ -0,0 +1,118 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import +#import + +@class RLMResults; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +@interface RLMRealm (Dynamic) + +#pragma mark - Getting Objects from a Realm + +/** + Returns all objects of a given type from the Realm. + + @warning This method is useful only in specialized circumstances, for example, when building components + that integrate with Realm. The preferred way to get objects of a single class is to use the class + methods on `RLMObject`. + + @param className The name of the `RLMObject` subclass to retrieve on (e.g. `MyClass.className`). + + @return An `RLMResults` containing all objects in the Realm of the given type. + + @see `+[RLMObject allObjects]` + */ +- (RLMResults *)allObjects:(NSString *)className; + +/** + Returns all objects matching the given predicate from the Realm. + + @warning This method is useful only in specialized circumstances, for example, when building components + that integrate with Realm. The preferred way to get objects of a single class is to use the class + methods on `RLMObject`. + + @param className The type of objects you are looking for (name of the class). + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + + @return An `RLMResults` containing results matching the given predicate. + + @see `+[RLMObject objectsWhere:]` + */ +- (RLMResults *)objects:(NSString *)className where:(NSString *)predicateFormat, ...; + +/** + Returns all objects matching the given predicate from the Realm. + + @warning This method is useful only in specialized circumstances, for example, when building components + that integrate with Realm. The preferred way to get objects of a single class is to use the class + methods on `RLMObject`. + + @param className The type of objects you are looking for (name of the class). + @param predicate The predicate with which to filter the objects. + + @return An `RLMResults` containing results matching the given predicate. + + @see `+[RLMObject objectsWhere:]` + */ +- (RLMResults *)objects:(NSString *)className withPredicate:(NSPredicate *)predicate; + +/** + Returns the object of the given type with the given primary key from the Realm. + + @warning This method is useful only in specialized circumstances, for example, when building components + that integrate with Realm. The preferred way to get an object of a single class is to use the class + methods on `RLMObject`. + + @param className The class name for the object you are looking for. + @param primaryKey The primary key value for the object you are looking for. + + @return An object, or `nil` if an object with the given primary key does not exist. + + @see `+[RLMObject objectForPrimaryKey:]` + */ +- (nullable RLMObject *)objectWithClassName:(NSString *)className forPrimaryKey:(id)primaryKey; + +/** + Creates an `RLMObject` instance of type `className` in the Realm, and populates it using a given object. + + The `value` argument is used to populate the object. It can be a key-value coding compliant object, an array or + dictionary returned from the methods in `NSJSONSerialization`, or an array containing one element for each managed + property. An exception will be thrown if any required properties are not present and those properties were not defined + with default values. + + When passing in an array as the `value` argument, all properties must be present, valid and in the same order as the + properties defined in the model. + + @warning This method is useful only in specialized circumstances, for example, when building components + that integrate with Realm. If you are simply building an app on Realm, it is recommended to + use `[RLMObject createInDefaultRealmWithValue:]`. + + @param value The value used to populate the object. + + @return An `RLMObject` instance of type `className`. + */ +-(RLMObject *)createObject:(NSString *)className withValue:(id)value; + +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMResults.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMResults.h new file mode 100644 index 000000000..5911e666a --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMResults.h @@ -0,0 +1,567 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMObject; + +/** + `RLMResults` is an auto-updating container type in Realm returned from object + queries. It represents the results of the query in the form of a collection of objects. + + `RLMResults` can be queried using the same predicates as `RLMObject` and `RLMArray`, + and you can chain queries to further filter results. + + `RLMResults` always reflect the current state of the Realm on the current thread, + including during write transactions on the current thread. The one exception to + this is when using `for...in` fast enumeration, which will always enumerate + over the objects which matched the query when the enumeration is begun, even if + some of them are deleted or modified to be excluded by the filter during the + enumeration. + + `RLMResults` are lazily evaluated the first time they are accessed; they only + run queries when the result of the query is requested. This means that + chaining several temporary `RLMResults` to sort and filter your data does not + perform any extra work processing the intermediate state. + + Once the results have been evaluated or a notification block has been added, + the results are eagerly kept up-to-date, with the work done to keep them + up-to-date done on a background thread whenever possible. + + `RLMResults` cannot be directly instantiated. + */ +@interface RLMResults : NSObject + +#pragma mark - Properties + +/** + The number of objects in the results collection. + */ +@property (nonatomic, readonly, assign) NSUInteger count; + +/** + The type of the objects in the results collection. + */ +@property (nonatomic, readonly, assign) RLMPropertyType type; + +/** + Indicates whether the objects in the collection can be `nil`. + */ +@property (nonatomic, readwrite, getter = isOptional) BOOL optional; + +/** + The class name of the objects contained in the results collection. + + Will be `nil` if `type` is not RLMPropertyTypeObject. + */ +@property (nonatomic, readonly, copy, nullable) NSString *objectClassName; + +/** + The Realm which manages this results collection. + */ +@property (nonatomic, readonly) RLMRealm *realm; + +/** + Indicates if the results collection is no longer valid. + + The results collection becomes invalid if `invalidate` is called on the containing `realm`. + An invalidated results collection can be accessed, but will always be empty. + */ +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +#pragma mark - Accessing Objects from an RLMResults + +/** + Returns the object at the index specified. + + @param index The index to look up. + + @return An object of the type contained in the results collection. + */ +- (RLMObjectType)objectAtIndex:(NSUInteger)index; + +/** + Returns an array containing the objects in the results at the indexes specified by a given index set. + `nil` will be returned if the index set contains an index out of the arrays bounds. + + @param indexes The indexes in the results to retrieve objects from. + + @return The objects at the specified indexes. + */ +- (nullable NSArray *)objectsAtIndexes:(NSIndexSet *)indexes; + +/** + Returns the first object in the results collection. + + Returns `nil` if called on an empty results collection. + + @return An object of the type contained in the results collection. + */ +- (nullable RLMObjectType)firstObject; + +/** + Returns the last object in the results collection. + + Returns `nil` if called on an empty results collection. + + @return An object of the type contained in the results collection. + */ +- (nullable RLMObjectType)lastObject; + +#pragma mark - Querying Results + +/** + Returns the index of an object in the results collection. + + Returns `NSNotFound` if the object is not found in the results collection. + + @param object An object (of the same type as returned from the `objectClassName` selector). + */ +- (NSUInteger)indexOfObject:(RLMObjectType)object; + +/** + Returns the index of the first object in the results collection matching the predicate. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + + @return The index of the object, or `NSNotFound` if the object is not found in the results collection. + */ +- (NSUInteger)indexOfObjectWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (NSUInteger)indexOfObjectWhere:(NSString *)predicateFormat args:(va_list)args; + +/** + Returns the index of the first object in the results collection matching the predicate. + + @param predicate The predicate with which to filter the objects. + + @return The index of the object, or `NSNotFound` if the object is not found in the results collection. + */ +- (NSUInteger)indexOfObjectWithPredicate:(NSPredicate *)predicate; + +/** + Returns all the objects matching the given predicate in the results collection. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + + @return An `RLMResults` of objects that match the given predicate. + */ +- (RLMResults *)objectsWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (RLMResults *)objectsWhere:(NSString *)predicateFormat args:(va_list)args; + +/** + Returns all the objects matching the given predicate in the results collection. + + @param predicate The predicate with which to filter the objects. + + @return An `RLMResults` of objects that match the given predicate. + */ +- (RLMResults *)objectsWithPredicate:(NSPredicate *)predicate; + +/** + Returns a sorted `RLMResults` from an existing results collection. + + @param keyPath The key path to sort by. + @param ascending The direction to sort in. + + @return An `RLMResults` sorted by the specified key path. + */ +- (RLMResults *)sortedResultsUsingKeyPath:(NSString *)keyPath ascending:(BOOL)ascending; + +/** + Returns a sorted `RLMResults` from an existing results collection. + + @param properties An array of `RLMSortDescriptor`s to sort by. + + @return An `RLMResults` sorted by the specified properties. + */ +- (RLMResults *)sortedResultsUsingDescriptors:(NSArray *)properties; + +/** + Returns a distinct `RLMResults` from an existing results collection. + + @param keyPaths The key paths used produce distinct results + + @return An `RLMResults` made distinct based on the specified key paths + */ +- (RLMResults *)distinctResultsUsingKeyPaths:(NSArray *)keyPaths; + +#pragma mark - Notifications + +/** + Registers a block to be called each time the results collection changes. + + The block will be asynchronously called with the initial results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the results collection were added, removed or modified. If a + write transaction did not modify any objects in the results collection, + the block is not called at all. See the `RLMCollectionChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + At the time when the block is called, the `RLMResults` object will be fully + evaluated and up-to-date, and as long as you do not perform a write transaction + on the same thread or explicitly call `-[RLMRealm refresh]`, accessing it will + never perform blocking work. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + NSLog(@"dogs.count: %zu", dogs.count); // => 0 + self.token = [results addNotificationBlock:^(RLMResults *dogs, + RLMCollectionChange *changes, + NSError *error) { + // Only fired once for the example + NSLog(@"dogs.count: %zu", dogs.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + + @param block The block to be called whenever a change occurs. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMResults *_Nullable results, + RLMCollectionChange *_Nullable change, + NSError *_Nullable error))block +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the results collection changes. + + The block will be asynchronously called with the initial results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the results collection were added, removed or modified. If a + write transaction did not modify any objects in the results collection, + the block is not called at all. See the `RLMCollectionChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + At the time when the block is called, the `RLMResults` object will be fully + evaluated and up-to-date, and as long as you do not perform a write transaction + on the same thread or explicitly call `-[RLMRealm refresh]`, accessing it will + never perform blocking work. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMResults *_Nullable results, + RLMCollectionChange *_Nullable change, + NSError *_Nullable error))block + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the results collection changes. + + The block will be asynchronously called with the initial results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the results collection were added, removed or modified. If a + write transaction did not modify any objects in the results collection, + the block is not called at all. See the `RLMCollectionChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + At the time when the block is called, the `RLMResults` object will be fully + evaluated and up-to-date, and as long as you do not perform a write transaction + on the same thread or explicitly call `-[RLMRealm refresh]`, accessing it will + never perform blocking work. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMResults *_Nullable results, + RLMCollectionChange *_Nullable change, + NSError *_Nullable error))block + keyPaths:(nullable NSArray *)keyPaths + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the results collection changes. + + The block will be asynchronously called with the initial results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the results collection were added, removed or modified. If a + write transaction did not modify any objects in the results collection, + the block is not called at all. See the `RLMCollectionChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + At the time when the block is called, the `RLMResults` object will be fully + evaluated and up-to-date, and as long as you do not perform a write transaction + on the same thread or explicitly call `-[RLMRealm refresh]`, accessing it will + never perform blocking work. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMResults *_Nullable results, + RLMCollectionChange *_Nullable change, + NSError *_Nullable error))block + keyPaths:(nullable NSArray *)keyPaths +__attribute__((warn_unused_result)); +#pragma mark - Aggregating Property Values + +/** + Returns the minimum (lowest) value of the given property among all the objects + represented by the results collection. + + NSNumber *min = [results minOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose minimum value is desired. Only properties of types `int`, `float`, `double`, and + `NSDate` are supported. + + @return The minimum value of the property, or `nil` if the Results are empty. + */ +- (nullable id)minOfProperty:(NSString *)property; + +/** + Returns the maximum (highest) value of the given property among all the objects represented by the results collection. + + NSNumber *max = [results maxOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose maximum value is desired. Only properties of + types `int`, `float`, `double`, and `NSDate` are supported. + + @return The maximum value of the property, or `nil` if the Results are empty. + */ +- (nullable id)maxOfProperty:(NSString *)property; + +/** + Returns the sum of the values of a given property over all the objects represented by the results collection. + + NSNumber *sum = [results sumOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose values should be summed. Only properties of + types `int`, `float`, and `double` are supported. + + @return The sum of the given property. + */ +- (NSNumber *)sumOfProperty:(NSString *)property; + +/** + Returns the average value of a given property over the objects represented by the results collection. + + NSNumber *average = [results averageOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, and `NSData` properties. + + @param property The property whose average value should be calculated. Only + properties of types `int`, `float`, and `double` are supported. + + @return The average value of the given property, or `nil` if the Results are empty. + */ +- (nullable NSNumber *)averageOfProperty:(NSString *)property; + +/// :nodoc: +- (RLMObjectType)objectAtIndexedSubscript:(NSUInteger)index; + +#pragma mark - Sectioned Results + +/** + Sorts and sections this collection from a given property key path, returning the result + as an instance of `RLMSectionedResults`. + + @param keyPath The property key path to sort on. + @param ascending The direction to sort in. + @param keyBlock A callback which is invoked on each element in the Results collection. + This callback is to return the section key for the element in the collection. + + @return An instance of RLMSectionedResults. + */ +- (RLMSectionedResults *)sectionedResultsSortedUsingKeyPath:(NSString *)keyPath + ascending:(BOOL)ascending + keyBlock:(RLMSectionedResultsKeyBlock)keyBlock; + +/** + Sorts and sections this collection from a given array of sort descriptors, returning the result + as an instance of `RLMSectionedResults`. + + @param sortDescriptors An array of `RLMSortDescriptor`s to sort by. + @param keyBlock A callback which is invoked on each element in the Results collection. + This callback is to return the section key for the element in the collection. + + @note The primary sort descriptor must be responsible for determining the section key. + + @return An instance of RLMSectionedResults. + */ +- (RLMSectionedResults *)sectionedResultsUsingSortDescriptors:(NSArray *)sortDescriptors + keyBlock:(RLMSectionedResultsKeyBlock)keyBlock; + +#pragma mark - Freeze + +/** + Indicates if the result are frozen. + + Frozen Results are immutable and can be accessed from any thread.The objects + read from a frozen Results will also be frozen. + */ +@property (nonatomic, readonly, getter=isFrozen) BOOL frozen; + +/** + Returns a frozen (immutable) snapshot of these results. + + The frozen copy is an immutable collection which contains the same data as + this collection currently contains, but will not update when writes are made + to the containing Realm. Unlike live Results, frozen Results can be accessed + from any thread. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning Holding onto a frozen collection for an extended period while + performing write transaction on the Realm may result in the Realm + file growing to large sizes. See + `RLMRealmConfiguration.maximumNumberOfActiveVersions` for more + information. + */ +- (instancetype)freeze; + +/** + Returns a live version of this frozen collection. + + This method resolves a reference to a live copy of the same frozen collection. + If called on a live collection, will return itself. +*/ +- (instancetype)thaw; + +#pragma mark - Unavailable Methods + +/** + `-[RLMResults init]` is not available because `RLMResults` cannot be created directly. + `RLMResults` can be obtained by querying a Realm. + */ +- (instancetype)init __attribute__((unavailable("RLMResults cannot be created directly"))); + +/** + `+[RLMResults new]` is not available because `RLMResults` cannot be created directly. + `RLMResults` can be obtained by querying a Realm. + */ ++ (instancetype)new __attribute__((unavailable("RLMResults cannot be created directly"))); + +@end + +/** + `RLMLinkingObjects` is an auto-updating container type. It represents a collection of objects that link to its + parent object. + + For more information, please see the "Inverse Relationships" section in the + [documentation](https://www.mongodb.com/docs/realm/sdk/swift/fundamentals/relationships/#relationships). + */ +@interface RLMLinkingObjects : RLMResults +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSchema.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSchema.h new file mode 100644 index 000000000..fe46f6d47 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSchema.h @@ -0,0 +1,78 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMObjectSchema; + +/** + `RLMSchema` instances represent collections of model object schemas managed by a Realm. + + When using Realm, `RLMSchema` instances allow performing migrations and + introspecting the database's schema. + + Schemas map to collections of tables in the core database. + */ +RLM_SWIFT_SENDABLE // not actually immutable, but the public API kinda is +@interface RLMSchema : NSObject + +#pragma mark - Properties + +/** + An `NSArray` containing `RLMObjectSchema`s for all object types in the Realm. + + This property is intended to be used during migrations for dynamic introspection. + + @see `RLMObjectSchema` + */ +@property (nonatomic, readonly, copy) NSArray *objectSchema; + +#pragma mark - Methods + +/** + Returns an `RLMObjectSchema` for the given class name in the schema. + + @param className The object class name. + @return An `RLMObjectSchema` for the given class in the schema. + + @see `RLMObjectSchema` + */ +- (nullable RLMObjectSchema *)schemaForClassName:(NSString *)className; + +/** + Looks up and returns an `RLMObjectSchema` for the given class name in the Realm. + + If there is no object of type `className` in the schema, an exception will be thrown. + + @param className The object class name. + @return An `RLMObjectSchema` for the given class in this Realm. + + @see `RLMObjectSchema` + */ +- (RLMObjectSchema *)objectForKeyedSubscript:(NSString *)className; + +/** + Returns whether two `RLMSchema` instances are equivalent. + */ +- (BOOL)isEqualToSchema:(RLMSchema *)schema; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSectionedResults.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSectionedResults.h new file mode 100644 index 000000000..4ee236b94 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSectionedResults.h @@ -0,0 +1,921 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2022 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@protocol RLMValue; +@class RLMResults; + +/** + A `RLMSectionedResultsChange` object encapsulates information about changes to sectioned + results that are reported by Realm notifications. + + `RLMSectionedResultsChange` is passed to the notification blocks registered with + `-addNotificationBlock` on `RLMSectionedResults`, and reports what sections and rows in the + collection changed since the last time the notification block was called. + + A complete example of updating a `UITableView` named `tv`: + + [tv beginUpdates]; + [tv deleteRowsAtIndexPaths:changes.deletions withRowAnimation:UITableViewRowAnimationAutomatic]; + [tv insertRowsAtIndexPaths:changes.insertions withRowAnimation:UITableViewRowAnimationAutomatic]; + [tv reloadRowsAtIndexPaths:changes.modifications withRowAnimation:UITableViewRowAnimationAutomatic]; + [tv insertSections:changes.sectionsToInsert withRowAnimation:UITableViewRowAnimationAutomatic]; + [tv deleteSections:changes.sectionsToRemove withRowAnimation:UITableViewRowAnimationAutomatic]; + [tv endUpdates]; + + All of the arrays in an `RLMSectionedResultsChange` are always sorted in ascending order. + */ +@interface RLMSectionedResultsChange : NSObject +/// The index paths of objects in the previous version of the collection which have +/// been removed from this one. +@property (nonatomic, readonly) NSArray *deletions; +/// The index paths in the new version of the collection which were newly inserted. +@property (nonatomic, readonly) NSArray *insertions; +/// The index paths in the old version of the collection which were modified. +@property (nonatomic, readonly) NSArray *modifications; +/// The indices of the sections to be inserted. +@property (nonatomic, readonly) NSIndexSet *sectionsToInsert; +/// The indices of the sections to be removed. +@property (nonatomic, readonly) NSIndexSet *sectionsToRemove; +/// Returns the index paths of the deletion indices in the given section. +- (NSArray *)deletionsInSection:(NSUInteger)section; +/// Returns the index paths of the insertion indices in the given section. +- (NSArray *)insertionsInSection:(NSUInteger)section; +/// Returns the index paths of the modification indices in the given section. +- (NSArray *)modificationsInSection:(NSUInteger)section; +@end + + +/// The `RLMSectionedResult` protocol defines properties and methods common to both `RLMSectionedResults and RLMSection` +@protocol RLMSectionedResult + +#pragma mark - Object Access + +/// The count of objects in the collection. +@property (nonatomic, readonly) NSUInteger count; +/// Returns the object for a given index in the collection. +- (id)objectAtIndexedSubscript:(NSUInteger)index; +/// Returns the object for a given index in the collection. +- (id)objectAtIndex:(NSUInteger)index; + +#pragma mark - Freeze + +/** + Returns a frozen (immutable) snapshot of this collection. + + The frozen copy is an immutable collection which contains the same data as this + collection currently contains, but will not update when writes are made to the + containing Realm. Unlike live arrays, frozen collections can be accessed from any + thread. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning Holding onto a frozen collection for an extended period while performing + write transaction on the Realm may result in the Realm file growing + to large sizes. See `RLMRealmConfiguration.maximumNumberOfActiveVersions` + for more information. + */ +- (instancetype)freeze; +/** + Returns a live version of this frozen collection. + + This method resolves a reference to a live copy of the same frozen collection. + If called on a live collection, will return itself. +*/ +- (instancetype)thaw; +/** + Indicates if the underlying collection is frozen. + + Frozen collections are immutable and can be accessed from any thread. + */ +@property (nonatomic, readonly, getter = isFrozen) BOOL frozen; + +#pragma mark - Sectioned Results Notifications + +/** + Registers a block to be called each time the collection changes. + + The block will be asynchronously called with the initial sectioned results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSection` / `RLMSectionedResults` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + self.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"sectionedResults.count: %zu", sectionedResults.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(id, RLMSectionedResultsChange *))block __attribute__((warn_unused_result)); +/** + Registers a block to be called each time the collection changes. + + The block will be asynchronously called with the initial sectioned results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSection` / `RLMSectionedResults` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + self.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"sectionedResults.count: %zu", sectionedResults.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(id, RLMSectionedResultsChange *))block + queue:(dispatch_queue_t)queue __attribute__((warn_unused_result)); +/** + Registers a block to be called each time the collection changes. + + The block will be asynchronously called with the initial sectioned results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSection` / `RLMSectionedResults` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + self.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"sectionedResults.count: %zu", sectionedResults.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(id, RLMSectionedResultsChange *))block + keyPaths:(NSArray *)keyPaths __attribute__((warn_unused_result)); +/** + Registers a block to be called each time the collection changes. + + The block will be asynchronously called with the initial sectioned results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSection` / `RLMSectionedResults` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + self.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"sectionedResults.count: %zu", sectionedResults.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @note When filtering with key paths a notification will be fired in the following scenarios: + - An object in the collection has been modified at the filtered properties. + - An object has been modified on the section key path property, and the result of that modification has changed it's position in the section, or the object may need to move to another section. + - An object of the same observed type has been inserted or deleted from the Realm. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @param queue The serial queue to deliver notifications to. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(id, RLMSectionedResultsChange *))block + keyPaths:(nullable NSArray *)keyPaths + queue:(nullable dispatch_queue_t)queue __attribute__((warn_unused_result)); + +@end + +/// An RLMSection contains the objects which belong to a specified section key. +@interface RLMSection, RLMObjectType> : NSObject +/// The value that represents the key in this section. +@property (nonatomic, readonly) RLMKeyType key; +/// The count of objects in the section. +@property (nonatomic, readonly) NSUInteger count; +/// Returns the object for a given index in the section. +- (RLMObjectType)objectAtIndexedSubscript:(NSUInteger)index; +/// Returns the object for a given index in the section. +- (RLMObjectType)objectAtIndex:(NSUInteger)index; + +#pragma mark - Freeze + +/** + Returns a frozen (immutable) snapshot of this section. + + The frozen copy is an immutable section which contains the same data as this + section currently contains, but will not update when writes are made to the + containing Realm. Unlike live arrays, frozen collections can be accessed from any + thread. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning Holding onto a frozen section for an extended period while performing + write transaction on the Realm may result in the Realm file growing + to large sizes. See `RLMRealmConfiguration.maximumNumberOfActiveVersions` + for more information. + */ +- (instancetype)freeze; +/** + Returns a live version of this frozen section. + + This method resolves a reference to a live copy of the same frozen section. + If called on a live section, will return itself. +*/ +- (instancetype)thaw; +/** + Indicates if the underlying section is frozen. + + Frozen sections are immutable and can be accessed from any thread. + */ +@property (nonatomic, readonly, getter = isFrozen) BOOL frozen; + +#pragma mark - Section Notifications + +/** + Registers a block to be called each time the section changes. + + The block will be asynchronously called with the initial section, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSection` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + RLMSection *section = sectionedResults[0] // section with dogs aged '5' already exists. + + self.token = [section addNotificationBlock:^(RLMSection *section, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"section.count: %zu", section.count); // => 2 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSection *, RLMSectionedResultsChange *))block __attribute__((warn_unused_result)); +/** + Registers a block to be called each time the section changes. + + The block will be asynchronously called with the initial section, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSection` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + RLMSection *section = sectionedResults[0] // section with dogs aged '5' already exists. + + self.token = [section addNotificationBlock:^(RLMSection *section, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"section.count: %zu", section.count); // => 2 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSection *, RLMSectionedResultsChange *))block + queue:(dispatch_queue_t)queue __attribute__((warn_unused_result)); +/** + Registers a block to be called each time the section changes. + + The block will be asynchronously called with the initial section, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSection` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + RLMSection *section = sectionedResults[0] // section with dogs aged '5' already exists. + + self.token = [section addNotificationBlock:^(RLMSection *section, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"section.count: %zu", section.count); // => 2 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @note When filtering with key paths a notification will be fired in the following scenarios: + - An object in the collection has been modified at the filtered properties. + - An object has been modified on the section key path property, and the result of that modification has changed it's position in the section, or the object may need to move to another section. + - An object of the same observed type has been inserted or deleted from the Realm. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSection *, RLMSectionedResultsChange *))block + keyPaths:(NSArray *)keyPaths __attribute__((warn_unused_result)); +/** + Registers a block to be called each time the section changes. + + The block will be asynchronously called with the initial section, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSection` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + RLMSection *section = sectionedResults[0] // section with dogs aged '5' already exists. + + self.token = [section addNotificationBlock:^(RLMSection *section, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"section.count: %zu", section.count); // => 2 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @note When filtering with key paths a notification will be fired in the following scenarios: + - An object in the collection has been modified at the filtered properties. + - An object has been modified on the section key path property, and the result of that modification has changed it's position in the section, or the object may need to move to another section. + - An object of the same observed type has been inserted or deleted from the Realm. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @param queue The serial queue to deliver notifications to. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSection *, RLMSectionedResultsChange *))block + keyPaths:(nullable NSArray *)keyPaths + queue:(nullable dispatch_queue_t)queue __attribute__((warn_unused_result)); +@end + +/// A lazily evaluated collection that holds elements in sections determined by a section key. +@interface RLMSectionedResults, RLMObjectType: id> : NSObject +/// An array of all keys in the sectioned results collection. +@property (nonatomic) NSArray *allKeys; +/// The total amount of sections in this collection. +@property (nonatomic, readonly, assign) NSUInteger count; +/// Returns the section at a given index. +- (RLMSection *)objectAtIndexedSubscript:(NSUInteger)index; +/// Returns the section at a given index. +- (RLMSection *)objectAtIndex:(NSUInteger)index; + +#pragma mark - Freeze + +/** + Returns a frozen (immutable) snapshot of this sectioned results collection. + + The frozen copy is an immutable sectioned results collection which contains the same data as this + sectioned results collection currently contains, but will not update when writes are made to the + containing Realm. Unlike live sectioned results collections, frozen sectioned results collection + can be accessed from any thread. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning Holding onto a frozen sectioned results collection for an extended period while performing + write transaction on the Realm may result in the Realm file growing + to large sizes. See `RLMRealmConfiguration.maximumNumberOfActiveVersions` + for more information. + */ +- (instancetype)freeze; +/** + Returns a live version of this frozen sectioned results collection. + + This method resolves a reference to a live copy of the same frozen sectioned results collection. + If called on a live section, will return itself. +*/ +- (instancetype)thaw; +/** + Indicates if the underlying sectioned results collection is frozen. + + Frozen sectioned results collections are immutable and can be accessed from any thread. + */ +@property (nonatomic, readonly, getter = isFrozen) BOOL frozen; + +#pragma mark - Sectioned Results Notifications + +/** + Registers a block to be called each time the sectioned results collection changes. + + The block will be asynchronously called with the initial sectioned results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSectionedResults` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + self.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"sectionedResults.count: %zu", sectionedResults.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSectionedResults *, RLMSectionedResultsChange *))block __attribute__((warn_unused_result)); +/** + Registers a block to be called each time the sectioned results collection changes. + + The block will be asynchronously called with the initial sectioned results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSectionedResults` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + self.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"sectionedResults.count: %zu", sectionedResults.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSectionedResults *, RLMSectionedResultsChange *))block + queue:(dispatch_queue_t)queue __attribute__((warn_unused_result)); +/** + Registers a block to be called each time the sectioned results collection changes. + + The block will be asynchronously called with the initial sectioned results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSectionedResults` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + self.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"sectionedResults.count: %zu", sectionedResults.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @note When filtering with key paths a notification will be fired in the following scenarios: + - An object in the collection has been modified at the filtered properties. + - An object has been modified on the section key path property, and the result of that modification has changed it's position in the section, or the object may need to move to another section. + - An object of the same observed type has been inserted or deleted from the Realm. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSectionedResults *, RLMSectionedResultsChange *))block + keyPaths:(NSArray *)keyPaths __attribute__((warn_unused_result)); +/** + Registers a block to be called each time the sectioned results collection changes. + + The block will be asynchronously called with the initial sectioned results collection, + and then called again after each write transaction which changes either any + of the objects in the results, or which objects are in the results. + + The `change` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the section were added, removed or modified. If a + write transaction did not modify any objects in the section, + the block is not called at all. See the `RLMSectionedResultsChange` documentation for + information on how the changes are reported and an example of updating a + `UITableView`. + + At the time when the block is called, the `RLMSectionedResults` object will be fully + evaluated and up-to-date. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + RLMResults *results = [Dog allObjects]; + RLMSectionedResults *sectionedResults = [results sectionedResultsUsingKeyPath:@"age" ascending:YES]; + self.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultsChange *changes) { + // Only fired once for the example + NSLog(@"sectionedResults.count: %zu", sectionedResults.count); // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + dog.age = 5; + [realm addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning The queue must be a serial queue. + + @note When filtering with key paths a notification will be fired in the following scenarios: + - An object in the collection has been modified at the filtered properties. + - An object has been modified on the section key path property, and the result of that modification has changed it's position in the section, or the object may need to move to another section. + - An object of the same observed type has been inserted or deleted from the Realm. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @param queue The serial queue to deliver notifications to. + + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSectionedResults *, RLMSectionedResultsChange *))block + keyPaths:(nullable NSArray *)keyPaths + queue:(nullable dispatch_queue_t)queue __attribute__((warn_unused_result)); +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSet.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSet.h new file mode 100644 index 000000000..fead2e005 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSet.h @@ -0,0 +1,535 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMObject, RLMResults; + +/** + A collection datatype used for storing distinct objects. + + - Note: + `RLMSet` supports storing primitive and `RLMObject` types. `RLMSet` does not support storing + Embedded Realm Objects. + */ +@interface RLMSet : NSObject + +#pragma mark - Properties + +/** + The number of objects in the set. + */ +@property (nonatomic, readonly, assign) NSUInteger count; + +/** + The type of the objects in the set. + */ +@property (nonatomic, readonly, assign) RLMPropertyType type; + +/** + Indicates whether the objects in the collection can be `nil`. + */ +@property (nonatomic, readonly, getter = isOptional) BOOL optional; + +/** + The objects in the RLMSet as an NSArray value. + */ +@property (nonatomic, readonly) NSArray *allObjects; + +/** + The class name of the objects contained in the set. + + Will be `nil` if `type` is not RLMPropertyTypeObject. + */ +@property (nonatomic, readonly, copy, nullable) NSString *objectClassName; + +/** + The Realm which manages the set. Returns `nil` for unmanaged set. + */ +@property (nonatomic, readonly, nullable) RLMRealm *realm; + +/** + Indicates if the set can no longer be accessed. + */ +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +/** + Indicates if the set is frozen. + + Frozen sets are immutable and can be accessed from any thread. Frozen sets + are created by calling `-freeze` on a managed live set. Unmanaged sets are + never frozen. + */ +@property (nonatomic, readonly, getter = isFrozen) BOOL frozen; + +#pragma mark - Adding, Removing, and Replacing Objects in a Set + +/** + Adds an object to the set if it is not already present. + + @warning This method may only be called during a write transaction. + + @param object An object of the type contained in the set. + */ +- (void)addObject:(RLMObjectType)object; + +/** + Adds an array of distinct objects to the set. + + @warning This method may only be called during a write transaction. + + @param objects An enumerable object such as `NSArray`, `NSSet` or `RLMResults` which contains objects of the + same class as the set. + */ +- (void)addObjects:(id)objects; + +/** + Removes a given object from the set. + + @warning This method may only be called during a write transaction. + + @param object The object in the set that you want to remove. + */ +- (void)removeObject:(RLMObjectType)object; + +/** + Removes all objects from the set. + + @warning This method may only be called during a write transaction. + */ +- (void)removeAllObjects; + +/** + Empties the receiving set, then adds each object contained in another given set. + + @warning This method may only be called during a write transaction. + + @param set The RLMSet whose members replace the receiving set's content. + */ +- (void)setSet:(RLMSet *)set; + +/** + Removes from the receiving set each object that isn’t a member of another given set. + + @warning This method may only be called during a write transaction. + + @param set The RLMSet with which to perform the intersection. + */ +- (void)intersectSet:(RLMSet *)set; + +/** + Removes each object in another given set from the receiving set, if present. + + @warning This method may only be called during a write transaction. + + @param set The set of objects to remove from the receiving set. + */ +- (void)minusSet:(RLMSet *)set; + +/** + Adds each object in another given set to the receiving set, if not present. + + @warning This method may only be called during a write transaction. + + @param set The set of objects to add to the receiving set. + */ +- (void)unionSet:(RLMSet *)set; + +#pragma mark - Querying a Set + +/// :nodoc: +- (RLMResults *)objectsWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (RLMResults *)objectsWhere:(NSString *)predicateFormat args:(va_list)args; + +/// :nodoc: +- (RLMResults *)objectsWithPredicate:(NSPredicate *)predicate; + +/// :nodoc: +- (RLMResults *)sortedResultsUsingKeyPath:(NSString *)keyPath ascending:(BOOL)ascending; + +/// :nodoc: +- (RLMResults *)sortedResultsUsingDescriptors:(NSArray *)properties; + +/// :nodoc: +- (RLMResults *)distinctResultsUsingKeyPaths:(NSArray *)keyPaths; + +/** + Returns a Boolean value that indicates whether at least one object in the receiving set is also present in another given set. + + @param set The RLMSet to compare the receiving set to. + + @return YES if at least one object in the receiving set is also present in otherSet, otherwise NO. + */ +- (BOOL)intersectsSet:(RLMSet *)set; + +/** + Returns a Boolean value that indicates whether every object in the receiving set is also present in another given set. + + @param set The RLMSet to compare the receiving set to. + + @return YES if every object in the receiving set is also present in otherSet, otherwise NO. + */ +- (BOOL)isSubsetOfSet:(RLMSet *)set; + +/** + Returns a Boolean value that indicates whether a given object is present in the set. + + @param anObject An object to look for in the set. + + @return YES if anObject is present in the set, otherwise NO. + */ +- (BOOL)containsObject:(RLMObjectType)anObject; + +/** + Compares the receiving set to another set. + + @param otherSet The set with which to compare the receiving set. + + @return YES if the contents of otherSet are equal to the contents of the receiving set, otherwise NO. + */ +- (BOOL)isEqualToSet:(RLMSet *)otherSet; + +#pragma mark - Sectioning a Set + +/** + Sorts and sections this collection from a given property key path, returning the result + as an instance of `RLMSectionedResults`. + + @param keyPath The property key path to sort on. + @param ascending The direction to sort in. + @param keyBlock A callback which is invoked on each element in the Results collection. + This callback is to return the section key for the element in the collection. + + @return An instance of RLMSectionedResults. + */ +- (RLMSectionedResults *)sectionedResultsSortedUsingKeyPath:(NSString *)keyPath + ascending:(BOOL)ascending + keyBlock:(RLMSectionedResultsKeyBlock)keyBlock; + +/** + Sorts and sections this collection from a given array of sort descriptors, returning the result + as an instance of `RLMSectionedResults`. + + @param sortDescriptors An array of `RLMSortDescriptor`s to sort by. + @param keyBlock A callback which is invoked on each element in the Results collection. + This callback is to return the section key for the element in the collection. + + @note The primary sort descriptor must be responsible for determining the section key. + + @return An instance of RLMSectionedResults. + */ +- (RLMSectionedResults *)sectionedResultsUsingSortDescriptors:(NSArray *)sortDescriptors + keyBlock:(RLMSectionedResultsKeyBlock)keyBlock; + + +#pragma mark - Notifications + +/** + Registers a block to be called each time the set changes. + + The block will be asynchronously called with the initial set, and then + called again after each write transaction which changes any of the objects in + the set, which objects are in the results, or the order of the objects in the + set. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the set were added, removed or modified. If a write transaction + did not modify any objects in the set, the block is not called at all. + See the `RLMCollectionChange` documentation for information on how the changes + are reported and an example of updating a `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + Person *person = [[Person allObjectsInRealm:realm] firstObject]; + NSLog(@"person.dogs.count: %zu", person.dogs.count); // => 0 + self.token = [person.dogs addNotificationBlock(RLMSet *dogs, + RLMCollectionChange *changes, + NSError *error) { + // Only fired once for the example + NSLog(@"dogs.count: %zu", dogs.count) // => 1 + }]; + [realm transactionWithBlock:^{ + Dog *dog = [[Dog alloc] init]; + dog.name = @"Rex"; + [person.dogs addObject:dog]; + }]; + // end of run loop execution context + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning This method may only be called on a non-frozen managed set. + + @param block The block to be called each time the set changes. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSet *_Nullable set, + RLMCollectionChange *_Nullable changes, + NSError *_Nullable error))block +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the set changes. + + The block will be asynchronously called with the initial set, and then + called again after each write transaction which changes any of the objects in + the set, which objects are in the results, or the order of the objects in the + set. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the set were added, removed or modified. If a write transaction + did not modify any objects in the set, the block is not called at all. + See the `RLMCollectionChange` documentation for information on how the changes + are reported and an example of updating a `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSet *_Nullable set, + RLMCollectionChange *_Nullable changes, + NSError *_Nullable error))block + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the set changes. + + The block will be asynchronously called with the initial set, and then + called again after each write transaction which changes any of the objects in + the set, which objects are in the results, or the order of the objects in the + set. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the set were added, removed or modified. If a write transaction + did not modify any objects in the set, the block is not called at all. + See the `RLMCollectionChange` documentation for information on how the changes + are reported and an example of updating a `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered on the given queue. If the queue is blocked and + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @param queue The serial queue to deliver notifications to. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSet *_Nullable set, + RLMCollectionChange *_Nullable changes, + NSError *_Nullable error))block + keyPaths:(nullable NSArray *)keyPaths + queue:(nullable dispatch_queue_t)queue +__attribute__((warn_unused_result)); + +/** + Registers a block to be called each time the set changes. + + The block will be asynchronously called with the initial set, and then + called again after each write transaction which changes any of the objects in + the set, which objects are in the results, or the order of the objects in the + set. + + The `changes` parameter will be `nil` the first time the block is called. + For each call after that, it will contain information about + which rows in the set were added, removed or modified. If a write transaction + did not modify any objects in the set, the block is not called at all. + See the `RLMCollectionChange` documentation for information on how the changes + are reported and an example of updating a `UITableView`. + + The error parameter is present only for backwards compatibility and will always + be `nil`. + + Notifications are delivered via the standard run loop, and so can't be + delivered while the run loop is blocked by other activity. When + notifications can't be delivered instantly, multiple notifications may be + coalesced into a single notification. This can include the notification + with the initial results. For example, the following code performs a write + transaction immediately after adding the notification block, so there is no + opportunity for the initial notification to be delivered first. As a + result, the initial notification will reflect the state of the Realm after + the write transaction. + + You must retain the returned token for as long as you want updates to continue + to be sent to the block. To stop receiving updates, call `-invalidate` on the token. + + @warning This method cannot be called when the containing Realm is read-only or frozen. + @warning The queue must be a serial queue. + @param block The block to be called whenever a change occurs. + @param keyPaths The block will be called for changes occurring on these keypaths. If no + key paths are given, notifications are delivered for every property key path. + @return A token which must be held for as long as you want updates to be delivered. + */ +- (RLMNotificationToken *)addNotificationBlock:(void (^)(RLMSet *_Nullable set, + RLMCollectionChange *_Nullable changes, + NSError *_Nullable error))block + keyPaths:(nullable NSArray *)keyPaths +__attribute__((warn_unused_result)); + +#pragma mark - Aggregating Property Values + +/** + Returns the minimum (lowest) value of the given property among all the objects in the set. + + NSNumber *min = [object.setProperty minOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, `RLMSet`, and `NSData` properties. + + @param property The property whose minimum value is desired. Only properties of + types `int`, `float`, `double`, and `NSDate` are supported. + + @return The minimum value of the property, or `nil` if the set is empty. + */ +- (nullable id)minOfProperty:(NSString *)property; + +/** + Returns the maximum (highest) value of the given property among all the objects in the set. + + NSNumber *max = [object.setProperty maxOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, `RLMSet`, and `NSData` properties. + + @param property The property whose maximum value is desired. Only properties of + types `int`, `float`, `double`, and `NSDate` are supported. + + @return The maximum value of the property, or `nil` if the set is empty. + */ +- (nullable id)maxOfProperty:(NSString *)property; + +/** + Returns the sum of distinct values of a given property over all the objects in the set. + + NSNumber *sum = [object.setProperty sumOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMArray`, `RLMSet and `NSData` properties. + + @param property The property whose values should be summed. Only properties of + types `int`, `float`, and `double` are supported. + + @return The sum of the given property. + */ +- (NSNumber *)sumOfProperty:(NSString *)property; + +/** + Returns the average value of a given property over the objects in the set. + + NSNumber *average = [object.setProperty averageOfProperty:@"age"]; + + @warning You cannot use this method on `RLMObject`, `RLMSet`, `RLMArray`, and `NSData` properties. + + @param property The property whose average value should be calculated. Only + properties of types `int`, `float`, and `double` are supported. + + @return The average value of the given property, or `nil` if the set is empty. + */ +- (nullable NSNumber *)averageOfProperty:(NSString *)property; + +#pragma mark - Freeze + +/** + Returns a frozen (immutable) snapshot of this set. + + The frozen copy is an immutable set which contains the same data as this + et currently contains, but will not update when writes are made to the + containing Realm. Unlike live sets, frozen sets can be accessed from any + thread. + + @warning This method cannot be called during a write transaction, or when the + containing Realm is read-only. + @warning This method may only be called on a managed set. + @warning Holding onto a frozen set for an extended period while performing + write transaction on the Realm may result in the Realm file growing + to large sizes. See `RLMRealmConfiguration.maximumNumberOfActiveVersions` + for more information. + */ +- (instancetype)freeze; + +/** + Returns a live version of this frozen collection. + + This method resolves a reference to a live copy of the same frozen collection. + If called on a live collection, will return itself. +*/ +- (instancetype)thaw; + +#pragma mark - Unavailable Methods + +/** + `-[RLMSet init]` is not available because `RLMSet`s cannot be created directly. + ``RLMSet` properties on `RLMObject`s are lazily created when accessed. + */ +- (instancetype)init __attribute__((unavailable("RLMSets cannot be created directly"))); + +/** + `+[RLMSet new]` is not available because `RLMSet`s cannot be created directly. + `RLMSet` properties on `RLMObject`s are lazily created when accessed. + */ ++ (instancetype)new __attribute__((unavailable("RLMSet cannot be created directly"))); + +@end + +/// :nodoc: +@interface RLMSet (Swift) +// for use only in Swift class definitions +- (instancetype)initWithObjectClassName:(NSString *)objectClassName; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSwiftObject.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSwiftObject.h new file mode 100644 index 000000000..7ea764016 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSwiftObject.h @@ -0,0 +1,142 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2023 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) +/** + `Object` is a class used to define Realm model objects. + + In Realm you define your model classes by subclassing `Object` and adding properties to be managed. + You then instantiate and use your custom subclasses instead of using the `Object` class directly. + + ```swift + class Dog: Object { + @objc dynamic var name: String = "" + @objc dynamic var adopted: Bool = false + let siblings = List() + } + ``` + + ### Supported property types + + - `String`, `NSString` + - `Int` + - `Int8`, `Int16`, `Int32`, `Int64` + - `Float` + - `Double` + - `Bool` + - `Date`, `NSDate` + - `Data`, `NSData` + - `Decimal128` + - `ObjectId` + - `@objc enum` which has been delcared as conforming to `RealmEnum`. + - `RealmOptional` for optional numeric properties + - `Object` subclasses, to model many-to-one relationships + - `EmbeddedObject` subclasses, to model owning one-to-one relationships + - `List`, to model many-to-many relationships + + `String`, `NSString`, `Date`, `NSDate`, `Data`, `NSData`, `Decimal128`, and `ObjectId` properties + can be declared as optional. `Object` and `EmbeddedObject` subclasses *must* be declared as optional. + `Int`, `Int8`, `Int16`, `Int32`, `Int64`, `Float`, `Double`, `Bool`, enum, and `List` properties cannot. + To store an optional number, use `RealmOptional`, `RealmOptional`, `RealmOptional`, or + `RealmOptional` instead, which wraps an optional numeric value. Lists cannot be optional at all. + + All property types except for `List` and `RealmOptional` *must* be declared as `@objc dynamic var`. `List` and + `RealmOptional` properties must be declared as non-dynamic `let` properties. Swift `lazy` properties are not allowed. + + Note that none of the restrictions listed above apply to properties that are configured to be ignored by Realm. + + ### Querying + + You can retrieve all objects of a given type from a Realm by calling the `objects(_:)` instance method. + + ### Relationships + + See our [Objective-C guide](https://docs.mongodb.com/realm/sdk/swift/fundamentals/relationships/) for more details. + */ +@interface RealmSwiftObject : RLMObjectBase +@end + +/** + `EmbeddedObject` is a base class used to define embedded Realm model objects. + + Embedded objects work similarly to normal objects, but are owned by a single + parent Object (which itself may be embedded). Unlike normal top-level objects, + embedded objects cannot be directly created in or added to a Realm. Instead, + they can only be created as part of a parent object, or by assigning an + unmanaged object to a parent object's property. Embedded objects are + automatically deleted when the parent object is deleted or when the parent is + modified to no longer point at the embedded object, either by reassigning an + Object property or by removing the embedded object from the List containing it. + + Embedded objects can only ever have a single parent object which links to + them, and attempting to link to an existing managed embedded object will throw + an exception. + + The property types supported on `EmbeddedObject` are the same as for `Object`, + except for that embedded objects cannot link to top-level objects, so `Object` + and `List` properties are not supported (`EmbeddedObject` and + `List` *are*). + + Embedded objects cannot have primary keys or indexed properties. + + ```swift + class Owner: Object { + @objc dynamic var name: String = "" + let dogs = List() + } + class Dog: EmbeddedObject { + @objc dynamic var name: String = "" + @objc dynamic var adopted: Bool = false + let owner = LinkingObjects(fromType: Owner.self, property: "dogs") + } + ``` + */ +@interface RealmSwiftEmbeddedObject : RLMObjectBase +@end + +/** + `AsymmetricObject` is a base class used to define asymmetric Realm objects. + + Asymmetric objects can only be created using the `create(_ object:)` + function, and cannot be added, removed or queried. + When created, asymmetric objects will be synced unidirectionally to the MongoDB + database and cannot be accessed locally. + + Incoming links from any asymmetric table are not allowed, meaning embedding + an asymmetric object within an `Object` will throw an error. + + The property types supported on `AsymmetricObject` are the same as for `Object`, + except for that asymmetric objects can only link to embedded objects, so `Object` + and `List` properties are not supported (`EmbeddedObject` and + `List` *are*). + + ```swift + class Person: AsymmetricObject { + @Persisted(primaryKey: true) var _id: ObjectId = ObjectId.generate() + @Persisted var name: String + @Persisted var age: Int + } + ``` + */ +@interface RealmSwiftAsymmetricObject : RLMObjectBase +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) + diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSwiftProperty.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSwiftProperty.h new file mode 100644 index 000000000..ea071927c --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSwiftProperty.h @@ -0,0 +1,71 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2021 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +@class RLMObjectBase, RLMArray, RLMSet; + +#ifdef __cplusplus +extern "C" { +#endif + +RLM_HEADER_AUDIT_BEGIN(nullability) + +#define REALM_FOR_EACH_SWIFT_PRIMITIVE_TYPE(macro) \ + macro(bool, Bool, bool) \ + macro(double, Double, double) \ + macro(float, Float, float) \ + macro(int64_t, Int64, int) + +#define REALM_FOR_EACH_SWIFT_OBJECT_TYPE(macro) \ + macro(NSString, String, string) \ + macro(NSDate, Date, date) \ + macro(NSData, Data, data) \ + macro(NSUUID, UUID, uuid) \ + macro(RLMDecimal128, Decimal128, decimal128) \ + macro(RLMObjectId, ObjectId, objectId) + +#define REALM_SWIFT_PROPERTY_ACCESSOR(objc, swift, rlmtype) \ + objc RLMGetSwiftProperty##swift(RLMObjectBase *, uint16_t); \ + objc RLMGetSwiftProperty##swift##Optional(RLMObjectBase *, uint16_t, bool *); \ + void RLMSetSwiftProperty##swift(RLMObjectBase *, uint16_t, objc); +REALM_FOR_EACH_SWIFT_PRIMITIVE_TYPE(REALM_SWIFT_PROPERTY_ACCESSOR) +#undef REALM_SWIFT_PROPERTY_ACCESSOR + +#define REALM_SWIFT_PROPERTY_ACCESSOR(objc, swift, rlmtype) \ + objc *_Nullable RLMGetSwiftProperty##swift(RLMObjectBase *, uint16_t); \ + void RLMSetSwiftProperty##swift(RLMObjectBase *, uint16_t, objc *_Nullable); +REALM_FOR_EACH_SWIFT_OBJECT_TYPE(REALM_SWIFT_PROPERTY_ACCESSOR) +#undef REALM_SWIFT_PROPERTY_ACCESSOR + +id _Nullable RLMGetSwiftPropertyAny(RLMObjectBase *, uint16_t); +void RLMSetSwiftPropertyAny(RLMObjectBase *, uint16_t, id); +RLMObjectBase *_Nullable RLMGetSwiftPropertyObject(RLMObjectBase *, uint16_t); +void RLMSetSwiftPropertyNil(RLMObjectBase *, uint16_t); +void RLMSetSwiftPropertyObject(RLMObjectBase *, uint16_t, RLMObjectBase *_Nullable); + +RLMArray *_Nonnull RLMGetSwiftPropertyArray(RLMObjectBase *obj, uint16_t); +RLMSet *_Nonnull RLMGetSwiftPropertySet(RLMObjectBase *obj, uint16_t); +RLMDictionary *_Nonnull RLMGetSwiftPropertyMap(RLMObjectBase *obj, uint16_t); + +RLM_HEADER_AUDIT_END(nullability) + +#ifdef __cplusplus +} // extern "C" +#endif diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncConfiguration.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncConfiguration.h new file mode 100644 index 000000000..54ea2ecfc --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncConfiguration.h @@ -0,0 +1,196 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2016 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import + +@class RLMApp; +@class RLMRealm; +@class RLMRealmConfiguration; +@class RLMUser; +@protocol RLMBSON; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** Determines file behavior during a client reset. + + @see: https://docs.mongodb.com/realm/sync/error-handling/client-resets/ +*/ +typedef NS_ENUM(NSUInteger, RLMClientResetMode) { + /// The local copy of the Realm is copied into a recovery + /// directory for safekeeping, and then deleted from the original location. The next time + /// the Realm for that partition value is opened, the Realm will automatically be re-downloaded from + /// Atlas App Services, and can be used as normal. + + /// Data written to the Realm after the local copy of the Realm diverged from the backup + /// remote copy will be present in the local recovery copy of the Realm file. The + /// re-downloaded Realm will initially contain only the data present at the time the Realm + /// was backed up on the server. + /// + /// @see: ``rlmSync_clientResetBackedUpRealmPath`` and ``RLMSyncErrorActionToken`` for more information on accessing the recovery directory and error information. + /// + /// The manual client reset mode handler can be set in two places: + /// 1. As an ErrorReportingBlock argument at ``RLMSyncConfiguration.manualClientResetHandler``. + /// 2. As an ErrorReportingBlock in the ``RLMSyncManager.errorHandler`` property. + /// @see: ``RLMSyncManager.errorHandler`` + /// + /// When an ``RLMSyncErrorClientResetError`` is thrown, the following rules determine which block is executed: + /// - If an error reporting block is set in ``.manualClientResetHandler`` and the ``RLMSyncManager.errorHandler``, the ``.manualClientResetHandler`` block will be executed. + /// - If an error reporting block is set in either the ``.manualClientResetHandler`` or the ``RLMSyncManager``, but not both, the single block will execute. + /// - If no block is set in either location, the client reset will not be handled. The application will likely need to be restarted and unsynced local changes may be lost. + /// @note: The ``RLMSyncManager.errorHandler`` is still invoked under all ``RLMSyncError``s *other than* ``RLMSyncErrorClientResetError``. + /// @see ``RLMSyncError`` for an exhaustive list. + RLMClientResetModeManual = 0, + /// All unsynchronized local changes are automatically discarded and the local state is + /// automatically reverted to the most recent state from the server. Unsynchronized changes + /// can then be recovered in the post-client-reset callback block. + /// + /// If ``RLMClientResetModeDiscardLocal`` is enabled but the client reset operation is unable to complete + /// then the client reset process reverts to manual mode. Example) During a destructive schema change this + /// mode will fail and invoke the manual client reset handler. + /// + /// The RLMClientResetModeDiscardLocal mode supports two client reset callbacks -- ``RLMClientResetBeforeBlock``, ``RLMClientResetAfterBlock`` -- which can be passed as arguments when creating the ``RLMSyncConfiguration``. + /// @see: ``RLMClientResetAfterBlock`` and ``RLMClientResetBeforeBlock`` + RLMClientResetModeDiscardLocal __deprecated_enum_msg("Use RLMClientResetModeDiscardUnsyncedChanges") = 1, + /// All unsynchronized local changes are automatically discarded and the local state is + /// automatically reverted to the most recent state from the server. Unsynchronized changes + /// can then be recovered in the post-client-reset callback block. + /// + /// If ``RLMClientResetModeDiscardUnsyncedChanges`` is enabled but the client reset operation is unable to complete + /// then the client reset process reverts to manual mode. Example) During a destructive schema change this + /// mode will fail and invoke the manual client reset handler. + /// + /// The RLMClientResetModeDiscardUnsyncedChanges mode supports two client reset callbacks -- ``RLMClientResetBeforeBlock``, ``RLMClientResetAfterBlock`` -- which can be passed as arguments when creating the ``RLMSyncConfiguration``. + /// @see: ``RLMClientResetAfterBlock`` and ``RLMClientResetBeforeBlock`` + RLMClientResetModeDiscardUnsyncedChanges = 1, + /// The client device will download a realm realm which reflects the latest + /// state of the server after a client reset. A recovery process is run locally in + /// an attempt to integrate the server version with any local changes from + /// before the client reset occurred. + /// + /// The changes are integrated with the following rules: + /// 1. Objects created locally that were not synced before client reset will be integrated. + /// 2. If an object has been deleted on the server, but was modified on the client, the delete takes precedence and the update is discarded + /// 3. If an object was deleted on the client, but not the server, then the client delete instruction is applied. + /// 4. In the case of conflicting updates to the same field, the client update is applied. + /// + /// If the recovery integration fails, the client reset process falls back to ``RLMClientResetModeManual``. + /// The recovery integration will fail if the "Client Recovery" setting is not enabled on the server. + /// Integration may also fail in the event of an incompatible schema change. + /// + /// The RLMClientResetModeRecoverUnsyncedChanges mode supports two client reset callbacks -- ``RLMClientResetBeforeBlock``, ``RLMClientResetAfterBlock`` -- which can be passed as arguments when creating the ``RLMSyncConfiguration``. + /// @see: ``RLMClientResetAfterBlock`` and ``RLMClientResetBeforeBlock`` + RLMClientResetModeRecoverUnsyncedChanges = 2, + /// The client device will download a realm with objects reflecting the latest version of the server. A recovery + /// process is run locally in an attempt to integrate the server version with any local changes from before the + /// client reset occurred. + /// + /// The changes are integrated with the following rules: + /// 1. Objects created locally that were not synced before client reset will be integrated. + /// 2. If an object has been deleted on the server, but was modified on the client, the delete takes precedence and the update is discarded + /// 3. If an object was deleted on the client, but not the server, then the client delete instruction is applied. + /// 4. In the case of conflicting updates to the same field, the client update is applied. + /// + /// If the recovery integration fails, the client reset process falls back to ``RLMClientResetModeDiscardUnsyncedChanges``. + /// The recovery integration will fail if the "Client Recovery" setting is not enabled on the server. + /// Integration may also fail in the event of an incompatible schema change. + /// + /// The RLMClientResetModeRecoverOrDiscardUnsyncedChanges mode supports two client reset callbacks -- ``RLMClientResetBeforeBlock``, ``RLMClientResetAfterBlock`` -- which can be passed as arguments when creating the ``RLMSyncConfiguration``. + /// @see: ``RLMClientResetAfterBlock`` and ``RLMClientResetBeforeBlock`` + RLMClientResetModeRecoverOrDiscardUnsyncedChanges = 3 +}; + +/** + A block type used to report before a client reset will occur. + The `beforeFrozen` is a frozen copy of the local state prior to client reset. + */ +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMClientResetBeforeBlock)(RLMRealm * _Nonnull beforeFrozen); + +/** + A block type used to report after a client reset occurred. + The `beforeFrozen` argument is a frozen copy of the local state prior to client reset. + The `after` argument contains the local database state after the client reset occurred. + */ +RLM_SWIFT_SENDABLE // invoked on a backgroun thread +typedef void(^RLMClientResetAfterBlock)(RLMRealm * _Nonnull beforeFrozen, RLMRealm * _Nonnull after); + +/** + A configuration object representing configuration state for a Realm which is intended to sync with a Realm Object + Server. + */ +@interface RLMSyncConfiguration : NSObject + +/// The user to which the remote Realm belongs. +@property (nonatomic, readonly) RLMUser *user; + +/** + The value this Realm is partitioned on. The partition key is a property defined in + Atlas App Services. All classes with a property with this value will be synchronized to the + Realm. + */ +@property (nonatomic, readonly) id partitionValue; + +/** + An enum which determines file recovery behavior in the event of a client reset. + @note: Defaults to `RLMClientResetModeRecoverUnsyncedChanges` + + @see: `RLMClientResetMode` + @see: https://docs.mongodb.com/realm/sync/error-handling/client-resets/ +*/ +@property (nonatomic) RLMClientResetMode clientResetMode; + +/** + A callback which notifies prior to prior to a client reset occurring. + @see: `RLMClientResetBeforeBlock` + */ +@property (nonatomic, nullable) RLMClientResetBeforeBlock beforeClientReset; + +/** + A callback which notifies after a client reset has occurred. + @see: `RLMClientResetAfterBlock` + */ +@property (nonatomic, nullable) RLMClientResetAfterBlock afterClientReset; + +/** + A callback that's executed when an `RLMSyncErrorClientResetError` is encountered. + @See RLMSyncErrorReportingBlock and RLMSyncErrorClientResetError for more + details on handling a client reset manually. + */ +@property (nonatomic, nullable) RLMSyncErrorReportingBlock manualClientResetHandler; + + +/** + Whether nonfatal connection errors should cancel async opens. + + By default, if a nonfatal connection error such as a connection timing out occurs, any currently pending asyncOpen operations will ignore the error and continue to retry until it succeeds. If this is set to true, the open will instead fail and report the error. + + NEXT-MAJOR: This should be true by default. + */ +@property (nonatomic) bool cancelAsyncOpenOnNonFatalErrors; + +/// :nodoc: +- (instancetype)init __attribute__((unavailable("This type cannot be created directly"))); + +/// :nodoc: ++ (instancetype)new __attribute__((unavailable("This type cannot be created directly"))); + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncManager.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncManager.h new file mode 100644 index 000000000..1dee453d0 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncManager.h @@ -0,0 +1,223 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2016 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMSyncSession, RLMSyncTimeoutOptions, RLMAppConfiguration; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +// NEXT-MAJOR: This enum needs to be removed when access to the logger is removed +// from the sync manager. +/// An enum representing different levels of sync-related logging that can be configured. +typedef RLM_CLOSED_ENUM(NSUInteger, RLMSyncLogLevel) { + /// Nothing will ever be logged. + RLMSyncLogLevelOff, + /// Only fatal errors will be logged. + RLMSyncLogLevelFatal, + /// Only errors will be logged. + RLMSyncLogLevelError, + /// Warnings and errors will be logged. + RLMSyncLogLevelWarn, + /// Information about sync events will be logged. Fewer events will be logged in order to avoid overhead. + RLMSyncLogLevelInfo, + /// Information about sync events will be logged. More events will be logged than with `RLMSyncLogLevelInfo`. + RLMSyncLogLevelDetail, + /// Log information that can aid in debugging. + /// + /// - warning: Will incur a measurable performance impact. + RLMSyncLogLevelDebug, + /// Log information that can aid in debugging. More events will be logged than with `RLMSyncLogLevelDebug`. + /// + /// - warning: Will incur a measurable performance impact. + RLMSyncLogLevelTrace, + /// Log information that can aid in debugging. More events will be logged than with `RLMSyncLogLevelTrace`. + /// + /// - warning: Will incur a measurable performance impact. + RLMSyncLogLevelAll +}; + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +/// A log callback function which can be set on RLMSyncManager. +/// +/// The log function may be called from multiple threads simultaneously, and is +/// responsible for performing its own synchronization if any is required. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void (^RLMSyncLogFunction)(RLMSyncLogLevel level, NSString *message); +#pragma clang diagnostic pop + +/// A block type representing a block which can be used to report a sync-related error to the application. If the error +/// pertains to a specific session, that session will also be passed into the block. +RLM_SWIFT_SENDABLE // invoked on a background thread +typedef void(^RLMSyncErrorReportingBlock)(NSError *, RLMSyncSession * _Nullable); + +/** + A manager which serves as a central point for sync-related configuration. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // is internally thread-safe +@interface RLMSyncManager : NSObject + +/** + A block which can optionally be set to report sync-related errors to your application. + + Any error reported through this block will be of the `RLMSyncError` type, and marked + with the `RLMSyncErrorDomain` domain. + + Errors reported through this mechanism are fatal, with several exceptions. Please consult + `RLMSyncError` for information about the types of errors that can be reported through + the block, and for for suggestions on handling recoverable error codes. + + @see `RLMSyncError` + */ +@property (nullable, atomic, copy) RLMSyncErrorReportingBlock errorHandler; + +/// :nodoc: +@property (nonatomic, copy) NSString *appID +__attribute__((deprecated("This property is not used for anything"))); + +/** + A string identifying this application which is included in the User-Agent + header of sync connections. By default, this will be the application's bundle + identifier. + + This property must be set prior to opening a synchronized Realm for the first + time. Any modifications made after opening a Realm will be ignored. + */ +@property (atomic, copy) NSString *userAgent; + +/** + The logging threshold which newly opened synced Realms will use. Defaults to + `RLMSyncLogLevelInfo`. + + By default logging strings are output to Apple System Logger. Set `logger` to + perform custom logging logic instead. + + @warning This property must be set before any synced Realms are opened. Setting it after + opening any synced Realm will do nothing. + */ +@property (atomic) RLMSyncLogLevel logLevel +__attribute__((deprecated("Use `RLMLogger.default.level`/`Logger.shared.level` to set/get the default logger threshold level."))); + +/** + The function which will be invoked whenever the sync client has a log message. + + If nil, log strings are output to Apple System Logger instead. + + @warning This property must be set before any synced Realms are opened. Setting + it after opening any synced Realm will do nothing. + */ +@property (atomic, nullable) RLMSyncLogFunction logger +__attribute__((deprecated("Use `RLMLogger.default`/`Logger.shared` to set/get the default logger."))); + +/** + The name of the HTTP header to send authorization data in when making requests to Atlas App Services which has + been configured to expect a custom authorization header. + */ +@property (nullable, atomic, copy) NSString *authorizationHeaderName; + +/** + Extra HTTP headers to append to every request to Atlas App Services. + + Modifying this property while sync sessions are active will result in all + sessions disconnecting and reconnecting using the new headers. + */ +@property (nullable, atomic, copy) NSDictionary *customRequestHeaders; + +/** + Options for the assorted types of connection timeouts for sync connections. + + If nil default values for all timeouts are used instead. + + @warning This property must be set before any synced Realms are opened. Setting + it after opening any synced Realm will do nothing. + */ +@property (nullable, atomic, copy) RLMSyncTimeoutOptions *timeoutOptions; + +/// :nodoc: +- (instancetype)init __attribute__((unavailable("RLMSyncManager cannot be created directly"))); + +/// :nodoc: ++ (instancetype)new __attribute__((unavailable("RLMSyncManager cannot be created directly"))); + +@end + +/** + Options for configuring timeouts and intervals in the sync client. + */ +@interface RLMSyncTimeoutOptions : NSObject +/// The maximum number of milliseconds to allow for a connection to +/// become fully established. This includes the time to resolve the +/// network address, the TCP connect operation, the SSL handshake, and +/// the WebSocket handshake. +/// +/// Defaults to 2 minutes. +@property (nonatomic) NSUInteger connectTimeout; + +/// The number of milliseconds to keep a connection open after all +/// sessions have been abandoned. +/// +/// After all synchronized Realms have been closed for a given server, the +/// connection is kept open until the linger time has expired to avoid the +/// overhead of reestablishing the connection when Realms are being closed and +/// reopened. +/// +/// Defaults to 30 seconds. +@property (nonatomic) NSUInteger connectionLingerTime; + +/// The number of milliseconds between each heartbeat ping message. +/// +/// The client periodically sends ping messages to the server to check if the +/// connection is still alive. Shorter periods make connection state change +/// notifications more responsive at the cost of battery life (as the antenna +/// will have to wake up more often). +/// +/// Defaults to 1 minute. +@property (nonatomic) NSUInteger pingKeepalivePeriod; + +/// How long in milliseconds to wait for a reponse to a heartbeat ping before +/// concluding that the connection has dropped. +/// +/// Shorter values will make connection state change notifications more +/// responsive as it will only change to `disconnected` after this much time has +/// elapsed, but overly short values may result in spurious disconnection +/// notifications when the server is simply taking a long time to respond. +/// +/// Defaults to 2 minutes. +@property (nonatomic) NSUInteger pongKeepaliveTimeout; + +/// The maximum amount of time, in milliseconds, since the loss of a +/// prior connection, for a new connection to be considered a "fast +/// reconnect". +/// +/// When a client first connects to the server, it defers uploading any local +/// changes until it has downloaded all changesets from the server. This +/// typically reduces the total amount of merging that has to be done, and is +/// particularly beneficial the first time that a specific client ever connects +/// to the server. +/// +/// When an existing client disconnects and then reconnects within the "fact +/// reconnect" time this is skipped and any local changes are uploaded +/// immediately without waiting for downloads, just as if the client was online +/// the whole time. +/// +/// Defaults to 1 minute. +@property (nonatomic) NSUInteger fastReconnectLimit; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncSession.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncSession.h new file mode 100644 index 000000000..31677ce9c --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncSession.h @@ -0,0 +1,234 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2016 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +/** + The current state of the session represented by a session object. + */ +typedef NS_ENUM(NSUInteger, RLMSyncSessionState) { + /// The sync session is actively communicating or attempting to communicate + /// with Atlas App Services. A session is considered Active even if + /// it is not currently connected. Check the connection state instead if you + /// wish to know if the connection is currently online. + RLMSyncSessionStateActive, + /// The sync session is not attempting to communicate with MongoDB + /// Realm due to the user logging out or synchronization being paused. + RLMSyncSessionStateInactive, + /// The sync session encountered a fatal error and is permanently invalid; it should be discarded. + RLMSyncSessionStateInvalid +}; + +/** + The current state of a sync session's connection. Sessions which are not in + the Active state will always be Disconnected. + */ +typedef NS_ENUM(NSUInteger, RLMSyncConnectionState) { + /// The sync session is not connected to the server, and is not attempting + /// to connect, either because the session is inactive or because it is + /// waiting to retry after a failed connection. + RLMSyncConnectionStateDisconnected, + /// The sync session is attempting to connect to Atlas App Services. + RLMSyncConnectionStateConnecting, + /// The sync session is currently connected to Atlas App Services. + RLMSyncConnectionStateConnected, +}; + +/** + The transfer direction (upload or download) tracked by a given progress notification block. + + Progress notification blocks can be registered on sessions if your app wishes to be informed + how many bytes have been uploaded or downloaded, for example to show progress indicator UIs. + */ +typedef RLM_CLOSED_ENUM(NSUInteger, RLMSyncProgressDirection) { + /// For monitoring upload progress. + RLMSyncProgressDirectionUpload, + /// For monitoring download progress. + RLMSyncProgressDirectionDownload, +}; + +/** + The desired behavior of a progress notification block. + + Progress notification blocks can be registered on sessions if your app wishes to be informed + how many bytes have been uploaded or downloaded, for example to show progress indicator UIs. + */ +typedef NS_ENUM(NSUInteger, RLMSyncProgressMode) { + /** + The block will be called indefinitely, or until it is unregistered by calling + `-[RLMProgressNotificationToken invalidate]`. + + Notifications will always report the latest number of transferred bytes, and the + most up-to-date number of total transferrable bytes. + */ + RLMSyncProgressModeReportIndefinitely, + /** + The block will, upon registration, store the total number of bytes + to be transferred. When invoked, it will always report the most up-to-date number + of transferrable bytes out of that original number of transferrable bytes. + + When the number of transferred bytes reaches or exceeds the + number of transferrable bytes, the block will be unregistered. + */ + RLMSyncProgressModeForCurrentlyOutstandingWork, +}; + +@class RLMUser, RLMSyncConfiguration, RLMSyncErrorActionToken, RLMSyncManager; + +/** + The type of a progress notification block intended for reporting a session's network + activity to the user. + + `transferredBytes` refers to the number of bytes that have been uploaded or downloaded. + `transferrableBytes` refers to the total number of bytes transferred, and pending transfer. + */ +typedef void(^RLMProgressNotificationBlock)(NSUInteger transferredBytes, NSUInteger transferrableBytes); + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** + A token object corresponding to a progress notification block on a session object. + + To stop notifications manually, call `-invalidate` on it. Notifications should be stopped before + the token goes out of scope or is destroyed. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // is internally thread-safe +@interface RLMProgressNotificationToken : RLMNotificationToken +@end + +/** + An object encapsulating an Atlas App Services "session". Sessions represent the + communication between the client (and a local Realm file on disk), and the server + (and a remote Realm with a given partition value stored on Atlas App Services). + + Sessions are always created by the SDK and vended out through various APIs. The + lifespans of sessions associated with Realms are managed automatically. Session + objects can be accessed from any thread. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // is internally thread-safe +@interface RLMSyncSession : NSObject + +/// The session's current state. +/// +/// This property is not KVO-compliant. +@property (nonatomic, readonly) RLMSyncSessionState state; + +/// The session's current connection state. +/// +/// This property is KVO-compliant and can be observed to be notified of changes. +/// Be warned that KVO observers for this property may be called on a background +/// thread. +@property (atomic, readonly) RLMSyncConnectionState connectionState; + +/// The user that owns this session. +- (nullable RLMUser *)parentUser; + +/** + If the session is valid, return a sync configuration that can be used to open the Realm + associated with this session. + */ +- (nullable RLMSyncConfiguration *)configuration; + +/** + Temporarily suspend syncronization and disconnect from the server. + + The session will not attempt to connect to Atlas App Services until `resume` + is called or the Realm file is closed and re-opened. + */ +- (void)suspend; + +/** + Resume syncronization and reconnect to Atlas App Services after suspending. + + This is a no-op if the session was already active or if the session is invalid. + Newly created sessions begin in the Active state and do not need to be resumed. + */ +- (void)resume; + +/** + Register a progress notification block. + + Multiple blocks can be registered with the same session at once. Each block + will be invoked on a side queue devoted to progress notifications. + + If the session has already received progress information from the + synchronization subsystem, the block will be called immediately. Otherwise, it + will be called as soon as progress information becomes available. + + The token returned by this method must be retained as long as progress + notifications are desired, and the `-invalidate` method should be called on it + when notifications are no longer needed and before the token is destroyed. + + If no token is returned, the notification block will never be called again. + There are a number of reasons this might be true. If the session has previously + experienced a fatal error it will not accept progress notification blocks. If + the block was configured in the `RLMSyncProgressForCurrentlyOutstandingWork` + mode but there is no additional progress to report (for example, the number + of transferrable bytes and transferred bytes are equal), the block will not be + called again. + + @param direction The transfer direction (upload or download) to track in this progress notification block. + @param mode The desired behavior of this progress notification block. + @param block The block to invoke when notifications are available. + + @return A token which must be held for as long as you want notifications to be delivered. + + @see `RLMSyncProgressDirection`, `RLMSyncProgress`, `RLMProgressNotificationBlock`, `RLMProgressNotificationToken` + */ +- (nullable RLMProgressNotificationToken *)addProgressNotificationForDirection:(RLMSyncProgressDirection)direction + mode:(RLMSyncProgressMode)mode + block:(RLMProgressNotificationBlock)block +NS_REFINED_FOR_SWIFT; + +/** + Given an error action token, immediately handle the corresponding action. + + @see `RLMSyncErrorClientResetError`, `RLMSyncErrorPermissionDeniedError` + */ ++ (void)immediatelyHandleError:(RLMSyncErrorActionToken *)token syncManager:(RLMSyncManager *)syncManager; + +/** + Get the sync session for the given Realm if it is a synchronized Realm, or `nil` + if it is not. + */ ++ (nullable RLMSyncSession *)sessionForRealm:(RLMRealm *)realm; + +@end + +// MARK: - Error action token + +#pragma mark - Error action token + +/** + An opaque token returned as part of certain errors. It can be + passed into certain APIs to perform certain actions. + + @see `RLMSyncErrorClientResetError`, `RLMSyncErrorPermissionDeniedError` + */ +RLM_SWIFT_SENDABLE RLM_FINAL +@interface RLMSyncErrorActionToken : NSObject + +/// :nodoc: +- (instancetype)init __attribute__((unavailable("This type cannot be created directly"))); + +/// :nodoc: ++ (instancetype)new __attribute__((unavailable("This type cannot be created directly"))); + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncSubscription.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncSubscription.h new file mode 100644 index 000000000..d35be19d0 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMSyncSubscription.h @@ -0,0 +1,346 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2021 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMObjectId; + +#pragma mark - Subscription States + +/// The current state of the subscription. This can be used for ensuring that +/// the subscriptions are not errored and that it has been successfully +/// synced to the server. +typedef NS_ENUM(NSUInteger, RLMSyncSubscriptionState) { + /// The subscription is complete and the server has sent all the data that matched the subscription + /// queries at the time the subscription set was updated. The server is now in a steady-state + /// synchronization mode where it will stream update as they come. + RLMSyncSubscriptionStateComplete, + /// The subscription encountered an error and synchronization is paused for this Realm. You can + /// find the error calling error in the subscription set to get a description of the error. You can + /// still use the current subscription set to write a subscription. + RLMSyncSubscriptionStateError, + /// The subscription is persisted locally but not yet processed by the server, which means + /// the server hasn't yet returned all the data that matched the updated subscription queries. + RLMSyncSubscriptionStatePending, + /// The subscription set has been super-ceded by an updated one, this typically means that + /// someone is trying to write a subscription on a different instance of the subscription set. + /// You should not use a superseded subscription set and instead obtain a new instance of + /// the subscription set to write a subscription. + RLMSyncSubscriptionStateSuperseded +}; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** + `RLMSyncSubscription` is used to define a Flexible Sync subscription obtained from querying a + subscription set, which can be used to read or remove/update a committed subscription. + */ +@interface RLMSyncSubscription : NSObject + +/// Name of the subscription. If not specified it will return nil. +@property (nonatomic, readonly, nullable) NSString *name; + +/// When the subscription was created. Recorded automatically. +@property (nonatomic, readonly) NSDate *createdAt; + +/// When the subscription was last updated. Recorded automatically. +@property (nonatomic, readonly) NSDate *updatedAt; + +/** + Updates a Flexible Sync's subscription query with an allowed query which will be used to bootstrap data + from the server when committed. + + @warning This method may only be called during a write subscription block. + + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + */ +- (void)updateSubscriptionWhere:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (void)updateSubscriptionWhere:(NSString *)predicateFormat + args:(va_list)args; + +/** + Updates a Flexible Sync's subscription query with an allowed query which will be used to bootstrap data + from the server when committed. + + @warning This method may only be called during a write subscription block. + + @param predicate The predicate with which to filter the objects on the server. + */ +- (void)updateSubscriptionWithPredicate:(NSPredicate *)predicate; + +@end + +/** + `RLMSyncSubscriptionSet` is a collection of `RLMSyncSubscription`s. This is the entry point + for adding and removing `RLMSyncSubscription`s. + */ +@interface RLMSyncSubscriptionSet : NSObject + +/// The number of subscriptions in the subscription set. +@property (readonly) NSUInteger count; + +/// Gets the error associated to the subscription set. This will be non-nil in case the current +/// state of the subscription set is `RLMSyncSubscriptionStateError`. +@property (nonatomic, readonly, nullable) NSError *error; + +/// Gets the state associated to the subscription set. +@property (nonatomic, readonly) RLMSyncSubscriptionState state; + +#pragma mark - Batch Update subscriptions + +/** + Synchronously performs any transactions (add/remove/update) to the subscription set within the block, + this will not wait for the server to acknowledge and see all the data associated with this collection of subscriptions, + and will return after committing the subscription transactions. + + @param block The block containing actions to perform to the subscription set. + */ +- (void)update:(__attribute__((noescape)) void(^)(void))block; +/// :nodoc: +- (void)write:(__attribute__((noescape)) void(^)(void))block __attribute__((unavailable("Renamed to -update"))); + +/** + Synchronously performs any transactions (add/remove/update) to the subscription set within the block, + this will not wait for the server to acknowledge and see all the data associated with this collection of subscriptions, + and will return after committing the subscription transactions. + + @param block The block containing actions to perform to the subscription set. + @param onComplete A block which is called upon synchronization of + subscriptions to the server. The block will be passed `nil` + if the update succeeded, and an error describing the problem + otherwise. + */ +- (void)update:(__attribute__((noescape)) void(^)(void))block + onComplete:(nullable void(^RLM_SWIFT_SENDABLE)(NSError *_Nullable))onComplete + __attribute__((swift_async(not_swift_private, 2))) + __attribute__((swift_attr("@_unsafeInheritExecutor"))); +/// :nodoc: +- (void)write:(__attribute__((noescape)) void(^)(void))block + onComplete:(void(^)(NSError * _Nullable))onComplete __attribute__((unavailable("Renamed to -update:onComplete."))); + +#pragma mark - Find subscription + +/** + Finds a subscription by the specified name. + + @param name The name used to identify the subscription. + + @return A subscription for the given name. + */ +- (nullable RLMSyncSubscription *)subscriptionWithName:(NSString *)name; + +/** + Finds a subscription by the query for the specified object class name. + + @param objectClassName The class name for the model class to be queried. + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + + @return A subscription for the given query.. + */ +- (nullable RLMSyncSubscription *)subscriptionWithClassName:(NSString *)objectClassName + where:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (nullable RLMSyncSubscription *)subscriptionWithClassName:(NSString *)objectClassName + where:(NSString *)predicateFormat + args:(va_list)args; + +/** + Finds a subscription by the query for the specified object class name. + + @param objectClassName The class name for the model class to be queried. + @param predicate The predicate used to to filter the objects on the server. + + @return A subscription for the given query.. + */ +- (nullable RLMSyncSubscription *)subscriptionWithClassName:(NSString *)objectClassName + predicate:(NSPredicate *)predicate; + +#pragma mark - Add a Subscription + +/** + Adds a new subscription to the subscription set which will be sent to the server when + committed at the end of a write subscription block. + + @warning This method may only be called during a write subscription block. + + @param objectClassName The class name for the model class to be queried. + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + */ +- (void)addSubscriptionWithClassName:(NSString *)objectClassName + where:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (void)addSubscriptionWithClassName:(NSString *)objectClassName + where:(NSString *)predicateFormat + args:(va_list)args; + +/** + Adds a new subscription to the subscription set which will be sent to the server when + committed at the end of a write subscription block. + + @warning This method may only be called during a write subscription block. + + @param objectClassName The class name for the model class to be queried. + @param name The name used the identify the subscription. + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + */ +- (void)addSubscriptionWithClassName:(NSString *)objectClassName + subscriptionName:(NSString *)name + where:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (void)addSubscriptionWithClassName:(NSString *)objectClassName + subscriptionName:(NSString *)name + where:(NSString *)predicateFormat + args:(va_list)args; + +/** + Adds a new subscription to the subscription set which will be sent to the server when + committed at the end of a write subscription block. + + @warning This method may only be called during a write subscription block. + + @param objectClassName The class name for the model class to be queried. + @param predicate The predicate defining the query for the subscription. + */ +- (void)addSubscriptionWithClassName:(NSString *)objectClassName + predicate:(NSPredicate *)predicate; + +/** + Adds a new subscription to the subscription set which will be sent to the server when + committed at the end of a write subscription block. + + @warning This method may only be called during a write subscription block. + + @param objectClassName The class name for the model class to be queried. + @param name The name used to identify the subscription. + @param predicate The predicate defining the query for the subscription. + */ +- (void)addSubscriptionWithClassName:(NSString *)objectClassName + subscriptionName:(nullable NSString *)name + predicate:(NSPredicate *)predicate; + +#pragma mark - Remove Subscription + +/** + Removes a subscription with the specified name from the subscription set. + + @warning This method may only be called during a write subscription block. + + @param name The name used the identify the subscription. + */ +- (void)removeSubscriptionWithName:(NSString *)name; + +/** + Removes a subscription with the specified query for the object class from the subscription set. + + @warning This method may only be called during a write subscription block. + + @param objectClassName The class name for the model class to be queried. + @param predicateFormat A predicate format string, optionally followed by a variable number of arguments. + */ +- (void)removeSubscriptionWithClassName:(NSString *)objectClassName + where:(NSString *)predicateFormat, ...; + +/// :nodoc: +- (void)removeSubscriptionWithClassName:(NSString *)objectClassName + where:(NSString *)predicateFormat + args:(va_list)args; + +/** + Removes a subscription with the specified query for the object class from the subscription set. + + @warning This method may only be called during a write subscription block. + + @param objectClassName The class name for the model class to be queried. + @param predicate The predicate which will be used to identify the subscription to be removed. + */ +- (void)removeSubscriptionWithClassName:(NSString *)objectClassName + predicate:(NSPredicate *)predicate; + +/** + Removes the subscription from the subscription set. + + @warning This method may only be called during a write subscription block. + + @param subscription An instance of the subscription to be removed. + */ +- (void)removeSubscription:(RLMSyncSubscription *)subscription; + +#pragma mark - Remove Subscriptions + +/** + Removes all subscription from the subscription set. + + @warning This method may only be called during a write subscription block. + @warning Removing all subscriptions will result in an error if no new subscription is added. Server should + acknowledge at least one subscription. + */ +- (void)removeAllSubscriptions; + +/** + Removes all subscription with the specified class name. + + @param className The class name for the model class to be queried. + + @warning This method may only be called during a write subscription block. + */ +- (void)removeAllSubscriptionsWithClassName:(NSString *)className; + +#pragma mark - SubscriptionSet Collection + +/** + Returns the subscription at the given `index`. + + @param index The index. + + @return A subscription for the given index in the subscription set. + */ +- (nullable RLMSyncSubscription *)objectAtIndex:(NSUInteger)index; + +/** + Returns the first object in the subscription set list, or `nil` if the subscriptions are empty. + + @return A subscription. + */ +- (nullable RLMSyncSubscription *)firstObject; + +/** + Returns the last object in the subscription set, or `nil` if the subscriptions are empty. + + @return A subscription. + */ +- (nullable RLMSyncSubscription *)lastObject; + +#pragma mark - Subscript + +/** + Returns the subscription at the given `index`. + + @param index The index. + + @return A subscription for the given index in the subscription set. + */ +- (id)objectAtIndexedSubscript:(NSUInteger)index; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMThreadSafeReference.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMThreadSafeReference.h new file mode 100644 index 000000000..9472942ed --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMThreadSafeReference.h @@ -0,0 +1,107 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2016 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMRealm; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** + Objects of types which conform to `RLMThreadConfined` can be managed by a Realm, which will make + them bound to a thread-specific `RLMRealm` instance. Managed objects must be explicitly exported + and imported to be passed between threads. + + Managed instances of objects conforming to this protocol can be converted to a thread-safe + reference for transport between threads by passing to the + `+[RLMThreadSafeReference referenceWithThreadConfined:]` constructor. + + Note that only types defined by Realm can meaningfully conform to this protocol, and defining new + classes which attempt to conform to it will not make them work with `RLMThreadSafeReference`. + */ +@protocol RLMThreadConfined +// Conformance to the `RLMThreadConfined_Private` protocol will be enforced at runtime. + +/** + The Realm which manages the object, or `nil` if the object is unmanaged. + + Unmanaged objects are not confined to a thread and cannot be passed to methods expecting a + `RLMThreadConfined` object. + */ +@property (nonatomic, readonly, nullable) RLMRealm *realm; + +/// Indicates if the object can no longer be accessed because it is now invalid. +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +@end + +/** + An object intended to be passed between threads containing a thread-safe reference to its + thread-confined object. + + To resolve a thread-safe reference on a target Realm on a different thread, pass to + `-[RLMRealm resolveThreadSafeReference:]`. + + @warning A `RLMThreadSafeReference` object must be resolved at most once. + Failing to resolve a `RLMThreadSafeReference` will result in the source version of the + Realm being pinned until the reference is deallocated. + + @note Prefer short-lived `RLMThreadSafeReference`s as the data for the version of the source Realm + will be retained until all references have been resolved or deallocated. + + @see `RLMThreadConfined` + @see `-[RLMRealm resolveThreadSafeReference:]` + */ +RLM_SWIFT_SENDABLE RLM_FINAL // is internally thread-safe +@interface RLMThreadSafeReference<__covariant Confined : id> : NSObject + +/** + Create a thread-safe reference to the thread-confined object. + + @param threadConfined The thread-confined object to create a thread-safe reference to. + + @note You may continue to use and access the thread-confined object after passing it to this + constructor. + */ ++ (instancetype)referenceWithThreadConfined:(Confined)threadConfined; + +/** + Indicates if the reference can no longer be resolved because an attempt to resolve it has already + occurred. References can only be resolved once. + */ +@property (nonatomic, readonly, getter = isInvalidated) BOOL invalidated; + +#pragma mark - Unavailable Methods + +/** + `-[RLMThreadSafeReference init]` is not available because `RLMThreadSafeReference` cannot be + created directly. `RLMThreadSafeReference` instances must be obtained by calling + `-[RLMRealm resolveThreadSafeReference:]`. + */ +- (instancetype)init __attribute__((unavailable("RLMThreadSafeReference cannot be created directly"))); + +/** + `-[RLMThreadSafeReference new]` is not available because `RLMThreadSafeReference` cannot be + created directly. `RLMThreadSafeReference` instances must be obtained by calling + `-[RLMRealm resolveThreadSafeReference:]`. + */ ++ (instancetype)new __attribute__((unavailable("RLMThreadSafeReference cannot be created directly"))); + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMUpdateResult.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMUpdateResult.h new file mode 100644 index 000000000..df0b237e3 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMUpdateResult.h @@ -0,0 +1,45 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMObjectId; +@protocol RLMBSON; + +/// The result of an `updateOne` or `updateMany` operation a `RLMMongoCollection`. +RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class +@interface RLMUpdateResult : NSObject + +/// The number of documents that matched the filter. +@property (nonatomic, readonly) NSUInteger matchedCount; + +/// The number of documents modified. +@property (nonatomic, readonly) NSUInteger modifiedCount; + +/// The identifier of the inserted document if an upsert took place and the document's primary key is an `ObjectId`. +@property (nonatomic, nullable, readonly) RLMObjectId *objectId +__attribute__((deprecated("Use documentId instead, which support all BSON types", "documentId"))); + +/// The identifier of the inserted document if an upsert took place. +@property (nonatomic, nullable, readonly) id documentId; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMUser.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMUser.h new file mode 100644 index 000000000..436350f9b --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMUser.h @@ -0,0 +1,447 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2016 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import +#import +#import + +@class RLMUser, RLMSyncSession, RLMRealm, RLMUserIdentity, RLMAPIKeyAuth, RLMMongoClient, RLMMongoDatabase, RLMMongoCollection, RLMUserProfile; +@protocol RLMBSON; + +/** + The state of the user object. + */ +typedef NS_ENUM(NSUInteger, RLMUserState) { + /// The user is logged out. Call `logInWithCredentials:...` with valid credentials to log the user back in. + RLMUserStateLoggedOut, + /// The user is logged in, and any Realms associated with it are syncing with Atlas App Services. + RLMUserStateLoggedIn, + /// The user has been removed, and cannot be used. + RLMUserStateRemoved +}; + +/// A block type used to report an error related to a specific user. +RLM_SWIFT_SENDABLE +typedef void(^RLMOptionalUserBlock)(RLMUser * _Nullable, NSError * _Nullable); + +/// A block type used to report an error on a network request from the user. +RLM_SWIFT_SENDABLE +typedef void(^RLMUserOptionalErrorBlock)(NSError * _Nullable); + +/// A block which returns a dictionary should there be any custom data set for a user +RLM_SWIFT_SENDABLE +typedef void(^RLMUserCustomDataBlock)(NSDictionary * _Nullable, NSError * _Nullable); + +/// A block type for returning from function calls. +RLM_SWIFT_SENDABLE +typedef void(^RLMCallFunctionCompletionBlock)(id _Nullable, NSError * _Nullable); + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/** + A `RLMUser` instance represents a single Realm App user account. + + A user may have one or more credentials associated with it. These credentials + uniquely identify the user to the authentication provider, and are used to sign + into an Atlas App Services user account. + + Note that user objects are only vended out via SDK APIs, and cannot be directly + initialized. User objects can be accessed from any thread. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // internally thread-safe +@interface RLMUser : NSObject + +/** + The unique Atlas App Services string identifying this user. + Note this is different from an identity: A user may have multiple identities but has a single identifier. See RLMUserIdentity. + */ +@property (nonatomic, readonly) NSString *identifier NS_SWIFT_NAME(id); + +/// Returns an array of identities currently linked to a user. +@property (nonatomic, readonly) NSArray *identities; + +/** + The user's refresh token used to access App Services. + + By default, refresh tokens expire 60 days after they are issued. + You can configure this time for your App's refresh tokens to be + anywhere between 30 minutes and 180 days. + + You can configure the refresh token expiration time for all sessions in + an App from the Admin UI or Admin API. +*/ +@property (nullable, nonatomic, readonly) NSString *refreshToken; + +/** + The user's access token used to access App Services. + + This is required to make HTTP requests to Atlas App Services like the Data API or GraphQL. + It should be treated as sensitive data. + + The Realm SDK automatically manages access tokens and refreshes them + when they expire. + */ +@property (nullable, nonatomic, readonly) NSString *accessToken; + +/** + The current state of the user. + */ +@property (nonatomic, readonly) RLMUserState state; + +/** + Indicates if the user is logged in or not. Returns true if the access token and refresh token are not empty. + */ +@property (nonatomic, readonly) BOOL isLoggedIn; + +#pragma mark - Lifecycle + +/** + Create a partition-based sync configuration instance for the given partition value. + + @param partitionValue The `RLMBSON` value the Realm is partitioned on. + @return A default configuration object with the sync configuration set to use the given partition value. + */ +- (RLMRealmConfiguration *)configurationWithPartitionValue:(nullable id)partitionValue NS_REFINED_FOR_SWIFT; + +/** + Create a partition-based sync configuration instance for the given partition value. + + @param partitionValue The `RLMBSON` value the Realm is partitioned on. + @param clientResetMode Determines file recovery behavior in the event of a client reset. + See: https://docs.mongodb.com/realm/sync/error-handling/client-resets/ + + @return A configuration object with the sync configuration set to use the given partition value. + */ +- (RLMRealmConfiguration *)configurationWithPartitionValue:(nullable id)partitionValue + clientResetMode:(RLMClientResetMode)clientResetMode NS_REFINED_FOR_SWIFT; + +/** + Create a partition-based sync configuration instance for the given partition value. + + @param partitionValue The `RLMBSON` value the Realm is partitioned on. + @param clientResetMode Determines file recovery behavior in the event of a client reset. + See: https://docs.mongodb.com/realm/sync/error-handling/client-resets/ + @param beforeResetBlock A callback which notifies prior to a client reset occurring. See: `RLMClientResetBeforeBlock` + @param afterResetBlock A callback which notifies after a client reset has occurred. See: `RLMClientResetAfterBlock` + + @return A configuration object with the sync configuration set to use the given partition value. + */ +- (RLMRealmConfiguration *)configurationWithPartitionValue:(nullable id)partitionValue + clientResetMode:(RLMClientResetMode)clientResetMode + notifyBeforeReset:(nullable RLMClientResetBeforeBlock)beforeResetBlock + notifyAfterReset:(nullable RLMClientResetAfterBlock)afterResetBlock NS_REFINED_FOR_SWIFT; + +/** + Create a partition-based sync configuration instance for the given partition value. + + @param partitionValue The `RLMBSON` value the Realm is partitioned on. + @param clientResetMode Determines file recovery behavior in the event of a client reset. + See: https://docs.mongodb.com/realm/sync/error-handling/client-resets/ + @param manualClientResetHandler An error reporting block that is invoked during a client reset. + @See ``RLMSyncErrorReportingBlock`` and ``RLMClientResetInfo`` + + @return A configuration object with the sync configuration set to use the given partition value. + */ +- (RLMRealmConfiguration *)configurationWithPartitionValue:(nullable id)partitionValue + clientResetMode:(RLMClientResetMode)clientResetMode + manualClientResetHandler:(nullable RLMSyncErrorReportingBlock)manualClientResetHandler NS_REFINED_FOR_SWIFT; + +/** + Create a flexible sync configuration instance, which can be used to open a Realm that + supports flexible sync. + + @note A single server-side Device Sync App can sync data with either partition-based realms or flexible sync based realms. + In order for an application to contain both partition-based and flexible sync realms, more than one + server-side Device Sync App must be used. + + @return A ``RLMRealmConfiguration`` instance with a flexible sync configuration. + */ +- (RLMRealmConfiguration *)flexibleSyncConfiguration NS_REFINED_FOR_SWIFT; + +/** + Create a flexible sync configuration instance, which can be used to open a Realm that + supports flexible sync. + + @note A single server-side Device Sync App can sync data with either partition-based realms or flexible sync based realms. + In order for an application to contain both partition-based and flexible sync realms, more than one + server-side Device Sync App must be used. + + @param clientResetMode Determines file recovery behavior in the event of a client reset. + See: https://docs.mongodb.com/realm/sync/error-handling/client-resets/ + @param beforeResetBlock A callback which notifies prior to a client reset occurring. See: `RLMClientResetBeforeBlock` + @param afterResetBlock A callback which notifies after a client reset has occurred. See: `RLMClientResetAfterBlock` + + @return A `RLMRealmConfiguration` instance with a flexible sync configuration. + */ +- (RLMRealmConfiguration *)flexibleSyncConfigurationWithClientResetMode:(RLMClientResetMode)clientResetMode + notifyBeforeReset:(nullable RLMClientResetBeforeBlock)beforeResetBlock + notifyAfterReset:(nullable RLMClientResetAfterBlock)afterResetBlock NS_REFINED_FOR_SWIFT; +/** + Create a flexible sync configuration instance, which can be used to open a Realm that + supports flexible sync. + + @note A single server-side Device Sync App can sync data with either partition-based realms or flexible sync based realms. + In order for an application to contain both partition-based and flexible sync realms, more than one + server-side Device Sync App must be used. + + @param clientResetMode Determines file recovery behavior in the event of a client reset. + See: https://docs.mongodb.com/realm/sync/error-handling/client-resets/ + @param manualClientResetHandler An error reporting block that is invoked during a client reset. + @See `RLMSyncErrorReportingBlock` and `RLMClientResetInfo` + + @return A `RLMRealmConfiguration` instance with a flexible sync configuration. + */ +- (RLMRealmConfiguration *)flexibleSyncConfigurationWithClientResetMode:(RLMClientResetMode)clientResetMode + manualClientResetHandler:(nullable RLMSyncErrorReportingBlock)manualClientResetHandler NS_REFINED_FOR_SWIFT; + +/** + Create a flexible sync configuration instance, which can be used to open a Realm that + supports flexible sync. + + @note A single server-side Device Sync App can sync data with either partition-based realms or flexible sync based realms. + In order for an application to contain both partition-based and flexible sync realms, more than one + server-side Device Sync App must be used. + + @param initialSubscriptions A block which receives a subscription set instance, that can be + used to add an initial set of subscriptions which will be executed + when the Realm is first opened. + @param rerunOnOpen If true, allows to run the initial set of subscriptions specified, on every app startup. + This can be used to re-run dynamic time ranges and other queries that require a + re-computation of a static variable. + + @return A `RLMRealmConfiguration` instance with a flexible sync configuration. + */ +- (RLMRealmConfiguration *)flexibleSyncConfigurationWithInitialSubscriptions:(RLMFlexibleSyncInitialSubscriptionsBlock)initialSubscriptions + rerunOnOpen:(BOOL)rerunOnOpen NS_REFINED_FOR_SWIFT; +/** + Create a flexible sync configuration instance, which can be used to open a Realm that + supports flexible sync. + + @note A single server-side Device Sync App can sync data with either partition-based realms or flexible sync based realms. + In order for an application to contain both partition-based and flexible sync realms, more than one + server-side Device Sync App must be used. + + @param initialSubscriptions A block which receives a subscription set instance, that can be + used to add an initial set of subscriptions which will be executed + when the Realm is first opened. + @param rerunOnOpen If true, allows to run the initial set of subscriptions specified, on every app startup. + This can be used to re-run dynamic time ranges and other queries that require a + re-computation of a static variable. + @param clientResetMode Determines file recovery behavior in the event of a client reset. + See: https://docs.mongodb.com/realm/sync/error-handling/client-resets/ + @param beforeResetBlock A callback which notifies prior to a client reset occurring. See: `RLMClientResetBeforeBlock` + @param afterResetBlock A callback which notifies after a client reset has occurred. See: `RLMClientResetAfterBlock` + + @return A `RLMRealmConfiguration` instance with a flexible sync configuration. + */ +- (RLMRealmConfiguration *)flexibleSyncConfigurationWithInitialSubscriptions:(RLMFlexibleSyncInitialSubscriptionsBlock)initialSubscriptions + rerunOnOpen:(BOOL)rerunOnOpen + clientResetMode:(RLMClientResetMode)clientResetMode + notifyBeforeReset:(nullable RLMClientResetBeforeBlock)beforeResetBlock + notifyAfterReset:(nullable RLMClientResetAfterBlock)afterResetBlock NS_REFINED_FOR_SWIFT; + +/** + Create a flexible sync configuration instance, which can be used to open a Realm that + supports flexible sync. + + @note A single server-side Device Sync App can sync data with either partition-based realms or flexible sync based realms. + In order for an application to contain both partition-based and flexible sync realms, more than one + server-side Device Sync App must be used. + + @param initialSubscriptions A block which receives a subscription set instance, that can be + used to add an initial set of subscriptions which will be executed + when the Realm is first opened. + @param rerunOnOpen If true, allows to run the initial set of subscriptions specified, on every app startup. + This can be used to re-run dynamic time ranges and other queries that require a + re-computation of a static variable. + @param clientResetMode Determines file recovery behavior in the event of a client reset. + See: https://docs.mongodb.com/realm/sync/error-handling/client-resets/ + @param manualClientResetHandler An error reporting block that is invoked during a client reset. + @See `RLMSyncErrorReportingBlock` and `RLMClientResetInfo` + + @return A `RLMRealmConfiguration` instance with a flexible sync configuration. + */ +- (RLMRealmConfiguration *)flexibleSyncConfigurationWithInitialSubscriptions:(RLMFlexibleSyncInitialSubscriptionsBlock)initialSubscriptions + rerunOnOpen:(BOOL)rerunOnOpen + clientResetMode:(RLMClientResetMode)clientResetMode + manualClientResetHandler:(nullable RLMSyncErrorReportingBlock)manualClientResetHandler NS_REFINED_FOR_SWIFT; + +#pragma mark - Sessions + +/** + Retrieve a valid session object belonging to this user for a given URL, or `nil` + if no such object exists. + */ +- (nullable RLMSyncSession *)sessionForPartitionValue:(id)partitionValue; + +/// Retrieve all the valid sessions belonging to this user. +@property (nonatomic, readonly) NSArray *allSessions; + +#pragma mark - Custom Data + +/** + The custom data of the user. + This is configured in your Atlas App Services app. + */ +@property (nonatomic, readonly) NSDictionary *customData NS_REFINED_FOR_SWIFT; + +/** + The profile of the user. + */ +@property (nonatomic, readonly) RLMUserProfile *profile; + +/** + Refresh a user's custom data. This will, in effect, refresh the user's auth session. + */ +- (void)refreshCustomDataWithCompletion:(RLMUserCustomDataBlock)completion; + +/** + Links the currently authenticated user with a new identity, where the identity is defined by the credential + specified as a parameter. This will only be successful if this `RLMUser` is the currently authenticated + with the client from which it was created. On success a new user will be returned with the new linked credentials. + + @param credentials The `RLMCredentials` used to link the user to a new identity. + @param completion The completion handler to call when the linking is complete. + If the operation is successful, the result will contain a new + `RLMUser` object representing the currently logged in user. +*/ +- (void)linkUserWithCredentials:(RLMCredentials *)credentials + completion:(RLMOptionalUserBlock)completion NS_REFINED_FOR_SWIFT; + +/** + Removes the user + + This logs out and destroys the session related to this user. The completion block will return an error + if the user is not found or is already removed. + + @param completion A callback invoked on completion +*/ +- (void)removeWithCompletion:(RLMUserOptionalErrorBlock)completion; + +/** + Permanently deletes this user from your Atlas App Services app. + + The users state will be set to `Removed` and the session will be destroyed. + If the delete request fails, the local authentication state will be untouched. + + @param completion A callback invoked on completion +*/ +- (void)deleteWithCompletion:(RLMUserOptionalErrorBlock)completion; + +/** + Logs out the current user + + The users state will be set to `Removed` is they are an anonymous user or `LoggedOut` if they are authenticated by an email / password or third party auth clients + If the logout request fails, this method will still clear local authentication state. + + @param completion A callback invoked on completion +*/ +- (void)logOutWithCompletion:(RLMUserOptionalErrorBlock)completion; + +/** + A client for the user API key authentication provider which + can be used to create and modify user API keys. + + This client should only be used by an authenticated user. +*/ +@property (nonatomic, readonly) RLMAPIKeyAuth *apiKeysAuth; + +/// A client for interacting with a remote MongoDB instance +/// @param serviceName The name of the MongoDB service +- (RLMMongoClient *)mongoClientWithServiceName:(NSString *)serviceName NS_REFINED_FOR_SWIFT; + +/** + Calls the Atlas App Services function with the provided name and arguments. + + @param name The name of the Atlas App Services function to be called. + @param arguments The `BSONArray` of arguments to be provided to the function. + @param completion The completion handler to call when the function call is complete. + This handler is executed on a non-main global `DispatchQueue`. +*/ +- (void)callFunctionNamed:(NSString *)name + arguments:(NSArray> *)arguments + completionBlock:(RLMCallFunctionCompletionBlock)completion NS_REFINED_FOR_SWIFT; + +/// :nodoc: +- (instancetype)init __attribute__((unavailable("RLMUser cannot be created directly"))); +/// :nodoc: ++ (instancetype)new __attribute__((unavailable("RLMUser cannot be created directly"))); + +@end + +#pragma mark - User info classes + +/** + An identity of a user. A user can have multiple identities, usually associated with multiple providers. + Note this is different from a user's unique identifier string. + @seeAlso `RLMUser.identifier` + */ +RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class +@interface RLMUserIdentity : NSObject + +/** + The associated provider type + */ +@property (nonatomic, readonly) NSString *providerType; + +/** + The string which identifies the RLMUserIdentity + */ +@property (nonatomic, readonly) NSString *identifier; + +/** + Initialize an RLMUserIdentity for the given identifier and provider type. + @param providerType the associated provider type + @param identifier the identifier of the identity + */ +- (instancetype)initUserIdentityWithProviderType:(NSString *)providerType + identifier:(NSString *)identifier; + +@end + +/** + A profile for a given User. + */ +RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class +@interface RLMUserProfile : NSObject + +/// The full name of the user. +@property (nonatomic, readonly, nullable) NSString *name; +/// The email address of the user. +@property (nonatomic, readonly, nullable) NSString *email; +/// A URL to the user's profile picture. +@property (nonatomic, readonly, nullable) NSString *pictureURL; +/// The first name of the user. +@property (nonatomic, readonly, nullable) NSString *firstName; +/// The last name of the user. +@property (nonatomic, readonly, nullable) NSString *lastName; +/// The gender of the user. +@property (nonatomic, readonly, nullable) NSString *gender; +/// The birthdate of the user. +@property (nonatomic, readonly, nullable) NSString *birthday; +/// The minimum age of the user. +@property (nonatomic, readonly, nullable) NSString *minAge; +/// The maximum age of the user. +@property (nonatomic, readonly, nullable) NSString *maxAge; +/// The BSON dictionary of metadata associated with this user. +@property (nonatomic, readonly) NSDictionary *metadata NS_REFINED_FOR_SWIFT; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMUserAPIKey.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMUserAPIKey.h new file mode 100644 index 000000000..2cdd82b2a --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMUserAPIKey.h @@ -0,0 +1,43 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/// UserAPIKey model for APIKeys recevied from the server. +RLM_SWIFT_SENDABLE RLM_FINAL // immutable final class +@interface RLMUserAPIKey : NSObject + +/// Indicates if the API key is disabled or not +@property (nonatomic, readonly) BOOL disabled; + +/// The name of the key. +@property (nonatomic, readonly) NSString *name; + +/// The actual key. Will only be included in +/// the response when an API key is first created. +@property (nonatomic, readonly, nullable) NSString *key; + +/// The ObjectId of the API key +@property (nonatomic, readonly) RLMObjectId *objectId NS_REFINED_FOR_SWIFT; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMValue.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMValue.h new file mode 100644 index 000000000..ac1f10ee4 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/RLMValue.h @@ -0,0 +1,97 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import +#import +#import +#import +#import + +#pragma mark RLMValue + +/** + RLMValue is a property type which represents a polymorphic Realm value. This is similar to the usage of + `AnyObject` / `Any` in Swift. +``` + // A property on `MyObject` + @property (nonatomic) id myAnyValue; + + // A property on `AnotherObject` + @property (nonatomic) id myAnyValue; + + MyObject *myObject = [MyObject createInRealm:realm withValue:@[]]; + myObject.myAnyValue = @1234; // underlying type is NSNumber. + myObject.myAnyValue = @"hello"; // underlying type is NSString. + AnotherObject *anotherObject = [AnotherObject createInRealm:realm withValue:@[]]; + myObject.myAnyValue = anotherObject; // underlying type is RLMObject. +``` + The following types conform to RLMValue: + + `NSData` + `NSDate` + `NSNull` + `NSNumber` + `NSUUID` + `NSString` + `RLMObject + `RLMObjectId` + `RLMDecimal128` + */ +@protocol RLMValue + +/// Describes the type of property stored. +@property (readonly) RLMPropertyType rlm_valueType; + +@end + +/// :nodoc: +@interface NSNull (RLMValue) +@end + +/// :nodoc: +@interface NSNumber (RLMValue) +@end + +/// :nodoc: +@interface NSString (RLMValue) +@end + +/// :nodoc: +@interface NSData (RLMValue) +@end + +/// :nodoc: +@interface NSDate (RLMValue) +@end + +/// :nodoc: +@interface NSUUID (RLMValue) +@end + +/// :nodoc: +@interface RLMDecimal128 (RLMValue) +@end + +/// :nodoc: +@interface RLMObjectBase (RLMValue) +@end + +/// :nodoc: +@interface RLMObjectId (RLMValue) +@end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/Realm.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/Realm.h new file mode 100644 index 000000000..245596393 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Headers/Realm.h @@ -0,0 +1,63 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Info.plist new file mode 100644 index 000000000..7488f58f1 Binary files /dev/null and b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Info.plist differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/LICENSE b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/LICENSE new file mode 100644 index 000000000..66a27ec5f --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/LICENSE @@ -0,0 +1,177 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Modules/module.modulemap b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Modules/module.modulemap new file mode 100644 index 000000000..519ddc20b --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Modules/module.modulemap @@ -0,0 +1,88 @@ +framework module Realm { + export Foundation + + umbrella header "Realm.h" + + header "RLMArray.h" + header "RLMAsymmetricObject.h" + header "RLMDecimal128.h" + header "RLMDictionary.h" + header "RLMEmbeddedObject.h" + header "RLMLogger.h" + header "RLMMigration.h" + header "RLMObject.h" + header "RLMObjectId.h" + header "RLMObjectSchema.h" + header "RLMProperty.h" + header "RLMProviderClient.h" + header "RLMRealm+Sync.h" + header "RLMRealm.h" + header "RLMRealmConfiguration.h" + header "RLMResults.h" + header "RLMSchema.h" + header "RLMSectionedResults.h" + header "RLMSet.h" + header "RLMValue.h" + + header "RLMApp.h" + header "RLMCredentials.h" + header "RLMNetworkTransport.h" + header "RLMPushClient.h" + header "RLMRealm+Sync.h" + header "RLMSyncConfiguration.h" + header "RLMSyncManager.h" + header "RLMSyncSession.h" + header "RLMUser.h" + header "RLMUserAPIKey.h" + header "RLMAPIKeyAuth.h" + header "RLMEmailPasswordAuth.h" + header "NSError+RLMSync.h" + header "RLMBSON.h" + header "RLMMongoClient.h" + header "RLMMongoDatabase.h" + header "RLMMongoCollection.h" + header "RLMUpdateResult.h" + header "RLMFindOptions.h" + header "RLMFindOneAndModifyOptions.h" + header "RLMSyncSubscription.h" + + explicit module Private { + header "RLMAccessor.h" + header "RLMApp_Private.h" + header "RLMArray_Private.h" + header "RLMAsyncTask_Private.h" + header "RLMCollection_Private.h" + header "RLMDictionary_Private.h" + header "RLMLogger_Private.h" + header "RLMEvent.h" + header "RLMMongoCollection_Private.h" + header "RLMObjectBase_Dynamic.h" + header "RLMObjectBase_Private.h" + header "RLMObjectSchema_Private.h" + header "RLMObjectStore.h" + header "RLMObject_Private.h" + header "RLMProperty_Private.h" + header "RLMRealmConfiguration_Private.h" + header "RLMRealm_Private.h" + header "RLMResults_Private.h" + header "RLMScheduler.h" + header "RLMSchema_Private.h" + header "RLMSectionedResults.h" + header "RLMSet_Private.h" + header "RLMSwiftCollectionBase.h" + header "RLMSwiftProperty.h" + header "RLMSwiftValueStorage.h" + header "RLMSyncConfiguration_Private.h" + header "RLMSyncSubscription_Private.h" + header "RLMUser_Private.h" + } + + explicit module Dynamic { + header "RLMRealm_Dynamic.h" + header "RLMObjectBase_Dynamic.h" + } + + explicit module Swift { + header "RLMSwiftObject.h" + } +} diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMAccessor.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMAccessor.h new file mode 100644 index 000000000..db915ca7c --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMAccessor.h @@ -0,0 +1,53 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMObjectSchema, RLMProperty, RLMObjectBase; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +// +// Accessors Class Creation/Caching +// + +// get accessor classes for an object class - generates classes if not cached +Class RLMManagedAccessorClassForObjectClass(Class objectClass, RLMObjectSchema *schema, const char *name); +Class RLMUnmanagedAccessorClassForObjectClass(Class objectClass, RLMObjectSchema *schema); + +// +// Dynamic getters/setters +// +FOUNDATION_EXTERN void RLMDynamicValidatedSet(RLMObjectBase *obj, NSString *propName, id __nullable val); +FOUNDATION_EXTERN id __nullable RLMDynamicGet(RLMObjectBase *obj, RLMProperty *prop); +FOUNDATION_EXTERN id __nullable RLMDynamicGetByName(RLMObjectBase *obj, NSString *propName); + +// by property/column +void RLMDynamicSet(RLMObjectBase *obj, RLMProperty *prop, id val); + +// +// Class modification +// + +// Replace className method for the given class +void RLMReplaceClassNameMethod(Class accessorClass, NSString *className); + +// Replace sharedSchema method for the given class +void RLMReplaceSharedSchemaMethod(Class accessorClass, RLMObjectSchema * __nullable schema); + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMApp_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMApp_Private.h new file mode 100644 index 000000000..5da5c3c7a --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMApp_Private.h @@ -0,0 +1,50 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/// Observer block for app notifications. +typedef void(^RLMAppNotificationBlock)(RLMApp *); + +/// Token that identifies an observer. Unsubscribes when deconstructed to +/// avoid dangling observers, therefore this must be retained to hold +/// onto a subscription. +@interface RLMAppSubscriptionToken : NSObject +- (void)unsubscribe; +@end + +@interface RLMApp () +/// Returns all currently cached Apps ++ (NSArray *)allApps; +/// Subscribe to notifications for this RLMApp. +- (RLMAppSubscriptionToken *)subscribe:(RLMAppNotificationBlock)block; + ++ (instancetype)appWithConfiguration:(RLMAppConfiguration *)configuration; + ++ (void)resetAppCache; +@end + +@interface RLMAppConfiguration () +@property (nonatomic) NSString *appId; +@property (nonatomic) BOOL encryptMetadata; +@property (nonatomic) NSURL *rootDirectory; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMArray_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMArray_Private.h new file mode 100644 index 000000000..1a37f010e --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMArray_Private.h @@ -0,0 +1,44 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +@class RLMObjectBase, RLMProperty; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@interface RLMArray () +- (instancetype)initWithObjectClassName:(NSString *)objectClassName; +- (instancetype)initWithObjectType:(RLMPropertyType)type optional:(BOOL)optional; +- (NSString *)descriptionWithMaxDepth:(NSUInteger)depth; +- (void)setParent:(RLMObjectBase *)parentObject property:(RLMProperty *)property; +- (void)replaceAllObjectsWithObjects:(NSArray *)objects; +// YES if the property is declared with old property syntax. +@property (nonatomic, readonly) BOOL isLegacyProperty; +// The name of the property which this collection represents +@property (nonatomic, readonly) NSString *propertyKey; +@end + +@interface RLMManagedArray : RLMArray +- (instancetype)initWithParent:(RLMObjectBase *)parentObject property:(RLMProperty *)property; +@end + +void RLMArrayValidateMatchingObjectType(RLMArray *array, id value); + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h new file mode 100644 index 000000000..3cce89441 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMAsyncTask_Private.h @@ -0,0 +1,71 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2023 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import "RLMRealm_Private.h" + +RLM_HEADER_AUDIT_BEGIN(nullability) + +@interface RLMAsyncOpenTask () +@property (nonatomic, nullable) RLMRealm *localRealm; + +- (instancetype)initWithConfiguration:(RLMRealmConfiguration *)configuration + confinedTo:(RLMScheduler *)confinement + download:(bool)waitForDownloadCompletion + completion:(RLMAsyncOpenRealmCallback)completion +__attribute__((objc_direct)); + +- (instancetype)initWithConfiguration:(RLMRealmConfiguration *)configuration + confinedTo:(RLMScheduler *)confinement + download:(bool)waitForDownloadCompletion; + +- (void)waitWithCompletion:(void (^)(NSError *_Nullable))completion; +- (void)waitForOpen:(RLMAsyncOpenRealmCallback)completion __attribute__((objc_direct)); +@end + +// A cancellable task for waiting for downloads on an already-open Realm. +RLM_SWIFT_SENDABLE +@interface RLMAsyncDownloadTask : NSObject +- (instancetype)initWithRealm:(RLMRealm *)realm; +- (void)cancel; +- (void)waitWithCompletion:(void (^)(NSError *_Nullable))completion; +@end + +// A cancellable task for beginning an async write +RLM_SWIFT_SENDABLE +@interface RLMAsyncWriteTask : NSObject +// Must only be called from within the Actor +- (instancetype)initWithRealm:(RLMRealm *)realm; +- (void)setTransactionId:(RLMAsyncTransactionId)transactionID; +- (void)complete:(bool)cancel; + +// Can be called from any thread +- (void)wait:(void (^)(void))completion; +@end + +typedef void (^RLMAsyncRefreshCompletion)(bool); +// A cancellable task for refreshing a Realm +RLM_SWIFT_SENDABLE +@interface RLMAsyncRefreshTask : NSObject +- (void)complete:(bool)didRefresh; +- (void)wait:(RLMAsyncRefreshCompletion)completion; ++ (RLMAsyncRefreshTask *)completedRefresh; +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMBSON_Private.hpp b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMBSON_Private.hpp new file mode 100644 index 000000000..c5cc1a410 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMBSON_Private.hpp @@ -0,0 +1,32 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +namespace realm::bson { +class Bson; +template class IndexedMap; +using BsonDocument = IndexedMap; +} + +realm::bson::Bson RLMConvertRLMBSONToBson(id b); +realm::bson::BsonDocument RLMConvertRLMBSONArrayToBsonDocument(NSArray> *array); +id RLMConvertBsonToRLMBSON(const realm::bson::Bson& b); +id RLMConvertBsonDocumentToRLMBSON(std::optional b); +NSArray> *RLMConvertBsonDocumentToRLMBSONArray(std::optional b); diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMCollection_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMCollection_Private.h new file mode 100644 index 000000000..7d31bd3f0 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMCollection_Private.h @@ -0,0 +1,42 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2016 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@protocol RLMCollectionPrivate; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +NSUInteger RLMUnmanagedFastEnumerate(id collection, NSFastEnumerationState *); +void RLMCollectionSetValueForKey(id collection, NSString *key, id _Nullable value); +FOUNDATION_EXTERN NSString *RLMDescriptionWithMaxDepth(NSString *name, id collection, NSUInteger depth); +FOUNDATION_EXTERN void RLMAssignToCollection(id collection, id value); +FOUNDATION_EXTERN void RLMSetSwiftBridgeCallback(id _Nullable (*_Nonnull)(id)); + +FOUNDATION_EXTERN +RLMNotificationToken *RLMAddNotificationBlock(id collection, id block, + NSArray *_Nullable keyPaths, + dispatch_queue_t _Nullable queue); + +typedef RLM_CLOSED_ENUM(int32_t, RLMCollectionType) { + RLMCollectionTypeArray = 0, + RLMCollectionTypeSet = 1, + RLMCollectionTypeDictionary = 2 +}; + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMDictionary_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMDictionary_Private.h new file mode 100644 index 000000000..37ff740c7 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMDictionary_Private.h @@ -0,0 +1,46 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2021 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMObjectBase, RLMProperty; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@interface RLMDictionary () +- (instancetype)initWithObjectClassName:(NSString *)objectClassName keyType:(RLMPropertyType)keyType; +- (instancetype)initWithObjectType:(RLMPropertyType)type optional:(BOOL)optional keyType:(RLMPropertyType)keyType; +- (NSString *)descriptionWithMaxDepth:(NSUInteger)depth; +- (void)setParent:(RLMObjectBase *)parentObject property:(RLMProperty *)property; +// YES if the property is declared with old property syntax. +@property (nonatomic, readonly) BOOL isLegacyProperty; +// The name of the property which this collection represents +@property (nonatomic, readonly) NSString *propertyKey; +@end + +@interface RLMManagedDictionary : RLMDictionary +- (instancetype)initWithParent:(RLMObjectBase *)parentObject property:(RLMProperty *)property; +@end + +FOUNDATION_EXTERN NSString *RLMDictionaryDescriptionWithMaxDepth(NSString *name, + RLMDictionary *dictionary, + NSUInteger depth); +id RLMDictionaryKey(RLMDictionary *dictionary, id key) RLM_HIDDEN; +id RLMDictionaryValue(RLMDictionary *dictionary, id value) RLM_HIDDEN; + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMEvent.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMEvent.h new file mode 100644 index 000000000..9a6acb1a6 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMEvent.h @@ -0,0 +1,64 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2022 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#ifdef __cplusplus +#include + +namespace realm { +struct AuditConfig; +} +#endif + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMRealm, RLMUser, RLMRealmConfiguration; +typedef RLM_CLOSED_ENUM(NSUInteger, RLMSyncLogLevel); + +struct RLMEventContext; +typedef void (^RLMEventCompletion)(NSError *_Nullable); + +FOUNDATION_EXTERN struct RLMEventContext *_Nullable RLMEventGetContext(RLMRealm *realm); +FOUNDATION_EXTERN uint64_t RLMEventBeginScope(struct RLMEventContext *context, NSString *activity); +FOUNDATION_EXTERN void RLMEventCommitScope(struct RLMEventContext *context, uint64_t scope_id, + RLMEventCompletion _Nullable completion); +FOUNDATION_EXTERN void RLMEventCancelScope(struct RLMEventContext *context, uint64_t scope_id); +FOUNDATION_EXTERN bool RLMEventIsActive(struct RLMEventContext *context, uint64_t scope_id); +FOUNDATION_EXTERN void RLMEventRecordEvent(struct RLMEventContext *context, NSString *activity, + NSString *_Nullable event, NSString *_Nullable data, + RLMEventCompletion _Nullable completion); +FOUNDATION_EXTERN void RLMEventUpdateMetadata(struct RLMEventContext *context, + NSDictionary *newMetadata); + +@interface RLMEventConfiguration : NSObject +@property (nonatomic) NSString *partitionPrefix; +@property (nonatomic, nullable) RLMUser *syncUser; +@property (nonatomic, nullable) NSDictionary *metadata; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +@property (nonatomic, nullable) void (^logger)(RLMSyncLogLevel, NSString *); +#pragma clang diagnostic pop +@property (nonatomic, nullable) RLM_SWIFT_SENDABLE void (^errorHandler)(NSError *); + +#ifdef __cplusplus +- (std::shared_ptr)auditConfigWithRealmConfiguration:(RLMRealmConfiguration *)realmConfig; +#endif +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMLogger_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMLogger_Private.h new file mode 100644 index 000000000..08f8c591e --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMLogger_Private.h @@ -0,0 +1,36 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2023 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +RLM_HEADER_AUDIT_BEGIN(nullability) + +@interface RLMLogger() + +/** + Log a message to the supplied level. + + @param logLevel The log level for the message. + @param message The message to log. + */ +- (void)logWithLevel:(RLMLogLevel)logLevel message:(NSString *)message, ... NS_SWIFT_UNAVAILABLE(""); +- (void)logLevel:(RLMLogLevel)logLevel message:(NSString *)message; +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMMigration_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMMigration_Private.h new file mode 100644 index 000000000..393f41184 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMMigration_Private.h @@ -0,0 +1,40 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import +#import + +namespace realm { + class Schema; +} + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@interface RLMMigration () + +@property (nonatomic, strong) RLMRealm *oldRealm; +@property (nonatomic, strong) RLMRealm *realm; + +- (instancetype)initWithRealm:(RLMRealm *)realm oldRealm:(RLMRealm *)oldRealm schema:(realm::Schema &)schema; + +- (void)execute:(RLMMigrationBlock)block objectClass:(_Nullable Class)cls; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMMongoCollection_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMMongoCollection_Private.h new file mode 100644 index 000000000..77bbf9752 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMMongoCollection_Private.h @@ -0,0 +1,37 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability) + +@class RLMUser; + +@interface RLMMongoCollection () +- (instancetype)initWithUser:(RLMUser *)user + serviceName:(NSString *)serviceName + databaseName:(NSString *)databaseName + collectionName:(NSString *)collectionName; + +- (RLMChangeStream *)watchWithMatchFilter:(nullable id)matchFilter + idFilter:(nullable id)idFilter + delegate:(id)delegate + scheduler:(void (^)(dispatch_block_t))scheduler; +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectBase_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectBase_Private.h new file mode 100644 index 000000000..af547b17e --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectBase_Private.h @@ -0,0 +1,34 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2017 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMArray; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +// RLMObjectBase private +@interface RLMObjectBase () +@property (nonatomic, nullable) NSMutableArray *lastAccessedNames; + ++ (void)initializeLinkedObjectSchemas; ++ (bool)isEmbedded; ++ (bool)isAsymmetric; +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectSchema_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectSchema_Private.h new file mode 100644 index 000000000..08855a82b --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectSchema_Private.h @@ -0,0 +1,75 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability) + +// RLMObjectSchema private +@interface RLMObjectSchema () { +@public + bool _isSwiftClass; +} + +/// The object type name reported to the object store and core. +@property (nonatomic, readonly) NSString *objectName; + +// writable redeclaration +@property (nonatomic, readwrite, copy) NSArray *properties; +@property (nonatomic, readwrite, assign) bool isSwiftClass; +@property (nonatomic, readwrite, assign) BOOL isEmbedded; +@property (nonatomic, readwrite, assign) BOOL isAsymmetric; + +// class used for this object schema +@property (nonatomic, readwrite, assign) Class objectClass; +@property (nonatomic, readwrite, assign) Class accessorClass; +@property (nonatomic, readwrite, assign) Class unmanagedClass; + +@property (nonatomic, readwrite, assign) bool hasCustomEventSerialization; + +@property (nonatomic, readwrite, nullable) RLMProperty *primaryKeyProperty; + +@property (nonatomic, copy) NSArray *computedProperties; +@property (nonatomic, readonly, nullable) NSArray *swiftGenericProperties; + +// returns a cached or new schema for a given object class ++ (instancetype)schemaForObjectClass:(Class)objectClass; +@end + +@interface RLMObjectSchema (Dynamic) +/** + This method is useful only in specialized circumstances, for example, when accessing objects + in a Realm produced externally. If you are simply building an app on Realm, it is not recommended + to use this method as an [RLMObjectSchema](RLMObjectSchema) is generated automatically for every [RLMObject](RLMObject) subclass. + + Initialize an RLMObjectSchema with classname, objectClass, and an array of properties + + @warning This method is useful only in specialized circumstances. + + @param objectClassName The name of the class used to refer to objects of this type. + @param objectClass The Objective-C class used when creating instances of this type. + @param properties An array of RLMProperty instances describing the managed properties for this type. + + @return An initialized instance of RLMObjectSchema. + */ +- (instancetype)initWithClassName:(NSString *)objectClassName objectClass:(Class)objectClass properties:(NSArray *)properties; +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectStore.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectStore.h new file mode 100644 index 000000000..6045f1e8e --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObjectStore.h @@ -0,0 +1,98 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#ifdef __cplusplus +extern "C" { +#endif + +@class RLMRealm, RLMSchema, RLMObjectBase, RLMResults, RLMProperty; + +typedef NS_ENUM(NSUInteger, RLMUpdatePolicy) { + RLMUpdatePolicyError = 1, + RLMUpdatePolicyUpdateChanged = 3, + RLMUpdatePolicyUpdateAll = 2, +}; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +void RLMVerifyHasPrimaryKey(Class cls); + +void RLMVerifyInWriteTransaction(RLMRealm *const realm); + +// +// Adding, Removing, Getting Objects +// + +// add an object to the given realm +void RLMAddObjectToRealm(RLMObjectBase *object, RLMRealm *realm, RLMUpdatePolicy); + +// delete an object from its realm +void RLMDeleteObjectFromRealm(RLMObjectBase *object, RLMRealm *realm); + +// deletes all objects from a realm +void RLMDeleteAllObjectsFromRealm(RLMRealm *realm); + +// get objects of a given class +RLMResults *RLMGetObjects(RLMRealm *realm, NSString *objectClassName, NSPredicate * _Nullable predicate) +NS_RETURNS_RETAINED; + +// get an object with the given primary key +id _Nullable RLMGetObject(RLMRealm *realm, NSString *objectClassName, id _Nullable key) NS_RETURNS_RETAINED; + +// create object from array or dictionary +RLMObjectBase *RLMCreateObjectInRealmWithValue(RLMRealm *realm, NSString *className, + id _Nullable value, RLMUpdatePolicy updatePolicy) +NS_RETURNS_RETAINED; + +// creates an asymmetric object and doesn't return +void RLMCreateAsymmetricObjectInRealm(RLMRealm *realm, NSString *className, id value); + +// +// Accessor Creation +// + + +// Perform the per-property accessor initialization for a managed RealmSwiftObject +// promotingExisting should be true if the object was previously used as an +// unmanaged object, and false if it is a newly created object. +void RLMInitializeSwiftAccessor(RLMObjectBase *object, bool promotingExisting); + +#ifdef __cplusplus +} + +namespace realm { + class Obj; + class Table; + struct ColKey; + struct ObjLink; +} +class RLMClassInfo; + +// get an object with a given table & object key +RLMObjectBase *RLMObjectFromObjLink(RLMRealm *realm, + realm::ObjLink&& objLink, + bool parentIsSwiftObject) NS_RETURNS_RETAINED; + +// Create accessors +RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, int64_t key) NS_RETURNS_RETAINED; +RLMObjectBase *RLMCreateObjectAccessor(RLMClassInfo& info, const realm::Obj& obj) NS_RETURNS_RETAINED; +#endif + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObject_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObject_Private.h new file mode 100644 index 000000000..8ccdbf576 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMObject_Private.h @@ -0,0 +1,110 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMProperty, RLMArray, RLMSchema; +typedef NS_ENUM(int32_t, RLMPropertyType); + +FOUNDATION_EXTERN void RLMInitializeWithValue(RLMObjectBase *, id, RLMSchema *); + +typedef void (^RLMObjectNotificationCallback)(RLMObjectBase *_Nullable object, + NSArray *_Nullable propertyNames, + NSArray *_Nullable oldValues, + NSArray *_Nullable newValues, + NSError *_Nullable error); + +// RLMObject accessor and read/write realm +@interface RLMObjectBase () { +@public + RLMRealm *_realm; + __unsafe_unretained RLMObjectSchema *_objectSchema; +} + +// shared schema for this class ++ (nullable RLMObjectSchema *)sharedSchema; + ++ (nullable NSArray *)_getProperties; ++ (bool)_realmIgnoreClass; + +// This enables to override the propertiesMapping in Swift, it is not to be used in Objective-C API. ++ (NSDictionary *)propertiesMapping; +@end + +@interface RLMDynamicObject : RLMObject + +@end + +// Calls valueForKey: and re-raises NSUndefinedKeyExceptions +FOUNDATION_EXTERN id _Nullable RLMValidatedValueForProperty(id object, NSString *key, NSString *className); + +// Compare two RLObjectBases +FOUNDATION_EXTERN BOOL RLMObjectBaseAreEqual(RLMObjectBase * _Nullable o1, RLMObjectBase * _Nullable o2); + +FOUNDATION_EXTERN RLMNotificationToken *RLMObjectBaseAddNotificationBlock(RLMObjectBase *obj, + NSArray *_Nullable keyPaths, + dispatch_queue_t _Nullable queue, + RLMObjectNotificationCallback block); + +RLMNotificationToken *RLMObjectAddNotificationBlock(RLMObjectBase *obj, + RLMObjectChangeBlock block, + NSArray *_Nullable keyPaths, + dispatch_queue_t _Nullable queue); + +// Returns whether the class is a descendent of RLMObjectBase +FOUNDATION_EXTERN BOOL RLMIsObjectOrSubclass(Class klass); + +// Returns whether the class is an indirect descendant of RLMObjectBase +FOUNDATION_EXTERN BOOL RLMIsObjectSubclass(Class klass); + +FOUNDATION_EXTERN const NSUInteger RLMDescriptionMaxDepth; + +FOUNDATION_EXTERN id RLMObjectFreeze(RLMObjectBase *obj) NS_RETURNS_RETAINED; + +FOUNDATION_EXTERN id RLMObjectThaw(RLMObjectBase *obj); + +// Gets an object identifier suitable for use with Combine. This value may +// change when an unmanaged object is added to the Realm. +FOUNDATION_EXTERN uint64_t RLMObjectBaseGetCombineId(RLMObjectBase *); + +// An accessor object which is used to interact with Swift properties from obj-c +@interface RLMManagedPropertyAccessor : NSObject +// Perform any initialization required for KVO on a *unmanaged* object ++ (void)observe:(RLMProperty *)property on:(RLMObjectBase *)parent; +// Initialize the given property on a *managed* object which previous was unmanaged ++ (void)promote:(RLMProperty *)property on:(RLMObjectBase *)parent; +// Initialize the given property on a newly created *managed* object ++ (void)initialize:(RLMProperty *)property on:(RLMObjectBase *)parent; +// Read the value of the property, on either kind of object ++ (id)get:(RLMProperty *)property on:(RLMObjectBase *)parent; +// Set the property to the given value, on either kind of object ++ (void)set:(RLMProperty *)property on:(RLMObjectBase *)parent to:(id)value; +@end + +@interface RLMObjectNotificationToken : RLMNotificationToken +- (void)observe:(RLMObjectBase *)obj + keyPaths:(nullable NSArray *)keyPaths + block:(RLMObjectNotificationCallback)block; +- (void)registrationComplete:(void (^)(void))completion; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMProperty_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMProperty_Private.h new file mode 100644 index 000000000..6a87ced63 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMProperty_Private.h @@ -0,0 +1,139 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import + +@class RLMObjectBase; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +BOOL RLMPropertyTypeIsComputed(RLMPropertyType propertyType); +FOUNDATION_EXTERN void RLMValidateSwiftPropertyName(NSString *name); + +// Translate an rlmtype to a string representation +static inline NSString *RLMTypeToString(RLMPropertyType type) { + switch (type) { + case RLMPropertyTypeString: + return @"string"; + case RLMPropertyTypeInt: + return @"int"; + case RLMPropertyTypeBool: + return @"bool"; + case RLMPropertyTypeDate: + return @"date"; + case RLMPropertyTypeData: + return @"data"; + case RLMPropertyTypeDouble: + return @"double"; + case RLMPropertyTypeFloat: + return @"float"; + case RLMPropertyTypeAny: + return @"mixed"; + case RLMPropertyTypeObject: + return @"object"; + case RLMPropertyTypeLinkingObjects: + return @"linking objects"; + case RLMPropertyTypeDecimal128: + return @"decimal128"; + case RLMPropertyTypeObjectId: + return @"object id"; + case RLMPropertyTypeUUID: + return @"uuid"; + } + return @"Unknown"; +} + +// private property interface +@interface RLMProperty () { +@public + RLMPropertyType _type; +} + +- (instancetype)initWithName:(NSString *)name + indexed:(BOOL)indexed + linkPropertyDescriptor:(nullable RLMPropertyDescriptor *)linkPropertyDescriptor + property:(objc_property_t)property; + +- (instancetype)initSwiftPropertyWithName:(NSString *)name + indexed:(BOOL)indexed + linkPropertyDescriptor:(nullable RLMPropertyDescriptor *)linkPropertyDescriptor + property:(objc_property_t)property + instance:(RLMObjectBase *)objectInstance; + +- (void)updateAccessors; + +// private setters +@property (nonatomic, readwrite) NSString *name; +@property (nonatomic, readwrite, assign) RLMPropertyType type; +@property (nonatomic, readwrite) BOOL indexed; +@property (nonatomic, readwrite) BOOL optional; +@property (nonatomic, readwrite) BOOL array; +@property (nonatomic, readwrite) BOOL set; +@property (nonatomic, readwrite) BOOL dictionary; +@property (nonatomic, copy, nullable) NSString *objectClassName; +@property (nonatomic, copy, nullable) NSString *linkOriginPropertyName; + +// private properties +@property (nonatomic, readwrite, nullable) NSString *columnName; +@property (nonatomic, assign) NSUInteger index; +@property (nonatomic, assign) BOOL isPrimary; +@property (nonatomic, assign) BOOL isLegacy; +@property (nonatomic, assign) ptrdiff_t swiftIvar; +@property (nonatomic, assign, nullable) Class swiftAccessor; +@property (nonatomic, readwrite, assign) RLMPropertyType dictionaryKeyType; +@property (nonatomic, readwrite) BOOL customMappingIsOptional; + +// getter and setter names +@property (nonatomic, copy) NSString *getterName; +@property (nonatomic, copy) NSString *setterName; +@property (nonatomic, nullable) SEL getterSel; +@property (nonatomic, nullable) SEL setterSel; + +- (RLMProperty *)copyWithNewName:(NSString *)name; +- (NSString *)typeName; + +@end + +@interface RLMProperty (Dynamic) +/** + This method is useful only in specialized circumstances, for example, in conjunction with + +[RLMObjectSchema initWithClassName:objectClass:properties:]. If you are simply building an + app on Realm, it is not recommended to use this method. + + Initialize an RLMProperty + + @warning This method is useful only in specialized circumstances. + + @param name The property name. + @param type The property type. + @param objectClassName The object type used for Object and Array types. + @param linkOriginPropertyName The property name of the origin of a link. Used for linking objects properties. + + @return An initialized instance of RLMProperty. + */ +- (instancetype)initWithName:(NSString *)name + type:(RLMPropertyType)type + objectClassName:(nullable NSString *)objectClassName + linkOriginPropertyName:(nullable NSString *)linkOriginPropertyName + indexed:(BOOL)indexed + optional:(BOOL)optional; +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMPushClient_Private.hpp b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMPushClient_Private.hpp new file mode 100644 index 000000000..44304c9c3 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMPushClient_Private.hpp @@ -0,0 +1,28 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import "RLMPushClient.h" + +namespace realm::app { +class PushClient; +} + +RLM_DIRECT_MEMBERS +@interface RLMPushClient () +- (instancetype)initWithPushClient:(realm::app::PushClient&&)pushClient; +@end diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMRealmConfiguration_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMRealmConfiguration_Private.h new file mode 100644 index 000000000..12b09676d --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMRealmConfiguration_Private.h @@ -0,0 +1,52 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2015 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMSchema, RLMEventConfiguration; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +@interface RLMRealmConfiguration () + +@property (nonatomic, readwrite) bool cache; +@property (nonatomic, readwrite) bool dynamic; +@property (nonatomic, readwrite) bool disableFormatUpgrade; +@property (nonatomic, copy, nullable) RLMSchema *customSchema; +@property (nonatomic, copy) NSString *pathOnDisk; +@property (nonatomic, retain, nullable) RLMEventConfiguration *eventConfiguration; +@property (nonatomic, nullable) Class migrationObjectClass; +@property (nonatomic) bool disableAutomaticChangeNotifications; + +// Flexible Sync +@property (nonatomic, readwrite, nullable) RLMFlexibleSyncInitialSubscriptionsBlock initialSubscriptions; +@property (nonatomic, readwrite) BOOL rerunOnOpen; + +// Get the default configuration without copying it ++ (RLMRealmConfiguration *)rawDefaultConfiguration; + ++ (void)resetRealmConfigurationState; + +- (void)setCustomSchemaWithoutCopying:(nullable RLMSchema *)schema; +@end + +// Get a path in the platform-appropriate documents directory with the given filename +FOUNDATION_EXTERN NSString *RLMRealmPathForFile(NSString *fileName); +FOUNDATION_EXTERN NSString *RLMRealmPathForFileAndBundleIdentifier(NSString *fileName, NSString *mainBundleIdentifier); + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMRealm_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMRealm_Private.h new file mode 100644 index 000000000..95841491f --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMRealm_Private.h @@ -0,0 +1,94 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMFastEnumerator, RLMScheduler, RLMAsyncRefreshTask, RLMAsyncWriteTask; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +// Disable syncing files to disk. Cannot be re-enabled. Use only for tests. +FOUNDATION_EXTERN void RLMDisableSyncToDisk(void); +// Set whether the skip backup attribute should be set on temporary files. +FOUNDATION_EXTERN void RLMSetSkipBackupAttribute(bool value); + +FOUNDATION_EXTERN NSData * _Nullable RLMRealmValidatedEncryptionKey(NSData *key); + +// Set the queue used for async open. For testing purposes only. +FOUNDATION_EXTERN void RLMSetAsyncOpenQueue(dispatch_queue_t queue); + +// Translate an in-flight exception resulting from an operation on a SharedGroup to +// an NSError or NSException (if error is nil) +void RLMRealmTranslateException(NSError **error); + +// Block until the Realm at the given path is closed. +FOUNDATION_EXTERN void RLMWaitForRealmToClose(NSString *path); +BOOL RLMIsRealmCachedAtPath(NSString *path); + +// Register a block to be called from the next before_notify() invocation +FOUNDATION_EXTERN void RLMAddBeforeNotifyBlock(RLMRealm *realm, dispatch_block_t block); + +// Test hook to run the async notifiers for a Realm which has the background thread disabled +FOUNDATION_EXTERN void RLMRunAsyncNotifiers(NSString *path); + +// Get the cached Realm for the given configuration and scheduler, if any +FOUNDATION_EXTERN RLMRealm *_Nullable RLMGetCachedRealm(RLMRealmConfiguration *, RLMScheduler *) NS_RETURNS_RETAINED; +// Get a cached Realm for the given configuration and any scheduler. The returned +// Realm is not confined to the current thread, so very few operations are safe +// to perform on it +FOUNDATION_EXTERN RLMRealm *_Nullable RLMGetAnyCachedRealm(RLMRealmConfiguration *) NS_RETURNS_RETAINED; + +// Scheduler an async refresh for the given Realm +FOUNDATION_EXTERN RLMAsyncRefreshTask *_Nullable RLMRealmRefreshAsync(RLMRealm *rlmRealm) NS_RETURNS_RETAINED; + +// RLMRealm private members +@interface RLMRealm () +@property (nonatomic, readonly) BOOL dynamic; +@property (nonatomic, readwrite) RLMSchema *schema; +@property (nonatomic, readonly, nullable) id actor; +@property (nonatomic, readonly) bool isFlexibleSync; + ++ (void)resetRealmState; + +- (void)registerEnumerator:(RLMFastEnumerator *)enumerator; +- (void)unregisterEnumerator:(RLMFastEnumerator *)enumerator; +- (void)detachAllEnumerators; + +- (void)sendNotifications:(RLMNotification)notification; +- (void)verifyThread; +- (void)verifyNotificationsAreSupported:(bool)isCollection; + +- (RLMRealm *)frozenCopy NS_RETURNS_RETAINED; + ++ (nullable instancetype)realmWithConfiguration:(RLMRealmConfiguration *)configuration + confinedTo:(RLMScheduler *)options + error:(NSError **)error; + +- (RLMAsyncWriteTask *)beginAsyncWrite NS_RETURNS_RETAINED; +- (void)commitAsyncWriteWithGrouping:(bool)allowGrouping + completion:(void(^)(NSError *_Nullable))completion; +@end + +@interface RLMPinnedRealm : NSObject +@property (nonatomic, readonly) RLMRealmConfiguration *configuration; + +- (instancetype)initWithRealm:(RLMRealm *)realm; +- (void)unpin; +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMResults_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMResults_Private.h new file mode 100644 index 000000000..c7e29bebb --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMResults_Private.h @@ -0,0 +1,33 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMObjectSchema; + +RLM_HEADER_AUDIT_BEGIN(nullability) + +@interface RLMResults () +@property (nonatomic, readonly, getter=isAttached) BOOL attached; + ++ (instancetype)emptyDetachedResults; +- (RLMResults *)snapshot; + +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMScheduler.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMScheduler.h new file mode 100644 index 000000000..3c1b9874b --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMScheduler.h @@ -0,0 +1,63 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2023 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#ifdef __cplusplus +#include +namespace realm::util { +class Scheduler; +} +#endif + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +// A serial work queue of some sort which represents a thread-confinement context +// of some sort which blocks can be invoked inside. Realms are confined to a +// scheduler, which can be a thread (actually a run loop), a dispatch queue, or +// an actor. The scheduler ensures that the Realm is only used on one thread at +// a time, and allows us to dispatch work to the thread where we can access the +// Realm safely. +RLM_SWIFT_SENDABLE // is immutable +@interface RLMScheduler : NSObject ++ (RLMScheduler *)mainRunLoop __attribute__((objc_direct)); ++ (RLMScheduler *)currentRunLoop __attribute__((objc_direct)); +// A scheduler for the given queue if it's non-nil, and currentRunLoop otherwise ++ (RLMScheduler *)dispatchQueue:(nullable dispatch_queue_t)queue; ++ (RLMScheduler *)actor:(id)actor invoke:(void (^)(dispatch_block_t))invoke + verify:(void (^)(void))verify; + +// Invoke the block on this scheduler. Currently not actually implement for run +// loop schedulers. +- (void)invoke:(dispatch_block_t)block; + +// Cache key for this scheduler suitable for use with NSMapTable. Only valid +// when called from the current scheduler. +- (void *)cacheKey; + +- (nullable id)actor; + +#ifdef __cplusplus +// The object store Scheduler corresponding to this scheduler +- (std::shared_ptr)osScheduler; +#endif +@end + +FOUNDATION_EXTERN void RLMSetMainActor(id actor); + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSchema_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSchema_Private.h new file mode 100644 index 000000000..f4f63c9f8 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSchema_Private.h @@ -0,0 +1,58 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability) + +@class RLMRealm; + +// +// RLMSchema private interface +// +@interface RLMSchema () + +/** + Returns an `RLMSchema` containing only the given `RLMObject` subclasses. + + @param classes The classes to be included in the schema. + + @return An `RLMSchema` containing only the given classes. + */ ++ (instancetype)schemaWithObjectClasses:(NSArray *)classes; + +@property (nonatomic, readwrite, copy) NSArray *objectSchema; + +// schema based on runtime objects ++ (instancetype)sharedSchema; + +// schema based upon all currently registered object classes ++ (instancetype)partialSharedSchema; + +// private schema based upon all currently registered object classes. +// includes classes that are excluded from the default schema. ++ (instancetype)partialPrivateSharedSchema; + +// class for string ++ (nullable Class)classForString:(NSString *)className; + ++ (nullable RLMObjectSchema *)sharedSchemaForClass:(Class)cls; + +@end + +RLM_HEADER_AUDIT_END(nullability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSet_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSet_Private.h new file mode 100644 index 000000000..1053e0a0f --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSet_Private.h @@ -0,0 +1,43 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import +#import + +@class RLMObjectBase, RLMProperty; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@interface RLMSet () +- (instancetype)initWithObjectClassName:(NSString *)objectClassName; +- (instancetype)initWithObjectType:(RLMPropertyType)type optional:(BOOL)optional; +- (NSString *)descriptionWithMaxDepth:(NSUInteger)depth; +- (void)setParent:(RLMObjectBase *)parentObject property:(RLMProperty *)property; +// YES if the property is declared with old property syntax. +@property (nonatomic, readonly) BOOL isLegacyProperty; +// The name of the property which this collection represents +@property (nonatomic, readonly) NSString *propertyKey; +@end + +void RLMSetValidateMatchingObjectType(RLMSet *set, id value); + +@interface RLMManagedSet : RLMSet +- (instancetype)initWithParent:(RLMObjectBase *)parentObject property:(RLMProperty *)property; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSwiftCollectionBase.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSwiftCollectionBase.h new file mode 100644 index 000000000..a4f864282 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSwiftCollectionBase.h @@ -0,0 +1,46 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2021 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +@class RLMObjectBase, RLMResults, RLMProperty, RLMLinkingObjects; + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@interface RLMSwiftCollectionBase : NSProxy +@property (nonatomic, strong) id _rlmCollection; + +- (instancetype)init; ++ (Class)_backingCollectionType; +- (instancetype)initWithCollection:(id)collection; + +- (nullable id)valueForKey:(NSString *)key; +- (nullable id)valueForKeyPath:(NSString *)keyPath; +- (BOOL)isEqual:(nullable id)object; +@end + +@interface RLMLinkingObjectsHandle : NSObject +- (instancetype)initWithObject:(RLMObjectBase *)object property:(RLMProperty *)property; +- (instancetype)initWithLinkingObjects:(RLMResults *)linkingObjects; + +@property (nonatomic, readonly) RLMLinkingObjects *results; +@property (nonatomic, readonly) NSString *_propertyKey; +@property (nonatomic, readonly) BOOL _isLegacyProperty; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSwiftSupport.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSwiftSupport.h new file mode 100644 index 000000000..530f0edbf --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSwiftSupport.h @@ -0,0 +1,30 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2014 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@interface RLMSwiftSupport : NSObject + ++ (BOOL)isSwiftClassName:(NSString *)className; ++ (NSString *)demangleClassName:(NSString *)className; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSwiftValueStorage.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSwiftValueStorage.h new file mode 100644 index 000000000..ef3efc610 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSwiftValueStorage.h @@ -0,0 +1,53 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2021 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +@class RLMObjectBase, RLMProperty; + +/// This class implements the backing storage for `RealmProperty<>` and `RealmOptional<>`. +/// This class should not be subclassed or used directly. +@interface RLMSwiftValueStorage : NSProxy +- (instancetype)init; +@end +/// Retrieves the value that is stored, or nil if it is empty. +FOUNDATION_EXTERN id _Nullable RLMGetSwiftValueStorage(RLMSwiftValueStorage *); +/// Sets a value on the property this instance represents for an object. +FOUNDATION_EXTERN void RLMSetSwiftValueStorage(RLMSwiftValueStorage *, id _Nullable); + +/// Initialises managed accessors on an instance of `RLMSwiftValueStorage` +/// @param parent The enclosing parent object. +/// @param prop The property which this class represents. +FOUNDATION_EXTERN void RLMInitializeManagedSwiftValueStorage(RLMSwiftValueStorage *, + RLMObjectBase *parent, + RLMProperty *prop); + +/// Initialises unmanaged accessors on an instance of `RLMSwiftValueStorage` +/// @param parent The enclosing parent object. +/// @param prop The property which this class represents. +FOUNDATION_EXTERN void RLMInitializeUnmanagedSwiftValueStorage(RLMSwiftValueStorage *, + RLMObjectBase *parent, + RLMProperty *prop); + +/// Gets the property name for the RealmProperty instance. This is required for tracing the key path on +/// objects that use the legacy property declaration syntax. +FOUNDATION_EXTERN NSString *RLMSwiftValueStorageGetPropertyName(RLMSwiftValueStorage *); + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSyncConfiguration_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSyncConfiguration_Private.h new file mode 100644 index 000000000..62d0e1f1f --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSyncConfiguration_Private.h @@ -0,0 +1,47 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2016 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +typedef RLM_CLOSED_ENUM(NSUInteger, RLMSyncStopPolicy) { + RLMSyncStopPolicyImmediately, + RLMSyncStopPolicyLiveIndefinitely, + RLMSyncStopPolicyAfterChangesUploaded, +}; + + +@class RLMSchema; + +@interface RLMSyncConfiguration () + +// Flexible sync +- (instancetype)initWithUser:(RLMUser *)user; +// Partition-based sync +- (instancetype)initWithUser:(RLMUser *)user + partitionValue:(nullable id)partitionValue; + +// Internal-only APIs +@property (nonatomic, readwrite) RLMSyncStopPolicy stopPolicy; + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSyncSubscription_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSyncSubscription_Private.h new file mode 100644 index 000000000..dc438a20e --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMSyncSubscription_Private.h @@ -0,0 +1,70 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2021 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +#pragma mark - Subscription + +@interface RLMSyncSubscription () + +@property (nonatomic, readonly) RLMObjectId *identifier; + +@property (nonatomic, readonly) NSString *queryString; + +@property (nonatomic, readonly) NSString *objectClassName; + +@end + +#pragma mark - SubscriptionSet + +@interface RLMSyncSubscriptionEnumerator : NSObject + +@property (nonatomic, readonly) RLMSyncSubscriptionSet *subscriptionSet; + +- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state + count:(NSUInteger)len; + +- (instancetype)initWithSubscriptionSet:(RLMSyncSubscriptionSet *)subscriptionSet; + +@end + +@interface RLMSyncSubscriptionSet () + +@property (readonly) uint64_t version; + +- (void)addSubscriptionWithClassName:(NSString *)objectClassName + subscriptionName:(nullable NSString *)name + predicate:(NSPredicate *)predicate + updateExisting:(BOOL)updateExisting; + +- (void)waitForSynchronizationOnQueue:(nullable dispatch_queue_t)queue + completionBlock:(void(^)(NSError *))completionBlock; + +- (RLMSyncSubscriptionEnumerator *)fastEnumerator; + +NSUInteger RLMFastEnumerate(NSFastEnumerationState *state, + NSUInteger len, + RLMSyncSubscriptionSet *collection); + +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMUser_Private.h b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMUser_Private.h new file mode 100644 index 000000000..f62c9a940 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/PrivateHeaders/RLMUser_Private.h @@ -0,0 +1,40 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Copyright 2020 Realm Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////// + +#import + +RLM_HEADER_AUDIT_BEGIN(nullability, sendability) + +/// Observer block for user notifications. +typedef void(^RLMUserNotificationBlock)(RLMUser *); + +/// Token that identifies an observer. Unsubscribes when deconstructed to +/// avoid dangling observers, therefore this must be retained to hold +/// onto a subscription. +@interface RLMUserSubscriptionToken : NSObject +- (void)unsubscribe; +@end + +@interface RLMUser () +/// Subscribe to notifications for this RLMUser. +- (RLMUserSubscriptionToken *)subscribe:(RLMUserNotificationBlock)block; + +- (void)logOut; +@end + +RLM_HEADER_AUDIT_END(nullability, sendability) diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Realm b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Realm new file mode 100755 index 000000000..e615245b9 Binary files /dev/null and b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/Realm differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/_CodeSignature/CodeResources b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/_CodeSignature/CodeResources new file mode 100644 index 000000000..7f95b43c7 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/Realm.xcframework/xros-arm64_x86_64-simulator/Realm.framework/_CodeSignature/CodeResources @@ -0,0 +1,1015 @@ + + + + + files + + CHANGELOG.md + + Zv1aE8lgTnRPKTg4+FZa+hYQQNM= + + Headers/NSError+RLMSync.h + + 02q4InRTrAKLrV8lPlx32J0V1Ko= + + Headers/RLMAPIKeyAuth.h + + 1jiv26oYx54zXYdhCKJkfQgUCZ8= + + Headers/RLMApp.h + + Ld28y6nHFgdYCwgko5F6L9mRTCc= + + Headers/RLMArray.h + + SxnXSBzghc13RDA5GoX65htp0Jc= + + Headers/RLMAsymmetricObject.h + + WI4FoMYUXUw5Jgvy2eN4FBgPf3c= + + Headers/RLMAsyncTask.h + + gBGrbdQ+f9PpOJWHbVRh5Zgrcj4= + + Headers/RLMBSON.h + + GxfhbpWdUsi0bAu035zq0wBE47k= + + Headers/RLMCollection.h + + HRgDEwlbCpYK0KE4nKT3aPeVt8Y= + + Headers/RLMConstants.h + + X7tUrKW39pKREt/52svrJ/kN+ZU= + + Headers/RLMCredentials.h + + 5r4wtUdLa9Sk0U2eqOShqRrLI3o= + + Headers/RLMDecimal128.h + + W9LoTzurbOFC6l/vu0W1s6NqP/8= + + Headers/RLMDictionary.h + + J4dcvrLymwvq7wa1sgBJejF2lnk= + + Headers/RLMEmailPasswordAuth.h + + qfpoumflL/1gL/z13dVqmA19PLk= + + Headers/RLMEmbeddedObject.h + + P6AmwHOiZF/Q9/w6LRANmqDu01g= + + Headers/RLMError.h + + f/fmbab1ht8EdLMSS3f0NXW1ejg= + + Headers/RLMFindOneAndModifyOptions.h + + NiYNYX+E6fXAZefMtarr31btYSs= + + Headers/RLMFindOptions.h + + nVYUhdeFVo2/ogMj0swOyCup1LY= + + Headers/RLMLogger.h + + xRxc1g20RrrsSVEhSHPTjV7wUrM= + + Headers/RLMMigration.h + + ek93LcGxSB4AWXYxDtK7lSLIUZA= + + Headers/RLMMongoClient.h + + JRIy+dSIlbOnrRU/zjhrjH/sXTQ= + + Headers/RLMMongoCollection.h + + zKZ75q5wJK1K7basKszSka/XDlE= + + Headers/RLMMongoDatabase.h + + 0+ymiybJvLDiWbH4UgOpF5kK7JA= + + Headers/RLMNetworkTransport.h + + NkHxyI4VoqVug1wJFXOSIPd4/n8= + + Headers/RLMObject.h + + 2XkBjhUx/DUZMHptinJRuCSuN5w= + + Headers/RLMObjectBase.h + + 6+LtdM5Zd9OGUBHLtOy0mNzlGNg= + + Headers/RLMObjectBase_Dynamic.h + + lN/ItPF2L4asyDrzvE9tb2NWeQU= + + Headers/RLMObjectId.h + + FAhiEJMRgGhU/STMYxb6Cat31Ns= + + Headers/RLMObjectSchema.h + + yasl78Lq+PvN6f/sBDQAG9IiiwU= + + Headers/RLMProperty.h + + QyE/WKZTEZokOC4HNpIuGWTo3V8= + + Headers/RLMProviderClient.h + + KI1gAsi16P1iZdUTVEJSXAZF+VQ= + + Headers/RLMPushClient.h + + ZXzPubk1A63/oe83WFy6s80UAdY= + + Headers/RLMRealm+Sync.h + + bRbsIAkomXsV+zAaLltmyzxBMvk= + + Headers/RLMRealm.h + + tXxGw5mHQm9c6gM5XAu3/1zO/F8= + + Headers/RLMRealmConfiguration.h + + tACtbQrCi+eN56JH+gH60N0lXOQ= + + Headers/RLMRealm_Dynamic.h + + 0cVBS7WHOS7nUFs7Zr0DQHRc7I0= + + Headers/RLMResults.h + + OeV5SVo3AWcXxIeYr3YYc/Iu7tw= + + Headers/RLMSchema.h + + iJLLK3FYqubxFLoT7EHwmGOnbGU= + + Headers/RLMSectionedResults.h + + +n3MZjJSPd30hm1WNfqQoj1gx44= + + Headers/RLMSet.h + + wCO5ODFhqKDzuFdZZfmBnsgScdM= + + Headers/RLMSwiftObject.h + + TyJjSFDM4ZAekB3cZKc+Fv89CqU= + + Headers/RLMSwiftProperty.h + + /CqEDrE+WN75hOjEyKoDOFTM5cI= + + Headers/RLMSyncConfiguration.h + + 0U9O9AfTO5SB6TJryUm8di9tn5Y= + + Headers/RLMSyncManager.h + + YkhlSPT2hNZyA//Lf07+5rkaTsc= + + Headers/RLMSyncSession.h + + ENN75q8RC4BNpH67LE7NiUtO08U= + + Headers/RLMSyncSubscription.h + + x1LOw7ekOPIKEzT7r93iFXMpvHo= + + Headers/RLMThreadSafeReference.h + + TFdISOKXlf2bIyLYEAbzQg2nMy0= + + Headers/RLMUpdateResult.h + + Mv08aMtnTA3wP3RetaDB4sHtOGU= + + Headers/RLMUser.h + + j5Zpgb+g0lIwk90bDaauU6Y1Fbk= + + Headers/RLMUserAPIKey.h + + cIVGNVxydkLjfkIoehfmqwwGd0w= + + Headers/RLMValue.h + + PQWyj9ZNWsNAy1kGw6ENnNfTQ7c= + + Headers/Realm.h + + fDREEG2URHEbKjZ2nfKq+7M/7m8= + + Info.plist + + bdw3TSYtrVWSVX1daC2W/LnFRaU= + + LICENSE + + htlQ0eA7QbvmaoSv/b3yVb0Yvsc= + + Modules/module.modulemap + + A28J5rfl2ooZX6nLmKAtWsKyoFg= + + PrivateHeaders/RLMAccessor.h + + khE1Bhu30Ou7L9/AFJKc/IJcRuU= + + PrivateHeaders/RLMApp_Private.h + + fw57ZhMCNGsWCpB/lCMaKqf0gek= + + PrivateHeaders/RLMArray_Private.h + + oA6RhNNa1GlEp9Z1dIc6yAXL91g= + + PrivateHeaders/RLMAsyncTask_Private.h + + ayc2eXD44f0/BptRlmZc+ocrzs8= + + PrivateHeaders/RLMBSON_Private.hpp + + Ku6rvqGFX5xk7aXxX4/93IoUJIw= + + PrivateHeaders/RLMCollection_Private.h + + CjigFgVyD/CQlglvVOv3mgmYhmM= + + PrivateHeaders/RLMDictionary_Private.h + + 9jGJQrUJ13oF7wuVyURhFJvDa48= + + PrivateHeaders/RLMEvent.h + + Z1CXQWPXt3itYLuQPrnDE2DOCIQ= + + PrivateHeaders/RLMLogger_Private.h + + vXtWFbH2FmBySg6psXIsF4xTyVw= + + PrivateHeaders/RLMMigration_Private.h + + Rkv9PVKy4D9WpE91+PF5fG8dqb4= + + PrivateHeaders/RLMMongoCollection_Private.h + + SxxQvypVsEBDtC0poogA7IuabvY= + + PrivateHeaders/RLMObjectBase_Private.h + + PQsL4hvY5WGKrm+ENzb3IzoLFMI= + + PrivateHeaders/RLMObjectSchema_Private.h + + 87hjm4eoCqM0JdgW0yVzYipgCv0= + + PrivateHeaders/RLMObjectStore.h + + LH3NYAHYk37ukx3w36l3VfRkWLY= + + PrivateHeaders/RLMObject_Private.h + + fSysuPyok9rS8jBVWujPT5ZYPkw= + + PrivateHeaders/RLMProperty_Private.h + + YrwESqK7Bp+VJPR2q1unO0HC1n4= + + PrivateHeaders/RLMPushClient_Private.hpp + + VB6WiIHnxZ2GvtGB/Dt8BukU3g8= + + PrivateHeaders/RLMRealmConfiguration_Private.h + + fDc6xRp+/ItxCAWyzEto1dXyZDU= + + PrivateHeaders/RLMRealm_Private.h + + FQ45UlPks0oI4fN23S8KH3+cY4U= + + PrivateHeaders/RLMResults_Private.h + + pYrkP89R066MUPthppAiIF6icJ0= + + PrivateHeaders/RLMScheduler.h + + bmnqRPRwLoqjOIHXTAATSTi2Uzs= + + PrivateHeaders/RLMSchema_Private.h + + W3h50q1OLVJcyk0pNZ6qMcSbW0U= + + PrivateHeaders/RLMSet_Private.h + + 1UAOTMK/IHQOq44rH3GVRul1lT0= + + PrivateHeaders/RLMSwiftCollectionBase.h + + g/qYcSeOq1sDRrlomok4rP7w7gA= + + PrivateHeaders/RLMSwiftSupport.h + + 4T1N9038YMMHtsxSBDLu6RQ+Lpo= + + PrivateHeaders/RLMSwiftValueStorage.h + + yk9OQJHakSFzvm/0GWEw3L/IYdg= + + PrivateHeaders/RLMSyncConfiguration_Private.h + + Uq5Fv8y5c2BeibZeqe/OqOfQumI= + + PrivateHeaders/RLMSyncSubscription_Private.h + + MNGSKmrqPPyhHcOtu/BqSSURYXM= + + PrivateHeaders/RLMUser_Private.h + + j+PpsIBJsBM3k2htqZGM/y4Fw3M= + + + files2 + + CHANGELOG.md + + hash2 + + wt8p9tw4OPVj/LtpO9d+DXFoOnRQ6hRaxf/hS2NxDRg= + + + Headers/NSError+RLMSync.h + + hash2 + + 6nK1lw6vBPSTrCi83gbHTMykzmdmX0MlMrq6LmJk94I= + + + Headers/RLMAPIKeyAuth.h + + hash2 + + FwweqLeo/BZi7cBnkDu+AdBgnukrjAbjicdVQJ3PVV8= + + + Headers/RLMApp.h + + hash2 + + fmHB8oywmfycQqOzXoYB99LpOLE7akGn0ZrJtqviiTs= + + + Headers/RLMArray.h + + hash2 + + KaucaZvTcO+xDUtNo4JYySrZMCq6E8OiSYOMG3/LBxE= + + + Headers/RLMAsymmetricObject.h + + hash2 + + +liD/ke74W4Loa4OKvFBITIRTkZRZbItMxN6R4eU7wY= + + + Headers/RLMAsyncTask.h + + hash2 + + iyHi4LWQgTu2yYDS23OZ1wfdZt3ouoY5VoI0aEsHOm0= + + + Headers/RLMBSON.h + + hash2 + + W+5lc5SCRmNbVF2Pu9Zd2v46R+WALQ7xoNCOYC1Swnw= + + + Headers/RLMCollection.h + + hash2 + + womyBrMRt2s1UKKkPo++KwOv6DtP6q48hcBi1jfM2hI= + + + Headers/RLMConstants.h + + hash2 + + QntrtgpnRkkfsRAPt4SY8+3rscdQDbqztCyWdLS0vsU= + + + Headers/RLMCredentials.h + + hash2 + + ObUBKMWeTU0zI7Q4Ts9H5trRs4y4T3bCUY808oTm0bY= + + + Headers/RLMDecimal128.h + + hash2 + + Ubfmc9QWzsK+AcqbQRwaiXdylBV0LgqlyqeMBY1+LyQ= + + + Headers/RLMDictionary.h + + hash2 + + 7zN2nXgEwGfrPRtbgqtfoLrwJbwqohcVvU/OyA/07Lk= + + + Headers/RLMEmailPasswordAuth.h + + hash2 + + kPgBdHJePj/cHAbWCVhZlW1gCQP5jXtJ7XudO0PWjJc= + + + Headers/RLMEmbeddedObject.h + + hash2 + + ixHqXedHxkS6e1f2hOY4TR7NWMyNq34b4/nm8SR0Oxc= + + + Headers/RLMError.h + + hash2 + + 6duvM3p0FRf6fZ+aS57vHkf7WvV1KPoz7PcIZA48WTU= + + + Headers/RLMFindOneAndModifyOptions.h + + hash2 + + eBuQnRLTeMBzF7m2R9PMJor8N0HG8BATxdCptRT1l9M= + + + Headers/RLMFindOptions.h + + hash2 + + P8MSaPFACOtAPsGYinSqt6NMIsXKcWkHpFTlly2GBYo= + + + Headers/RLMLogger.h + + hash2 + + Rc5dqT87eP/gD3kVZ1e7cRwI9Mkt5r6CFn/coM+9wNw= + + + Headers/RLMMigration.h + + hash2 + + /CXq+e7CtzaXdrGoLya2a56Zz6xWRH73N3RzyMcQrgs= + + + Headers/RLMMongoClient.h + + hash2 + + mcINEnrePRx0xfRaNvOmeXYRadQMzwLngLrJ1OVyopc= + + + Headers/RLMMongoCollection.h + + hash2 + + E0fX0BjuJ0j4c8TuCPbwnLNKz673nghSyUN4BYN/+Io= + + + Headers/RLMMongoDatabase.h + + hash2 + + wnJWmMW0z3xO9KVRJKpiE+xkaKkzXBXiH5j+8eaFmcA= + + + Headers/RLMNetworkTransport.h + + hash2 + + AicqavQF04Q9MIj7DC5P9gBz6OuViFiiAmXdjlFnDHg= + + + Headers/RLMObject.h + + hash2 + + OiikDToZtuVXIwxkh+yGFMFCP0c/2M6A8cIP77/xvcU= + + + Headers/RLMObjectBase.h + + hash2 + + 0IkNkedPyHNJuPYD0PmVx4Bg/+mH8tv2PNXD2m9hWV8= + + + Headers/RLMObjectBase_Dynamic.h + + hash2 + + MhHocXkaDJWhg+kvj9Hqqy9FG4zTtna2Np2i7p4l/mA= + + + Headers/RLMObjectId.h + + hash2 + + Y7IcVMBjUeMCgI/orPGngNh0qcgC7R7fwx2STYYTC2g= + + + Headers/RLMObjectSchema.h + + hash2 + + 8oCJihoGgigIF170SRk/yU5RLDNX9TYQUrXxLjYrtuM= + + + Headers/RLMProperty.h + + hash2 + + nV0mZEIKVaPW2/FVbUaWuXy+nEV5iB30UZ55i0VVCno= + + + Headers/RLMProviderClient.h + + hash2 + + aOPxwbDKabtIt2wbqZ4Wb/le1H43X9HXrNkONHiEX2M= + + + Headers/RLMPushClient.h + + hash2 + + vLfYK+JyPmkHz32A9v/JPJGPKAL9QTKDDjuzAvbp+oQ= + + + Headers/RLMRealm+Sync.h + + hash2 + + WcmSf38ttMQ4awjqOn4zkmpysaf44aAT0GgECwvPPTA= + + + Headers/RLMRealm.h + + hash2 + + DMk8xOvPhlnZalU0C2E5O60eqhA67YErgxkj3mI4jXc= + + + Headers/RLMRealmConfiguration.h + + hash2 + + j5GiT0/nxORHqliXnJv/kkbOOqZX33xDbk8OTR7zDwU= + + + Headers/RLMRealm_Dynamic.h + + hash2 + + S14hbsZJZN4uVtz+HI326QGjnxKdSRlU6Ogf/zRhn3I= + + + Headers/RLMResults.h + + hash2 + + qZJ0imHeOKCxk0VNEkVldju7BQHiZ2hohjwCeU6aZTg= + + + Headers/RLMSchema.h + + hash2 + + Da+xBUjLeHl2hcOCpSFRylZchf6KtXuqqjscXH1jJQM= + + + Headers/RLMSectionedResults.h + + hash2 + + sXdD7rSZHJKtS62ScBNQhWdpGkKW1aDVK0qCzOouJIs= + + + Headers/RLMSet.h + + hash2 + + GJyUsZbhXDGgjqOQlfqqef9XjQnvB5nCRPHtZJWGa3w= + + + Headers/RLMSwiftObject.h + + hash2 + + Mp9akxBWxbrBunN7cH8rKSLxSps0tbV78UDSheKAlcU= + + + Headers/RLMSwiftProperty.h + + hash2 + + 9FsxWX7jcaks+2ZmTf4cgN0zvirLeNQHSB6BYAO1EYI= + + + Headers/RLMSyncConfiguration.h + + hash2 + + Qd1NmY+Z/yEGUpaaue7NEJ5fPWaRdhGPZwdhliidIpY= + + + Headers/RLMSyncManager.h + + hash2 + + rFV4QDsBonA29YqdZXsYhNSVewEYkrafSLPWBGaEhqI= + + + Headers/RLMSyncSession.h + + hash2 + + nvtBHH3xJsThO0B4IC70G3oFD2TAm3ylKbmewSOosI4= + + + Headers/RLMSyncSubscription.h + + hash2 + + bLLVFGHhtBca6vgsFZmW1oNaoYQlrjFELS/wESp9AbM= + + + Headers/RLMThreadSafeReference.h + + hash2 + + UMODRNRT6SDDKzmYIElQuKxojpiUtxhb0o/KbUM9BiA= + + + Headers/RLMUpdateResult.h + + hash2 + + lAHF8rLoAYtBCB3iqPCJEeSAijx4p/TLf2Q/B/qh5lY= + + + Headers/RLMUser.h + + hash2 + + wTq72vEeK8F3E3s/3DWLNz76GPbIMmApC5KfRF6m0ro= + + + Headers/RLMUserAPIKey.h + + hash2 + + 1QyqOo1U0h/D83T3jmF2rcq87+P6CHZvXh5dNLZQV00= + + + Headers/RLMValue.h + + hash2 + + kTEM0oJVWJv89s6/r6s0AHQoO1bJZsYB8IHZKbPtddY= + + + Headers/Realm.h + + hash2 + + kjoP0TvFhg49q7sxVEgPoNFg+zqo9bCE2Uh0YOpDpbE= + + + LICENSE + + hash2 + + aYSSIb+5AFPeITTvXm1UAoe0uYBiMmSS8flvXaaFUks= + + + Modules/module.modulemap + + hash2 + + KdpbsAGrxax/jx81TZ93YswnCwT1BZTor6VwIHvgRUs= + + + PrivateHeaders/RLMAccessor.h + + hash2 + + SPn/lNQWueENJmkQ4wtBIhfjYt6+nmmT97X3fzuAJC0= + + + PrivateHeaders/RLMApp_Private.h + + hash2 + + 4pd3636NRX7kQgsEy7dv7IQH/AyZMKjQvA2nmK97Vq0= + + + PrivateHeaders/RLMArray_Private.h + + hash2 + + 2N5vpeRBFWpvYEVWixFuVwigDP3cRo9i7S0qyB7fCZE= + + + PrivateHeaders/RLMAsyncTask_Private.h + + hash2 + + vD90SYI5658JDp88stHbsxALdVNhs0Tojcld9hVORHE= + + + PrivateHeaders/RLMBSON_Private.hpp + + hash2 + + BbwPX5lPL+B+5GRik9KiI5HcYoKNH/Tsciqyo3dZwBw= + + + PrivateHeaders/RLMCollection_Private.h + + hash2 + + Ez5JFCGYAGERpmwzK44V9Wu5NkwdLOrl1iHqFvur6r4= + + + PrivateHeaders/RLMDictionary_Private.h + + hash2 + + L46EZOdftwGMzm9VC/4u3hkjsshqrE1MqRXoAkJqsOg= + + + PrivateHeaders/RLMEvent.h + + hash2 + + 5QzhSVhLCncN5PArOpGSswyWYU5jSvmLJ64E6SIAYdw= + + + PrivateHeaders/RLMLogger_Private.h + + hash2 + + FcXRklemoAfn0U01YWdTuUgt0i183/x1v71EplpuujM= + + + PrivateHeaders/RLMMigration_Private.h + + hash2 + + ffQpfBvMLXuV8NocpO5ksVSmYUATypSSGr91LEfzT6o= + + + PrivateHeaders/RLMMongoCollection_Private.h + + hash2 + + PihL2Vx/JsPS4RvQXdpvaQ+VxmtmdOwaYgtH6f9wNQs= + + + PrivateHeaders/RLMObjectBase_Private.h + + hash2 + + qSCecm7kZ3JIPZlhy4bqSwWYGpxP6cO+4XEUgSvdUTY= + + + PrivateHeaders/RLMObjectSchema_Private.h + + hash2 + + YULa8m2pbU/ji4KozUqn/FNoRTWwO71lgKeJiAbPRYA= + + + PrivateHeaders/RLMObjectStore.h + + hash2 + + 0KjmazUjg/mYvymGTJ74ChBgvrqN2Lc9O0TqcYF/Mic= + + + PrivateHeaders/RLMObject_Private.h + + hash2 + + +H8SMf9eYajdgBd1CmVWutUX5RsEHIsqKiruzH9R/Ok= + + + PrivateHeaders/RLMProperty_Private.h + + hash2 + + SCHY8+Qpt8utNhA5fwnUlOZ4Lg3O4Ubp5JrNuf01QIA= + + + PrivateHeaders/RLMPushClient_Private.hpp + + hash2 + + 2Os6mvA+v08M/g6mBUU8xUYAJvdOf9G/Fe1c0QuXlVg= + + + PrivateHeaders/RLMRealmConfiguration_Private.h + + hash2 + + syVrRHUbHQtVS/Dn94ZFKgu8iSJM1m17S0xnMCK9yEg= + + + PrivateHeaders/RLMRealm_Private.h + + hash2 + + Iwvw9zZudHE58doxwpdgpZqHaiCFT0Vn256EkmeFzIw= + + + PrivateHeaders/RLMResults_Private.h + + hash2 + + 7XS2lKYYaVQEMQ+lyOes++x+RIKDsVc8K2ZyTCf2NgE= + + + PrivateHeaders/RLMScheduler.h + + hash2 + + k60PzA5BmG/FSt34q+UmdeQWecO5OhB+uZnq99H1Fzc= + + + PrivateHeaders/RLMSchema_Private.h + + hash2 + + xuglEVxHTOiGP9pVTJ8oLhSTM1SRk38dn7uPHqUQ93Y= + + + PrivateHeaders/RLMSet_Private.h + + hash2 + + Fo+6TD0oovdpdflJ6GyRvXgCOWHSSjd2bAR+j7Fs88U= + + + PrivateHeaders/RLMSwiftCollectionBase.h + + hash2 + + bDV50WQPz5wCRCcFfCQLob/JPetY8XeEOZOJXoLtGKs= + + + PrivateHeaders/RLMSwiftSupport.h + + hash2 + + bDHCy6fOU4zn5MSi6CAVRmKQsc7GJgx6X4RNHbuI8Ws= + + + PrivateHeaders/RLMSwiftValueStorage.h + + hash2 + + D9eklFNwtXSh83+sMaYU1SNzeidnyKUXZV2PLWt+Ank= + + + PrivateHeaders/RLMSyncConfiguration_Private.h + + hash2 + + neftVth2HwCuILURLXm1nMY/GZCeo0G5/yYCIS8gz3Q= + + + PrivateHeaders/RLMSyncSubscription_Private.h + + hash2 + + Y9ySSatKNxy/XkESWScAioTpFet/83QmLhrE1VUIgmU= + + + PrivateHeaders/RLMUser_Private.h + + hash2 + + 4DKpP+7zxmcfnitz1DhLK2fhsChCk2aPWbG0B85100o= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/Info.plist index fd10f21a2..e01192c07 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/Info.plist +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/Info.plist @@ -5,8 +5,10 @@ AvailableLibraries + BinaryPath + RealmSwift.framework/RealmSwift LibraryIdentifier - ios-arm64 + xros-arm64 LibraryPath RealmSwift.framework SupportedArchitectures @@ -14,23 +16,28 @@ arm64 SupportedPlatform - ios + xros + BinaryPath + RealmSwift.framework/RealmSwift LibraryIdentifier - watchos-arm64_arm64_32_armv7k + xros-arm64_x86_64-simulator LibraryPath RealmSwift.framework SupportedArchitectures arm64 - arm64_32 - armv7k + x86_64 SupportedPlatform - watchos + xros + SupportedPlatformVariant + simulator + BinaryPath + RealmSwift.framework/RealmSwift LibraryIdentifier watchos-arm64_i386_x86_64-simulator LibraryPath @@ -47,8 +54,10 @@ simulator + BinaryPath + RealmSwift.framework/RealmSwift LibraryIdentifier - ios-arm64_x86_64-simulator + tvos-arm64_x86_64-simulator LibraryPath RealmSwift.framework SupportedArchitectures @@ -57,11 +66,13 @@ x86_64 SupportedPlatform - ios + tvos SupportedPlatformVariant simulator + BinaryPath + RealmSwift.framework/Versions/A/RealmSwift LibraryIdentifier ios-arm64_x86_64-maccatalyst LibraryPath @@ -77,6 +88,38 @@ maccatalyst + BinaryPath + RealmSwift.framework/RealmSwift + LibraryIdentifier + watchos-arm64_arm64_32_armv7k + LibraryPath + RealmSwift.framework + SupportedArchitectures + + arm64 + arm64_32 + armv7k + + SupportedPlatform + watchos + + + BinaryPath + RealmSwift.framework/RealmSwift + LibraryIdentifier + tvos-arm64 + LibraryPath + RealmSwift.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + tvos + + + BinaryPath + RealmSwift.framework/Versions/A/RealmSwift LibraryIdentifier macos-arm64_x86_64 LibraryPath @@ -90,8 +133,10 @@ macos + BinaryPath + RealmSwift.framework/RealmSwift LibraryIdentifier - tvos-arm64 + ios-arm64 LibraryPath RealmSwift.framework SupportedArchitectures @@ -99,11 +144,13 @@ arm64 SupportedPlatform - tvos + ios + BinaryPath + RealmSwift.framework/RealmSwift LibraryIdentifier - tvos-arm64_x86_64-simulator + ios-arm64_x86_64-simulator LibraryPath RealmSwift.framework SupportedArchitectures @@ -112,7 +159,7 @@ x86_64 SupportedPlatform - tvos + ios SupportedPlatformVariant simulator diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Headers/RealmSwift-Swift.h b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Headers/RealmSwift-Swift.h index 67dddc1b8..a0975c6e0 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Headers/RealmSwift-Swift.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Headers/RealmSwift-Swift.h @@ -1,6 +1,6 @@ #if 0 #elif defined(__arm64__) && __arm64__ -// Generated by Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100) +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.106 clang-1500.0.40.1) #ifndef REALMSWIFT_SWIFT_H #define REALMSWIFT_SWIFT_H #pragma clang diagnostic push @@ -42,12 +42,18 @@ #include #endif #if defined(__cplusplus) -#if __has_include() +#if defined(__arm64e__) && __has_include() # include #else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" # ifndef __ptrauth_swift_value_witness_function_pointer # define __ptrauth_swift_value_witness_function_pointer(x) # endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop #endif #endif @@ -246,6 +252,17 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); #else # define SWIFT_NOEXCEPT #endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif #if defined(_WIN32) #if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) # define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) @@ -482,6 +499,8 @@ SWIFT_CLASS_NAMED("ObjectId") + + @@ -694,12 +713,12 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 + (void)addObserversToObject:(NSObject * _Nonnull)object; @end -#endif -#if defined(__cplusplus) #endif #if __has_attribute(external_source_symbol) # pragma clang attribute pop #endif +#if defined(__cplusplus) +#endif #pragma clang diagnostic pop #endif diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Info.plist index e5489f218..9e410414f 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Info.plist and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Info.plist differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo index 4b8387c57..8c0a9cd78 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-ios.swiftdoc b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-ios.swiftdoc index f4f7d6b18..1b1b85c15 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-ios.swiftdoc and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-ios.swiftdoc differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-ios.swiftmodule b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-ios.swiftmodule index c2f3d4cd6..9b2efbc11 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-ios.swiftmodule and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-ios.swiftmodule differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/RealmSwift b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/RealmSwift index c01615c74..4ff464adc 100755 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/RealmSwift and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64/RealmSwift.framework/RealmSwift differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Headers/RealmSwift-Swift.h b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Headers/RealmSwift-Swift.h index ca6559d01..37e9dad7b 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Headers/RealmSwift-Swift.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Headers/RealmSwift-Swift.h @@ -1,6 +1,6 @@ #if 0 #elif defined(__arm64__) && __arm64__ -// Generated by Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100) +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.106 clang-1500.0.40.1) #ifndef REALMSWIFT_SWIFT_H #define REALMSWIFT_SWIFT_H #pragma clang diagnostic push @@ -42,12 +42,18 @@ #include #endif #if defined(__cplusplus) -#if __has_include() +#if defined(__arm64e__) && __has_include() # include #else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" # ifndef __ptrauth_swift_value_witness_function_pointer # define __ptrauth_swift_value_witness_function_pointer(x) # endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop #endif #endif @@ -246,6 +252,17 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); #else # define SWIFT_NOEXCEPT #endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif #if defined(_WIN32) #if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) # define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) @@ -482,6 +499,8 @@ SWIFT_CLASS_NAMED("ObjectId") + + @@ -694,17 +713,17 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 + (void)addObserversToObject:(NSObject * _Nonnull)object; @end -#endif -#if defined(__cplusplus) #endif #if __has_attribute(external_source_symbol) # pragma clang attribute pop #endif +#if defined(__cplusplus) +#endif #pragma clang diagnostic pop #endif #elif defined(__x86_64__) && __x86_64__ -// Generated by Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100) +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.106 clang-1500.0.40.1) #ifndef REALMSWIFT_SWIFT_H #define REALMSWIFT_SWIFT_H #pragma clang diagnostic push @@ -746,12 +765,18 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 #include #endif #if defined(__cplusplus) -#if __has_include() +#if defined(__arm64e__) && __has_include() # include #else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" # ifndef __ptrauth_swift_value_witness_function_pointer # define __ptrauth_swift_value_witness_function_pointer(x) # endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop #endif #endif @@ -950,6 +975,17 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); #else # define SWIFT_NOEXCEPT #endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif #if defined(_WIN32) #if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) # define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) @@ -1186,6 +1222,8 @@ SWIFT_CLASS_NAMED("ObjectId") + + @@ -1398,12 +1436,12 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 + (void)addObserversToObject:(NSObject * _Nonnull)object; @end -#endif -#if defined(__cplusplus) #endif #if __has_attribute(external_source_symbol) # pragma clang attribute pop #endif +#if defined(__cplusplus) +#endif #pragma clang diagnostic pop #endif diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/Project/arm64-apple-ios-macabi.swiftsourceinfo b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/Project/arm64-apple-ios-macabi.swiftsourceinfo index 6010881a4..5dac7dc6e 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/Project/arm64-apple-ios-macabi.swiftsourceinfo and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/Project/arm64-apple-ios-macabi.swiftsourceinfo differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-ios-macabi.swiftsourceinfo b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-ios-macabi.swiftsourceinfo index 7ef46e898..1f81771d6 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-ios-macabi.swiftsourceinfo and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-ios-macabi.swiftsourceinfo differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/arm64-apple-ios-macabi.swiftdoc b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/arm64-apple-ios-macabi.swiftdoc index 2161ad87b..e85906e17 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/arm64-apple-ios-macabi.swiftdoc and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/arm64-apple-ios-macabi.swiftdoc differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/arm64-apple-ios-macabi.swiftmodule b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/arm64-apple-ios-macabi.swiftmodule index 2dd198839..accbac444 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/arm64-apple-ios-macabi.swiftmodule and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/arm64-apple-ios-macabi.swiftmodule differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/x86_64-apple-ios-macabi.swiftdoc b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/x86_64-apple-ios-macabi.swiftdoc index 2fa6fbc01..ef61e5bad 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/x86_64-apple-ios-macabi.swiftdoc and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/x86_64-apple-ios-macabi.swiftdoc differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/x86_64-apple-ios-macabi.swiftmodule b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/x86_64-apple-ios-macabi.swiftmodule index c9537141f..84df5eb0c 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/x86_64-apple-ios-macabi.swiftmodule and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/x86_64-apple-ios-macabi.swiftmodule differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/RealmSwift b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/RealmSwift index 33ed8f042..c7ee367c0 100755 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/RealmSwift and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/RealmSwift differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Resources/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Resources/Info.plist index 7cf0a87cd..540c97288 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Resources/Info.plist +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-maccatalyst/RealmSwift.framework/Versions/A/Resources/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 21G646 + 22G91 CFBundleDevelopmentRegion English CFBundleExecutable @@ -17,7 +17,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 10.40.2 + 10.42.3 CFBundleSignature ???? CFBundleSupportedPlatforms @@ -25,7 +25,7 @@ MacOSX CFBundleVersion - 10.40.2 + 10.42.3 DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild @@ -33,15 +33,15 @@ DTPlatformName macosx DTPlatformVersion - 13.3 + 14.0 DTSDKBuild - 22E245 + 23A5326c DTSDKName - macosx13.3 + macosx14.0 DTXcode - 1431 + 1500 DTXcodeBuild - 14E300c + 15A5229h LSMinimumSystemVersion 10.15 NSHumanReadableCopyright @@ -49,6 +49,7 @@ UIDeviceFamily 2 + 6 diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Headers/RealmSwift-Swift.h b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Headers/RealmSwift-Swift.h index ca6559d01..37e9dad7b 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Headers/RealmSwift-Swift.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Headers/RealmSwift-Swift.h @@ -1,6 +1,6 @@ #if 0 #elif defined(__arm64__) && __arm64__ -// Generated by Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100) +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.106 clang-1500.0.40.1) #ifndef REALMSWIFT_SWIFT_H #define REALMSWIFT_SWIFT_H #pragma clang diagnostic push @@ -42,12 +42,18 @@ #include #endif #if defined(__cplusplus) -#if __has_include() +#if defined(__arm64e__) && __has_include() # include #else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" # ifndef __ptrauth_swift_value_witness_function_pointer # define __ptrauth_swift_value_witness_function_pointer(x) # endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop #endif #endif @@ -246,6 +252,17 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); #else # define SWIFT_NOEXCEPT #endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif #if defined(_WIN32) #if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) # define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) @@ -482,6 +499,8 @@ SWIFT_CLASS_NAMED("ObjectId") + + @@ -694,17 +713,17 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 + (void)addObserversToObject:(NSObject * _Nonnull)object; @end -#endif -#if defined(__cplusplus) #endif #if __has_attribute(external_source_symbol) # pragma clang attribute pop #endif +#if defined(__cplusplus) +#endif #pragma clang diagnostic pop #endif #elif defined(__x86_64__) && __x86_64__ -// Generated by Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100) +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.106 clang-1500.0.40.1) #ifndef REALMSWIFT_SWIFT_H #define REALMSWIFT_SWIFT_H #pragma clang diagnostic push @@ -746,12 +765,18 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 #include #endif #if defined(__cplusplus) -#if __has_include() +#if defined(__arm64e__) && __has_include() # include #else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" # ifndef __ptrauth_swift_value_witness_function_pointer # define __ptrauth_swift_value_witness_function_pointer(x) # endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop #endif #endif @@ -950,6 +975,17 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); #else # define SWIFT_NOEXCEPT #endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif #if defined(_WIN32) #if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) # define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) @@ -1186,6 +1222,8 @@ SWIFT_CLASS_NAMED("ObjectId") + + @@ -1398,12 +1436,12 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 + (void)addObserversToObject:(NSObject * _Nonnull)object; @end -#endif -#if defined(__cplusplus) #endif #if __has_attribute(external_source_symbol) # pragma clang attribute pop #endif +#if defined(__cplusplus) +#endif #pragma clang diagnostic pop #endif diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Info.plist index d5f18b866..f7eeb3126 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Info.plist and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Info.plist differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo index 1421ea3cb..d86f07be4 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo index 6afa94061..1e1d3fe63 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-ios-simulator.swiftdoc b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-ios-simulator.swiftdoc index 0b0f92885..b6ad584e3 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-ios-simulator.swiftdoc and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-ios-simulator.swiftdoc differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-ios-simulator.swiftmodule b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-ios-simulator.swiftmodule index 7c7f89360..7d5a0ffe4 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-ios-simulator.swiftmodule and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-ios-simulator.swiftmodule differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-ios-simulator.swiftdoc b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-ios-simulator.swiftdoc index 64a87c8c2..8e42ac9fe 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-ios-simulator.swiftdoc and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-ios-simulator.swiftdoc differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-ios-simulator.swiftmodule b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-ios-simulator.swiftmodule index 673ff3ae8..af1083927 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-ios-simulator.swiftmodule and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-ios-simulator.swiftmodule differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/RealmSwift b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/RealmSwift index e042769fc..4b8eeedac 100755 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/RealmSwift and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/RealmSwift differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/_CodeSignature/CodeResources b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/_CodeSignature/CodeResources index b81aab68d..79891f1d5 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/_CodeSignature/CodeResources +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/ios-arm64_x86_64-simulator/RealmSwift.framework/_CodeSignature/CodeResources @@ -6,19 +6,19 @@ Headers/RealmSwift-Swift.h - 2lCF9lbBzKLVw+uz4iQGJ6UWTMY= + 4/F674JO/MVMxbCMUEnOTj7VNWs= Info.plist - 9jBqL+E3C1fkBQhdNJSNYDYt4Y8= + 2FzhRlB44AC52GF0gs0Ppo29qs4= Modules/RealmSwift.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo - p/su63cyi42kkiebTakAwjlkcHQ= + jOMWyeAW1dacEpmGDFGt8eV/imQ= Modules/RealmSwift.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo - 6V5O3Vzyr4gVzcyUdt7o1OJmrqA= + 2pNRDqWZY7Lf1iOQ/XMbza7QZWI= Modules/RealmSwift.swiftmodule/arm64-apple-ios-simulator.abi.json @@ -26,11 +26,11 @@ Modules/RealmSwift.swiftmodule/arm64-apple-ios-simulator.swiftdoc - PyTF7DsgEZntCU17x/PpDMZ+vPY= + 7JGfkIrsIcpDLNUQa5PetJ4I+/k= Modules/RealmSwift.swiftmodule/arm64-apple-ios-simulator.swiftmodule - LzJXpqjlLfLCMz0eXIcYYiZPe3U= + J4/HAIYM3y+7hu+oDM1GBc5w/VA= Modules/RealmSwift.swiftmodule/x86_64-apple-ios-simulator.abi.json @@ -38,11 +38,11 @@ Modules/RealmSwift.swiftmodule/x86_64-apple-ios-simulator.swiftdoc - /dnd7PBhwGDIWRGk/DpLkIuaK+8= + mTZWXsxtMPgqkzHgGF0/wkjEsH0= Modules/RealmSwift.swiftmodule/x86_64-apple-ios-simulator.swiftmodule - uegwFpDnWDL33UBx83Hr2BIfv74= + 2PM9A5uQxypfBAmOX++X4Kzy9BI= Modules/module.modulemap @@ -55,21 +55,21 @@ hash2 - 721aYGv6UhVUz8ZhfdA7LhPVDzE8H3UzyAmQYPV31Sg= + R7UTtK85xpvxJUN1vpceuPOXeEhtTvgY/mzD2K8KmI8= Modules/RealmSwift.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo hash2 - HWbgvpfC77PX02S1j/vOXCx4d/iHV7mEVwvGCLGcHHA= + WCXoTWFRYmeXuOHIA5BSELwL2rfSmH/fSb3lJWW6gw8= Modules/RealmSwift.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo hash2 - k3hiLTEDaP9Pl5clCryMZlGuCa6QF9hRV0+craYc1Xo= + JS8GE5RcAeeUEu5NwpQzUUHkXHPPM/KadCyxy32TokY= Modules/RealmSwift.swiftmodule/arm64-apple-ios-simulator.abi.json @@ -83,14 +83,14 @@ hash2 - b7ZFklCRM8DoezA7Q/Wf9bpyZzw+uBGhDIHMhViDazQ= + rxrIOrISlOhyPmILxkOCIs5gJPrcGjhjA2xz1pKPp7Y= Modules/RealmSwift.swiftmodule/arm64-apple-ios-simulator.swiftmodule hash2 - Qu/6ql2GlEox5GuLeiQm2hSO2YS+qQXCP4QTq+dfddw= + LLmc+9RSfyd/fT5otKyR+IVNfRSf1PHGiSc486zTsZ0= Modules/RealmSwift.swiftmodule/x86_64-apple-ios-simulator.abi.json @@ -104,14 +104,14 @@ hash2 - RB/mzrM1grHr4RMhANplmsjtUpI72ZbeEw7Q1Lu7Zo0= + Iyf0CYkkCPktk2rJSiRE4VB3lW/S7YTtOEn988KutBA= Modules/RealmSwift.swiftmodule/x86_64-apple-ios-simulator.swiftmodule hash2 - VY7/DSB9ScR0eK6J6iqsrQjbDPrVFx8PLkFpWj04SwQ= + U3zTWAiJ6S1F+NsEabpheIkAKyE5S4eGWMUGS4/h6ow= Modules/module.modulemap diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Headers/RealmSwift-Swift.h b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Headers/RealmSwift-Swift.h index ca6559d01..37e9dad7b 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Headers/RealmSwift-Swift.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Headers/RealmSwift-Swift.h @@ -1,6 +1,6 @@ #if 0 #elif defined(__arm64__) && __arm64__ -// Generated by Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100) +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.106 clang-1500.0.40.1) #ifndef REALMSWIFT_SWIFT_H #define REALMSWIFT_SWIFT_H #pragma clang diagnostic push @@ -42,12 +42,18 @@ #include #endif #if defined(__cplusplus) -#if __has_include() +#if defined(__arm64e__) && __has_include() # include #else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" # ifndef __ptrauth_swift_value_witness_function_pointer # define __ptrauth_swift_value_witness_function_pointer(x) # endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop #endif #endif @@ -246,6 +252,17 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); #else # define SWIFT_NOEXCEPT #endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif #if defined(_WIN32) #if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) # define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) @@ -482,6 +499,8 @@ SWIFT_CLASS_NAMED("ObjectId") + + @@ -694,17 +713,17 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 + (void)addObserversToObject:(NSObject * _Nonnull)object; @end -#endif -#if defined(__cplusplus) #endif #if __has_attribute(external_source_symbol) # pragma clang attribute pop #endif +#if defined(__cplusplus) +#endif #pragma clang diagnostic pop #endif #elif defined(__x86_64__) && __x86_64__ -// Generated by Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100) +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.106 clang-1500.0.40.1) #ifndef REALMSWIFT_SWIFT_H #define REALMSWIFT_SWIFT_H #pragma clang diagnostic push @@ -746,12 +765,18 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 #include #endif #if defined(__cplusplus) -#if __has_include() +#if defined(__arm64e__) && __has_include() # include #else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" # ifndef __ptrauth_swift_value_witness_function_pointer # define __ptrauth_swift_value_witness_function_pointer(x) # endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop #endif #endif @@ -950,6 +975,17 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); #else # define SWIFT_NOEXCEPT #endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif #if defined(_WIN32) #if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) # define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) @@ -1186,6 +1222,8 @@ SWIFT_CLASS_NAMED("ObjectId") + + @@ -1398,12 +1436,12 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 + (void)addObserversToObject:(NSObject * _Nonnull)object; @end -#endif -#if defined(__cplusplus) #endif #if __has_attribute(external_source_symbol) # pragma clang attribute pop #endif +#if defined(__cplusplus) +#endif #pragma clang diagnostic pop #endif diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo index 8245bbd8a..f136ad770 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-macos.swiftsourceinfo b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-macos.swiftsourceinfo index 83a508b48..5b1c099e6 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-macos.swiftsourceinfo and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-macos.swiftsourceinfo differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/arm64-apple-macos.swiftdoc b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/arm64-apple-macos.swiftdoc index d7cd196a5..88dcc75a8 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/arm64-apple-macos.swiftdoc and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/arm64-apple-macos.swiftdoc differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/arm64-apple-macos.swiftmodule b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/arm64-apple-macos.swiftmodule index 4e9eb30ec..93cdc5a89 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/arm64-apple-macos.swiftmodule and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/arm64-apple-macos.swiftmodule differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/x86_64-apple-macos.swiftdoc b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/x86_64-apple-macos.swiftdoc index b1beb1de9..b71868ad2 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/x86_64-apple-macos.swiftdoc and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/x86_64-apple-macos.swiftdoc differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/x86_64-apple-macos.swiftmodule b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/x86_64-apple-macos.swiftmodule index 27853a2a0..119c4fea7 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/x86_64-apple-macos.swiftmodule and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Modules/RealmSwift.swiftmodule/x86_64-apple-macos.swiftmodule differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/RealmSwift b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/RealmSwift index f3d7ff16d..c6dbf5635 100755 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/RealmSwift and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/RealmSwift differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Resources/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Resources/Info.plist index d90eb6345..bc82cdfe7 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Resources/Info.plist +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/Resources/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 21G646 + 22G91 CFBundleDevelopmentRegion English CFBundleExecutable @@ -17,7 +17,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 10.40.2 + 10.42.3 CFBundleSignature ???? CFBundleSupportedPlatforms @@ -25,7 +25,7 @@ MacOSX CFBundleVersion - 10.40.2 + 10.42.3 DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild @@ -33,17 +33,17 @@ DTPlatformName macosx DTPlatformVersion - 13.3 + 14.0 DTSDKBuild - 22E245 + 23A5326c DTSDKName - macosx13.3 + macosx14.0 DTXcode - 1431 + 1500 DTXcodeBuild - 14E300c + 15A5229h LSMinimumSystemVersion - 10.13 + 10.14 NSHumanReadableCopyright Copyright © 2014-2021 Realm. All rights reserved. diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/_CodeSignature/CodeResources b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/_CodeSignature/CodeResources index a18175c02..df06d7d83 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/_CodeSignature/CodeResources +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/macos-arm64_x86_64/RealmSwift.framework/Versions/A/_CodeSignature/CodeResources @@ -6,7 +6,7 @@ Resources/Info.plist - FqE/uOMzOe9FEtFeFBVEGBhep6o= + QlmeAmBP9KF54yDHqGUIKRdOE0M= files2 @@ -15,21 +15,21 @@ hash2 - 721aYGv6UhVUz8ZhfdA7LhPVDzE8H3UzyAmQYPV31Sg= + R7UTtK85xpvxJUN1vpceuPOXeEhtTvgY/mzD2K8KmI8= Modules/RealmSwift.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo hash2 - nVQ7rQze8L0sc3PEDPVMrHZhy4bQ17NWqxOTM1yHGbU= + nJj5+4+eOFWPD/0xYuOPyb6EmemCqObDcAMZzm4CU5I= Modules/RealmSwift.swiftmodule/Project/x86_64-apple-macos.swiftsourceinfo hash2 - NSW0KeuWNXdLCa53gEGycqWuYjoIwF/7GvemBKZ+29Q= + p8fVkEnQ20J++f/V1BOMnDSf45DUoPY8LdITBadffGk= Modules/RealmSwift.swiftmodule/arm64-apple-macos.abi.json @@ -43,14 +43,14 @@ hash2 - 8roQqKdzTVYVqLZ8pYWm9TA9q4LVAPMDcHFWhToV0Rc= + LZLdhlcYEGrQCMCWLDM230BVN0LWmNJhzcgkKkyk+Ko= Modules/RealmSwift.swiftmodule/arm64-apple-macos.swiftmodule hash2 - DRWzxeYcH59z42zbXqKkB6L63/SlgfXUfOsy0e/bZtw= + aUVsBgi+wemyYQQaRnm5obXjvnx4Oo3I+mUQWgrVUXc= Modules/RealmSwift.swiftmodule/x86_64-apple-macos.abi.json @@ -64,14 +64,14 @@ hash2 - 7hTl0BL8H+Ah6tb6kdB5f1fhgbfYXXEA/+YgtWdpJqA= + 7ytGRSCS0mPv0hUa3NdJNYKW68BSNMjrZtzFzCinJsQ= Modules/RealmSwift.swiftmodule/x86_64-apple-macos.swiftmodule hash2 - Tv0fFvloJytBd75xZK2HzBRDFXSSichdDlR4N/mB7WQ= + ZBH9VpCi9zsvKdTi5zAexvvCVCoqn29KnPyhyADqHos= Modules/module.modulemap @@ -85,7 +85,7 @@ hash2 - CssDM74tAQoN2rTbWIgc0KaKqMzkb4RI1lV+dzpNIW4= + 9nBuYYVnXKcOLagk7QUZ/ToQV7x1E08wFL7zRk3Kg2c= diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Headers/RealmSwift-Swift.h b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Headers/RealmSwift-Swift.h index 67dddc1b8..a0975c6e0 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Headers/RealmSwift-Swift.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Headers/RealmSwift-Swift.h @@ -1,6 +1,6 @@ #if 0 #elif defined(__arm64__) && __arm64__ -// Generated by Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100) +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.106 clang-1500.0.40.1) #ifndef REALMSWIFT_SWIFT_H #define REALMSWIFT_SWIFT_H #pragma clang diagnostic push @@ -42,12 +42,18 @@ #include #endif #if defined(__cplusplus) -#if __has_include() +#if defined(__arm64e__) && __has_include() # include #else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" # ifndef __ptrauth_swift_value_witness_function_pointer # define __ptrauth_swift_value_witness_function_pointer(x) # endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop #endif #endif @@ -246,6 +252,17 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); #else # define SWIFT_NOEXCEPT #endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif #if defined(_WIN32) #if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) # define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) @@ -482,6 +499,8 @@ SWIFT_CLASS_NAMED("ObjectId") + + @@ -694,12 +713,12 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 + (void)addObserversToObject:(NSObject * _Nonnull)object; @end -#endif -#if defined(__cplusplus) #endif #if __has_attribute(external_source_symbol) # pragma clang attribute pop #endif +#if defined(__cplusplus) +#endif #pragma clang diagnostic pop #endif diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Info.plist index 60617b690..76872c4cc 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Info.plist and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Info.plist differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-tvos.swiftsourceinfo b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-tvos.swiftsourceinfo index 7d188a20f..2f2e56bfd 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-tvos.swiftsourceinfo and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-tvos.swiftsourceinfo differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-tvos.swiftdoc b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-tvos.swiftdoc index a83496309..d4737de64 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-tvos.swiftdoc and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-tvos.swiftdoc differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-tvos.swiftmodule b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-tvos.swiftmodule index 501c34464..dd0eec6af 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-tvos.swiftmodule and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-tvos.swiftmodule differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/RealmSwift b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/RealmSwift index 49707abf5..b2d72f320 100755 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/RealmSwift and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64/RealmSwift.framework/RealmSwift differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Headers/RealmSwift-Swift.h b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Headers/RealmSwift-Swift.h index ca6559d01..37e9dad7b 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Headers/RealmSwift-Swift.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Headers/RealmSwift-Swift.h @@ -1,6 +1,6 @@ #if 0 #elif defined(__arm64__) && __arm64__ -// Generated by Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100) +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.106 clang-1500.0.40.1) #ifndef REALMSWIFT_SWIFT_H #define REALMSWIFT_SWIFT_H #pragma clang diagnostic push @@ -42,12 +42,18 @@ #include #endif #if defined(__cplusplus) -#if __has_include() +#if defined(__arm64e__) && __has_include() # include #else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" # ifndef __ptrauth_swift_value_witness_function_pointer # define __ptrauth_swift_value_witness_function_pointer(x) # endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop #endif #endif @@ -246,6 +252,17 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); #else # define SWIFT_NOEXCEPT #endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif #if defined(_WIN32) #if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) # define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) @@ -482,6 +499,8 @@ SWIFT_CLASS_NAMED("ObjectId") + + @@ -694,17 +713,17 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 + (void)addObserversToObject:(NSObject * _Nonnull)object; @end -#endif -#if defined(__cplusplus) #endif #if __has_attribute(external_source_symbol) # pragma clang attribute pop #endif +#if defined(__cplusplus) +#endif #pragma clang diagnostic pop #endif #elif defined(__x86_64__) && __x86_64__ -// Generated by Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100) +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.106 clang-1500.0.40.1) #ifndef REALMSWIFT_SWIFT_H #define REALMSWIFT_SWIFT_H #pragma clang diagnostic push @@ -746,12 +765,18 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 #include #endif #if defined(__cplusplus) -#if __has_include() +#if defined(__arm64e__) && __has_include() # include #else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" # ifndef __ptrauth_swift_value_witness_function_pointer # define __ptrauth_swift_value_witness_function_pointer(x) # endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop #endif #endif @@ -950,6 +975,17 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); #else # define SWIFT_NOEXCEPT #endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif #if defined(_WIN32) #if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) # define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) @@ -1186,6 +1222,8 @@ SWIFT_CLASS_NAMED("ObjectId") + + @@ -1398,12 +1436,12 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 + (void)addObserversToObject:(NSObject * _Nonnull)object; @end -#endif -#if defined(__cplusplus) #endif #if __has_attribute(external_source_symbol) # pragma clang attribute pop #endif +#if defined(__cplusplus) +#endif #pragma clang diagnostic pop #endif diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Info.plist index 202a8f08a..79d20fad0 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Info.plist and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Info.plist differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-tvos-simulator.swiftsourceinfo b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-tvos-simulator.swiftsourceinfo index 1d211b15a..97a52dbb3 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-tvos-simulator.swiftsourceinfo and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-tvos-simulator.swiftsourceinfo differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-tvos-simulator.swiftsourceinfo b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-tvos-simulator.swiftsourceinfo index a5484b207..8cd6b3e0a 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-tvos-simulator.swiftsourceinfo and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-tvos-simulator.swiftsourceinfo differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-tvos-simulator.swiftdoc b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-tvos-simulator.swiftdoc index 6f7e4ea2c..d77e1dcec 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-tvos-simulator.swiftdoc and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-tvos-simulator.swiftdoc differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-tvos-simulator.swiftmodule b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-tvos-simulator.swiftmodule index d0db0c773..1b87c58e0 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-tvos-simulator.swiftmodule and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-tvos-simulator.swiftmodule differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-tvos-simulator.swiftdoc b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-tvos-simulator.swiftdoc index e79be1c56..42c6c8b52 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-tvos-simulator.swiftdoc and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-tvos-simulator.swiftdoc differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-tvos-simulator.swiftmodule b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-tvos-simulator.swiftmodule index 59d45f898..c4662821c 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-tvos-simulator.swiftmodule and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-tvos-simulator.swiftmodule differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/RealmSwift b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/RealmSwift index 7025e97f3..b35491f73 100755 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/RealmSwift and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/RealmSwift differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/_CodeSignature/CodeResources b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/_CodeSignature/CodeResources index 6346f0e54..7facfc1ad 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/_CodeSignature/CodeResources +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/tvos-arm64_x86_64-simulator/RealmSwift.framework/_CodeSignature/CodeResources @@ -6,19 +6,19 @@ Headers/RealmSwift-Swift.h - 2lCF9lbBzKLVw+uz4iQGJ6UWTMY= + 4/F674JO/MVMxbCMUEnOTj7VNWs= Info.plist - IeYMq54M+Hylgiv1OKeZNJNhUw4= + xd4/gFQdwoKEo3HwdZ6Fr+KzBPY= Modules/RealmSwift.swiftmodule/Project/arm64-apple-tvos-simulator.swiftsourceinfo - 7N9C8qgm80hg7NmLChGXMbfcf4I= + nQQiubbFjZU3tHSjlRTP5ptFXmA= Modules/RealmSwift.swiftmodule/Project/x86_64-apple-tvos-simulator.swiftsourceinfo - 7KtqHOqZaaswsPIzwbxiylUC1/s= + L3Rzz9NPA07BgH0Lw9OmU1x5Cuc= Modules/RealmSwift.swiftmodule/arm64-apple-tvos-simulator.abi.json @@ -26,11 +26,11 @@ Modules/RealmSwift.swiftmodule/arm64-apple-tvos-simulator.swiftdoc - AE9mgPn1yBK99/f0plXlAQFY5j4= + MqsHQhs1Fj+Um7p7EnBO4bWXjYU= Modules/RealmSwift.swiftmodule/arm64-apple-tvos-simulator.swiftmodule - J1n+0SHFqbag/P1Lafs9MA8SCoA= + fiA5p7mc1lMii/IaaZeYCbT+qUc= Modules/RealmSwift.swiftmodule/x86_64-apple-tvos-simulator.abi.json @@ -38,11 +38,11 @@ Modules/RealmSwift.swiftmodule/x86_64-apple-tvos-simulator.swiftdoc - cBdExhWwtanjWmHAtmPlmbTiqxI= + w2gOqA82R+AmFrHOsNg0ltNKEOM= Modules/RealmSwift.swiftmodule/x86_64-apple-tvos-simulator.swiftmodule - 0b0O9e6FOZhimHRNJpQKTsQH+zk= + vOQ7qN/hnVzKBzOC+n36t9LnHE0= Modules/module.modulemap @@ -55,21 +55,21 @@ hash2 - 721aYGv6UhVUz8ZhfdA7LhPVDzE8H3UzyAmQYPV31Sg= + R7UTtK85xpvxJUN1vpceuPOXeEhtTvgY/mzD2K8KmI8= Modules/RealmSwift.swiftmodule/Project/arm64-apple-tvos-simulator.swiftsourceinfo hash2 - 3i/VuGRaSu9koR0at9f5iQ6PncPgAGHRqhjxA0XyyS8= + cgta0taLub6L1rgnEjCZptM+r/ubOSBxhxsdrKEN6XI= Modules/RealmSwift.swiftmodule/Project/x86_64-apple-tvos-simulator.swiftsourceinfo hash2 - Pw7CXAW6fEf/Wb8886FS/idkJYsVI2QEdL0TMat/7H4= + JKrs474PP3/QoPlVLTOWJklqJPmFOsirvAXH8bEDthk= Modules/RealmSwift.swiftmodule/arm64-apple-tvos-simulator.abi.json @@ -83,14 +83,14 @@ hash2 - 1GaOxvJ+HBrTwj0xCVCvDDTsL7uSsPfKICOr1IY/Fes= + 4bhH3ily7k6UVUqKVFZ5tIfs1uRAaeGNzBQlh8OFcLs= Modules/RealmSwift.swiftmodule/arm64-apple-tvos-simulator.swiftmodule hash2 - 1B5ovQYz3CtsjoFty43+KTC2GjSWs64sxwmiUcoAYs0= + /l/hnPX7ofKR0jSF1LpCnPmVC/4e1iOdUj+v2+l00Ps= Modules/RealmSwift.swiftmodule/x86_64-apple-tvos-simulator.abi.json @@ -104,14 +104,14 @@ hash2 - 9v0IHxxZrlkZuBikk/JoKlfEIV+oS1/xUoL4QNj90Rk= + y+AT256ZNuGSsGr3eRDW/K3AMcvQfqBdBC0Y81Xv/ic= Modules/RealmSwift.swiftmodule/x86_64-apple-tvos-simulator.swiftmodule hash2 - vGi+CBY83VDyhG0mQskm6eHramJ+ZBGLzqUlqExVwoQ= + g5Lgya+TFZUF+Nkc84qQa4LLMqpMR1SdYrzNY3vz90U= Modules/module.modulemap diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Headers/RealmSwift-Swift.h b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Headers/RealmSwift-Swift.h index d57156951..e93a7eef5 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Headers/RealmSwift-Swift.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Headers/RealmSwift-Swift.h @@ -1,6 +1,6 @@ #if 0 #elif defined(__ARM64_ARCH_8_32__) && __ARM64_ARCH_8_32__ -// Generated by Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100) +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.106 clang-1500.0.40.1) #ifndef REALMSWIFT_SWIFT_H #define REALMSWIFT_SWIFT_H #pragma clang diagnostic push @@ -42,12 +42,18 @@ #include #endif #if defined(__cplusplus) -#if __has_include() +#if defined(__arm64e__) && __has_include() # include #else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" # ifndef __ptrauth_swift_value_witness_function_pointer # define __ptrauth_swift_value_witness_function_pointer(x) # endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop #endif #endif @@ -246,6 +252,17 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); #else # define SWIFT_NOEXCEPT #endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif #if defined(_WIN32) #if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) # define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) @@ -482,6 +499,8 @@ SWIFT_CLASS_NAMED("ObjectId") + + @@ -694,17 +713,17 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 + (void)addObserversToObject:(NSObject * _Nonnull)object; @end -#endif -#if defined(__cplusplus) #endif #if __has_attribute(external_source_symbol) # pragma clang attribute pop #endif +#if defined(__cplusplus) +#endif #pragma clang diagnostic pop #endif #elif defined(__arm64__) && __arm64__ -// Generated by Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100) +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.106 clang-1500.0.40.1) #ifndef REALMSWIFT_SWIFT_H #define REALMSWIFT_SWIFT_H #pragma clang diagnostic push @@ -746,12 +765,18 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 #include #endif #if defined(__cplusplus) -#if __has_include() +#if defined(__arm64e__) && __has_include() # include #else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" # ifndef __ptrauth_swift_value_witness_function_pointer # define __ptrauth_swift_value_witness_function_pointer(x) # endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop #endif #endif @@ -950,6 +975,17 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); #else # define SWIFT_NOEXCEPT #endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif #if defined(_WIN32) #if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) # define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) @@ -1186,6 +1222,8 @@ SWIFT_CLASS_NAMED("ObjectId") + + @@ -1398,17 +1436,17 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 + (void)addObserversToObject:(NSObject * _Nonnull)object; @end -#endif -#if defined(__cplusplus) #endif #if __has_attribute(external_source_symbol) # pragma clang attribute pop #endif +#if defined(__cplusplus) +#endif #pragma clang diagnostic pop #endif #elif defined(__ARM_ARCH_7K__) && __ARM_ARCH_7K__ -// Generated by Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100) +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.106 clang-1500.0.40.1) #ifndef REALMSWIFT_SWIFT_H #define REALMSWIFT_SWIFT_H #pragma clang diagnostic push @@ -1450,12 +1488,18 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 #include #endif #if defined(__cplusplus) -#if __has_include() +#if defined(__arm64e__) && __has_include() # include #else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" # ifndef __ptrauth_swift_value_witness_function_pointer # define __ptrauth_swift_value_witness_function_pointer(x) # endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop #endif #endif @@ -1654,6 +1698,17 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); #else # define SWIFT_NOEXCEPT #endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif #if defined(_WIN32) #if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) # define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) @@ -1890,6 +1945,8 @@ SWIFT_CLASS_NAMED("ObjectId") + + @@ -2102,12 +2159,12 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 + (void)addObserversToObject:(NSObject * _Nonnull)object; @end -#endif -#if defined(__cplusplus) #endif #if __has_attribute(external_source_symbol) # pragma clang attribute pop #endif +#if defined(__cplusplus) +#endif #pragma clang diagnostic pop #endif diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Info.plist index ee7e33332..ab5f35577 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Info.plist and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Info.plist differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-watchos.swiftsourceinfo b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-watchos.swiftsourceinfo index 0e3cbb209..c4bb540dc 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-watchos.swiftsourceinfo and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-watchos.swiftsourceinfo differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64_32-apple-watchos.swiftsourceinfo b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64_32-apple-watchos.swiftsourceinfo index 6f651183a..6f853504e 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64_32-apple-watchos.swiftsourceinfo and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64_32-apple-watchos.swiftsourceinfo differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/armv7k-apple-watchos.swiftsourceinfo b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/armv7k-apple-watchos.swiftsourceinfo index 20c505f9c..3d2a23963 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/armv7k-apple-watchos.swiftsourceinfo and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/armv7k-apple-watchos.swiftsourceinfo differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-watchos.swiftdoc b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-watchos.swiftdoc index eaa478092..27ae29733 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-watchos.swiftdoc and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-watchos.swiftdoc differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-watchos.swiftmodule b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-watchos.swiftmodule index a878d9f77..5c4806d3f 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-watchos.swiftmodule and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-watchos.swiftmodule differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64_32-apple-watchos.swiftdoc b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64_32-apple-watchos.swiftdoc index d860ee45e..7b5653636 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64_32-apple-watchos.swiftdoc and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64_32-apple-watchos.swiftdoc differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64_32-apple-watchos.swiftmodule b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64_32-apple-watchos.swiftmodule index e67e1b79a..c3f75e4ef 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64_32-apple-watchos.swiftmodule and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64_32-apple-watchos.swiftmodule differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/armv7k-apple-watchos.swiftdoc b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/armv7k-apple-watchos.swiftdoc index a1bbdaa6c..77206f41b 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/armv7k-apple-watchos.swiftdoc and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/armv7k-apple-watchos.swiftdoc differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/armv7k-apple-watchos.swiftmodule b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/armv7k-apple-watchos.swiftmodule index d25ef4cba..a6bad1827 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/armv7k-apple-watchos.swiftmodule and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/Modules/RealmSwift.swiftmodule/armv7k-apple-watchos.swiftmodule differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/RealmSwift b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/RealmSwift index cdb3b515f..c77fc557a 100755 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/RealmSwift and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_arm64_32_armv7k/RealmSwift.framework/RealmSwift differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Headers/RealmSwift-Swift.h b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Headers/RealmSwift-Swift.h index 4f0ef6b99..70d2d0c46 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Headers/RealmSwift-Swift.h +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Headers/RealmSwift-Swift.h @@ -1,6 +1,6 @@ #if 0 #elif defined(__arm64__) && __arm64__ -// Generated by Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100) +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.106 clang-1500.0.40.1) #ifndef REALMSWIFT_SWIFT_H #define REALMSWIFT_SWIFT_H #pragma clang diagnostic push @@ -42,12 +42,18 @@ #include #endif #if defined(__cplusplus) -#if __has_include() +#if defined(__arm64e__) && __has_include() # include #else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" # ifndef __ptrauth_swift_value_witness_function_pointer # define __ptrauth_swift_value_witness_function_pointer(x) # endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop #endif #endif @@ -246,6 +252,17 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); #else # define SWIFT_NOEXCEPT #endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif #if defined(_WIN32) #if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) # define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) @@ -482,6 +499,8 @@ SWIFT_CLASS_NAMED("ObjectId") + + @@ -694,17 +713,17 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 + (void)addObserversToObject:(NSObject * _Nonnull)object; @end -#endif -#if defined(__cplusplus) #endif #if __has_attribute(external_source_symbol) # pragma clang attribute pop #endif +#if defined(__cplusplus) +#endif #pragma clang diagnostic pop #endif #elif defined(__x86_64__) && __x86_64__ -// Generated by Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100) +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.106 clang-1500.0.40.1) #ifndef REALMSWIFT_SWIFT_H #define REALMSWIFT_SWIFT_H #pragma clang diagnostic push @@ -746,12 +765,18 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 #include #endif #if defined(__cplusplus) -#if __has_include() +#if defined(__arm64e__) && __has_include() # include #else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" # ifndef __ptrauth_swift_value_witness_function_pointer # define __ptrauth_swift_value_witness_function_pointer(x) # endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop #endif #endif @@ -950,6 +975,17 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); #else # define SWIFT_NOEXCEPT #endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif #if defined(_WIN32) #if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) # define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) @@ -1186,6 +1222,8 @@ SWIFT_CLASS_NAMED("ObjectId") + + @@ -1398,17 +1436,17 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 + (void)addObserversToObject:(NSObject * _Nonnull)object; @end -#endif -#if defined(__cplusplus) #endif #if __has_attribute(external_source_symbol) # pragma clang attribute pop #endif +#if defined(__cplusplus) +#endif #pragma clang diagnostic pop #endif #elif defined(__i386__) && __i386__ -// Generated by Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100) +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.106 clang-1500.0.40.1) #ifndef REALMSWIFT_SWIFT_H #define REALMSWIFT_SWIFT_H #pragma clang diagnostic push @@ -1450,12 +1488,18 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 #include #endif #if defined(__cplusplus) -#if __has_include() +#if defined(__arm64e__) && __has_include() # include #else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" # ifndef __ptrauth_swift_value_witness_function_pointer # define __ptrauth_swift_value_witness_function_pointer(x) # endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop #endif #endif @@ -1654,6 +1698,17 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); #else # define SWIFT_NOEXCEPT #endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif #if defined(_WIN32) #if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) # define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) @@ -1890,6 +1945,8 @@ SWIFT_CLASS_NAMED("ObjectId") + + @@ -2102,12 +2159,12 @@ SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13 + (void)addObserversToObject:(NSObject * _Nonnull)object; @end -#endif -#if defined(__cplusplus) #endif #if __has_attribute(external_source_symbol) # pragma clang attribute pop #endif +#if defined(__cplusplus) +#endif #pragma clang diagnostic pop #endif diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Info.plist index 25b647e33..426e1ad4e 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Info.plist and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Info.plist differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-watchos-simulator.swiftsourceinfo b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-watchos-simulator.swiftsourceinfo index 53ac091fc..17fc16cee 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-watchos-simulator.swiftsourceinfo and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-watchos-simulator.swiftsourceinfo differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/i386-apple-watchos-simulator.swiftsourceinfo b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/i386-apple-watchos-simulator.swiftsourceinfo index c0ca66ec3..4cc5c738e 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/i386-apple-watchos-simulator.swiftsourceinfo and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/i386-apple-watchos-simulator.swiftsourceinfo differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-watchos-simulator.swiftsourceinfo b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-watchos-simulator.swiftsourceinfo index 903972f8c..a42ee9efe 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-watchos-simulator.swiftsourceinfo and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-watchos-simulator.swiftsourceinfo differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-watchos-simulator.swiftdoc b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-watchos-simulator.swiftdoc index dfaa856e2..2b99557c1 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-watchos-simulator.swiftdoc and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-watchos-simulator.swiftdoc differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-watchos-simulator.swiftmodule b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-watchos-simulator.swiftmodule index 6e3252e98..9461571cd 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-watchos-simulator.swiftmodule and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-watchos-simulator.swiftmodule differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/i386-apple-watchos-simulator.swiftdoc b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/i386-apple-watchos-simulator.swiftdoc index 6762e792d..6cd56f05f 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/i386-apple-watchos-simulator.swiftdoc and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/i386-apple-watchos-simulator.swiftdoc differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/i386-apple-watchos-simulator.swiftmodule b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/i386-apple-watchos-simulator.swiftmodule index a104f8545..10f821e88 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/i386-apple-watchos-simulator.swiftmodule and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/i386-apple-watchos-simulator.swiftmodule differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-watchos-simulator.swiftdoc b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-watchos-simulator.swiftdoc index cb38313e3..ca540d733 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-watchos-simulator.swiftdoc and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-watchos-simulator.swiftdoc differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-watchos-simulator.swiftmodule b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-watchos-simulator.swiftmodule index 378154c00..22d7dc088 100644 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-watchos-simulator.swiftmodule and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-watchos-simulator.swiftmodule differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/RealmSwift b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/RealmSwift index 5354ad42b..a4d1554b3 100755 Binary files a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/RealmSwift and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/RealmSwift differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/_CodeSignature/CodeResources b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/_CodeSignature/CodeResources index b4287c620..d26162a5e 100644 --- a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/_CodeSignature/CodeResources +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/watchos-arm64_i386_x86_64-simulator/RealmSwift.framework/_CodeSignature/CodeResources @@ -6,23 +6,23 @@ Headers/RealmSwift-Swift.h - fyB+ucAOgdE8nJP73F/zgKNm6I8= + 5PgazQgKN5AbKPq/ps9xkHr+b/Q= Info.plist - luaNEK2bXrquFCkYOPNNT5XbynA= + VZ58I4MTlIHyIoOPhe4KN6J754w= Modules/RealmSwift.swiftmodule/Project/arm64-apple-watchos-simulator.swiftsourceinfo - tWJ0elhaCEOvx44v8kM//iuBBaQ= + vpUnHzGQrJOIjGuaHk2G9vEJCVE= Modules/RealmSwift.swiftmodule/Project/i386-apple-watchos-simulator.swiftsourceinfo - jr/vBglnmjcdXa6EDBLxHWy5nEM= + M8IoEAtN6TZVIlrfZDuwxZGKntU= Modules/RealmSwift.swiftmodule/Project/x86_64-apple-watchos-simulator.swiftsourceinfo - 6Cr8j26E/ko2LwjtcrSJMYzVWrg= + qtSh2FBN68VLAcgMGNn2n9LBgXY= Modules/RealmSwift.swiftmodule/arm64-apple-watchos-simulator.abi.json @@ -30,11 +30,11 @@ Modules/RealmSwift.swiftmodule/arm64-apple-watchos-simulator.swiftdoc - +yv3kL+2H/F/6fSjcnlLk9CkD1g= + 3WxxmONmeAI1RKLTZVs5/j5n7JE= Modules/RealmSwift.swiftmodule/arm64-apple-watchos-simulator.swiftmodule - nhFzPCt5cVxmBG12HqUWd4L6PN4= + nLpmJ3/lJ6sVmFOvDIXCaLyjIio= Modules/RealmSwift.swiftmodule/i386-apple-watchos-simulator.abi.json @@ -42,11 +42,11 @@ Modules/RealmSwift.swiftmodule/i386-apple-watchos-simulator.swiftdoc - hfk7tXfx9DXhsFjPo4tVxKm4gQ8= + 3kPCqIJRzxZ0aH5fEaCFJA/arGE= Modules/RealmSwift.swiftmodule/i386-apple-watchos-simulator.swiftmodule - n+z4NTzLWqq8iVaj6u0bHrvfGpM= + yFUZxZrUH3v1P/IxkwZTyfb6XL8= Modules/RealmSwift.swiftmodule/x86_64-apple-watchos-simulator.abi.json @@ -54,11 +54,11 @@ Modules/RealmSwift.swiftmodule/x86_64-apple-watchos-simulator.swiftdoc - wO3XD6AtcT5k4EscknAtjQUW5ZA= + B6d+PK076Ii2S3472b54d4t7bQ4= Modules/RealmSwift.swiftmodule/x86_64-apple-watchos-simulator.swiftmodule - 3G3hyxg0TvdlXXYn5vsb5ownr7A= + Ou02Edklk+oFgEHCiN00LBZ4oow= Modules/module.modulemap @@ -71,44 +71,44 @@ hash - fyB+ucAOgdE8nJP73F/zgKNm6I8= + 5PgazQgKN5AbKPq/ps9xkHr+b/Q= hash2 - jFsjHrFD/2DUydiMjGGjyNwYE9lWyWZoeZGv4+NP9a8= + gn9br1XEWTvjTDMQP2XrGv1Wco35I/I/jaQayecIzFE= Modules/RealmSwift.swiftmodule/Project/arm64-apple-watchos-simulator.swiftsourceinfo hash - tWJ0elhaCEOvx44v8kM//iuBBaQ= + vpUnHzGQrJOIjGuaHk2G9vEJCVE= hash2 - nsMAt7Ig+4O3sUYEn7BH2iiBwMHZXL4uwV5Z1Nn2A8Q= + 1O1cC7bAIwm1AaFpMxc5eJMq0S0kmDbNX+tfwvczIdo= Modules/RealmSwift.swiftmodule/Project/i386-apple-watchos-simulator.swiftsourceinfo hash - jr/vBglnmjcdXa6EDBLxHWy5nEM= + M8IoEAtN6TZVIlrfZDuwxZGKntU= hash2 - aN7yEwoLmSHPSU+3tK91zg1xsERskpKlqMa4BpDQ5Qo= + UenxEgiUbU0dEjqYVPWxS6//q7nXblmL5k4PKdeyzvw= Modules/RealmSwift.swiftmodule/Project/x86_64-apple-watchos-simulator.swiftsourceinfo hash - 6Cr8j26E/ko2LwjtcrSJMYzVWrg= + qtSh2FBN68VLAcgMGNn2n9LBgXY= hash2 - ZomulZWvtkwLyM15kwpva2LZUlEWA0brVW3y6ejf4OQ= + 138WcKzPkbLMpAfpAJcC1CVjwqlNrQ4vvbZNfCiuhBQ= Modules/RealmSwift.swiftmodule/arm64-apple-watchos-simulator.abi.json @@ -126,22 +126,22 @@ hash - +yv3kL+2H/F/6fSjcnlLk9CkD1g= + 3WxxmONmeAI1RKLTZVs5/j5n7JE= hash2 - 7O19binE+BA+bOwMjfnaQlsjorkhWU3XhzZGmguzXdM= + r9HxqKKfi5WmHT6R99VCCwAgY8OmXhjYQu05mQAva1M= Modules/RealmSwift.swiftmodule/arm64-apple-watchos-simulator.swiftmodule hash - nhFzPCt5cVxmBG12HqUWd4L6PN4= + nLpmJ3/lJ6sVmFOvDIXCaLyjIio= hash2 - vALyiwX40RyTCN2gXiY4kqXWcNOnYZjnCGn4KTmMO6M= + tjzQJIdi6sb7WK2SshddfcmyfHBwavJXT1hQHJefpsQ= Modules/RealmSwift.swiftmodule/i386-apple-watchos-simulator.abi.json @@ -159,22 +159,22 @@ hash - hfk7tXfx9DXhsFjPo4tVxKm4gQ8= + 3kPCqIJRzxZ0aH5fEaCFJA/arGE= hash2 - TwvDfjrztYS3ua6vmM3Nwca6tcOiAPVlyNfq6kDyJF0= + GVj7TAKllCKKmA2j3eEzqEe8hDnE08KlUvjOZX/S9o0= Modules/RealmSwift.swiftmodule/i386-apple-watchos-simulator.swiftmodule hash - n+z4NTzLWqq8iVaj6u0bHrvfGpM= + yFUZxZrUH3v1P/IxkwZTyfb6XL8= hash2 - oYJVezfLN0LnHhFqHfZnH/rurZZHgHdv5QkpzKavOXE= + gAVHEv0Udtzn41q5F0AGnXhQJfxEEd26TmGLyNSd3m4= Modules/RealmSwift.swiftmodule/x86_64-apple-watchos-simulator.abi.json @@ -192,22 +192,22 @@ hash - wO3XD6AtcT5k4EscknAtjQUW5ZA= + B6d+PK076Ii2S3472b54d4t7bQ4= hash2 - MO+gjnkD7btrDr1zXizpWqluirFB/nAQt5iqLvZXD24= + c35SR5JMG/S2poIuYj8GSgWlrTtSMTWjvo7uXyuzEVY= Modules/RealmSwift.swiftmodule/x86_64-apple-watchos-simulator.swiftmodule hash - 3G3hyxg0TvdlXXYn5vsb5ownr7A= + Ou02Edklk+oFgEHCiN00LBZ4oow= hash2 - RwkrFGTKCaBDbQyDM6urUbCvFPrAiaN5Rrw4s3UEwek= + KvemVxvfPF9avCkeZrBMj7rpGBVztMDDI68befe3+kI= Modules/module.modulemap diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Headers/RealmSwift-Swift.h b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Headers/RealmSwift-Swift.h new file mode 100644 index 000000000..a0975c6e0 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Headers/RealmSwift-Swift.h @@ -0,0 +1,727 @@ +#if 0 +#elif defined(__arm64__) && __arm64__ +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.106 clang-1500.0.40.1) +#ifndef REALMSWIFT_SWIFT_H +#define REALMSWIFT_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#if defined(__OBJC__) +#include +#endif +#if defined(__cplusplus) +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#endif +#if defined(__cplusplus) +#if defined(__arm64e__) && __has_include() +# include +#else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" +# ifndef __ptrauth_swift_value_witness_function_pointer +# define __ptrauth_swift_value_witness_function_pointer(x) +# endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop +#endif +#endif + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif +#if !defined(SWIFT_RUNTIME_NAME) +# if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +# else +# define SWIFT_RUNTIME_NAME(X) +# endif +#endif +#if !defined(SWIFT_COMPILE_NAME) +# if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +# else +# define SWIFT_COMPILE_NAME(X) +# endif +#endif +#if !defined(SWIFT_METHOD_FAMILY) +# if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +# else +# define SWIFT_METHOD_FAMILY(X) +# endif +#endif +#if !defined(SWIFT_NOESCAPE) +# if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +# else +# define SWIFT_NOESCAPE +# endif +#endif +#if !defined(SWIFT_RELEASES_ARGUMENT) +# if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +# else +# define SWIFT_RELEASES_ARGUMENT +# endif +#endif +#if !defined(SWIFT_WARN_UNUSED_RESULT) +# if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +# else +# define SWIFT_WARN_UNUSED_RESULT +# endif +#endif +#if !defined(SWIFT_NORETURN) +# if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +# else +# define SWIFT_NORETURN +# endif +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +# if __has_attribute(objc_class_stub) +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +# else +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +# endif +#endif +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if !defined(SWIFT_DEPRECATED_OBJC) +# if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +# else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +# endif +#endif +#if defined(__OBJC__) +#if !defined(IBSegueAction) +# define IBSegueAction +#endif +#endif +#if !defined(SWIFT_EXTERN) +# if defined(__cplusplus) +# define SWIFT_EXTERN extern "C" +# else +# define SWIFT_EXTERN extern +# endif +#endif +#if !defined(SWIFT_CALL) +# define SWIFT_CALL __attribute__((swiftcall)) +#endif +#if !defined(SWIFT_INDIRECT_RESULT) +# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result)) +#endif +#if !defined(SWIFT_CONTEXT) +# define SWIFT_CONTEXT __attribute__((swift_context)) +#endif +#if !defined(SWIFT_ERROR_RESULT) +# define SWIFT_ERROR_RESULT __attribute__((swift_error_result)) +#endif +#if defined(__cplusplus) +# define SWIFT_NOEXCEPT noexcept +#else +# define SWIFT_NOEXCEPT +#endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif +#if defined(_WIN32) +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) +#endif +#else +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL +#endif +#endif +#if defined(__OBJC__) +#if __has_feature(objc_modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +@import Foundation; +@import ObjectiveC; +@import Realm; +@import Realm.Swift; +#endif + +#endif +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" +#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="RealmSwift",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +#if defined(__OBJC__) +@class NSString; + +/// A type which has a custom representation in Realm events. +/// By default, objects are serialized to JSON using built-in rules which +/// include every property. If you wish to customize how a class is serialized +/// in events, you can declare it as conforming to this protocol and +/// define customEventRepresentation(). +SWIFT_PROTOCOL_NAMED("CustomEventRepresentable") +@protocol RLMCustomEventRepresentable +/// Get the custom event serialization for this object. +/// This function must return a valid JSON String, as this is included in a +/// larger JSON document. Implementations of this function should be “pure” +/// and access no data other than that which is obtainable from the Object +/// it is called on, and it should not mutate the object which it is called +/// on. This function is called on a background thread in a somewhat +/// unusual context, and attempting to access other data is likely to cause +/// problems. +- (NSString * _Nonnull)customEventRepresentation SWIFT_WARN_UNUSED_RESULT; +@end + +@class NSNumber; + +/// A 128-bit IEEE 754-2008 decimal floating point number. +/// This type is similar to Swift’s built-in Decimal type, but allocates bits differently, resulting in a different representable range. (NS)Decimal stores a significand of up to 38 digits long and an exponent from -128 to 127, while this type stores up to 34 digits of significand and an exponent from -6143 to 6144. +SWIFT_CLASS_NAMED("Decimal128") +@interface RealmSwiftDecimal128 : RLMDecimal128 +/// Creates a new zero-initialized Decimal128. +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +/// Converts the given value to a Decimal128. +/// The following types can be converted to Decimal128: +///
    +///
  • +/// Int (of any size) +///
  • +///
  • +/// Float +///
  • +///
  • +/// Double +///
  • +///
  • +/// String +///
  • +///
  • +/// NSNumber +///
  • +///
  • +/// Decimal +///
  • +///
+/// Passing a value with a type not in this list is a fatal error. Passing a string which cannot be parsed as a valid Decimal128 is a fatal error. +/// \param value The value to convert to a Decimal128. +/// +- (nonnull instancetype)initWithValue:(id _Nonnull)value OBJC_DESIGNATED_INITIALIZER; +/// Converts the given number to a Decimal128. +/// This initializer cannot fail and is never lossy. +/// \param number The number to convert to a Decimal128. +/// +- (nonnull instancetype)initWithNumber:(NSNumber * _Nonnull)number OBJC_DESIGNATED_INITIALIZER; +/// Parse the given string as a Decimal128. +/// This initializer never throws and is marked as throws only because removing it is a breaking +/// change. Strings which cannot be parsed as a Decimal128 return a value where isNaN is true. +/// \param string The string to parse. +/// +- (nullable instancetype)initWithString:(NSString * _Nonnull)string error:(NSError * _Nullable * _Nullable)error OBJC_DESIGNATED_INITIALIZER; +@end + + + + + + + + + + + + + + + + + + +@class RLMObjectSchema; + +/// Object interface which allows untyped getters and setters for Objects. +/// :nodoc: +SWIFT_CLASS_NAMED("DynamicObject") +@interface RealmSwiftDynamicObject : RealmSwiftObject +- (id _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +- (void)setObject:(id _Nullable)value forKeyedSubscript:(NSString * _Nonnull)key; +/// :nodoc: +- (id _Nullable)valueForUndefinedKey:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +/// :nodoc: +- (void)setValue:(id _Nullable)value forUndefinedKey:(NSString * _Nonnull)key; +/// :nodoc: ++ (BOOL)shouldIncludeInDefaultSchema SWIFT_WARN_UNUSED_RESULT; ++ (RLMObjectSchema * _Nullable)sharedSchema SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + + + + + + + + + + + + + + +@class NSDate; + +/// A 12-byte (probably) unique object identifier. +/// ObjectIds are similar to a GUID or a UUID, and can be used to uniquely identify objects without a centralized ID generator. An ObjectID consists of: +///
    +///
  1. +/// A 4 byte timestamp measuring the creation time of the ObjectId in seconds since the Unix epoch. +///
  2. +///
  3. +/// A 5 byte random value +///
  4. +///
  5. +/// A 3 byte counter, initialized to a random value. +///
  6. +///
+/// ObjectIds are intended to be fast to generate. Sorting by an ObjectId field will typically result in the objects being sorted in creation order. +SWIFT_CLASS_NAMED("ObjectId") +@interface RealmSwiftObjectId : RLMObjectId +/// Creates a new zero-initialized ObjectId. +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +/// Creates a new randomly-initialized ObjectId. ++ (RealmSwiftObjectId * _Nonnull)objectId SWIFT_WARN_UNUSED_RESULT; +/// Creates a new ObjectId from the given 24-byte hexadecimal string. +/// Throws if the string is not 24 characters or contains any characters other than 0-9a-fA-F. +/// \param string The string to parse. +/// +- (nullable instancetype)initWithString:(NSString * _Nonnull)string error:(NSError * _Nullable * _Nullable)error OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)initWithTimestamp:(NSDate * _Nonnull)timestamp machineIdentifier:(int32_t)machineIdentifier processIdentifier:(int32_t)processIdentifier SWIFT_UNAVAILABLE; +@end + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +@class RLMProperty; + +@interface RealmSwiftAsymmetricObject (SWIFT_EXTENSION(RealmSwift)) +/// A human-readable description of the object. +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +/// WARNING: This is an internal helper method not intended for public use. +/// It is not considered part of the public API. +/// :nodoc: ++ (NSArray * _Nonnull)_getProperties SWIFT_WARN_UNUSED_RESULT; +/// Override this method to specify a map of public-private property names. +/// This will set a different persisted property name on the Realm, and allows using the public name +/// for any operation with the property. (Ex: Queries, Sorting, …). +/// This very helpful if you need to map property names from your Device Sync JSON schema +/// to local property names. +/// \code +/// class Person: AsymmetricObject { +/// @Persisted var firstName: String +/// @Persisted var birthDate: Date +/// @Persisted var age: Int +/// +/// override class public func propertiesMapping() -> [String : String] { +/// ["firstName": "first_name", +/// "birthDate": "birth_date"] +/// } +/// } +/// +/// \endcodenote: +/// Only property that have a different column name have to be added to the properties mapping +/// dictionary. +/// +/// returns: +/// A dictionary of public-private property names. ++ (NSDictionary * _Nonnull)propertiesMapping SWIFT_WARN_UNUSED_RESULT; +/// :nodoc: ++ (NSDictionary * _Nonnull)_realmColumnNames SWIFT_WARN_UNUSED_RESULT SWIFT_UNAVAILABLE_MSG("'_realmColumnNames' has been renamed to 'propertiesMapping': `_realmColumnNames` private API is unavailable in our Swift SDK, please use the override `.propertiesMapping()` instead."); +- (id _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +- (void)setObject:(id _Nullable)newValue forKeyedSubscript:(NSString * _Nonnull)key; +@end + + + + + +@interface RealmSwiftEmbeddedObject (SWIFT_EXTENSION(RealmSwift)) +/// :nodoc: ++ (BOOL)isEmbedded SWIFT_WARN_UNUSED_RESULT; +/// Indicates if the object can no longer be accessed because it is now invalid. +/// An object can no longer be accessed if the object has been deleted from the Realm that manages it, or if +/// invalidate() is called on that Realm. +@property (nonatomic, readonly, getter=isInvalidated) BOOL invalidated; +/// A human-readable description of the object. +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +/// WARNING: This is an internal helper method not intended for public use. +/// It is not considered part of the public API. +/// :nodoc: ++ (NSArray * _Nonnull)_getProperties SWIFT_WARN_UNUSED_RESULT; +/// Override this method to specify the names of properties to ignore. These properties will not be managed by +/// the Realm that manages the object. +/// warning: +/// This function is only applicable to legacy property declarations +/// using @objc. When using @Persisted, any properties not +/// marked with @Persisted are automatically ignored. +/// +/// returns: +/// An array of property names to ignore. ++ (NSArray * _Nonnull)ignoredProperties SWIFT_WARN_UNUSED_RESULT; +/// Override this method to specify a map of public-private property names. +/// This will set a different persisted property name on the Realm, and allows using the public name +/// for any operation with the property. (Ex: Queries, Sorting, …). +/// This very helpful if you need to map property names from your Device Sync JSON schema +/// to local property names. +/// \code +/// class Person: EmbeddedObject { +/// @Persisted var firstName: String +/// @Persisted var birthDate: Date +/// @Persisted var age: Int +/// +/// override class public func propertiesMapping() -> [String : String] { +/// ["firstName": "first_name", +/// "birthDate": "birth_date"] +/// } +/// } +/// +/// \endcodenote: +/// Only property that have a different column name have to be added to the properties mapping +/// dictionary. +/// +/// returns: +/// A dictionary of public-private property names. ++ (NSDictionary * _Nonnull)propertiesMapping SWIFT_WARN_UNUSED_RESULT; +/// :nodoc: ++ (NSDictionary * _Nonnull)_realmColumnNames SWIFT_WARN_UNUSED_RESULT SWIFT_UNAVAILABLE_MSG("'_realmColumnNames' has been renamed to 'propertiesMapping': `_realmColumnNames` private API is unavailable in our Swift SDK, please use the override `.propertiesMapping()` instead."); +- (id _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +- (void)setObject:(id _Nullable)newValue forKeyedSubscript:(NSString * _Nonnull)key; +@end + + + + + + + +@interface RealmSwiftObject (SWIFT_EXTENSION(RealmSwift)) +/// Indicates if the object can no longer be accessed because it is now invalid. +/// An object can no longer be accessed if the object has been deleted from the Realm that manages it, or if +/// invalidate() is called on that Realm. This property is key-value observable. +@property (nonatomic, readonly, getter=isInvalidated) BOOL invalidated; +/// A human-readable description of the object. +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +/// WARNING: This is an internal helper method not intended for public use. +/// It is not considered part of the public API. +/// :nodoc: ++ (NSArray * _Nonnull)_getProperties SWIFT_WARN_UNUSED_RESULT; +/// Override this method to specify the name of a property to be used as the primary key. +/// Only properties of types String, Int, ObjectId and UUID can be +/// designated as the primary key. Primary key properties enforce uniqueness +/// for each value whenever the property is set, which incurs minor overhead. +/// Indexes are created automatically for primary key properties. +/// warning: +/// This function is only applicable to legacy property declarations +/// using @objc. When using @Persisted, use +/// @Persisted(primaryKey: true) instead. +/// +/// returns: +/// The name of the property designated as the primary key, or +/// nil if the model has no primary key. ++ (NSString * _Nullable)primaryKey SWIFT_WARN_UNUSED_RESULT; +/// Override this method to specify the names of properties to ignore. These +/// properties will not be managed by the Realm that manages the object. +/// warning: +/// This function is only applicable to legacy property declarations +/// using @objc. When using @Persisted, any properties not +/// marked with @Persisted are automatically ignored. +/// +/// returns: +/// An array of property names to ignore. ++ (NSArray * _Nonnull)ignoredProperties SWIFT_WARN_UNUSED_RESULT; +/// Returns an array of property names for properties which should be indexed. +/// Only string, integer, boolean, Date, and NSDate properties are supported. +/// warning: +/// This function is only applicable to legacy property declarations +/// using @objc. When using @Persisted, use +/// @Persisted(indexed: true) instead. +/// +/// returns: +/// An array of property names. ++ (NSArray * _Nonnull)indexedProperties SWIFT_WARN_UNUSED_RESULT; +/// Override this method to specify a map of public-private property names. +/// This will set a different persisted property name on the Realm, and allows using the public name +/// for any operation with the property. (Ex: Queries, Sorting, …). +/// This very helpful if you need to map property names from your Device Sync JSON schema +/// to local property names. +/// \code +/// class Person: Object { +/// @Persisted var firstName: String +/// @Persisted var birthDate: Date +/// @Persisted var age: Int +/// +/// override class public func propertiesMapping() -> [String : String] { +/// ["firstName": "first_name", +/// "birthDate": "birth_date"] +/// } +/// } +/// +/// \endcodenote: +/// Only property that have a different column name have to be added to the properties mapping +/// dictionary. +/// note: +/// In a migration block, when enumerating an old property with a public/private name, you will have to use +/// the old column name instead of the public one to retrieve the property value. +/// \code +/// let migrationBlock = { migration, oldSchemaVersion in +/// migration.enumerateObjects(ofType: "Person", { oldObj, newObj in +/// let oldPropertyValue = oldObj!["first_name"] as! String +/// // Use this value in migration +/// }) +/// } +/// +/// \endcodeThis has to be done as well when renaming a property. +/// \code +/// let migrationBlock = { migration, oldSchemaVersion in +/// migration.renameProperty(onType: "Person", from: "first_name", to: "complete_name") +/// } +/// +/// \endcode +/// returns: +/// A dictionary of public-private property names. ++ (NSDictionary * _Nonnull)propertiesMapping SWIFT_WARN_UNUSED_RESULT; +/// :nodoc: ++ (NSDictionary * _Nonnull)_realmColumnNames SWIFT_WARN_UNUSED_RESULT SWIFT_UNAVAILABLE_MSG("'_realmColumnNames' has been renamed to 'propertiesMapping': `_realmColumnNames` private API is unavailable in our Swift SDK, please use the override `.propertiesMapping()` instead."); +- (id _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +- (void)setObject:(id _Nullable)newValue forKeyedSubscript:(NSString * _Nonnull)key; +@end + + +SWIFT_CLASS_NAMED("SwiftUIKVO") SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13.0) SWIFT_AVAILABILITY(macos,introduced=10.15) SWIFT_AVAILABILITY(ios,introduced=13.0) +@interface RLMSwiftUIKVO : NSObject +- (void)observeValueForKeyPath:(NSString * _Nullable)keyPath ofObject:(id _Nullable)object change:(NSDictionary * _Nullable)change context:(void * _Nullable)context; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13.0) SWIFT_AVAILABILITY(macos,introduced=10.15) SWIFT_AVAILABILITY(ios,introduced=13.0) +@interface RLMSwiftUIKVO (SWIFT_EXTENSION(RealmSwift)) ++ (BOOL)removeObserversFromObject:(NSObject * _Nonnull)object SWIFT_WARN_UNUSED_RESULT; ++ (void)addObserversToObject:(NSObject * _Nonnull)object; +@end + +#endif +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#if defined(__cplusplus) +#endif +#pragma clang diagnostic pop +#endif + +#else +#error unsupported Swift architecture +#endif diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Info.plist new file mode 100644 index 000000000..9d3111acd Binary files /dev/null and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Info.plist differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-xros.swiftsourceinfo b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-xros.swiftsourceinfo new file mode 100644 index 000000000..c5721c1be Binary files /dev/null and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-xros.swiftsourceinfo differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-xros.abi.json b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-xros.abi.json new file mode 100644 index 000000000..dc109fc09 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-xros.abi.json @@ -0,0 +1,9 @@ +{ + "ABIRoot": { + "kind": "Root", + "name": "TopLevel", + "printedName": "TopLevel", + "json_format_version": 8 + }, + "ConstValues": [] +} \ No newline at end of file diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-xros.swiftdoc b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-xros.swiftdoc new file mode 100644 index 000000000..3c96d148b Binary files /dev/null and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-xros.swiftdoc differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-xros.swiftmodule b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-xros.swiftmodule new file mode 100644 index 000000000..6e0b5d8e8 Binary files /dev/null and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-xros.swiftmodule differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Modules/module.modulemap b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Modules/module.modulemap new file mode 100644 index 000000000..5742239a8 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/Modules/module.modulemap @@ -0,0 +1,4 @@ +framework module RealmSwift { + header "RealmSwift-Swift.h" + requires objc +} diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/RealmSwift b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/RealmSwift new file mode 100755 index 000000000..afc18fe35 Binary files /dev/null and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64/RealmSwift.framework/RealmSwift differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Headers/RealmSwift-Swift.h b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Headers/RealmSwift-Swift.h new file mode 100644 index 000000000..37e9dad7b --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Headers/RealmSwift-Swift.h @@ -0,0 +1,1450 @@ +#if 0 +#elif defined(__arm64__) && __arm64__ +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.106 clang-1500.0.40.1) +#ifndef REALMSWIFT_SWIFT_H +#define REALMSWIFT_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#if defined(__OBJC__) +#include +#endif +#if defined(__cplusplus) +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#endif +#if defined(__cplusplus) +#if defined(__arm64e__) && __has_include() +# include +#else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" +# ifndef __ptrauth_swift_value_witness_function_pointer +# define __ptrauth_swift_value_witness_function_pointer(x) +# endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop +#endif +#endif + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif +#if !defined(SWIFT_RUNTIME_NAME) +# if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +# else +# define SWIFT_RUNTIME_NAME(X) +# endif +#endif +#if !defined(SWIFT_COMPILE_NAME) +# if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +# else +# define SWIFT_COMPILE_NAME(X) +# endif +#endif +#if !defined(SWIFT_METHOD_FAMILY) +# if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +# else +# define SWIFT_METHOD_FAMILY(X) +# endif +#endif +#if !defined(SWIFT_NOESCAPE) +# if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +# else +# define SWIFT_NOESCAPE +# endif +#endif +#if !defined(SWIFT_RELEASES_ARGUMENT) +# if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +# else +# define SWIFT_RELEASES_ARGUMENT +# endif +#endif +#if !defined(SWIFT_WARN_UNUSED_RESULT) +# if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +# else +# define SWIFT_WARN_UNUSED_RESULT +# endif +#endif +#if !defined(SWIFT_NORETURN) +# if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +# else +# define SWIFT_NORETURN +# endif +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +# if __has_attribute(objc_class_stub) +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +# else +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +# endif +#endif +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if !defined(SWIFT_DEPRECATED_OBJC) +# if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +# else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +# endif +#endif +#if defined(__OBJC__) +#if !defined(IBSegueAction) +# define IBSegueAction +#endif +#endif +#if !defined(SWIFT_EXTERN) +# if defined(__cplusplus) +# define SWIFT_EXTERN extern "C" +# else +# define SWIFT_EXTERN extern +# endif +#endif +#if !defined(SWIFT_CALL) +# define SWIFT_CALL __attribute__((swiftcall)) +#endif +#if !defined(SWIFT_INDIRECT_RESULT) +# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result)) +#endif +#if !defined(SWIFT_CONTEXT) +# define SWIFT_CONTEXT __attribute__((swift_context)) +#endif +#if !defined(SWIFT_ERROR_RESULT) +# define SWIFT_ERROR_RESULT __attribute__((swift_error_result)) +#endif +#if defined(__cplusplus) +# define SWIFT_NOEXCEPT noexcept +#else +# define SWIFT_NOEXCEPT +#endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif +#if defined(_WIN32) +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) +#endif +#else +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL +#endif +#endif +#if defined(__OBJC__) +#if __has_feature(objc_modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +@import Foundation; +@import ObjectiveC; +@import Realm; +@import Realm.Swift; +#endif + +#endif +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" +#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="RealmSwift",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +#if defined(__OBJC__) +@class NSString; + +/// A type which has a custom representation in Realm events. +/// By default, objects are serialized to JSON using built-in rules which +/// include every property. If you wish to customize how a class is serialized +/// in events, you can declare it as conforming to this protocol and +/// define customEventRepresentation(). +SWIFT_PROTOCOL_NAMED("CustomEventRepresentable") +@protocol RLMCustomEventRepresentable +/// Get the custom event serialization for this object. +/// This function must return a valid JSON String, as this is included in a +/// larger JSON document. Implementations of this function should be “pure” +/// and access no data other than that which is obtainable from the Object +/// it is called on, and it should not mutate the object which it is called +/// on. This function is called on a background thread in a somewhat +/// unusual context, and attempting to access other data is likely to cause +/// problems. +- (NSString * _Nonnull)customEventRepresentation SWIFT_WARN_UNUSED_RESULT; +@end + +@class NSNumber; + +/// A 128-bit IEEE 754-2008 decimal floating point number. +/// This type is similar to Swift’s built-in Decimal type, but allocates bits differently, resulting in a different representable range. (NS)Decimal stores a significand of up to 38 digits long and an exponent from -128 to 127, while this type stores up to 34 digits of significand and an exponent from -6143 to 6144. +SWIFT_CLASS_NAMED("Decimal128") +@interface RealmSwiftDecimal128 : RLMDecimal128 +/// Creates a new zero-initialized Decimal128. +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +/// Converts the given value to a Decimal128. +/// The following types can be converted to Decimal128: +///
    +///
  • +/// Int (of any size) +///
  • +///
  • +/// Float +///
  • +///
  • +/// Double +///
  • +///
  • +/// String +///
  • +///
  • +/// NSNumber +///
  • +///
  • +/// Decimal +///
  • +///
+/// Passing a value with a type not in this list is a fatal error. Passing a string which cannot be parsed as a valid Decimal128 is a fatal error. +/// \param value The value to convert to a Decimal128. +/// +- (nonnull instancetype)initWithValue:(id _Nonnull)value OBJC_DESIGNATED_INITIALIZER; +/// Converts the given number to a Decimal128. +/// This initializer cannot fail and is never lossy. +/// \param number The number to convert to a Decimal128. +/// +- (nonnull instancetype)initWithNumber:(NSNumber * _Nonnull)number OBJC_DESIGNATED_INITIALIZER; +/// Parse the given string as a Decimal128. +/// This initializer never throws and is marked as throws only because removing it is a breaking +/// change. Strings which cannot be parsed as a Decimal128 return a value where isNaN is true. +/// \param string The string to parse. +/// +- (nullable instancetype)initWithString:(NSString * _Nonnull)string error:(NSError * _Nullable * _Nullable)error OBJC_DESIGNATED_INITIALIZER; +@end + + + + + + + + + + + + + + + + + + +@class RLMObjectSchema; + +/// Object interface which allows untyped getters and setters for Objects. +/// :nodoc: +SWIFT_CLASS_NAMED("DynamicObject") +@interface RealmSwiftDynamicObject : RealmSwiftObject +- (id _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +- (void)setObject:(id _Nullable)value forKeyedSubscript:(NSString * _Nonnull)key; +/// :nodoc: +- (id _Nullable)valueForUndefinedKey:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +/// :nodoc: +- (void)setValue:(id _Nullable)value forUndefinedKey:(NSString * _Nonnull)key; +/// :nodoc: ++ (BOOL)shouldIncludeInDefaultSchema SWIFT_WARN_UNUSED_RESULT; ++ (RLMObjectSchema * _Nullable)sharedSchema SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + + + + + + + + + + + + + + +@class NSDate; + +/// A 12-byte (probably) unique object identifier. +/// ObjectIds are similar to a GUID or a UUID, and can be used to uniquely identify objects without a centralized ID generator. An ObjectID consists of: +///
    +///
  1. +/// A 4 byte timestamp measuring the creation time of the ObjectId in seconds since the Unix epoch. +///
  2. +///
  3. +/// A 5 byte random value +///
  4. +///
  5. +/// A 3 byte counter, initialized to a random value. +///
  6. +///
+/// ObjectIds are intended to be fast to generate. Sorting by an ObjectId field will typically result in the objects being sorted in creation order. +SWIFT_CLASS_NAMED("ObjectId") +@interface RealmSwiftObjectId : RLMObjectId +/// Creates a new zero-initialized ObjectId. +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +/// Creates a new randomly-initialized ObjectId. ++ (RealmSwiftObjectId * _Nonnull)objectId SWIFT_WARN_UNUSED_RESULT; +/// Creates a new ObjectId from the given 24-byte hexadecimal string. +/// Throws if the string is not 24 characters or contains any characters other than 0-9a-fA-F. +/// \param string The string to parse. +/// +- (nullable instancetype)initWithString:(NSString * _Nonnull)string error:(NSError * _Nullable * _Nullable)error OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)initWithTimestamp:(NSDate * _Nonnull)timestamp machineIdentifier:(int32_t)machineIdentifier processIdentifier:(int32_t)processIdentifier SWIFT_UNAVAILABLE; +@end + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +@class RLMProperty; + +@interface RealmSwiftAsymmetricObject (SWIFT_EXTENSION(RealmSwift)) +/// A human-readable description of the object. +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +/// WARNING: This is an internal helper method not intended for public use. +/// It is not considered part of the public API. +/// :nodoc: ++ (NSArray * _Nonnull)_getProperties SWIFT_WARN_UNUSED_RESULT; +/// Override this method to specify a map of public-private property names. +/// This will set a different persisted property name on the Realm, and allows using the public name +/// for any operation with the property. (Ex: Queries, Sorting, …). +/// This very helpful if you need to map property names from your Device Sync JSON schema +/// to local property names. +/// \code +/// class Person: AsymmetricObject { +/// @Persisted var firstName: String +/// @Persisted var birthDate: Date +/// @Persisted var age: Int +/// +/// override class public func propertiesMapping() -> [String : String] { +/// ["firstName": "first_name", +/// "birthDate": "birth_date"] +/// } +/// } +/// +/// \endcodenote: +/// Only property that have a different column name have to be added to the properties mapping +/// dictionary. +/// +/// returns: +/// A dictionary of public-private property names. ++ (NSDictionary * _Nonnull)propertiesMapping SWIFT_WARN_UNUSED_RESULT; +/// :nodoc: ++ (NSDictionary * _Nonnull)_realmColumnNames SWIFT_WARN_UNUSED_RESULT SWIFT_UNAVAILABLE_MSG("'_realmColumnNames' has been renamed to 'propertiesMapping': `_realmColumnNames` private API is unavailable in our Swift SDK, please use the override `.propertiesMapping()` instead."); +- (id _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +- (void)setObject:(id _Nullable)newValue forKeyedSubscript:(NSString * _Nonnull)key; +@end + + + + + +@interface RealmSwiftEmbeddedObject (SWIFT_EXTENSION(RealmSwift)) +/// :nodoc: ++ (BOOL)isEmbedded SWIFT_WARN_UNUSED_RESULT; +/// Indicates if the object can no longer be accessed because it is now invalid. +/// An object can no longer be accessed if the object has been deleted from the Realm that manages it, or if +/// invalidate() is called on that Realm. +@property (nonatomic, readonly, getter=isInvalidated) BOOL invalidated; +/// A human-readable description of the object. +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +/// WARNING: This is an internal helper method not intended for public use. +/// It is not considered part of the public API. +/// :nodoc: ++ (NSArray * _Nonnull)_getProperties SWIFT_WARN_UNUSED_RESULT; +/// Override this method to specify the names of properties to ignore. These properties will not be managed by +/// the Realm that manages the object. +/// warning: +/// This function is only applicable to legacy property declarations +/// using @objc. When using @Persisted, any properties not +/// marked with @Persisted are automatically ignored. +/// +/// returns: +/// An array of property names to ignore. ++ (NSArray * _Nonnull)ignoredProperties SWIFT_WARN_UNUSED_RESULT; +/// Override this method to specify a map of public-private property names. +/// This will set a different persisted property name on the Realm, and allows using the public name +/// for any operation with the property. (Ex: Queries, Sorting, …). +/// This very helpful if you need to map property names from your Device Sync JSON schema +/// to local property names. +/// \code +/// class Person: EmbeddedObject { +/// @Persisted var firstName: String +/// @Persisted var birthDate: Date +/// @Persisted var age: Int +/// +/// override class public func propertiesMapping() -> [String : String] { +/// ["firstName": "first_name", +/// "birthDate": "birth_date"] +/// } +/// } +/// +/// \endcodenote: +/// Only property that have a different column name have to be added to the properties mapping +/// dictionary. +/// +/// returns: +/// A dictionary of public-private property names. ++ (NSDictionary * _Nonnull)propertiesMapping SWIFT_WARN_UNUSED_RESULT; +/// :nodoc: ++ (NSDictionary * _Nonnull)_realmColumnNames SWIFT_WARN_UNUSED_RESULT SWIFT_UNAVAILABLE_MSG("'_realmColumnNames' has been renamed to 'propertiesMapping': `_realmColumnNames` private API is unavailable in our Swift SDK, please use the override `.propertiesMapping()` instead."); +- (id _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +- (void)setObject:(id _Nullable)newValue forKeyedSubscript:(NSString * _Nonnull)key; +@end + + + + + + + +@interface RealmSwiftObject (SWIFT_EXTENSION(RealmSwift)) +/// Indicates if the object can no longer be accessed because it is now invalid. +/// An object can no longer be accessed if the object has been deleted from the Realm that manages it, or if +/// invalidate() is called on that Realm. This property is key-value observable. +@property (nonatomic, readonly, getter=isInvalidated) BOOL invalidated; +/// A human-readable description of the object. +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +/// WARNING: This is an internal helper method not intended for public use. +/// It is not considered part of the public API. +/// :nodoc: ++ (NSArray * _Nonnull)_getProperties SWIFT_WARN_UNUSED_RESULT; +/// Override this method to specify the name of a property to be used as the primary key. +/// Only properties of types String, Int, ObjectId and UUID can be +/// designated as the primary key. Primary key properties enforce uniqueness +/// for each value whenever the property is set, which incurs minor overhead. +/// Indexes are created automatically for primary key properties. +/// warning: +/// This function is only applicable to legacy property declarations +/// using @objc. When using @Persisted, use +/// @Persisted(primaryKey: true) instead. +/// +/// returns: +/// The name of the property designated as the primary key, or +/// nil if the model has no primary key. ++ (NSString * _Nullable)primaryKey SWIFT_WARN_UNUSED_RESULT; +/// Override this method to specify the names of properties to ignore. These +/// properties will not be managed by the Realm that manages the object. +/// warning: +/// This function is only applicable to legacy property declarations +/// using @objc. When using @Persisted, any properties not +/// marked with @Persisted are automatically ignored. +/// +/// returns: +/// An array of property names to ignore. ++ (NSArray * _Nonnull)ignoredProperties SWIFT_WARN_UNUSED_RESULT; +/// Returns an array of property names for properties which should be indexed. +/// Only string, integer, boolean, Date, and NSDate properties are supported. +/// warning: +/// This function is only applicable to legacy property declarations +/// using @objc. When using @Persisted, use +/// @Persisted(indexed: true) instead. +/// +/// returns: +/// An array of property names. ++ (NSArray * _Nonnull)indexedProperties SWIFT_WARN_UNUSED_RESULT; +/// Override this method to specify a map of public-private property names. +/// This will set a different persisted property name on the Realm, and allows using the public name +/// for any operation with the property. (Ex: Queries, Sorting, …). +/// This very helpful if you need to map property names from your Device Sync JSON schema +/// to local property names. +/// \code +/// class Person: Object { +/// @Persisted var firstName: String +/// @Persisted var birthDate: Date +/// @Persisted var age: Int +/// +/// override class public func propertiesMapping() -> [String : String] { +/// ["firstName": "first_name", +/// "birthDate": "birth_date"] +/// } +/// } +/// +/// \endcodenote: +/// Only property that have a different column name have to be added to the properties mapping +/// dictionary. +/// note: +/// In a migration block, when enumerating an old property with a public/private name, you will have to use +/// the old column name instead of the public one to retrieve the property value. +/// \code +/// let migrationBlock = { migration, oldSchemaVersion in +/// migration.enumerateObjects(ofType: "Person", { oldObj, newObj in +/// let oldPropertyValue = oldObj!["first_name"] as! String +/// // Use this value in migration +/// }) +/// } +/// +/// \endcodeThis has to be done as well when renaming a property. +/// \code +/// let migrationBlock = { migration, oldSchemaVersion in +/// migration.renameProperty(onType: "Person", from: "first_name", to: "complete_name") +/// } +/// +/// \endcode +/// returns: +/// A dictionary of public-private property names. ++ (NSDictionary * _Nonnull)propertiesMapping SWIFT_WARN_UNUSED_RESULT; +/// :nodoc: ++ (NSDictionary * _Nonnull)_realmColumnNames SWIFT_WARN_UNUSED_RESULT SWIFT_UNAVAILABLE_MSG("'_realmColumnNames' has been renamed to 'propertiesMapping': `_realmColumnNames` private API is unavailable in our Swift SDK, please use the override `.propertiesMapping()` instead."); +- (id _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +- (void)setObject:(id _Nullable)newValue forKeyedSubscript:(NSString * _Nonnull)key; +@end + + +SWIFT_CLASS_NAMED("SwiftUIKVO") SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13.0) SWIFT_AVAILABILITY(macos,introduced=10.15) SWIFT_AVAILABILITY(ios,introduced=13.0) +@interface RLMSwiftUIKVO : NSObject +- (void)observeValueForKeyPath:(NSString * _Nullable)keyPath ofObject:(id _Nullable)object change:(NSDictionary * _Nullable)change context:(void * _Nullable)context; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13.0) SWIFT_AVAILABILITY(macos,introduced=10.15) SWIFT_AVAILABILITY(ios,introduced=13.0) +@interface RLMSwiftUIKVO (SWIFT_EXTENSION(RealmSwift)) ++ (BOOL)removeObserversFromObject:(NSObject * _Nonnull)object SWIFT_WARN_UNUSED_RESULT; ++ (void)addObserversToObject:(NSObject * _Nonnull)object; +@end + +#endif +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#if defined(__cplusplus) +#endif +#pragma clang diagnostic pop +#endif + +#elif defined(__x86_64__) && __x86_64__ +// Generated by Apple Swift version 5.9 (swiftlang-5.9.0.128.106 clang-1500.0.40.1) +#ifndef REALMSWIFT_SWIFT_H +#define REALMSWIFT_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#if defined(__OBJC__) +#include +#endif +#if defined(__cplusplus) +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#endif +#if defined(__cplusplus) +#if defined(__arm64e__) && __has_include() +# include +#else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" +# ifndef __ptrauth_swift_value_witness_function_pointer +# define __ptrauth_swift_value_witness_function_pointer(x) +# endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop +#endif +#endif + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif +#if !defined(SWIFT_RUNTIME_NAME) +# if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +# else +# define SWIFT_RUNTIME_NAME(X) +# endif +#endif +#if !defined(SWIFT_COMPILE_NAME) +# if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +# else +# define SWIFT_COMPILE_NAME(X) +# endif +#endif +#if !defined(SWIFT_METHOD_FAMILY) +# if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +# else +# define SWIFT_METHOD_FAMILY(X) +# endif +#endif +#if !defined(SWIFT_NOESCAPE) +# if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +# else +# define SWIFT_NOESCAPE +# endif +#endif +#if !defined(SWIFT_RELEASES_ARGUMENT) +# if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +# else +# define SWIFT_RELEASES_ARGUMENT +# endif +#endif +#if !defined(SWIFT_WARN_UNUSED_RESULT) +# if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +# else +# define SWIFT_WARN_UNUSED_RESULT +# endif +#endif +#if !defined(SWIFT_NORETURN) +# if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +# else +# define SWIFT_NORETURN +# endif +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +# if __has_attribute(objc_class_stub) +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +# else +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +# endif +#endif +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if !defined(SWIFT_DEPRECATED_OBJC) +# if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +# else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +# endif +#endif +#if defined(__OBJC__) +#if !defined(IBSegueAction) +# define IBSegueAction +#endif +#endif +#if !defined(SWIFT_EXTERN) +# if defined(__cplusplus) +# define SWIFT_EXTERN extern "C" +# else +# define SWIFT_EXTERN extern +# endif +#endif +#if !defined(SWIFT_CALL) +# define SWIFT_CALL __attribute__((swiftcall)) +#endif +#if !defined(SWIFT_INDIRECT_RESULT) +# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result)) +#endif +#if !defined(SWIFT_CONTEXT) +# define SWIFT_CONTEXT __attribute__((swift_context)) +#endif +#if !defined(SWIFT_ERROR_RESULT) +# define SWIFT_ERROR_RESULT __attribute__((swift_error_result)) +#endif +#if defined(__cplusplus) +# define SWIFT_NOEXCEPT noexcept +#else +# define SWIFT_NOEXCEPT +#endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif +#if defined(_WIN32) +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) +#endif +#else +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL +#endif +#endif +#if defined(__OBJC__) +#if __has_feature(objc_modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +@import Foundation; +@import ObjectiveC; +@import Realm; +@import Realm.Swift; +#endif + +#endif +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" +#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="RealmSwift",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +#if defined(__OBJC__) +@class NSString; + +/// A type which has a custom representation in Realm events. +/// By default, objects are serialized to JSON using built-in rules which +/// include every property. If you wish to customize how a class is serialized +/// in events, you can declare it as conforming to this protocol and +/// define customEventRepresentation(). +SWIFT_PROTOCOL_NAMED("CustomEventRepresentable") +@protocol RLMCustomEventRepresentable +/// Get the custom event serialization for this object. +/// This function must return a valid JSON String, as this is included in a +/// larger JSON document. Implementations of this function should be “pure” +/// and access no data other than that which is obtainable from the Object +/// it is called on, and it should not mutate the object which it is called +/// on. This function is called on a background thread in a somewhat +/// unusual context, and attempting to access other data is likely to cause +/// problems. +- (NSString * _Nonnull)customEventRepresentation SWIFT_WARN_UNUSED_RESULT; +@end + +@class NSNumber; + +/// A 128-bit IEEE 754-2008 decimal floating point number. +/// This type is similar to Swift’s built-in Decimal type, but allocates bits differently, resulting in a different representable range. (NS)Decimal stores a significand of up to 38 digits long and an exponent from -128 to 127, while this type stores up to 34 digits of significand and an exponent from -6143 to 6144. +SWIFT_CLASS_NAMED("Decimal128") +@interface RealmSwiftDecimal128 : RLMDecimal128 +/// Creates a new zero-initialized Decimal128. +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +/// Converts the given value to a Decimal128. +/// The following types can be converted to Decimal128: +///
    +///
  • +/// Int (of any size) +///
  • +///
  • +/// Float +///
  • +///
  • +/// Double +///
  • +///
  • +/// String +///
  • +///
  • +/// NSNumber +///
  • +///
  • +/// Decimal +///
  • +///
+/// Passing a value with a type not in this list is a fatal error. Passing a string which cannot be parsed as a valid Decimal128 is a fatal error. +/// \param value The value to convert to a Decimal128. +/// +- (nonnull instancetype)initWithValue:(id _Nonnull)value OBJC_DESIGNATED_INITIALIZER; +/// Converts the given number to a Decimal128. +/// This initializer cannot fail and is never lossy. +/// \param number The number to convert to a Decimal128. +/// +- (nonnull instancetype)initWithNumber:(NSNumber * _Nonnull)number OBJC_DESIGNATED_INITIALIZER; +/// Parse the given string as a Decimal128. +/// This initializer never throws and is marked as throws only because removing it is a breaking +/// change. Strings which cannot be parsed as a Decimal128 return a value where isNaN is true. +/// \param string The string to parse. +/// +- (nullable instancetype)initWithString:(NSString * _Nonnull)string error:(NSError * _Nullable * _Nullable)error OBJC_DESIGNATED_INITIALIZER; +@end + + + + + + + + + + + + + + + + + + +@class RLMObjectSchema; + +/// Object interface which allows untyped getters and setters for Objects. +/// :nodoc: +SWIFT_CLASS_NAMED("DynamicObject") +@interface RealmSwiftDynamicObject : RealmSwiftObject +- (id _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +- (void)setObject:(id _Nullable)value forKeyedSubscript:(NSString * _Nonnull)key; +/// :nodoc: +- (id _Nullable)valueForUndefinedKey:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +/// :nodoc: +- (void)setValue:(id _Nullable)value forUndefinedKey:(NSString * _Nonnull)key; +/// :nodoc: ++ (BOOL)shouldIncludeInDefaultSchema SWIFT_WARN_UNUSED_RESULT; ++ (RLMObjectSchema * _Nullable)sharedSchema SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + + + + + + + + + + + + + + +@class NSDate; + +/// A 12-byte (probably) unique object identifier. +/// ObjectIds are similar to a GUID or a UUID, and can be used to uniquely identify objects without a centralized ID generator. An ObjectID consists of: +///
    +///
  1. +/// A 4 byte timestamp measuring the creation time of the ObjectId in seconds since the Unix epoch. +///
  2. +///
  3. +/// A 5 byte random value +///
  4. +///
  5. +/// A 3 byte counter, initialized to a random value. +///
  6. +///
+/// ObjectIds are intended to be fast to generate. Sorting by an ObjectId field will typically result in the objects being sorted in creation order. +SWIFT_CLASS_NAMED("ObjectId") +@interface RealmSwiftObjectId : RLMObjectId +/// Creates a new zero-initialized ObjectId. +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +/// Creates a new randomly-initialized ObjectId. ++ (RealmSwiftObjectId * _Nonnull)objectId SWIFT_WARN_UNUSED_RESULT; +/// Creates a new ObjectId from the given 24-byte hexadecimal string. +/// Throws if the string is not 24 characters or contains any characters other than 0-9a-fA-F. +/// \param string The string to parse. +/// +- (nullable instancetype)initWithString:(NSString * _Nonnull)string error:(NSError * _Nullable * _Nullable)error OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)initWithTimestamp:(NSDate * _Nonnull)timestamp machineIdentifier:(int32_t)machineIdentifier processIdentifier:(int32_t)processIdentifier SWIFT_UNAVAILABLE; +@end + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +@class RLMProperty; + +@interface RealmSwiftAsymmetricObject (SWIFT_EXTENSION(RealmSwift)) +/// A human-readable description of the object. +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +/// WARNING: This is an internal helper method not intended for public use. +/// It is not considered part of the public API. +/// :nodoc: ++ (NSArray * _Nonnull)_getProperties SWIFT_WARN_UNUSED_RESULT; +/// Override this method to specify a map of public-private property names. +/// This will set a different persisted property name on the Realm, and allows using the public name +/// for any operation with the property. (Ex: Queries, Sorting, …). +/// This very helpful if you need to map property names from your Device Sync JSON schema +/// to local property names. +/// \code +/// class Person: AsymmetricObject { +/// @Persisted var firstName: String +/// @Persisted var birthDate: Date +/// @Persisted var age: Int +/// +/// override class public func propertiesMapping() -> [String : String] { +/// ["firstName": "first_name", +/// "birthDate": "birth_date"] +/// } +/// } +/// +/// \endcodenote: +/// Only property that have a different column name have to be added to the properties mapping +/// dictionary. +/// +/// returns: +/// A dictionary of public-private property names. ++ (NSDictionary * _Nonnull)propertiesMapping SWIFT_WARN_UNUSED_RESULT; +/// :nodoc: ++ (NSDictionary * _Nonnull)_realmColumnNames SWIFT_WARN_UNUSED_RESULT SWIFT_UNAVAILABLE_MSG("'_realmColumnNames' has been renamed to 'propertiesMapping': `_realmColumnNames` private API is unavailable in our Swift SDK, please use the override `.propertiesMapping()` instead."); +- (id _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +- (void)setObject:(id _Nullable)newValue forKeyedSubscript:(NSString * _Nonnull)key; +@end + + + + + +@interface RealmSwiftEmbeddedObject (SWIFT_EXTENSION(RealmSwift)) +/// :nodoc: ++ (BOOL)isEmbedded SWIFT_WARN_UNUSED_RESULT; +/// Indicates if the object can no longer be accessed because it is now invalid. +/// An object can no longer be accessed if the object has been deleted from the Realm that manages it, or if +/// invalidate() is called on that Realm. +@property (nonatomic, readonly, getter=isInvalidated) BOOL invalidated; +/// A human-readable description of the object. +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +/// WARNING: This is an internal helper method not intended for public use. +/// It is not considered part of the public API. +/// :nodoc: ++ (NSArray * _Nonnull)_getProperties SWIFT_WARN_UNUSED_RESULT; +/// Override this method to specify the names of properties to ignore. These properties will not be managed by +/// the Realm that manages the object. +/// warning: +/// This function is only applicable to legacy property declarations +/// using @objc. When using @Persisted, any properties not +/// marked with @Persisted are automatically ignored. +/// +/// returns: +/// An array of property names to ignore. ++ (NSArray * _Nonnull)ignoredProperties SWIFT_WARN_UNUSED_RESULT; +/// Override this method to specify a map of public-private property names. +/// This will set a different persisted property name on the Realm, and allows using the public name +/// for any operation with the property. (Ex: Queries, Sorting, …). +/// This very helpful if you need to map property names from your Device Sync JSON schema +/// to local property names. +/// \code +/// class Person: EmbeddedObject { +/// @Persisted var firstName: String +/// @Persisted var birthDate: Date +/// @Persisted var age: Int +/// +/// override class public func propertiesMapping() -> [String : String] { +/// ["firstName": "first_name", +/// "birthDate": "birth_date"] +/// } +/// } +/// +/// \endcodenote: +/// Only property that have a different column name have to be added to the properties mapping +/// dictionary. +/// +/// returns: +/// A dictionary of public-private property names. ++ (NSDictionary * _Nonnull)propertiesMapping SWIFT_WARN_UNUSED_RESULT; +/// :nodoc: ++ (NSDictionary * _Nonnull)_realmColumnNames SWIFT_WARN_UNUSED_RESULT SWIFT_UNAVAILABLE_MSG("'_realmColumnNames' has been renamed to 'propertiesMapping': `_realmColumnNames` private API is unavailable in our Swift SDK, please use the override `.propertiesMapping()` instead."); +- (id _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +- (void)setObject:(id _Nullable)newValue forKeyedSubscript:(NSString * _Nonnull)key; +@end + + + + + + + +@interface RealmSwiftObject (SWIFT_EXTENSION(RealmSwift)) +/// Indicates if the object can no longer be accessed because it is now invalid. +/// An object can no longer be accessed if the object has been deleted from the Realm that manages it, or if +/// invalidate() is called on that Realm. This property is key-value observable. +@property (nonatomic, readonly, getter=isInvalidated) BOOL invalidated; +/// A human-readable description of the object. +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +/// WARNING: This is an internal helper method not intended for public use. +/// It is not considered part of the public API. +/// :nodoc: ++ (NSArray * _Nonnull)_getProperties SWIFT_WARN_UNUSED_RESULT; +/// Override this method to specify the name of a property to be used as the primary key. +/// Only properties of types String, Int, ObjectId and UUID can be +/// designated as the primary key. Primary key properties enforce uniqueness +/// for each value whenever the property is set, which incurs minor overhead. +/// Indexes are created automatically for primary key properties. +/// warning: +/// This function is only applicable to legacy property declarations +/// using @objc. When using @Persisted, use +/// @Persisted(primaryKey: true) instead. +/// +/// returns: +/// The name of the property designated as the primary key, or +/// nil if the model has no primary key. ++ (NSString * _Nullable)primaryKey SWIFT_WARN_UNUSED_RESULT; +/// Override this method to specify the names of properties to ignore. These +/// properties will not be managed by the Realm that manages the object. +/// warning: +/// This function is only applicable to legacy property declarations +/// using @objc. When using @Persisted, any properties not +/// marked with @Persisted are automatically ignored. +/// +/// returns: +/// An array of property names to ignore. ++ (NSArray * _Nonnull)ignoredProperties SWIFT_WARN_UNUSED_RESULT; +/// Returns an array of property names for properties which should be indexed. +/// Only string, integer, boolean, Date, and NSDate properties are supported. +/// warning: +/// This function is only applicable to legacy property declarations +/// using @objc. When using @Persisted, use +/// @Persisted(indexed: true) instead. +/// +/// returns: +/// An array of property names. ++ (NSArray * _Nonnull)indexedProperties SWIFT_WARN_UNUSED_RESULT; +/// Override this method to specify a map of public-private property names. +/// This will set a different persisted property name on the Realm, and allows using the public name +/// for any operation with the property. (Ex: Queries, Sorting, …). +/// This very helpful if you need to map property names from your Device Sync JSON schema +/// to local property names. +/// \code +/// class Person: Object { +/// @Persisted var firstName: String +/// @Persisted var birthDate: Date +/// @Persisted var age: Int +/// +/// override class public func propertiesMapping() -> [String : String] { +/// ["firstName": "first_name", +/// "birthDate": "birth_date"] +/// } +/// } +/// +/// \endcodenote: +/// Only property that have a different column name have to be added to the properties mapping +/// dictionary. +/// note: +/// In a migration block, when enumerating an old property with a public/private name, you will have to use +/// the old column name instead of the public one to retrieve the property value. +/// \code +/// let migrationBlock = { migration, oldSchemaVersion in +/// migration.enumerateObjects(ofType: "Person", { oldObj, newObj in +/// let oldPropertyValue = oldObj!["first_name"] as! String +/// // Use this value in migration +/// }) +/// } +/// +/// \endcodeThis has to be done as well when renaming a property. +/// \code +/// let migrationBlock = { migration, oldSchemaVersion in +/// migration.renameProperty(onType: "Person", from: "first_name", to: "complete_name") +/// } +/// +/// \endcode +/// returns: +/// A dictionary of public-private property names. ++ (NSDictionary * _Nonnull)propertiesMapping SWIFT_WARN_UNUSED_RESULT; +/// :nodoc: ++ (NSDictionary * _Nonnull)_realmColumnNames SWIFT_WARN_UNUSED_RESULT SWIFT_UNAVAILABLE_MSG("'_realmColumnNames' has been renamed to 'propertiesMapping': `_realmColumnNames` private API is unavailable in our Swift SDK, please use the override `.propertiesMapping()` instead."); +- (id _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +- (void)setObject:(id _Nullable)newValue forKeyedSubscript:(NSString * _Nonnull)key; +@end + + +SWIFT_CLASS_NAMED("SwiftUIKVO") SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13.0) SWIFT_AVAILABILITY(macos,introduced=10.15) SWIFT_AVAILABILITY(ios,introduced=13.0) +@interface RLMSwiftUIKVO : NSObject +- (void)observeValueForKeyPath:(NSString * _Nullable)keyPath ofObject:(id _Nullable)object change:(NSDictionary * _Nullable)change context:(void * _Nullable)context; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +SWIFT_AVAILABILITY(watchos,introduced=6.0) SWIFT_AVAILABILITY(tvos,introduced=13.0) SWIFT_AVAILABILITY(macos,introduced=10.15) SWIFT_AVAILABILITY(ios,introduced=13.0) +@interface RLMSwiftUIKVO (SWIFT_EXTENSION(RealmSwift)) ++ (BOOL)removeObserversFromObject:(NSObject * _Nonnull)object SWIFT_WARN_UNUSED_RESULT; ++ (void)addObserversToObject:(NSObject * _Nonnull)object; +@end + +#endif +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#if defined(__cplusplus) +#endif +#pragma clang diagnostic pop +#endif + +#else +#error unsupported Swift architecture +#endif diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Info.plist b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Info.plist new file mode 100644 index 000000000..f3646adad Binary files /dev/null and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Info.plist differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-xros-simulator.swiftsourceinfo b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-xros-simulator.swiftsourceinfo new file mode 100644 index 000000000..22d91f5ab Binary files /dev/null and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/arm64-apple-xros-simulator.swiftsourceinfo differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-xros-simulator.swiftsourceinfo b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-xros-simulator.swiftsourceinfo new file mode 100644 index 000000000..7f26faa81 Binary files /dev/null and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/Project/x86_64-apple-xros-simulator.swiftsourceinfo differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-xros-simulator.abi.json b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-xros-simulator.abi.json new file mode 100644 index 000000000..dc109fc09 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-xros-simulator.abi.json @@ -0,0 +1,9 @@ +{ + "ABIRoot": { + "kind": "Root", + "name": "TopLevel", + "printedName": "TopLevel", + "json_format_version": 8 + }, + "ConstValues": [] +} \ No newline at end of file diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-xros-simulator.swiftdoc b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-xros-simulator.swiftdoc new file mode 100644 index 000000000..66cc1cad9 Binary files /dev/null and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-xros-simulator.swiftdoc differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-xros-simulator.swiftmodule b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-xros-simulator.swiftmodule new file mode 100644 index 000000000..e09284f71 Binary files /dev/null and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64-apple-xros-simulator.swiftmodule differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-xros-simulator.abi.json b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-xros-simulator.abi.json new file mode 100644 index 000000000..dc109fc09 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-xros-simulator.abi.json @@ -0,0 +1,9 @@ +{ + "ABIRoot": { + "kind": "Root", + "name": "TopLevel", + "printedName": "TopLevel", + "json_format_version": 8 + }, + "ConstValues": [] +} \ No newline at end of file diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-xros-simulator.swiftdoc b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-xros-simulator.swiftdoc new file mode 100644 index 000000000..b9c275b18 Binary files /dev/null and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-xros-simulator.swiftdoc differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-xros-simulator.swiftmodule b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-xros-simulator.swiftmodule new file mode 100644 index 000000000..48185580e Binary files /dev/null and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/RealmSwift.swiftmodule/x86_64-apple-xros-simulator.swiftmodule differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/module.modulemap b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/module.modulemap new file mode 100644 index 000000000..5742239a8 --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/Modules/module.modulemap @@ -0,0 +1,4 @@ +framework module RealmSwift { + header "RealmSwift-Swift.h" + requires objc +} diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/RealmSwift b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/RealmSwift new file mode 100755 index 000000000..5a40ba507 Binary files /dev/null and b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/RealmSwift differ diff --git a/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/_CodeSignature/CodeResources b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/_CodeSignature/CodeResources new file mode 100644 index 000000000..dd4204bcb --- /dev/null +++ b/Projects/Modules/ThirdPartyLib/Frameworks/RealmSwift.xcframework/xros-arm64_x86_64-simulator/RealmSwift.framework/_CodeSignature/CodeResources @@ -0,0 +1,212 @@ + + + + + files + + Headers/RealmSwift-Swift.h + + 4/F674JO/MVMxbCMUEnOTj7VNWs= + + Info.plist + + YS2ZeOxpXvJZ9XlSC4aEkU3UqQw= + + Modules/RealmSwift.swiftmodule/Project/arm64-apple-xros-simulator.swiftsourceinfo + + xO67tz8a1O8ZPJbhPdu8YVIcg94= + + Modules/RealmSwift.swiftmodule/Project/x86_64-apple-xros-simulator.swiftsourceinfo + + C6T4EOLDL2FWLT5vMhVyqNzDEp4= + + Modules/RealmSwift.swiftmodule/arm64-apple-xros-simulator.abi.json + + FSPnLbho3G+LL9smI3XgVOqBIQ4= + + Modules/RealmSwift.swiftmodule/arm64-apple-xros-simulator.swiftdoc + + TuTUdZDBs/kI7oypQeZwR2MbxRs= + + Modules/RealmSwift.swiftmodule/arm64-apple-xros-simulator.swiftmodule + + wZGrvwlTBDeOUvFGsUzGlKAIiQo= + + Modules/RealmSwift.swiftmodule/x86_64-apple-xros-simulator.abi.json + + FSPnLbho3G+LL9smI3XgVOqBIQ4= + + Modules/RealmSwift.swiftmodule/x86_64-apple-xros-simulator.swiftdoc + + BaAPDRTaRPbER0MCqV9qCCqlmHc= + + Modules/RealmSwift.swiftmodule/x86_64-apple-xros-simulator.swiftmodule + + 1P7Id5Deo9qMgQvXBpA3otU3TPU= + + Modules/module.modulemap + + IXqtE49GMw2XlMvW/BV8T8CvAUI= + + + files2 + + Headers/RealmSwift-Swift.h + + hash2 + + R7UTtK85xpvxJUN1vpceuPOXeEhtTvgY/mzD2K8KmI8= + + + Modules/RealmSwift.swiftmodule/Project/arm64-apple-xros-simulator.swiftsourceinfo + + hash2 + + VHqeIo16JxNsFZq3Bigg/JTo1HQoZtsr3aMJXgUDtmw= + + + Modules/RealmSwift.swiftmodule/Project/x86_64-apple-xros-simulator.swiftsourceinfo + + hash2 + + 0D9Mm/9drvL/jTZ7qz9CQnDzUr0eIax9KMRlQmIadr0= + + + Modules/RealmSwift.swiftmodule/arm64-apple-xros-simulator.abi.json + + hash2 + + KnRdWE4y6t4QM5zi5JDptPdHFgJy1Tku+7GLkZS2aNM= + + + Modules/RealmSwift.swiftmodule/arm64-apple-xros-simulator.swiftdoc + + hash2 + + 5oItde+lREKr1XW2HF5KEL68xVl4xhwCAyl2op8sBsg= + + + Modules/RealmSwift.swiftmodule/arm64-apple-xros-simulator.swiftmodule + + hash2 + + LWXvYkbi2Snef6wb/JyDsmQPFAm/JqIXIFK42du6nJg= + + + Modules/RealmSwift.swiftmodule/x86_64-apple-xros-simulator.abi.json + + hash2 + + KnRdWE4y6t4QM5zi5JDptPdHFgJy1Tku+7GLkZS2aNM= + + + Modules/RealmSwift.swiftmodule/x86_64-apple-xros-simulator.swiftdoc + + hash2 + + svVRX6OT2bi2U4f2RPfvB1Ki/jj9/xC1JKmV+dHoiDI= + + + Modules/RealmSwift.swiftmodule/x86_64-apple-xros-simulator.swiftmodule + + hash2 + + OeJ8w/GUt8yaZwA9MbaKgLzdM7tCduQ1cWqd+78YrZA= + + + Modules/module.modulemap + + hash2 + + Zfv2ZSs6d6XBckKRFjW5jDoJ/AIcJok4zix6ZQgi7dg= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/Projects/Modules/Utility/Sources/Extensions/Extension+UILabel.swift b/Projects/Modules/Utility/Sources/Extensions/Extension+UILabel.swift index 3d2b8caea..725626619 100644 --- a/Projects/Modules/Utility/Sources/Extensions/Extension+UILabel.swift +++ b/Projects/Modules/Utility/Sources/Extensions/Extension+UILabel.swift @@ -21,6 +21,7 @@ public extension UILabel { let paragraphStyle = NSMutableParagraphStyle() paragraphStyle.lineSpacing = lineSpacing paragraphStyle.lineHeightMultiple = lineHeightMultiple + paragraphStyle.lineBreakMode = .byTruncatingTail let attributedString = NSMutableAttributedString(string: labelText, attributes: [ diff --git a/Projects/Modules/Utility/Sources/Utils/Devices.swift b/Projects/Modules/Utility/Sources/Utils/Devices.swift index 920a0f0fc..85ada78e7 100644 --- a/Projects/Modules/Utility/Sources/Utils/Devices.swift +++ b/Projects/Modules/Utility/Sources/Utils/Devices.swift @@ -58,6 +58,10 @@ public struct Device { case "iPhone14,8" : return "iPhone 14 Plus" case "iPhone15,2" : return "iPhone 14 Pro" case "iPhone15,3" : return "iPhone 14 Pro Max" + case "iPhone15,4" : return "iPhone 15" + case "iPhone15,5" : return "iPhone 15 Plus" + case "iPhone16,1" : return "iPhone 15 Pro" + case "iPhone16,2" : return "iPhone 15 Pro Max" //iPod case "iPod5,1": return "iPod Touch 5" diff --git a/Projects/Modules/Utility/Sources/Utils/Secrets.swift b/Projects/Modules/Utility/Sources/Utils/Secrets.swift index 7d081c3fc..3c4292e6d 100644 --- a/Projects/Modules/Utility/Sources/Utils/Secrets.swift +++ b/Projects/Modules/Utility/Sources/Utils/Secrets.swift @@ -8,114 +8,70 @@ import Foundation -//MARK: - BASE_IMAGE_URL -public func BASE_IMAGE_URL() -> String { +public func config(key: String) -> String { guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { return "" } - return secrets["BASE_IMAGE_URL"] as? String ?? "not found key" + return secrets[key] as? String ?? "not found key" +} + +//MARK: - BASE_IMAGE_URL +public func BASE_IMAGE_URL() -> String { + return config(key: "BASE_IMAGE_URL") } //MARK: - WMDomain > Image public func WMDOMAIN_IMAGE_NEWS() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_IMAGE_NEWS"] as? String ?? "not found key" + return config(key: "WMDOMAIN_IMAGE_NEWS") } public func WMDOMAIN_IMAGE_ARTIST_ROUND() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_IMAGE_ARTIST_ROUND"] as? String ?? "not found key" + return config(key: "WMDOMAIN_IMAGE_ARTIST_ROUND") } public func WMDOMAIN_IMAGE_ARTIST_SQUARE() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_IMAGE_ARTIST_SQUARE"] as? String ?? "not found key" + return config(key: "WMDOMAIN_IMAGE_ARTIST_SQUARE") } public func WMDOMAIN_IMAGE_PROFILE() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_IMAGE_PROFILE"] as? String ?? "not found key" + return config(key: "WMDOMAIN_IMAGE_PROFILE") } public func WMDOMAIN_IMAGE_PLAYLIST() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_IMAGE_PLAYLIST"] as? String ?? "not found key" + return config(key: "WMDOMAIN_IMAGE_PLAYLIST") } public func WMDOMAIN_IMAGE_RECOMMEND_PLAYLIST_SQUARE() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_IMAGE_RECOMMEND_PLAYLIST_SQUARE"] as? String ?? "not found key" + return config(key: "WMDOMAIN_IMAGE_RECOMMEND_PLAYLIST_SQUARE") } public func WMDOMAIN_IMAGE_RECOMMEND_PLAYLIST_ROUND() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_IMAGE_RECOMMEND_PLAYLIST_ROUND"] as? String ?? "not found key" + return config(key: "WMDOMAIN_IMAGE_RECOMMEND_PLAYLIST_ROUND") } public func WMDOMAIN_IMAGE_NOTICE() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_IMAGE_NOTICE"] as? String ?? "not found key" + return config(key: "WMDOMAIN_IMAGE_NOTICE") } //MARK: - NAVER public func NAVER_URL_SCHEME() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["NAVER_URL_SCHEME"] as? String ?? "not found key" + return config(key: "NAVER_URL_SCHEME") } public func NAVER_CONSUMER_KEY() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["NAVER_CONSUMER_KEY"] as? String ?? "not found key" + return config(key: "NAVER_CONSUMER_KEY") } public func NAVER_CONSUMER_SECRET() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["NAVER_CONSUMER_SECRET"] as? String ?? "not found key" + return config(key: "NAVER_CONSUMER_SECRET") } public func NAVER_APP_NAME() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["NAVER_APP_NAME"] as? String ?? "not found key" + return config(key: "NAVER_APP_NAME") } //MARK: - GOOGLE public func GOOGLE_URL_SCHEME() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["GOOGLE_URL_SCHEME"] as? String ?? "not found key" + return config(key: "GOOGLE_URL_SCHEME") } public func GOOGLE_CLIENT_ID() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["GOOGLE_CLIENT_ID"] as? String ?? "not found key" + return config(key: "GOOGLE_CLIENT_ID") } public func GOOGLE_SECRET_KEY() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["GOOGLE_SECRET_KEY"] as? String ?? "not found key" + return config(key: "GOOGLE_SECRET_KEY") } //WAKTAVERSEMUSIC public func WM_APP_ID() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WM_APP_ID"] as? String ?? "" + return config(key: "WM_APP_ID") } diff --git a/Projects/Services/APIKit/Sources/API/SongsAPI.swift b/Projects/Services/APIKit/Sources/API/SongsAPI.swift index 71fe22094..75fe30485 100644 --- a/Projects/Services/APIKit/Sources/API/SongsAPI.swift +++ b/Projects/Services/APIKit/Sources/API/SongsAPI.swift @@ -4,25 +4,33 @@ import ErrorModule import Foundation public enum SongsAPI { - case fetchSearchSong(type: SearchType,keyword: String) - case fetchNewSong(type: NewSongGroupType) + case fetchSearchSong(type: SearchType, keyword: String) case fetchLyrics(id: String) + case fetchNewSongs(type: NewSongGroupType, page: Int, limit: Int) } extension SongsAPI: WMAPI { - public var domain: WMDomain { - .songs + return .songs + } + + public var path: String { + switch self { + case .fetchNewSongs: + return "/\(WMDOMAIN_V2_SONGS())" + urlPath + default: + return domain.asURLString + urlPath + } } public var urlPath: String { switch self { case .fetchSearchSong: return "/search" - case let .fetchNewSong(type): - return "/new/\(type.apiKey)" case .fetchLyrics(id: let id): return "/lyrics/\(id)" + case let .fetchNewSongs(type, _, _): + return "/new/\(type.apiKey)" } } @@ -39,8 +47,17 @@ extension SongsAPI: WMAPI { "keyword": keyword ], encoding: URLEncoding.queryString) - case .fetchLyrics, .fetchNewSong: + case .fetchLyrics: return .requestPlain + + case let .fetchNewSongs(_, page, limit): + return .requestParameters( + parameters: [ + "limit": limit, + "start": (page == 1) ? 0 : (page - 1) * limit + ], + encoding: URLEncoding.queryString + ) } } diff --git a/Projects/Services/APIKit/Sources/Devices/Devices.swift b/Projects/Services/APIKit/Sources/Devices/Devices.swift index b2a6d6487..04e912cc3 100644 --- a/Projects/Services/APIKit/Sources/Devices/Devices.swift +++ b/Projects/Services/APIKit/Sources/Devices/Devices.swift @@ -56,6 +56,10 @@ public struct Device { case "iPhone14,8" : return "iPhone 14 Plus" case "iPhone15,2" : return "iPhone 14 Pro" case "iPhone15,3" : return "iPhone 14 Pro Max" + case "iPhone15,4" : return "iPhone 15" + case "iPhone15,5" : return "iPhone 15 Plus" + case "iPhone16,1" : return "iPhone 15 Pro" + case "iPhone16,2" : return "iPhone 15 Pro Max" //iPod case "iPod5,1": return "iPod Touch 5" diff --git a/Projects/Services/APIKit/Sources/Secrets/SecretURL.swift b/Projects/Services/APIKit/Sources/Secrets/SecretURL.swift index 046722a45..f0a5ad590 100644 --- a/Projects/Services/APIKit/Sources/Secrets/SecretURL.swift +++ b/Projects/Services/APIKit/Sources/Secrets/SecretURL.swift @@ -8,96 +8,66 @@ import Foundation -//MARK: - BASE_URL -public func BASE_URL() -> String { +public func config(key: String) -> String { guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { return "" } + return secrets[key] as? String ?? "not found key" +} + +//MARK: - BASE_URL +public func BASE_URL() -> String { #if DEBUG - return secrets["BASE_DEV_URL"] as? String ?? "not found key" + return config(key: "BASE_DEV_URL") #else - return secrets["BASE_PROD_URL"] as? String ?? "not found key" + return config(key: "BASE_PROD_URL") #endif } //MARK: - WAKENTER_BASE_URL public func WAKENTER_BASE_URL() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WAKENTER_BASE_URL"] as? String ?? "not found key" + return config(key: "WAKENTER_BASE_URL") } //MARK: - WMDomain public func WMDOMAIN_AUTH() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_AUTH"] as? String ?? "not found key" + return config(key: "WMDOMAIN_AUTH") } public func WMDOMAIN_CHARTS() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_CHARTS"] as? String ?? "not found key" + return config(key: "WMDOMAIN_CHARTS") } public func WMDOMAIN_SONGS() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_SONGS"] as? String ?? "not found key" + return config(key: "WMDOMAIN_SONGS") } public func WMDOMAIN_ARTIST() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_ARTIST"] as? String ?? "not found key" + return config(key: "WMDOMAIN_ARTIST") } public func WMDOMAIN_USER() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_USER"] as? String ?? "not found key" + return config(key: "WMDOMAIN_USER") } public func WMDOMAIN_PLAYLIST() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_PLAYLIST"] as? String ?? "not found key" + return config(key: "WMDOMAIN_PLAYLIST") } public func WMDOMAIN_LIKE() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_LIKE"] as? String ?? "not found key" + return config(key: "WMDOMAIN_LIKE") } public func WMDOMAIN_QNA() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_QNA"] as? String ?? "not found key" + return config(key: "WMDOMAIN_QNA") } public func WMDOMAIN_NOTICE() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_NOTICE"] as? String ?? "not found key" + return config(key: "WMDOMAIN_NOTICE") } public func WMDOMAIN_SUGGEST() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_SUGGEST"] as? String ?? "not found key" + return config(key: "WMDOMAIN_SUGGEST") } public func WMDOMAIN_APP() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_APP"] as? String ?? "not found key" + return config(key: "WMDOMAIN_APP") } public func WMDOMAIN_PLAY() -> String { - guard let secrets = Bundle.main.object(forInfoDictionaryKey: "Secrets") as? [String: Any] else { - return "" - } - return secrets["WMDOMAIN_PLAY"] as? String ?? "not found key" + return config(key: "WMDOMAIN_PLAY") +} + +//MARK: - WMDomain V2 +public func WMDOMAIN_V2_SONGS() -> String { + return config(key: "WMDOMAIN_V2_SONGS") } diff --git a/Projects/Services/DataMappingModule/Sources/Songs/Response/NewSongResponseDTO.swift b/Projects/Services/DataMappingModule/Sources/Songs/Response/NewSongsResponseDTO.swift similarity index 62% rename from Projects/Services/DataMappingModule/Sources/Songs/Response/NewSongResponseDTO.swift rename to Projects/Services/DataMappingModule/Sources/Songs/Response/NewSongsResponseDTO.swift index e1cb87181..4a2cc7696 100644 --- a/Projects/Services/DataMappingModule/Sources/Songs/Response/NewSongResponseDTO.swift +++ b/Projects/Services/DataMappingModule/Sources/Songs/Response/NewSongsResponseDTO.swift @@ -1,18 +1,18 @@ // -// NewSongResponseDTO.swift +// NewSongsResponseDTO.swift // DataMappingModule // -// Created by KTH on 2023/02/20. +// Created by KTH on 2023/11/15. // Copyright © 2023 yongbeomkwak. All rights reserved. // import Foundation -public struct NewSongResponseDTO: Decodable { - public let id, title, artist, remix: String - public let reaction: String +public struct NewSongsResponseDTO: Decodable { + public let id, title, artist: String + public let remix, reaction: String public let date: Int - public let total: NewSongResponseDTO.Total? + public let total: NewSongsResponseDTO.Total? public static func == (lhs: Self, rhs: Self) -> Bool { return lhs.id == rhs.id @@ -24,7 +24,7 @@ public struct NewSongResponseDTO: Decodable { } } -public extension NewSongResponseDTO { +public extension NewSongsResponseDTO { struct Total: Codable { public let views: Int public let last: Int diff --git a/Projects/Services/DataModule/Sources/Songs/Repositories/SongsRepositoryImpl.swift b/Projects/Services/DataModule/Sources/Songs/Repositories/SongsRepositoryImpl.swift index 06e3afdb7..f7001750f 100644 --- a/Projects/Services/DataModule/Sources/Songs/Repositories/SongsRepositoryImpl.swift +++ b/Projects/Services/DataModule/Sources/Songs/Repositories/SongsRepositoryImpl.swift @@ -21,7 +21,8 @@ public struct SongsRepositoryImpl: SongsRepository { public func fetchLyrics(id: String) -> Single<[LyricsEntity]> { remoteSongsDataSource.fetchLyrics(id: id) } - public func fetchNewSong(type: NewSongGroupType) -> Single<[NewSongEntity]> { - remoteSongsDataSource.fetchNewSong(type: type) + + public func fetchNewSongs(type: NewSongGroupType, page: Int, limit: Int) -> Single<[NewSongsEntity]> { + remoteSongsDataSource.fetchNewSongs(type: type, page: page, limit: limit) } } diff --git a/Projects/Services/DataModule/Sources/Songs/UseCases/FetchNewSongUseCaseImpl.swift b/Projects/Services/DataModule/Sources/Songs/UseCases/FetchNewSongsUseCaseImpl.swift similarity index 51% rename from Projects/Services/DataModule/Sources/Songs/UseCases/FetchNewSongUseCaseImpl.swift rename to Projects/Services/DataModule/Sources/Songs/UseCases/FetchNewSongsUseCaseImpl.swift index 817cbc75c..7ec14acd8 100644 --- a/Projects/Services/DataModule/Sources/Songs/UseCases/FetchNewSongUseCaseImpl.swift +++ b/Projects/Services/DataModule/Sources/Songs/UseCases/FetchNewSongsUseCaseImpl.swift @@ -3,7 +3,7 @@ import DataMappingModule import DomainModule import ErrorModule -public struct FetchNewSongUseCaseImpl: FetchNewSongUseCase { +public struct FetchNewSongsUseCaseImpl: FetchNewSongsUseCase { private let songsRepository: any SongsRepository public init( @@ -12,7 +12,7 @@ public struct FetchNewSongUseCaseImpl: FetchNewSongUseCase { self.songsRepository = songsRepository } - public func execute(type: NewSongGroupType) -> Single<[NewSongEntity]> { - songsRepository.fetchNewSong(type: type) + public func execute(type: NewSongGroupType, page: Int, limit: Int) -> Single<[NewSongsEntity]> { + return songsRepository.fetchNewSongs(type: type, page: page, limit: limit) } } diff --git a/Projects/Services/DomainModule/Sources/Songs/Entity/NewSongEntity.swift b/Projects/Services/DomainModule/Sources/Songs/Entity/NewSongsEntity.swift similarity index 65% rename from Projects/Services/DomainModule/Sources/Songs/Entity/NewSongEntity.swift rename to Projects/Services/DomainModule/Sources/Songs/Entity/NewSongsEntity.swift index 9efd45f56..4e4711445 100644 --- a/Projects/Services/DomainModule/Sources/Songs/Entity/NewSongEntity.swift +++ b/Projects/Services/DomainModule/Sources/Songs/Entity/NewSongsEntity.swift @@ -1,14 +1,14 @@ // -// NewSongEntity.swift +// NewSongsEntity.swift // DomainModule // -// Created by KTH on 2023/02/20. +// Created by KTH on 2023/11/15. // Copyright © 2023 yongbeomkwak. All rights reserved. // import Foundation -public struct NewSongEntity: Equatable { +public struct NewSongsEntity: Equatable { public init( id: String, title: String, @@ -17,7 +17,8 @@ public struct NewSongEntity: Equatable { reaction: String, views: Int, last: Int, - date: Int + date: Int, + isSelected: Bool = false ) { self.id = id self.title = title @@ -27,10 +28,16 @@ public struct NewSongEntity: Equatable { self.views = views self.last = last self.date = date + self.isSelected = isSelected } public let id, title, artist, remix: String public let reaction: String public let views, last: Int public let date: Int + public var isSelected: Bool + + public static func == (lhs: NewSongsEntity, rhs: NewSongsEntity) -> Bool { + lhs.id == rhs.id + } } diff --git a/Projects/Services/DomainModule/Sources/Songs/Repository/SongsRepository.swift b/Projects/Services/DomainModule/Sources/Songs/Repository/SongsRepository.swift index 74cfd10cd..e3d37acc0 100644 --- a/Projects/Services/DomainModule/Sources/Songs/Repository/SongsRepository.swift +++ b/Projects/Services/DomainModule/Sources/Songs/Repository/SongsRepository.swift @@ -6,5 +6,5 @@ import Foundation public protocol SongsRepository { func fetchSearchSong(type: SearchType, keyword: String) -> Single<[SongEntity]> func fetchLyrics(id: String) -> Single<[LyricsEntity]> - func fetchNewSong(type: NewSongGroupType) -> Single<[NewSongEntity]> -} \ No newline at end of file + func fetchNewSongs(type: NewSongGroupType, page: Int, limit: Int) -> Single<[NewSongsEntity]> +} diff --git a/Projects/Services/DomainModule/Sources/Songs/UseCases/fetchNewSongUseCase.swift b/Projects/Services/DomainModule/Sources/Songs/UseCases/fetchNewSongUseCase.swift deleted file mode 100644 index 3136f7ece..000000000 --- a/Projects/Services/DomainModule/Sources/Songs/UseCases/fetchNewSongUseCase.swift +++ /dev/null @@ -1,16 +0,0 @@ -// -// fetchNewSongUseCase.swift -// DomainModule -// -// Created by KTH on 2023/02/20. -// Copyright © 2023 yongbeomkwak. All rights reserved. -// - -import Foundation -import DataMappingModule -import ErrorModule -import RxSwift - -public protocol FetchNewSongUseCase { - func execute(type: NewSongGroupType) -> Single<[NewSongEntity]> -} diff --git a/Projects/Services/DomainModule/Sources/Songs/UseCases/fetchNewSongsUseCase.swift b/Projects/Services/DomainModule/Sources/Songs/UseCases/fetchNewSongsUseCase.swift new file mode 100644 index 000000000..436091377 --- /dev/null +++ b/Projects/Services/DomainModule/Sources/Songs/UseCases/fetchNewSongsUseCase.swift @@ -0,0 +1,16 @@ +// +// fetchNewSongsUseCase.swift +// DomainModule +// +// Created by KTH on 2023/11/15. +// Copyright © 2023 yongbeomkwak. All rights reserved. +// + +import Foundation +import DataMappingModule +import ErrorModule +import RxSwift + +public protocol FetchNewSongsUseCase { + func execute(type: NewSongGroupType, page: Int, limit: Int) -> Single<[NewSongsEntity]> +} diff --git a/Projects/Services/NetworkModule/Sources/Songs/DataTransfer/FetchNewSongTransfer.swift b/Projects/Services/NetworkModule/Sources/Songs/DataTransfer/FetchNewSongsTransfer.swift similarity index 69% rename from Projects/Services/NetworkModule/Sources/Songs/DataTransfer/FetchNewSongTransfer.swift rename to Projects/Services/NetworkModule/Sources/Songs/DataTransfer/FetchNewSongsTransfer.swift index c1eae30be..5b452556d 100644 --- a/Projects/Services/NetworkModule/Sources/Songs/DataTransfer/FetchNewSongTransfer.swift +++ b/Projects/Services/NetworkModule/Sources/Songs/DataTransfer/FetchNewSongsTransfer.swift @@ -1,8 +1,8 @@ // -// FetchNewSongTransfer.swift +// FetchNewSongsTransfer.swift // NetworkModule // -// Created by KTH on 2023/02/20. +// Created by KTH on 2023/11/15. // Copyright © 2023 yongbeomkwak. All rights reserved. // @@ -10,9 +10,9 @@ import DataMappingModule import DomainModule import Utility -public extension NewSongResponseDTO { - func toDomain() -> NewSongEntity { - NewSongEntity( +public extension NewSongsResponseDTO { + func toDomain() -> NewSongsEntity { + return NewSongsEntity( id: id, title: title, artist: artist, diff --git a/Projects/Services/NetworkModule/Sources/Songs/Remote/RemoteSongsDataSource.swift b/Projects/Services/NetworkModule/Sources/Songs/Remote/RemoteSongsDataSource.swift index 02d54e052..16abc2edd 100644 --- a/Projects/Services/NetworkModule/Sources/Songs/Remote/RemoteSongsDataSource.swift +++ b/Projects/Services/NetworkModule/Sources/Songs/Remote/RemoteSongsDataSource.swift @@ -6,6 +6,6 @@ import Foundation public protocol RemoteSongsDataSource { func fetchSearchSong(type: SearchType,keyword: String) -> Single<[SongEntity]> - func fetchNewSong(type: NewSongGroupType) -> Single<[NewSongEntity]> func fetchLyrics(id: String) -> Single<[LyricsEntity]> + func fetchNewSongs(type: NewSongGroupType, page: Int, limit: Int) -> Single<[NewSongsEntity]> } diff --git a/Projects/Services/NetworkModule/Sources/Songs/Remote/RemoteSongsDataSourceImpl.swift b/Projects/Services/NetworkModule/Sources/Songs/Remote/RemoteSongsDataSourceImpl.swift index 3ffabb42c..99643fe8d 100644 --- a/Projects/Services/NetworkModule/Sources/Songs/Remote/RemoteSongsDataSourceImpl.swift +++ b/Projects/Services/NetworkModule/Sources/Songs/Remote/RemoteSongsDataSourceImpl.swift @@ -13,15 +13,15 @@ public final class RemoteSongsDataSourceImpl: BaseRemoteDataSource, Re .map{$0.map{$0.toDomain()}} } - public func fetchNewSong(type: NewSongGroupType) -> Single<[NewSongEntity]> { - request(.fetchNewSong(type: type)) - .map([NewSongResponseDTO].self) - .map{$0.map{$0.toDomain()}} - } - public func fetchLyrics(id: String) -> Single<[LyricsEntity]> { request(.fetchLyrics(id: id)) .map([LyricsResponseDTO].self) .map{$0.map{$0.toDomain()}} } + + public func fetchNewSongs(type: NewSongGroupType, page: Int, limit: Int) -> Single<[NewSongsEntity]> { + request(.fetchNewSongs(type: type, page: page, limit: limit)) + .map([NewSongsResponseDTO].self) + .map{$0.map{$0.toDomain()}} + } } diff --git a/Tuist/ProjectDescriptionHelpers/Environment.swift b/Tuist/ProjectDescriptionHelpers/Environment.swift index edd02266e..f03a89a63 100644 --- a/Tuist/ProjectDescriptionHelpers/Environment.swift +++ b/Tuist/ProjectDescriptionHelpers/Environment.swift @@ -9,8 +9,8 @@ public enum Environment { public static let deploymentTarget: DeploymentTarget = .iOS(targetVersion: "14.0", devices: [.iphone]) public static let platform = Platform.iOS public static let baseSetting: SettingsDictionary = SettingsDictionary() - .marketingVersion("2.0.3") - .currentProjectVersion("1") + .marketingVersion("2.1.0") + .currentProjectVersion("0") .debugInformationFormat(DebugInformationFormat.dwarfWithDsym) .otherLinkerFlags(["-ObjC"]) .bitcodeEnabled(false)