├── .editorConfig ├── .github ├── ISSUE_TEMPLATE.md └── workflows │ └── tests.yml ├── .gitignore ├── .jazzy.yml ├── .swiftlint.yml ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Dangerfile ├── Documentation ├── ComparisonWithOtherLibraries.md ├── DesignRationale.md ├── ExampleApp.md ├── Examples.md ├── GettingStarted.md ├── HotAndColdObservables.md ├── MathBehindRx.md ├── NewFeatureRequestTemplate.md ├── Playgrounds.md ├── Schedulers.md ├── Subjects.md ├── SwiftConcurrency.md ├── Tips.md ├── Traits.md ├── UnitTests.md ├── Warnings.md └── Why.md ├── Gemfile ├── Gemfile.lock ├── LICENSE.md ├── Package.swift ├── Package@swift-5.9.swift ├── Platform ├── AtomicInt.swift ├── DataStructures │ ├── Bag.swift │ ├── InfiniteSequence.swift │ ├── PriorityQueue.swift │ └── Queue.swift ├── DispatchQueue+Extensions.swift ├── Platform.Darwin.swift ├── Platform.Linux.swift └── RecursiveLock.swift ├── Preprocessor ├── Preprocessor.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── Preprocessor.xcscheme ├── Preprocessor │ └── main.swift └── README.md ├── README.md ├── Rx.playground ├── Pages │ ├── Combining_Operators.xcplaygroundpage │ │ └── Contents.swift │ ├── Connectable_Operators.xcplaygroundpage │ │ └── Contents.swift │ ├── Creating_and_Subscribing_to_Observables.xcplaygroundpage │ │ └── Contents.swift │ ├── Debugging_Operators.xcplaygroundpage │ │ └── Contents.swift │ ├── Enable_RxSwift.Resources.total.xcplaygroundpage │ │ └── Contents.swift │ ├── Error_Handling_Operators.xcplaygroundpage │ │ └── Contents.swift │ ├── Filtering_and_Conditional_Operators.xcplaygroundpage │ │ └── Contents.swift │ ├── Introduction.xcplaygroundpage │ │ └── Contents.swift │ ├── Mathematical_and_Aggregate_Operators.xcplaygroundpage │ │ └── Contents.swift │ ├── Table_of_Contents.xcplaygroundpage │ │ └── Contents.swift │ ├── Transforming_Operators.xcplaygroundpage │ │ └── Contents.swift │ ├── TryYourself.xcplaygroundpage │ │ └── Contents.swift │ └── Working_with_Subjects.xcplaygroundpage │ │ └── Contents.swift ├── Sources │ └── SupportCode.swift ├── SupportCode.remap ├── contents.xcplayground └── playground.xcworkspace │ └── contents.xcworkspacedata ├── Rx.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── xcshareddata │ ├── xcbaselines │ └── C8E8BA541E2C181A00A4AC2C.xcbaseline │ │ ├── 91761072-433E-43DC-A058-545FB88C59EC.plist │ │ ├── 996C445D-86F0-429E-92A9-44EBD3769290.plist │ │ ├── B553A9F9-C6F1-4009-9BDC-AC42F9D31E38.plist │ │ └── Info.plist │ └── xcschemes │ ├── AllTests-iOS.xcscheme │ ├── AllTests-macOS.xcscheme │ ├── AllTests-tvOS.xcscheme │ ├── RxBlocking.xcscheme │ ├── RxCocoa.xcscheme │ ├── RxRelay.xcscheme │ ├── RxSwift.xcscheme │ └── RxTest.xcscheme ├── Rx.xcworkspace ├── contents.xcworkspacedata └── xcshareddata │ └── IDEWorkspaceChecks.plist ├── RxBlocking.podspec ├── RxBlocking ├── BlockingObservable+Operators.swift ├── BlockingObservable.swift ├── Info.plist ├── ObservableConvertibleType+Blocking.swift ├── Platform │ ├── AtomicInt.swift │ ├── Platform.Darwin.swift │ ├── Platform.Linux.swift │ └── RecursiveLock.swift ├── README.md ├── Resources.swift └── RunLoopLock.swift ├── RxCocoa.podspec ├── RxCocoa ├── Common │ ├── ControlTarget.swift │ ├── DelegateProxy.swift │ ├── DelegateProxyType.swift │ ├── Infallible+Bind.swift │ ├── Observable+Bind.swift │ ├── RxCocoaObjCRuntimeError+Extensions.swift │ ├── RxTarget.swift │ ├── SectionedViewDataSourceType.swift │ └── TextInput.swift ├── Foundation │ ├── KVORepresentable+CoreGraphics.swift │ ├── KVORepresentable+Swift.swift │ ├── KVORepresentable.swift │ ├── NSObject+Rx+KVORepresentable.swift │ ├── NSObject+Rx+RawRepresentable.swift │ ├── NSObject+Rx.swift │ ├── NotificationCenter+Rx.swift │ └── URLSession+Rx.swift ├── Info.plist ├── Platform │ └── DispatchQueue+Extensions.swift ├── Runtime │ ├── _RX.m │ ├── _RXDelegateProxy.m │ ├── _RXKVOObserver.m │ ├── _RXObjCRuntime.m │ └── include │ │ ├── RxCocoaRuntime.h │ │ ├── _RX.h │ │ ├── _RXDelegateProxy.h │ │ ├── _RXKVOObserver.h │ │ └── _RXObjCRuntime.h ├── RxCocoa.h ├── RxCocoa.swift ├── Traits │ ├── ControlEvent.swift │ ├── ControlProperty.swift │ ├── Driver │ │ ├── BehaviorRelay+Driver.swift │ │ ├── ControlEvent+Driver.swift │ │ ├── ControlProperty+Driver.swift │ │ ├── Driver+Subscription.swift │ │ ├── Driver.swift │ │ ├── Infallible+Driver.swift │ │ └── ObservableConvertibleType+Driver.swift │ ├── SharedSequence │ │ ├── ObservableConvertibleType+SharedSequence.swift │ │ ├── SchedulerType+SharedSequence.swift │ │ ├── SharedSequence+Concurrency.swift │ │ ├── SharedSequence+Operators+arity.swift │ │ ├── SharedSequence+Operators+arity.tt │ │ ├── SharedSequence+Operators.swift │ │ └── SharedSequence.swift │ └── Signal │ │ ├── ControlEvent+Signal.swift │ │ ├── ObservableConvertibleType+Signal.swift │ │ ├── PublishRelay+Signal.swift │ │ ├── Signal+Subscription.swift │ │ └── Signal.swift ├── iOS │ ├── DataSources │ │ ├── RxCollectionViewReactiveArrayDataSource.swift │ │ ├── RxPickerViewAdapter.swift │ │ └── RxTableViewReactiveArrayDataSource.swift │ ├── Events │ │ └── ItemEvents.swift │ ├── NSTextStorage+Rx.swift │ ├── Protocols │ │ ├── RxCollectionViewDataSourceType.swift │ │ ├── RxPickerViewDataSourceType.swift │ │ └── RxTableViewDataSourceType.swift │ ├── Proxies │ │ ├── RxCollectionViewDataSourcePrefetchingProxy.swift │ │ ├── RxCollectionViewDataSourceProxy.swift │ │ ├── RxCollectionViewDelegateProxy.swift │ │ ├── RxNavigationControllerDelegateProxy.swift │ │ ├── RxPickerViewDataSourceProxy.swift │ │ ├── RxPickerViewDelegateProxy.swift │ │ ├── RxScrollViewDelegateProxy.swift │ │ ├── RxSearchBarDelegateProxy.swift │ │ ├── RxSearchControllerDelegateProxy.swift │ │ ├── RxTabBarControllerDelegateProxy.swift │ │ ├── RxTabBarDelegateProxy.swift │ │ ├── RxTableViewDataSourcePrefetchingProxy.swift │ │ ├── RxTableViewDataSourceProxy.swift │ │ ├── RxTableViewDelegateProxy.swift │ │ ├── RxTextStorageDelegateProxy.swift │ │ ├── RxTextViewDelegateProxy.swift │ │ └── RxWKNavigationDelegateProxy.swift │ ├── UIActivityIndicatorView+Rx.swift │ ├── UIApplication+Rx.swift │ ├── UIBarButtonItem+Rx.swift │ ├── UIButton+Rx.swift │ ├── UICollectionView+Rx.swift │ ├── UIControl+Rx.swift │ ├── UIDatePicker+Rx.swift │ ├── UIGestureRecognizer+Rx.swift │ ├── UINavigationController+Rx.swift │ ├── UIPickerView+Rx.swift │ ├── UIRefreshControl+Rx.swift │ ├── UIScrollView+Rx.swift │ ├── UISearchBar+Rx.swift │ ├── UISearchController+Rx.swift │ ├── UISegmentedControl+Rx.swift │ ├── UISlider+Rx.swift │ ├── UIStepper+Rx.swift │ ├── UISwitch+Rx.swift │ ├── UITabBar+Rx.swift │ ├── UITabBarController+Rx.swift │ ├── UITableView+Rx.swift │ ├── UITextField+Rx.swift │ ├── UITextView+Rx.swift │ └── WKWebView+Rx.swift └── macOS │ ├── NSButton+Rx.swift │ ├── NSControl+Rx.swift │ ├── NSSlider+Rx.swift │ ├── NSTextField+Rx.swift │ ├── NSTextView+Rx.swift │ └── NSView+Rx.swift ├── RxExample ├── Extensions │ ├── CLLocationManager+Rx.swift │ ├── RxCLLocationManagerDelegateProxy.swift │ ├── RxImagePickerDelegateProxy.swift │ └── UIImagePickerController+Rx.swift ├── Playgrounds │ ├── Info.plist │ └── RxPlaygrounds.swift ├── RxDataSources │ ├── Differentiator │ │ ├── AnimatableSectionModel.swift │ │ ├── AnimatableSectionModelType+ItemPath.swift │ │ ├── AnimatableSectionModelType.swift │ │ ├── Changeset.swift │ │ ├── Diff.swift │ │ ├── Differentiator.h │ │ ├── IdentifiableType.swift │ │ ├── IdentifiableValue.swift │ │ ├── Info.plist │ │ ├── ItemPath.swift │ │ ├── Optional+Extensions.swift │ │ ├── SectionModel.swift │ │ ├── SectionModelType.swift │ │ └── Utilities.swift │ ├── README.md │ └── RxDataSources │ │ ├── AnimationConfiguration.swift │ │ ├── Array+Extensions.swift │ │ ├── CollectionViewSectionedDataSource.swift │ │ ├── DataSources.swift │ │ ├── Deprecated.swift │ │ ├── FloatingPointType+IdentifiableType.swift │ │ ├── Info.plist │ │ ├── IntegerType+IdentifiableType.swift │ │ ├── RxCollectionViewSectionedAnimatedDataSource.swift │ │ ├── RxCollectionViewSectionedReloadDataSource.swift │ │ ├── RxDataSources.h │ │ ├── RxPickerViewAdapter.swift │ │ ├── RxTableViewSectionedAnimatedDataSource.swift │ │ ├── RxTableViewSectionedReloadDataSource.swift │ │ ├── String+IdentifiableType.swift │ │ ├── TableViewSectionedDataSource.swift │ │ └── UI+SectionedViewType.swift ├── RxExample-iOSTests │ ├── CLLocationManager+RxTests.swift │ ├── Info.plist │ ├── Mocks │ │ ├── MockGitHubAPI.swift │ │ ├── MockWireframe.swift │ │ ├── NotImplementedStubs.swift │ │ └── ValidationResult+Equatable.swift │ ├── RxExample_iOSTests.swift │ ├── RxTest.swift │ ├── TestScheduler+MarbleTests.swift │ └── UIImagePickerController+RxTests.swift ├── RxExample-iOSUITests │ ├── FlowTests.swift │ └── Info.plist ├── RxExample-macOSUITests │ ├── Info.plist │ └── RxExample_macOSUITests.swift ├── RxExample.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ ├── RxExample-iOS.xcscheme │ │ ├── RxExample-iOSTests.xcscheme │ │ ├── RxExample-iOSUITests.xcscheme │ │ ├── RxExample-macOS.xcscheme │ │ └── RxExample-macOSUITests.xcscheme └── RxExample │ ├── Application+Extensions.swift │ ├── Example.swift │ ├── Examples │ ├── APIWrappers │ │ ├── APIWrappers.storyboard │ │ └── APIWrappersViewController.swift │ ├── Calculator │ │ ├── Calculator.storyboard │ │ ├── Calculator.swift │ │ └── CalculatorViewController.swift │ ├── Dependencies.swift │ ├── GeolocationExample │ │ ├── Geolocation.storyboard │ │ └── GeolocationViewController.swift │ ├── GitHubSearchRepositories │ │ ├── GitHubSearchRepositories.storyboard │ │ ├── GitHubSearchRepositories.swift │ │ ├── GitHubSearchRepositoriesAPI.swift │ │ ├── GitHubSearchRepositoriesViewController.swift │ │ └── UINavigationController+Extensions.swift │ ├── GitHubSignup │ │ ├── BindingExtensions.swift │ │ ├── DefaultImplementations.swift │ │ ├── GitHubSignup1.storyboard │ │ ├── GitHubSignup2.storyboard │ │ ├── Protocols.swift │ │ ├── UsingDriver │ │ │ ├── GitHubSignupViewController2.swift │ │ │ └── GithubSignupViewModel2.swift │ │ └── UsingVanillaObservables │ │ │ ├── GitHubSignupViewController1.swift │ │ │ └── GithubSignupViewModel1.swift │ ├── ImagePicker │ │ ├── ImagePicker.storyboard │ │ ├── ImagePickerController.swift │ │ └── UIImagePickerController+RxCreate.swift │ ├── Numbers │ │ ├── Numbers.storyboard │ │ └── NumbersViewController.swift │ ├── SimpleTableViewExample │ │ ├── SimpleTableViewExample.storyboard │ │ └── SimpleTableViewExampleViewController.swift │ ├── SimpleTableViewExampleSectioned │ │ ├── SimpleTableViewExampleSectioned.storyboard │ │ └── SimpleTableViewExampleSectionedViewController.swift │ ├── SimpleValidation │ │ ├── SimpleValidation.storyboard │ │ └── SimpleValidationViewController.swift │ ├── TableViewPartialUpdates │ │ ├── NumberCell.swift │ │ ├── NumberSectionView.swift │ │ ├── PartialUpdates.storyboard │ │ └── PartialUpdatesViewController.swift │ ├── TableViewWithEditingCommands │ │ ├── DetailViewController.swift │ │ ├── RandomUserAPI.swift │ │ ├── TableViewWithEditingCommands.storyboard │ │ ├── TableViewWithEditingCommandsViewController.swift │ │ ├── UIImageView+Extensions.swift │ │ └── User.swift │ ├── UIPickerViewExample │ │ ├── CustomPickerViewAdapterExampleViewController.swift │ │ ├── SimplePickerViewExampleViewController.swift │ │ └── SimpleUIPickerViewExample.storyboard │ ├── WikipediaImageSearch │ │ ├── ViewModels │ │ │ └── SearchResultViewModel.swift │ │ ├── Views │ │ │ ├── CollectionViewImageCell.swift │ │ │ ├── WikipediaImageCell.xib │ │ │ ├── WikipediaSearchCell.swift │ │ │ ├── WikipediaSearchCell.xib │ │ │ └── WikipediaSearchViewController.swift │ │ ├── WikipediaAPI │ │ │ ├── WikipediaAPI.swift │ │ │ ├── WikipediaPage.swift │ │ │ └── WikipediaSearchResult.swift │ │ └── WikipediaSearch.storyboard │ └── macOS simple example │ │ └── IntroductionExampleViewController.swift │ ├── Feedbacks.swift │ ├── Images.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── Icon-40.png │ │ ├── Icon-40@2x-1.png │ │ ├── Icon-40@2x.png │ │ ├── Icon-60@2x-1.png │ │ ├── Icon-60@2x.png │ │ ├── Icon-60@3x.png │ │ ├── Icon-76.png │ │ ├── Icon-76@2x.png │ │ ├── Icon-Small.png │ │ ├── Icon-Small@2x-1.png │ │ ├── Icon-Small@3x.png │ │ ├── Rx_Logo-iPad.png │ │ ├── Rx_Logo_L.png │ │ └── Rx_Logo_M.png │ └── ReactiveExtensionsLogo.imageset │ │ ├── Contents.json │ │ ├── ReactiveExtensionsLogo-2.png │ │ └── ReactiveExtensionsLogo.png │ ├── Info-iOS.plist │ ├── Info-macOS.plist │ ├── Lenses.swift │ ├── Observable+Extensions.swift │ ├── Operators.swift │ ├── RxExample.xcdatamodeld │ ├── .xccurrentversion │ └── RxExample.xcdatamodel │ │ └── contents │ ├── Services │ ├── ActivityIndicator.swift │ ├── DownloadableImage.swift │ ├── GeolocationService.swift │ ├── HtmlParsing.swift │ ├── ImageService.swift │ ├── PseudoRandomGenerator.swift │ ├── Randomizer.swift │ ├── Reachability.swift │ ├── ReachabilityService.swift │ ├── UIImage+Extensions.swift │ ├── UIImageView+DownloadableImage.swift │ └── Wireframe.swift │ ├── String+URL.swift │ ├── Version.swift │ ├── ViewController.swift │ ├── iOS │ ├── AppDelegate.swift │ ├── BaseNavigationController.swift │ ├── LaunchScreen.xib │ ├── Main.storyboard │ ├── RootViewController.swift │ └── UITableView+Extensions.swift │ └── macOS │ ├── AppDelegate.swift │ └── Main.storyboard ├── RxRelay.podspec ├── RxRelay ├── BehaviorRelay.swift ├── Info.plist ├── Observable+Bind.swift ├── PublishRelay.swift ├── ReplayRelay.swift └── Utils.swift ├── RxSwift.podspec ├── RxSwift ├── AnyObserver.swift ├── Binder.swift ├── Cancelable.swift ├── Concurrency │ ├── AsyncLock.swift │ ├── Lock.swift │ ├── LockOwnerType.swift │ ├── SynchronizedDisposeType.swift │ ├── SynchronizedOnType.swift │ └── SynchronizedUnsubscribeType.swift ├── ConnectableObservableType.swift ├── Date+Dispatch.swift ├── Disposable.swift ├── Disposables │ ├── AnonymousDisposable.swift │ ├── BinaryDisposable.swift │ ├── BooleanDisposable.swift │ ├── CompositeDisposable.swift │ ├── Disposables.swift │ ├── DisposeBag.swift │ ├── DisposeBase.swift │ ├── NopDisposable.swift │ ├── RefCountDisposable.swift │ ├── ScheduledDisposable.swift │ ├── SerialDisposable.swift │ ├── SingleAssignmentDisposable.swift │ └── SubscriptionDisposable.swift ├── Errors.swift ├── Event.swift ├── Extensions │ └── Bag+Rx.swift ├── GroupedObservable.swift ├── ImmediateSchedulerType.swift ├── Info.plist ├── Observable+Concurrency.swift ├── Observable.swift ├── ObservableConvertibleType.swift ├── ObservableType+Extensions.swift ├── ObservableType.swift ├── Observables │ ├── AddRef.swift │ ├── Amb.swift │ ├── AsMaybe.swift │ ├── AsSingle.swift │ ├── Buffer.swift │ ├── Catch.swift │ ├── CombineLatest+Collection.swift │ ├── CombineLatest+arity.swift │ ├── CombineLatest+arity.tt │ ├── CombineLatest.swift │ ├── CompactMap.swift │ ├── Concat.swift │ ├── Create.swift │ ├── Debounce.swift │ ├── Debug.swift │ ├── Decode.swift │ ├── DefaultIfEmpty.swift │ ├── Deferred.swift │ ├── Delay.swift │ ├── DelaySubscription.swift │ ├── Dematerialize.swift │ ├── DistinctUntilChanged.swift │ ├── Do.swift │ ├── ElementAt.swift │ ├── Empty.swift │ ├── Enumerated.swift │ ├── Error.swift │ ├── Filter.swift │ ├── First.swift │ ├── Generate.swift │ ├── GroupBy.swift │ ├── Just.swift │ ├── Map.swift │ ├── Materialize.swift │ ├── Merge.swift │ ├── Multicast.swift │ ├── Never.swift │ ├── ObserveOn.swift │ ├── Optional.swift │ ├── Producer.swift │ ├── Range.swift │ ├── Reduce.swift │ ├── Repeat.swift │ ├── RetryWhen.swift │ ├── Sample.swift │ ├── Scan.swift │ ├── Sequence.swift │ ├── ShareReplayScope.swift │ ├── SingleAsync.swift │ ├── Sink.swift │ ├── Skip.swift │ ├── SkipUntil.swift │ ├── SkipWhile.swift │ ├── StartWith.swift │ ├── SubscribeOn.swift │ ├── Switch.swift │ ├── SwitchIfEmpty.swift │ ├── Take.swift │ ├── TakeLast.swift │ ├── TakeWithPredicate.swift │ ├── Throttle.swift │ ├── Timeout.swift │ ├── Timer.swift │ ├── ToArray.swift │ ├── Using.swift │ ├── Window.swift │ ├── WithLatestFrom.swift │ ├── WithUnretained.swift │ ├── Zip+Collection.swift │ ├── Zip+arity.swift │ ├── Zip+arity.tt │ └── Zip.swift ├── ObserverType.swift ├── Observers │ ├── AnonymousObserver.swift │ ├── ObserverBase.swift │ └── TailRecursiveSink.swift ├── Platform │ ├── AtomicInt.swift │ ├── DataStructures │ │ ├── Bag.swift │ │ ├── InfiniteSequence.swift │ │ ├── PriorityQueue.swift │ │ └── Queue.swift │ ├── DispatchQueue+Extensions.swift │ ├── Platform.Darwin.swift │ ├── Platform.Linux.swift │ └── RecursiveLock.swift ├── Reactive.swift ├── Rx.swift ├── RxMutableBox.swift ├── SchedulerType.swift ├── Schedulers │ ├── ConcurrentDispatchQueueScheduler.swift │ ├── ConcurrentMainScheduler.swift │ ├── CurrentThreadScheduler.swift │ ├── HistoricalScheduler.swift │ ├── HistoricalSchedulerTimeConverter.swift │ ├── Internal │ │ ├── DispatchQueueConfiguration.swift │ │ ├── InvocableScheduledItem.swift │ │ ├── InvocableType.swift │ │ ├── ScheduledItem.swift │ │ └── ScheduledItemType.swift │ ├── MainScheduler.swift │ ├── OperationQueueScheduler.swift │ ├── RecursiveScheduler.swift │ ├── SchedulerServices+Emulation.swift │ ├── SerialDispatchQueueScheduler.swift │ ├── VirtualTimeConverterType.swift │ └── VirtualTimeScheduler.swift ├── Subjects │ ├── AsyncSubject.swift │ ├── BehaviorSubject.swift │ ├── PublishSubject.swift │ ├── ReplaySubject.swift │ └── SubjectType.swift ├── SwiftSupport │ └── SwiftSupport.swift └── Traits │ ├── Infallible │ ├── Infallible+CombineLatest+Collection.swift │ ├── Infallible+CombineLatest+arity.swift │ ├── Infallible+CombineLatest+arity.tt │ ├── Infallible+Concurrency.swift │ ├── Infallible+Create.swift │ ├── Infallible+Debug.swift │ ├── Infallible+Operators.swift │ ├── Infallible+Zip+arity.swift │ ├── Infallible+Zip+arity.tt │ ├── Infallible.swift │ └── ObservableConvertibleType+Infallible.swift │ └── PrimitiveSequence │ ├── Completable+AndThen.swift │ ├── Completable.swift │ ├── Maybe.swift │ ├── ObservableType+PrimitiveSequence.swift │ ├── PrimitiveSequence+Concurrency.swift │ ├── PrimitiveSequence+Zip+arity.swift │ ├── PrimitiveSequence+Zip+arity.tt │ ├── PrimitiveSequence.swift │ └── Single.swift ├── RxTest.podspec ├── RxTest ├── Any+Equatable.swift ├── ColdObservable.swift ├── Event+Equatable.swift ├── HotObservable.swift ├── Info.plist ├── Platform │ └── DataStructures │ │ └── Bag.swift ├── Recorded+Event.swift ├── Recorded.swift ├── RxTest.swift ├── Schedulers │ ├── TestScheduler.swift │ └── TestSchedulerVirtualTimeConverter.swift ├── Subscription.swift ├── TestableObservable.swift ├── TestableObserver.swift └── XCTest+Rx.swift ├── Sources ├── AllTestz │ ├── Anomalies.swift │ ├── AssumptionsTest.swift │ ├── AsyncSubjectTests.swift │ ├── Atomic+Overrides.swift │ ├── AtomicInt.swift │ ├── AtomicTests.swift │ ├── BackgroundThreadPrimitiveHotObservable.swift │ ├── Bag.swift │ ├── BehaviorSubjectTest.swift │ ├── Binder+Tests.swift │ ├── Completable+AndThen.swift │ ├── CompletableTest.swift │ ├── CurrentThreadSchedulerTest.swift │ ├── DispatchQueue+Extensions.swift │ ├── DisposableTest.swift │ ├── DisposeBagTest.swift │ ├── Driver+Test.swift │ ├── ElementIndexPair.swift │ ├── EquatableArray.swift │ ├── Event+Test.swift │ ├── HistoricalSchedulerTest.swift │ ├── Infallible+CombineLatestTests+arity.swift │ ├── Infallible+ConcurrencyTests.swift │ ├── Infallible+Tests.swift │ ├── InfiniteSequence.swift │ ├── MainSchedulerTests.swift │ ├── MainThreadPrimitiveHotObservable.swift │ ├── MaybeTest.swift │ ├── MockDisposable.swift │ ├── MySubject.swift │ ├── NotificationCenterTests.swift │ ├── Observable+AmbTests.swift │ ├── Observable+BlockingTest.swift │ ├── Observable+BufferTests.swift │ ├── Observable+CatchTests.swift │ ├── Observable+CombineLatestTests+arity.swift │ ├── Observable+CombineLatestTests.swift │ ├── Observable+CompactMapTests.swift │ ├── Observable+ConcatTests.swift │ ├── Observable+ConcurrencyTests.swift │ ├── Observable+DebugTests.swift │ ├── Observable+DecodeTests.swift │ ├── Observable+DefaultIfEmpty.swift │ ├── Observable+DelaySubscriptionTests.swift │ ├── Observable+DelayTests.swift │ ├── Observable+DematerializeTests.swift │ ├── Observable+DistinctUntilChangedTests.swift │ ├── Observable+DoOnTests.swift │ ├── Observable+ElementAtTests.swift │ ├── Observable+EnumeratedTests.swift │ ├── Observable+Extensions.swift │ ├── Observable+FilterTests.swift │ ├── Observable+GenerateTests.swift │ ├── Observable+GroupByTests.swift │ ├── Observable+JustTests.swift │ ├── Observable+MapTests.swift │ ├── Observable+MaterializeTests.swift │ ├── Observable+MergeTests.swift │ ├── Observable+MulticastTests.swift │ ├── Observable+ObserveOnTests.swift │ ├── Observable+OptionalTests.swift │ ├── Observable+PrimitiveSequenceTest.swift │ ├── Observable+RangeTests.swift │ ├── Observable+ReduceTests.swift │ ├── Observable+RelayBindTests.swift │ ├── Observable+RepeatTests.swift │ ├── Observable+RetryWhenTests.swift │ ├── Observable+SampleTests.swift │ ├── Observable+ScanTests.swift │ ├── Observable+SequenceTests.swift │ ├── Observable+ShareReplayScopeTests.swift │ ├── Observable+SingleTests.swift │ ├── Observable+SkipTests.swift │ ├── Observable+SkipUntilTests.swift │ ├── Observable+SkipWhileTests.swift │ ├── Observable+SubscribeOnTests.swift │ ├── Observable+SubscriptionTest.swift │ ├── Observable+SwitchIfEmptyTests.swift │ ├── Observable+SwitchTests.swift │ ├── Observable+TakeLastTests.swift │ ├── Observable+TakeTests.swift │ ├── Observable+TakeUntilTests.swift │ ├── Observable+TakeWhileTests.swift │ ├── Observable+Tests.swift │ ├── Observable+ThrottleTests.swift │ ├── Observable+TimeoutTests.swift │ ├── Observable+TimerTests.swift │ ├── Observable+ToArrayTests.swift │ ├── Observable+UsingTests.swift │ ├── Observable+WindowTests.swift │ ├── Observable+WithLatestFromTests.swift │ ├── Observable+WithUnretainedTests.swift │ ├── Observable+ZipTests+arity.swift │ ├── Observable+ZipTests.swift │ ├── Observable.Extensions.swift │ ├── ObservableType+SubscriptionTests.swift │ ├── ObserverTests.swift │ ├── Platform.Darwin.swift │ ├── Platform.Linux.swift │ ├── PrimitiveHotObservable.swift │ ├── PrimitiveMockObserver.swift │ ├── PrimitiveSequence+ConcurrencyTests.swift │ ├── PrimitiveSequenceTest+zip+arity.swift │ ├── PriorityQueue.swift │ ├── PublishSubjectTest.swift │ ├── Queue.swift │ ├── Reactive+Tests.swift │ ├── Recorded+Timeless.swift │ ├── RecursiveLock.swift │ ├── RecursiveLockTest.swift │ ├── ReplayRelayTests.swift │ ├── ReplaySubjectTest.swift │ ├── RxMutableBox.swift │ ├── RxTest.swift │ ├── SchedulerTests.swift │ ├── SharedSequence+Extensions.swift │ ├── SharedSequence+OperatorTest.swift │ ├── SharedSequence+Test.swift │ ├── SharingSchedulerTests.swift │ ├── Signal+Test.swift │ ├── SingleTest.swift │ ├── Synchronized.swift │ ├── TestConnectableObservable.swift │ ├── TestErrors.swift │ ├── TestVirtualScheduler.swift │ ├── VirtualSchedulerTest.swift │ ├── XCTest+AllTests.swift │ └── main.swift ├── RxBlocking │ ├── AtomicInt.swift │ ├── BlockingObservable+Operators.swift │ ├── BlockingObservable.swift │ ├── ObservableConvertibleType+Blocking.swift │ ├── Platform.Darwin.swift │ ├── Platform.Linux.swift │ ├── RecursiveLock.swift │ ├── Resources.swift │ └── RunLoopLock.swift ├── RxCocoa │ ├── BehaviorRelay+Driver.swift │ ├── ControlEvent+Driver.swift │ ├── ControlEvent+Signal.swift │ ├── ControlEvent.swift │ ├── ControlProperty+Driver.swift │ ├── ControlProperty.swift │ ├── ControlTarget.swift │ ├── DelegateProxy.swift │ ├── DelegateProxyType.swift │ ├── DispatchQueue+Extensions.swift │ ├── Driver+Subscription.swift │ ├── Driver.swift │ ├── Infallible+Bind.swift │ ├── Infallible+Driver.swift │ ├── ItemEvents.swift │ ├── KVORepresentable+CoreGraphics.swift │ ├── KVORepresentable+Swift.swift │ ├── KVORepresentable.swift │ ├── NSButton+Rx.swift │ ├── NSControl+Rx.swift │ ├── NSObject+Rx+KVORepresentable.swift │ ├── NSObject+Rx+RawRepresentable.swift │ ├── NSObject+Rx.swift │ ├── NSSlider+Rx.swift │ ├── NSTextField+Rx.swift │ ├── NSTextStorage+Rx.swift │ ├── NSTextView+Rx.swift │ ├── NSView+Rx.swift │ ├── NotificationCenter+Rx.swift │ ├── Observable+Bind.swift │ ├── ObservableConvertibleType+Driver.swift │ ├── ObservableConvertibleType+SharedSequence.swift │ ├── ObservableConvertibleType+Signal.swift │ ├── PrivacyInfo.xcprivacy │ ├── PublishRelay+Signal.swift │ ├── RxCocoa.swift │ ├── RxCocoaObjCRuntimeError+Extensions.swift │ ├── RxCollectionViewDataSourcePrefetchingProxy.swift │ ├── RxCollectionViewDataSourceProxy.swift │ ├── RxCollectionViewDataSourceType.swift │ ├── RxCollectionViewDelegateProxy.swift │ ├── RxCollectionViewReactiveArrayDataSource.swift │ ├── RxNavigationControllerDelegateProxy.swift │ ├── RxPickerViewAdapter.swift │ ├── RxPickerViewDataSourceProxy.swift │ ├── RxPickerViewDataSourceType.swift │ ├── RxPickerViewDelegateProxy.swift │ ├── RxScrollViewDelegateProxy.swift │ ├── RxSearchBarDelegateProxy.swift │ ├── RxSearchControllerDelegateProxy.swift │ ├── RxTabBarControllerDelegateProxy.swift │ ├── RxTabBarDelegateProxy.swift │ ├── RxTableViewDataSourcePrefetchingProxy.swift │ ├── RxTableViewDataSourceProxy.swift │ ├── RxTableViewDataSourceType.swift │ ├── RxTableViewDelegateProxy.swift │ ├── RxTableViewReactiveArrayDataSource.swift │ ├── RxTarget.swift │ ├── RxTextStorageDelegateProxy.swift │ ├── RxTextViewDelegateProxy.swift │ ├── RxWKNavigationDelegateProxy.swift │ ├── SchedulerType+SharedSequence.swift │ ├── SectionedViewDataSourceType.swift │ ├── SharedSequence+Concurrency.swift │ ├── SharedSequence+Operators+arity.swift │ ├── SharedSequence+Operators.swift │ ├── SharedSequence.swift │ ├── Signal+Subscription.swift │ ├── Signal.swift │ ├── TextInput.swift │ ├── UIActivityIndicatorView+Rx.swift │ ├── UIApplication+Rx.swift │ ├── UIBarButtonItem+Rx.swift │ ├── UIButton+Rx.swift │ ├── UICollectionView+Rx.swift │ ├── UIControl+Rx.swift │ ├── UIDatePicker+Rx.swift │ ├── UIGestureRecognizer+Rx.swift │ ├── UINavigationController+Rx.swift │ ├── UIPickerView+Rx.swift │ ├── UIRefreshControl+Rx.swift │ ├── UIScrollView+Rx.swift │ ├── UISearchBar+Rx.swift │ ├── UISearchController+Rx.swift │ ├── UISegmentedControl+Rx.swift │ ├── UISlider+Rx.swift │ ├── UIStepper+Rx.swift │ ├── UISwitch+Rx.swift │ ├── UITabBar+Rx.swift │ ├── UITabBarController+Rx.swift │ ├── UITableView+Rx.swift │ ├── UITextField+Rx.swift │ ├── UITextView+Rx.swift │ ├── URLSession+Rx.swift │ └── WKWebView+Rx.swift ├── RxCocoaRuntime │ ├── PrivacyInfo.xcprivacy │ ├── _RX.m │ ├── _RXDelegateProxy.m │ ├── _RXKVOObserver.m │ ├── _RXObjCRuntime.m │ └── include │ │ ├── RxCocoaRuntime.h │ │ ├── _RX.h │ │ ├── _RXDelegateProxy.h │ │ ├── _RXKVOObserver.h │ │ └── _RXObjCRuntime.h ├── RxRelay │ ├── BehaviorRelay.swift │ ├── Observable+Bind.swift │ ├── PrivacyInfo.xcprivacy │ ├── PublishRelay.swift │ ├── ReplayRelay.swift │ └── Utils.swift ├── RxSwift │ ├── AddRef.swift │ ├── Amb.swift │ ├── AnonymousDisposable.swift │ ├── AnonymousObserver.swift │ ├── AnyObserver.swift │ ├── AsMaybe.swift │ ├── AsSingle.swift │ ├── AsyncLock.swift │ ├── AsyncSubject.swift │ ├── AtomicInt.swift │ ├── Bag+Rx.swift │ ├── Bag.swift │ ├── BehaviorSubject.swift │ ├── BinaryDisposable.swift │ ├── Binder.swift │ ├── BooleanDisposable.swift │ ├── Buffer.swift │ ├── Cancelable.swift │ ├── Catch.swift │ ├── CombineLatest+Collection.swift │ ├── CombineLatest+arity.swift │ ├── CombineLatest.swift │ ├── CompactMap.swift │ ├── Completable+AndThen.swift │ ├── Completable.swift │ ├── CompositeDisposable.swift │ ├── Concat.swift │ ├── ConcurrentDispatchQueueScheduler.swift │ ├── ConcurrentMainScheduler.swift │ ├── ConnectableObservableType.swift │ ├── Create.swift │ ├── CurrentThreadScheduler.swift │ ├── Date+Dispatch.swift │ ├── Debounce.swift │ ├── Debug.swift │ ├── Decode.swift │ ├── DefaultIfEmpty.swift │ ├── Deferred.swift │ ├── Delay.swift │ ├── DelaySubscription.swift │ ├── Dematerialize.swift │ ├── DispatchQueue+Extensions.swift │ ├── DispatchQueueConfiguration.swift │ ├── Disposable.swift │ ├── Disposables.swift │ ├── DisposeBag.swift │ ├── DisposeBase.swift │ ├── DistinctUntilChanged.swift │ ├── Do.swift │ ├── ElementAt.swift │ ├── Empty.swift │ ├── Enumerated.swift │ ├── Error.swift │ ├── Errors.swift │ ├── Event.swift │ ├── Filter.swift │ ├── First.swift │ ├── Generate.swift │ ├── GroupBy.swift │ ├── GroupedObservable.swift │ ├── HistoricalScheduler.swift │ ├── HistoricalSchedulerTimeConverter.swift │ ├── ImmediateSchedulerType.swift │ ├── Infallible+CombineLatest+Collection.swift │ ├── Infallible+CombineLatest+arity.swift │ ├── Infallible+Concurrency.swift │ ├── Infallible+Create.swift │ ├── Infallible+Debug.swift │ ├── Infallible+Operators.swift │ ├── Infallible+Zip+arity.swift │ ├── Infallible.swift │ ├── InfiniteSequence.swift │ ├── InvocableScheduledItem.swift │ ├── InvocableType.swift │ ├── Just.swift │ ├── Lock.swift │ ├── LockOwnerType.swift │ ├── MainScheduler.swift │ ├── Map.swift │ ├── Materialize.swift │ ├── Maybe.swift │ ├── Merge.swift │ ├── Multicast.swift │ ├── Never.swift │ ├── NopDisposable.swift │ ├── Observable+Concurrency.swift │ ├── Observable.swift │ ├── ObservableConvertibleType+Infallible.swift │ ├── ObservableConvertibleType.swift │ ├── ObservableType+Extensions.swift │ ├── ObservableType+PrimitiveSequence.swift │ ├── ObservableType.swift │ ├── ObserveOn.swift │ ├── ObserverBase.swift │ ├── ObserverType.swift │ ├── OperationQueueScheduler.swift │ ├── Optional.swift │ ├── Platform.Darwin.swift │ ├── Platform.Linux.swift │ ├── PrimitiveSequence+Concurrency.swift │ ├── PrimitiveSequence+Zip+arity.swift │ ├── PrimitiveSequence.swift │ ├── PriorityQueue.swift │ ├── PrivacyInfo.xcprivacy │ ├── Producer.swift │ ├── PublishSubject.swift │ ├── Queue.swift │ ├── Range.swift │ ├── Reactive.swift │ ├── RecursiveLock.swift │ ├── RecursiveScheduler.swift │ ├── Reduce.swift │ ├── RefCountDisposable.swift │ ├── Repeat.swift │ ├── ReplaySubject.swift │ ├── RetryWhen.swift │ ├── Rx.swift │ ├── RxMutableBox.swift │ ├── Sample.swift │ ├── Scan.swift │ ├── ScheduledDisposable.swift │ ├── ScheduledItem.swift │ ├── ScheduledItemType.swift │ ├── SchedulerServices+Emulation.swift │ ├── SchedulerType.swift │ ├── Sequence.swift │ ├── SerialDispatchQueueScheduler.swift │ ├── SerialDisposable.swift │ ├── ShareReplayScope.swift │ ├── Single.swift │ ├── SingleAssignmentDisposable.swift │ ├── SingleAsync.swift │ ├── Sink.swift │ ├── Skip.swift │ ├── SkipUntil.swift │ ├── SkipWhile.swift │ ├── StartWith.swift │ ├── SubjectType.swift │ ├── SubscribeOn.swift │ ├── SubscriptionDisposable.swift │ ├── SwiftSupport.swift │ ├── Switch.swift │ ├── SwitchIfEmpty.swift │ ├── SynchronizedDisposeType.swift │ ├── SynchronizedOnType.swift │ ├── SynchronizedUnsubscribeType.swift │ ├── TailRecursiveSink.swift │ ├── Take.swift │ ├── TakeLast.swift │ ├── TakeWithPredicate.swift │ ├── Throttle.swift │ ├── Timeout.swift │ ├── Timer.swift │ ├── ToArray.swift │ ├── Using.swift │ ├── VirtualTimeConverterType.swift │ ├── VirtualTimeScheduler.swift │ ├── Window.swift │ ├── WithLatestFrom.swift │ ├── WithUnretained.swift │ ├── Zip+Collection.swift │ ├── Zip+arity.swift │ └── Zip.swift └── RxTest │ ├── Any+Equatable.swift │ ├── Bag.swift │ ├── ColdObservable.swift │ ├── Event+Equatable.swift │ ├── HotObservable.swift │ ├── Recorded+Event.swift │ ├── Recorded.swift │ ├── RxTest.swift │ ├── Subscription.swift │ ├── TestScheduler.swift │ ├── TestSchedulerVirtualTimeConverter.swift │ ├── TestableObservable.swift │ ├── TestableObserver.swift │ └── XCTest+Rx.swift ├── Tests ├── Benchmarks │ ├── Benchmarks.swift │ └── Info.plist ├── Info.plist ├── MessageProcessingStage.swift ├── Microoptimizations │ ├── Info.plist │ ├── PerformanceTools.swift │ └── main.swift ├── Platform │ ├── AtomicInt.swift │ ├── DispatchQueue+Extensions.swift │ ├── Platform.Darwin.swift │ ├── Platform.Linux.swift │ └── RecursiveLock.swift ├── Recorded+Timeless.swift ├── Resources.swift ├── RxBlockingTests │ └── Observable+BlockingTest.swift ├── RxCocoaTests │ ├── ControlEventTests.swift │ ├── ControlPropertyTests.swift │ ├── DelegateProxyTest+Cocoa.swift │ ├── DelegateProxyTest+UIKit.swift │ ├── DelegateProxyTest+WebKit.swift │ ├── DelegateProxyTest.swift │ ├── Driver+Test.swift │ ├── ExampleTests.swift │ ├── Infallible+BindTests.swift │ ├── KVOObservableTests.swift │ ├── NSButton+RxTests.swift │ ├── NSControl+RxTests.swift │ ├── NSLayoutConstraint+RxTests.swift │ ├── NSObject+RxTests.swift │ ├── NSSlider+RxTests.swift │ ├── NSTextField+RxTests.swift │ ├── NSTextView+RxTests.swift │ ├── NSView+RxTests.swift │ ├── NotificationCenterTests.swift │ ├── Observable+BindTests.swift │ ├── ObservableConvertibleType+SharedSequence.swift │ ├── RXObjCRuntime+Testing.h │ ├── RXObjCRuntime+Testing.m │ ├── RuntimeStateSnapshot.swift │ ├── RxObjCRuntimeState.swift │ ├── RxTest+Controls.swift │ ├── RxTest-iOS-Bridging-Header.h │ ├── RxTest-macOS-Bridging-Header.h │ ├── RxTest-tvOS-Bridging-Header.h │ ├── SentMessageTest.swift │ ├── SharedSequence+ConcurrencyTests.swift │ ├── SharedSequence+Extensions.swift │ ├── SharedSequence+OperatorTest.swift │ ├── SharedSequence+Test.swift │ ├── Signal+Test.swift │ ├── TestImplementations │ │ └── SectionedViewDataSourceMock.swift │ ├── UIActivityIndicatorView+RxTests.swift │ ├── UIAlertAction+RxTests.swift │ ├── UIApplication+RxTests.swift │ ├── UIBarButtonItem+RxTests.swift │ ├── UIButton+RxTests.swift │ ├── UICollectionView+RxTests.swift │ ├── UIControl+RxTests.swift │ ├── UIDatePicker+RxTests.swift │ ├── UIGestureRecognizer+RxTests.swift │ ├── UILabel+RxTests.swift │ ├── UINavigationController+RxTests.swift │ ├── UINavigationItem+RxTests.swift.swift │ ├── UIPageControl+RxTest.swift │ ├── UIPickerView+RxTests.swift │ ├── UIProgressView+RxTests.swift │ ├── UIScrollView+RxTests.swift │ ├── UISearchBar+RxTests.swift │ ├── UISearchController+RxTests.swift │ ├── UISegmentedControl+RxTests.swift │ ├── UISlider+RxTests.swift │ ├── UIStepper+RxTests.swift │ ├── UISwitch+RxTests.swift │ ├── UITabBar+RxTests.swift │ ├── UITabBarController+RxTests.swift │ ├── UITabBarItem+RxTests.swift │ ├── UITableView+RxTests.swift │ ├── UITextField+RxTests.swift │ ├── UITextView+RxTests.swift │ ├── UIView+RxTests.swift │ ├── UIViewController+RxTests.swift │ └── WKWebView+RxTests.swift ├── RxRelayTests │ ├── Observable+RelayBindTests.swift │ └── ReplayRelayTests.swift ├── RxSwiftTests │ ├── Anomalies.swift │ ├── AssumptionsTest.swift │ ├── AsyncSubjectTests.swift │ ├── Atomic+Overrides.swift │ ├── AtomicTests.swift │ ├── BagTest.swift │ ├── BehaviorSubjectTest.swift │ ├── Binder+Tests.swift │ ├── Completable+AndThen.swift │ ├── CompletableTest.swift │ ├── CurrentThreadSchedulerTest.swift │ ├── DisposableTest.swift │ ├── DisposeBagTest.swift │ ├── Event+Test.swift │ ├── HistoricalSchedulerTest.swift │ ├── Infallible+CombineLatestTests+arity.swift │ ├── Infallible+ConcurrencyTests.swift │ ├── Infallible+Tests.swift │ ├── MainSchedulerTests.swift │ ├── MaybeTest.swift │ ├── Observable+AmbTests.swift │ ├── Observable+BufferTests.swift │ ├── Observable+CatchTests.swift │ ├── Observable+CombineLatestTests+arity.swift │ ├── Observable+CombineLatestTests+arity.tt │ ├── Observable+CombineLatestTests.swift │ ├── Observable+CompactMapTests.swift │ ├── Observable+ConcatTests.swift │ ├── Observable+ConcurrencyTests.swift │ ├── Observable+DebugTests.swift │ ├── Observable+DecodeTests.swift │ ├── Observable+DefaultIfEmpty.swift │ ├── Observable+DelaySubscriptionTests.swift │ ├── Observable+DelayTests.swift │ ├── Observable+DematerializeTests.swift │ ├── Observable+DistinctUntilChangedTests.swift │ ├── Observable+DoOnTests.swift │ ├── Observable+ElementAtTests.swift │ ├── Observable+EnumeratedTests.swift │ ├── Observable+FilterTests.swift │ ├── Observable+GenerateTests.swift │ ├── Observable+GroupByTests.swift │ ├── Observable+JustTests.swift │ ├── Observable+MapTests.swift │ ├── Observable+MaterializeTests.swift │ ├── Observable+MergeTests.swift │ ├── Observable+MulticastTests.swift │ ├── Observable+ObserveOnTests.swift │ ├── Observable+OptionalTests.swift │ ├── Observable+PrimitiveSequenceTest.swift │ ├── Observable+RangeTests.swift │ ├── Observable+ReduceTests.swift │ ├── Observable+RepeatTests.swift │ ├── Observable+RetryWhenTests.swift │ ├── Observable+SampleTests.swift │ ├── Observable+ScanTests.swift │ ├── Observable+SequenceTests.swift │ ├── Observable+ShareReplayScopeTests.swift │ ├── Observable+SingleTests.swift │ ├── Observable+SkipTests.swift │ ├── Observable+SkipUntilTests.swift │ ├── Observable+SkipWhileTests.swift │ ├── Observable+SubscribeOnTests.swift │ ├── Observable+SubscriptionTest.swift │ ├── Observable+SwitchIfEmptyTests.swift │ ├── Observable+SwitchTests.swift │ ├── Observable+TakeLastTests.swift │ ├── Observable+TakeTests.swift │ ├── Observable+TakeUntilTests.swift │ ├── Observable+TakeWhileTests.swift │ ├── Observable+Tests.swift │ ├── Observable+ThrottleTests.swift │ ├── Observable+TimeoutTests.swift │ ├── Observable+TimerTests.swift │ ├── Observable+ToArrayTests.swift │ ├── Observable+UsingTests.swift │ ├── Observable+WindowTests.swift │ ├── Observable+WithLatestFromTests.swift │ ├── Observable+WithUnretainedTests.swift │ ├── Observable+ZipTests+arity.swift │ ├── Observable+ZipTests+arity.tt │ ├── Observable+ZipTests.swift │ ├── ObservableType+SubscriptionTests.swift │ ├── ObserverTests.swift │ ├── PrimitiveSequence+ConcurrencyTests.swift │ ├── PrimitiveSequenceTest+zip+arity.swift │ ├── PrimitiveSequenceTest+zip+arity.tt │ ├── PublishSubjectTest.swift │ ├── QueueTests.swift │ ├── Reactive+Tests.swift │ ├── RecursiveLockTest.swift │ ├── ReplaySubjectTest.swift │ ├── SchedulerTests.swift │ ├── SharingSchedulerTests.swift │ ├── SingleTest.swift │ ├── SubjectConcurrencyTest.swift │ ├── Synchronized.swift │ ├── TestImplementations │ │ ├── ElementIndexPair.swift │ │ ├── EquatableArray.swift │ │ ├── Mocks │ │ │ ├── BackgroundThreadPrimitiveHotObservable.swift │ │ │ ├── MainThreadPrimitiveHotObservable.swift │ │ │ ├── MockDisposable.swift │ │ │ ├── MySubject.swift │ │ │ ├── Observable.Extensions.swift │ │ │ ├── PrimitiveHotObservable.swift │ │ │ ├── PrimitiveMockObserver.swift │ │ │ └── TestConnectableObservable.swift │ │ ├── Observable+Extensions.swift │ │ └── TestVirtualScheduler.swift │ └── VirtualSchedulerTest.swift ├── RxTest.swift ├── TestErrors.swift └── XCTest+AllTests.swift ├── assets ├── CNAME.txt ├── LICENSE.txt ├── RxSwift_Logo.png ├── example.png ├── xcframeworks.png └── xcframeworks_signing.png ├── default.profraw ├── docs ├── Classes │ ├── AsyncSubject.html │ ├── BehaviorSubject.html │ ├── BooleanDisposable.html │ ├── CompositeDisposable.html │ ├── ConcurrentDispatchQueueScheduler.html │ ├── ConcurrentMainScheduler.html │ ├── ConnectableObservable.html │ ├── CurrentThreadScheduler.html │ ├── DisposeBag.html │ ├── DisposeBag │ │ └── DisposableBuilder.html │ ├── HistoricalScheduler.html │ ├── MainScheduler.html │ ├── Observable.html │ ├── OperationQueueScheduler.html │ ├── PublishSubject.html │ ├── RefCountDisposable.html │ ├── ReplaySubject.html │ ├── ScheduledDisposable.html │ ├── SerialDispatchQueueScheduler.html │ ├── SerialDisposable.html │ ├── SingleAssignmentDisposable.html │ └── VirtualTimeScheduler.html ├── Enums │ ├── CompletableEvent.html │ ├── Event.html │ ├── Hooks.html │ ├── InfallibleEvent.html │ ├── MaybeEvent.html │ ├── RxError.html │ ├── SingleEvent.html │ ├── SubjectLifetimeScope.html │ ├── TakeBehavior.html │ ├── TakeUntilBehavior.html │ └── VirtualTimeComparison.html ├── Extensions │ └── AsyncSequence.html ├── Other Classes.html ├── Other Enums.html ├── Other Extensions.html ├── Other Global Variables.html ├── Other Protocols.html ├── Other Structs.html ├── Other Typealiases.html ├── Protocols │ ├── Cancelable.html │ ├── ConnectableObservableType.html │ ├── DataDecoder.html │ ├── Disposable.html │ ├── EventConvertible.html │ ├── ImmediateSchedulerType.html │ ├── InfallibleType.html │ ├── ObservableConvertibleType.html │ ├── ObservableType.html │ ├── ObserverType.html │ ├── PrimitiveSequenceType.html │ ├── ReactiveCompatible.html │ ├── SchedulerType.html │ ├── SubjectType.html │ └── VirtualTimeConverterType.html ├── RxSwift.html ├── RxSwift │ ├── Disposables.html │ ├── Schedulers.html │ ├── Subjects.html │ ├── Traits.html │ └── Traits │ │ ├── Infallible.html │ │ └── PrimitiveSequence.html ├── Structs │ ├── AnyObserver.html │ ├── Binder.html │ ├── Disposables.html │ ├── GroupedObservable.html │ ├── HistoricalSchedulerTimeConverter.html │ ├── Infallible.html │ ├── PrimitiveSequence.html │ ├── Reactive.html │ └── Resources.html ├── badge.svg ├── css │ ├── highlight.css │ └── jazzy.css ├── img │ ├── carat.png │ ├── dash.png │ ├── gh.png │ └── spinner.gif ├── index.html ├── js │ ├── jazzy.js │ ├── jazzy.search.js │ ├── jquery.min.js │ ├── lunr.min.js │ └── typeahead.jquery.js ├── search.json └── undocumented.json └── scripts ├── all-tests.sh ├── common.sh ├── make-xcframeworks.sh ├── package-spm.swift ├── profile-build-times.sh ├── swiftlint.sh ├── test-linux.sh ├── update-jazzy-config.rb ├── update-jazzy-docs.sh ├── validate-headers.swift ├── validate-markdown.sh ├── validate-playgrounds.sh └── validate-podspec.sh /.editorConfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | indent_style = space 7 | indent_size = 4 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | -------------------------------------------------------------------------------- /Documentation/ExampleApp.md: -------------------------------------------------------------------------------- 1 | 2 | ## RxExamples 3 | 4 | To run the example app: 5 | 6 | * Open `Rx.xcworkspace` 7 | * Choose one of example schemes (RxExample-iOS, RxExample-macOS) and hit `Run`. 8 | 9 | You can also run the example app using CocoaPods. 10 | 11 | ``` 12 | pod try RxSwift 13 | ``` 14 | -------------------------------------------------------------------------------- /Documentation/NewFeatureRequestTemplate.md: -------------------------------------------------------------------------------- 1 | **Please copy the following template [here](https://github.com/ReactiveX/RxSwift/issues/new) and fill in the missing fields so we can help you as soon as possible.** 2 | 3 | ``` 4 | *Short description of missing functionality*: 5 | 6 | E.g. I want this library to implement xxx operator. 7 | 8 | *Short code example of how you would like to use the API*: 9 | 10 | code goes here 11 | 12 | *The reason why I need this functionality*: 13 | 14 | E.g. I was trying to .... 15 | 16 | *Code I have right now*: 17 | 18 | code snippet that demonstrates how you've attempted to solve the problem 19 | 20 | ``` 21 | -------------------------------------------------------------------------------- /Documentation/Playgrounds.md: -------------------------------------------------------------------------------- 1 | ## Playgrounds 2 | 3 | To use playgrounds: 4 | 5 | * Open `Rx.xcworkspace` 6 | * Build the `RxSwift` scheme on `My Mac`. 7 | * Open `Rx` playground in the `Rx.xcworkspace` tree view. 8 | * Choose `View > Debug Area > Show Debug Area` 9 | -------------------------------------------------------------------------------- /Documentation/Subjects.md: -------------------------------------------------------------------------------- 1 | # Subjects 2 | 3 | All of behave exactly the same like described [here](http://reactivex.io/documentation/subject.html) 4 | 5 | ## Relays 6 | 7 | RxRelay provides three kinds of Relays: `PublishRelay`, `BehaviorRelay` and `ReplayRelay`. 8 | They behave exactly like their parallel `Subject`s, with two changes: 9 | 10 | - Relays never complete. 11 | - Relays never emit errors. 12 | 13 | In essence, Relays only emit `.next` events, and never terminate. 14 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | gem 'danger' 4 | gem 'cocoapods', '~> 1.10.1' -------------------------------------------------------------------------------- /Platform/DataStructures/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InfiniteSequence.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 6/13/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Sequence that repeats `repeatedValue` infinite number of times. 10 | struct InfiniteSequence : Sequence { 11 | typealias Iterator = AnyIterator 12 | 13 | private let repeatedValue: Element 14 | 15 | init(repeatedValue: Element) { 16 | self.repeatedValue = repeatedValue 17 | } 18 | 19 | func makeIterator() -> Iterator { 20 | let repeatedValue = self.repeatedValue 21 | return AnyIterator { repeatedValue } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueue+Extensions.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 10/22/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Dispatch 10 | 11 | extension DispatchQueue { 12 | private static var token: DispatchSpecificKey<()> = { 13 | let key = DispatchSpecificKey<()>() 14 | DispatchQueue.main.setSpecific(key: key, value: ()) 15 | return key 16 | }() 17 | 18 | static var isMain: Bool { 19 | DispatchQueue.getSpecific(key: token) != nil 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Platform/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RecursiveLock.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/18/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | #if TRACE_RESOURCES 12 | class RecursiveLock: NSRecursiveLock { 13 | override init() { 14 | _ = Resources.incrementTotal() 15 | super.init() 16 | } 17 | 18 | override func lock() { 19 | super.lock() 20 | _ = Resources.incrementTotal() 21 | } 22 | 23 | override func unlock() { 24 | super.unlock() 25 | _ = Resources.decrementTotal() 26 | } 27 | 28 | deinit { 29 | _ = Resources.decrementTotal() 30 | } 31 | } 32 | #else 33 | typealias RecursiveLock = NSRecursiveLock 34 | #endif 35 | -------------------------------------------------------------------------------- /Preprocessor/Preprocessor.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Rx.playground/Pages/TryYourself.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- 1 | /*: 2 | > # IMPORTANT: To use **Rx.playground**: 3 | 1. Open **Rx.xcworkspace**. 4 | 1. Build the **RxExample-macOS** scheme (**Product** → **Build**). 5 | 1. Open **Rx** playground in the **Project navigator** (under RxExample project). 6 | 1. Show the Debug Area (**View** → **Debug Area** → **Show Debug Area**). 7 | */ 8 | import RxSwift 9 | /*: 10 | # Try Yourself 11 | 12 | It's time to play with Rx 🎉 13 | */ 14 | playgroundShouldContinueIndefinitely() 15 | 16 | example("Try yourself") { 17 | // let disposeBag = DisposeBag() 18 | _ = Observable.just("Hello, RxSwift!") 19 | .debug("Observable") 20 | .subscribe() 21 | // .disposed(by: disposeBag) // If dispose bag is used instead, sequence will terminate on scope exit 22 | } 23 | -------------------------------------------------------------------------------- /Rx.playground/SupportCode.remap: -------------------------------------------------------------------------------- 1 | [ 2 | ] -------------------------------------------------------------------------------- /Rx.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Rx.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Rx.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Rx.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Rx.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /RxBlocking/BlockingObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BlockingObservable.swift 3 | // RxBlocking 4 | // 5 | // Created by Krunoslav Zaher on 10/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | 12 | /** 13 | `BlockingObservable` is a variety of `Observable` that provides blocking operators. 14 | 15 | It can be useful for testing and demo purposes, but is generally inappropriate for production applications. 16 | 17 | If you think you need to use a `BlockingObservable` this is usually a sign that you should rethink your 18 | design. 19 | */ 20 | public struct BlockingObservable { 21 | let timeout: TimeInterval? 22 | let source: Observable 23 | } 24 | -------------------------------------------------------------------------------- /RxBlocking/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 6.9.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(CURRENT_PROJECT_VERSION) 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /RxBlocking/ObservableConvertibleType+Blocking.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObservableConvertibleType+Blocking.swift 3 | // RxBlocking 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | import Foundation 11 | 12 | extension ObservableConvertibleType { 13 | /// Converts an Observable into a `BlockingObservable` (an Observable with blocking operators). 14 | /// 15 | /// - parameter timeout: Maximal time interval BlockingObservable can block without throwing `RxError.timeout`. 16 | /// - returns: `BlockingObservable` version of `self` 17 | public func toBlocking(timeout: TimeInterval? = nil) -> BlockingObservable { 18 | BlockingObservable(timeout: timeout, source: self.asObservable()) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /RxBlocking/Platform/AtomicInt.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/AtomicInt.swift -------------------------------------------------------------------------------- /RxBlocking/Platform/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/Platform.Darwin.swift -------------------------------------------------------------------------------- /RxBlocking/Platform/Platform.Linux.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/Platform.Linux.swift -------------------------------------------------------------------------------- /RxBlocking/Platform/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/RecursiveLock.swift -------------------------------------------------------------------------------- /RxBlocking/README.md: -------------------------------------------------------------------------------- 1 | RxBlocking 2 | ============================================================ 3 | 4 | Set of blocking operators for easy unit testing. 5 | 6 | ***Don't use these operators in production apps. These operators are only meant for testing purposes.*** 7 | 8 | 9 | ```swift 10 | extension BlockingObservable { 11 | public func toArray() throws -> [E] {} 12 | } 13 | 14 | extension BlockingObservable { 15 | public func first() throws -> Element? {} 16 | } 17 | 18 | extension BlockingObservable { 19 | public func last() throws -> Element? {} 20 | } 21 | 22 | extension BlockingObservable { 23 | public func single() throws -> Element? {} 24 | public func single(_ predicate: @escaping (E) throws -> Bool) throws -> Element? {} 25 | } 26 | 27 | extension BlockingObservable { 28 | public func materialize() -> MaterializedSequenceResult 29 | } 30 | ``` 31 | 32 | 33 | -------------------------------------------------------------------------------- /RxBlocking/Resources.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Resources.swift 3 | // RxBlocking 4 | // 5 | // Created by Krunoslav Zaher on 1/21/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | #if TRACE_RESOURCES 12 | struct Resources { 13 | static func incrementTotal() -> Int32 { 14 | return RxSwift.Resources.incrementTotal() 15 | } 16 | 17 | static func decrementTotal() -> Int32 { 18 | return RxSwift.Resources.decrementTotal() 19 | } 20 | 21 | static var numberOfSerialDispatchQueueObservables: Int32 { 22 | return RxSwift.Resources.numberOfSerialDispatchQueueObservables 23 | } 24 | 25 | static var total: Int32 { 26 | return RxSwift.Resources.total 27 | } 28 | } 29 | #endif 30 | -------------------------------------------------------------------------------- /RxCocoa/Common/SectionedViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SectionedViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 1/10/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Data source with access to underlying sectioned model. 12 | public protocol SectionedViewDataSourceType { 13 | /// Returns model at index path. 14 | /// 15 | /// In case data source doesn't contain any sections when this method is being called, `RxCocoaError.ItemsNotYetBound(object: self)` is thrown. 16 | 17 | /// - parameter indexPath: Model index path 18 | /// - returns: Model at index path. 19 | func model(at indexPath: IndexPath) throws -> Any 20 | } 21 | -------------------------------------------------------------------------------- /RxCocoa/Foundation/KVORepresentable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // KVORepresentable.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 11/14/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Type that is KVO representable (KVO mechanism can be used to observe it). 10 | public protocol KVORepresentable { 11 | /// Associated KVO type. 12 | associatedtype KVOType 13 | 14 | /// Constructs `Self` using KVO value. 15 | init?(KVOValue: KVOType) 16 | } 17 | 18 | extension KVORepresentable { 19 | /// Initializes `KVORepresentable` with optional value. 20 | init?(KVOValue: KVOType?) { 21 | guard let KVOValue = KVOValue else { 22 | return nil 23 | } 24 | 25 | self.init(KVOValue: KVOValue) 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /RxCocoa/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 6.9.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(CURRENT_PROJECT_VERSION) 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /RxCocoa/Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Platform/DispatchQueue+Extensions.swift -------------------------------------------------------------------------------- /RxCocoa/Runtime/_RX.m: -------------------------------------------------------------------------------- 1 | // 2 | // _RX.m 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import "include/_RX.h" 10 | 11 | -------------------------------------------------------------------------------- /RxCocoa/Runtime/include/RxCocoaRuntime.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoaRuntime.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "_RX.h" 11 | #import "_RXDelegateProxy.h" 12 | #import "_RXKVOObserver.h" 13 | #import "_RXObjCRuntime.h" 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 20 | -------------------------------------------------------------------------------- /RxCocoa/Runtime/include/_RXDelegateProxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXDelegateProxy.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface _RXDelegateProxy : NSObject 14 | 15 | @property (nonatomic, weak, readonly) id _forwardToDelegate; 16 | 17 | -(void)_setForwardToDelegate:(id __nullable)forwardToDelegate retainDelegate:(BOOL)retainDelegate NS_SWIFT_NAME(_setForwardToDelegate(_:retainDelegate:)) ; 18 | 19 | -(BOOL)hasWiredImplementationForSelector:(SEL)selector; 20 | -(BOOL)voidDelegateMethodsContain:(SEL)selector; 21 | 22 | -(void)_sentMessage:(SEL)selector withArguments:(NSArray*)arguments; 23 | -(void)_methodInvoked:(SEL)selector withArguments:(NSArray*)arguments; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /RxCocoa/RxCocoa.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoa.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | #import 13 | #import 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 20 | -------------------------------------------------------------------------------- /RxCocoa/Traits/Driver/BehaviorRelay+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BehaviorRelay+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 10/7/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | import RxRelay 11 | 12 | extension BehaviorRelay { 13 | /// Converts `BehaviorRelay` to `Driver`. 14 | /// 15 | /// - returns: Observable sequence. 16 | public func asDriver() -> Driver { 17 | let source = self.asObservable() 18 | .observe(on:DriverSharingStrategy.scheduler) 19 | return SharedSequence(source) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /RxCocoa/Traits/Driver/ControlEvent+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ControlEvent+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 9/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension ControlEvent { 12 | /// Converts `ControlEvent` to `Driver` trait. 13 | /// 14 | /// `ControlEvent` already can't fail, so no special case needs to be handled. 15 | public func asDriver() -> Driver { 16 | return self.asDriver { _ -> Driver in 17 | #if DEBUG 18 | rxFatalError("Somehow driver received error from a source that shouldn't fail.") 19 | #else 20 | return Driver.empty() 21 | #endif 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /RxCocoa/Traits/Driver/ControlProperty+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ControlProperty+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 9/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension ControlProperty { 12 | /// Converts `ControlProperty` to `Driver` trait. 13 | /// 14 | /// `ControlProperty` already can't fail, so no special case needs to be handled. 15 | public func asDriver() -> Driver { 16 | return self.asDriver { _ -> Driver in 17 | #if DEBUG 18 | rxFatalError("Somehow driver received error from a source that shouldn't fail.") 19 | #else 20 | return Driver.empty() 21 | #endif 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /RxCocoa/Traits/Driver/Infallible+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Infallible+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Anton Siliuk on 14/02/2022. 6 | // Copyright © 2022 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension InfallibleType { 12 | /// Converts `InfallibleType` to `Driver`. 13 | /// 14 | /// - returns: Observable sequence. 15 | public func asDriver() -> Driver { 16 | SharedSequence(asObservable().observe(on: DriverSharingStrategy.scheduler)) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /RxCocoa/Traits/Signal/ControlEvent+Signal.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ControlEvent+Signal.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 11/1/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension ControlEvent { 12 | /// Converts `ControlEvent` to `Signal` trait. 13 | /// 14 | /// `ControlEvent` already can't fail, so no special case needs to be handled. 15 | public func asSignal() -> Signal { 16 | return self.asSignal { _ -> Signal in 17 | #if DEBUG 18 | rxFatalError("Somehow signal received error from a source that shouldn't fail.") 19 | #else 20 | return Signal.empty() 21 | #endif 22 | } 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /RxCocoa/Traits/Signal/PublishRelay+Signal.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PublishRelay+Signal.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 12/28/15. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | import RxRelay 11 | 12 | extension PublishRelay { 13 | /// Converts `PublishRelay` to `Signal`. 14 | /// 15 | /// - returns: Observable sequence. 16 | public func asSignal() -> Signal { 17 | let source = self.asObservable() 18 | .observe(on:SignalSharingStrategy.scheduler) 19 | return SharedSequence(source) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /RxCocoa/iOS/Events/ItemEvents.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ItemEvents.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/20/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) || os(visionOS) 10 | import UIKit 11 | 12 | public typealias ItemMovedEvent = (sourceIndex: IndexPath, destinationIndex: IndexPath) 13 | public typealias WillDisplayCellEvent = (cell: UITableViewCell, indexPath: IndexPath) 14 | public typealias DidEndDisplayingCellEvent = (cell: UITableViewCell, indexPath: IndexPath) 15 | #endif 16 | -------------------------------------------------------------------------------- /RxCocoa/iOS/Protocols/RxPickerViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxPickerViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Sergey Shulga on 05/07/2017. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(visionOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// Marks data source as `UIPickerView` reactive data source enabling it to be used with one of the `bindTo` methods. 15 | public protocol RxPickerViewDataSourceType { 16 | /// Type of elements that can be bound to picker view. 17 | associatedtype Element 18 | 19 | /// New observable sequence event observed. 20 | /// 21 | /// - parameter pickerView: Bound picker view. 22 | /// - parameter observedEvent: Event 23 | func pickerView(_ pickerView: UIPickerView, observedEvent: Event) 24 | } 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /RxCocoa/iOS/Protocols/RxTableViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTableViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/26/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) || os(visionOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// Marks data source as `UITableView` reactive data source enabling it to be used with one of the `bindTo` methods. 15 | public protocol RxTableViewDataSourceType /*: UITableViewDataSource*/ { 16 | 17 | /// Type of elements that can be bound to table view. 18 | associatedtype Element 19 | 20 | /// New observable sequence event observed. 21 | /// 22 | /// - parameter tableView: Bound table view. 23 | /// - parameter observedEvent: Event 24 | func tableView(_ tableView: UITableView, observedEvent: Event) 25 | } 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /RxCocoa/iOS/Proxies/RxTableViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTableViewDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/15/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) || os(visionOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// For more information take a look at `DelegateProxyType`. 15 | open class RxTableViewDelegateProxy 16 | : RxScrollViewDelegateProxy { 17 | 18 | /// Typed parent object. 19 | public weak private(set) var tableView: UITableView? 20 | 21 | /// - parameter tableView: Parent object for delegate proxy. 22 | public init(tableView: UITableView) { 23 | self.tableView = tableView 24 | super.init(scrollView: tableView) 25 | } 26 | 27 | } 28 | 29 | extension RxTableViewDelegateProxy: UITableViewDelegate {} 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /RxCocoa/iOS/UIActivityIndicatorView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIActivityIndicatorView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Ivan Persidskiy on 02/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) || os(visionOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIActivityIndicatorView { 15 | /// Bindable sink for `startAnimating()`, `stopAnimating()` methods. 16 | public var isAnimating: Binder { 17 | Binder(self.base) { activityIndicator, active in 18 | if active { 19 | activityIndicator.startAnimating() 20 | } else { 21 | activityIndicator.stopAnimating() 22 | } 23 | } 24 | } 25 | } 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /RxCocoa/iOS/UIRefreshControl+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIRefreshControl+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Yosuke Ishikawa on 1/31/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(visionOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIRefreshControl { 15 | /// Bindable sink for `beginRefreshing()`, `endRefreshing()` methods. 16 | public var isRefreshing: Binder { 17 | return Binder(self.base) { refreshControl, refresh in 18 | if refresh { 19 | refreshControl.beginRefreshing() 20 | } else { 21 | refreshControl.endRefreshing() 22 | } 23 | } 24 | } 25 | 26 | } 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /RxCocoa/iOS/UISlider+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UISlider+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Alexander van der Werff on 28/05/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(visionOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension Reactive where Base: UISlider { 15 | 16 | /// Reactive wrapper for `value` property. 17 | public var value: ControlProperty { 18 | return base.rx.controlPropertyWithDefaultEvents( 19 | getter: { slider in 20 | slider.value 21 | }, setter: { slider, value in 22 | slider.value = value 23 | } 24 | ) 25 | } 26 | 27 | } 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /RxCocoa/iOS/UIStepper+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIStepper+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Yuta ToKoRo on 9/1/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(visionOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIStepper { 15 | 16 | /// Reactive wrapper for `value` property. 17 | public var value: ControlProperty { 18 | return base.rx.controlPropertyWithDefaultEvents( 19 | getter: { stepper in 20 | stepper.value 21 | }, setter: { stepper, value in 22 | stepper.value = value 23 | } 24 | ) 25 | } 26 | } 27 | 28 | #endif 29 | 30 | -------------------------------------------------------------------------------- /RxCocoa/macOS/NSButton+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSButton+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 5/17/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) 10 | 11 | import RxSwift 12 | import Cocoa 13 | 14 | extension Reactive where Base: NSButton { 15 | 16 | /// Reactive wrapper for control event. 17 | public var tap: ControlEvent { 18 | self.controlEvent 19 | } 20 | 21 | /// Reactive wrapper for `state` property`. 22 | public var state: ControlProperty { 23 | return self.base.rx.controlProperty( 24 | getter: { control in 25 | return control.state 26 | }, setter: { (control: NSButton, state: NSControl.StateValue) in 27 | control.state = state 28 | } 29 | ) 30 | } 31 | } 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /RxCocoa/macOS/NSSlider+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSSlider+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Junior B. on 24/05/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) 10 | 11 | import RxSwift 12 | import Cocoa 13 | 14 | extension Reactive where Base: NSSlider { 15 | 16 | /// Reactive wrapper for `value` property. 17 | public var value: ControlProperty { 18 | return self.base.rx.controlProperty( 19 | getter: { control -> Double in 20 | return control.doubleValue 21 | }, 22 | setter: { control, value in 23 | control.doubleValue = value 24 | } 25 | ) 26 | } 27 | 28 | } 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /RxCocoa/macOS/NSView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 12/6/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) 10 | import Cocoa 11 | import RxSwift 12 | 13 | extension Reactive where Base: NSView { 14 | /// Bindable sink for `alphaValue` property. 15 | public var alpha: Binder { 16 | return Binder(self.base) { view, value in 17 | view.alphaValue = value 18 | } 19 | } 20 | } 21 | #endif 22 | -------------------------------------------------------------------------------- /RxExample/Extensions/RxImagePickerDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxImagePickerDelegateProxy.swift 3 | // RxExample 4 | // 5 | // Created by Segii Shulga on 1/4/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import RxSwift 12 | import RxCocoa 13 | import UIKit 14 | 15 | open class RxImagePickerDelegateProxy 16 | : RxNavigationControllerDelegateProxy, UIImagePickerControllerDelegate { 17 | 18 | public init(imagePicker: UIImagePickerController) { 19 | super.init(navigationController: imagePicker) 20 | } 21 | 22 | } 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /RxExample/Playgrounds/RxPlaygrounds.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxPlaygrounds.swift 3 | // RxExample 4 | // 5 | // Created by Shai Mishali on 20/04/2019. 6 | // Copyright © 2019 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | @_exported import RxSwift 10 | //@_exported import RxCocoa // Also imports RxRelay 11 | //@_exported import RxTest 12 | //@_exported import RxBlocking 13 | -------------------------------------------------------------------------------- /RxExample/RxDataSources/Differentiator/AnimatableSectionModelType+ItemPath.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnimatableSectionModelType+ItemPath.swift 3 | // RxDataSources 4 | // 5 | // Created by Krunoslav Zaher on 1/9/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | extension Array where Element: AnimatableSectionModelType { 12 | subscript(index: ItemPath) -> Element.Item { 13 | self[index.sectionIndex].items[index.itemIndex] 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /RxExample/RxDataSources/Differentiator/AnimatableSectionModelType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnimatableSectionModelType.swift 3 | // RxDataSources 4 | // 5 | // Created by Krunoslav Zaher on 1/6/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public protocol AnimatableSectionModelType 12 | : SectionModelType 13 | , IdentifiableType where Item: IdentifiableType, Item: Equatable { 14 | } 15 | -------------------------------------------------------------------------------- /RxExample/RxDataSources/Differentiator/Differentiator.h: -------------------------------------------------------------------------------- 1 | // 2 | // Differentiator.h 3 | // Differentiator 4 | // 5 | // Created by muukii on 7/26/17. 6 | // Copyright © 2017 kzaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for Differentiator. 12 | FOUNDATION_EXPORT double DifferentiatorVersionNumber; 13 | 14 | //! Project version string for Differentiator. 15 | FOUNDATION_EXPORT const unsigned char DifferentiatorVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /RxExample/RxDataSources/Differentiator/IdentifiableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // IdentifiableType.swift 3 | // RxDataSources 4 | // 5 | // Created by Krunoslav Zaher on 1/6/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public protocol IdentifiableType { 12 | associatedtype Identity: Hashable 13 | 14 | var identity : Identity { get } 15 | } -------------------------------------------------------------------------------- /RxExample/RxDataSources/Differentiator/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.0.0 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /RxExample/RxDataSources/Differentiator/Optional+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Optional+Extensions.swift 3 | // RxDataSources 4 | // 5 | // Created by Krunoslav Zaher on 1/8/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | extension Optional { 12 | func unwrap() throws -> Wrapped { 13 | if let unwrapped = self { 14 | return unwrapped 15 | } 16 | else { 17 | debugFatalError("Error during unwrapping optional") 18 | throw DifferentiatorError.unwrappingOptional 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /RxExample/RxDataSources/Differentiator/SectionModelType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SectionModelType.swift 3 | // RxDataSources 4 | // 5 | // Created by Krunoslav Zaher on 6/28/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public protocol SectionModelType { 12 | associatedtype Item 13 | 14 | var items: [Item] { get } 15 | 16 | init(original: Self, items: [Item]) 17 | } -------------------------------------------------------------------------------- /RxExample/RxDataSources/Differentiator/Utilities.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Utilities.swift 3 | // RxDataSources 4 | // 5 | // Created by muukii on 8/2/17. 6 | // Copyright © 2017 kzaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | enum DifferentiatorError : Error { 12 | case unwrappingOptional 13 | case preconditionFailed(message: String) 14 | } 15 | 16 | func precondition(_ condition: Bool, _ message: @autoclosure() -> String) throws -> Void { 17 | if condition { 18 | return 19 | } 20 | debugFatalError("Precondition failed") 21 | 22 | throw DifferentiatorError.preconditionFailed(message: message()) 23 | } 24 | 25 | func debugFatalError(_ error: Error) { 26 | debugFatalError("\(error)") 27 | } 28 | 29 | func debugFatalError(_ message: String) { 30 | #if DEBUG 31 | fatalError(message) 32 | #else 33 | print(message) 34 | #endif 35 | } 36 | -------------------------------------------------------------------------------- /RxExample/RxDataSources/RxDataSources/DataSources.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DataSources.swift 3 | // RxDataSources 4 | // 5 | // Created by Krunoslav Zaher on 1/8/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | enum RxDataSourceError : Error { 12 | case preconditionFailed(message: String) 13 | } 14 | 15 | func rxPrecondition(_ condition: Bool, _ message: @autoclosure() -> String) throws -> Void { 16 | if condition { 17 | return 18 | } 19 | rxDebugFatalError("Precondition failed") 20 | 21 | throw RxDataSourceError.preconditionFailed(message: message()) 22 | } 23 | 24 | func rxDebugFatalError(_ error: Error) { 25 | rxDebugFatalError("\(error)") 26 | } 27 | 28 | func rxDebugFatalError(_ message: String) { 29 | #if DEBUG 30 | fatalError(message) 31 | #else 32 | print(message) 33 | #endif 34 | } 35 | -------------------------------------------------------------------------------- /RxExample/RxDataSources/RxDataSources/Deprecated.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Deprecated.swift 3 | // RxDataSources 4 | // 5 | // Created by Krunoslav Zaher on 10/8/17. 6 | // Copyright © 2017 kzaher. All rights reserved. 7 | // 8 | 9 | extension CollectionViewSectionedDataSource { 10 | @available(*, deprecated, renamed: "configureSupplementaryView") 11 | public var supplementaryViewFactory: ConfigureSupplementaryView { 12 | get { 13 | return self.configureSupplementaryView 14 | } 15 | set { 16 | self.configureSupplementaryView = newValue 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /RxExample/RxDataSources/RxDataSources/FloatingPointType+IdentifiableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FloatingPointType+IdentifiableType.swift 3 | // RxDataSources 4 | // 5 | // Created by Krunoslav Zaher on 7/4/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | extension FloatingPoint { 12 | typealias identity = Self 13 | 14 | public var identity: Self { 15 | self 16 | } 17 | } 18 | 19 | extension Float : IdentifiableType { 20 | 21 | } 22 | 23 | extension Double : IdentifiableType { 24 | 25 | } 26 | -------------------------------------------------------------------------------- /RxExample/RxDataSources/RxDataSources/RxDataSources.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxDataSources.h 3 | // RxDataSources 4 | // 5 | // Created by Krunoslav Zaher on 1/1/16. 6 | // Copyright © 2016 kzaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for RxDataSources. 12 | FOUNDATION_EXPORT double RxDataSourcesVersionNumber; 13 | 14 | //! Project version string for RxDataSources. 15 | FOUNDATION_EXPORT const unsigned char RxDataSourcesVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /RxExample/RxDataSources/RxDataSources/String+IdentifiableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // String+IdentifiableType.swift 3 | // RxDataSources 4 | // 5 | // Created by Krunoslav Zaher on 7/4/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | extension String : IdentifiableType { 12 | public typealias Identity = String 13 | 14 | public var identity: String { 15 | self 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /RxExample/RxExample-iOSTests/Mocks/ValidationResult+Equatable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ValidationResult+Equatable.swift 3 | // RxExample 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | // MARK: Equatable 10 | 11 | extension ValidationResult : Equatable { 12 | 13 | } 14 | 15 | func == (lhs: ValidationResult, rhs: ValidationResult) -> Bool { 16 | switch (lhs, rhs) { 17 | case (.ok, .ok): 18 | return true 19 | case (.empty, .empty): 20 | return true 21 | case (.validating, .validating): 22 | return true 23 | case (.failed, .failed): 24 | return true 25 | default: 26 | return false 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /RxExample/RxExample-iOSTests/RxTest.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTest.swift 3 | // RxExample 4 | // 5 | // Created by Krunoslav Zaher on 9/11/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | 11 | class RxTest : XCTestCase { 12 | 13 | } 14 | 15 | let testError = NSError(domain: "dummyError", code: -232, userInfo: nil) 16 | let testError1 = NSError(domain: "dummyError1", code: -233, userInfo: nil) 17 | let testError2 = NSError(domain: "dummyError2", code: -234, userInfo: nil) 18 | -------------------------------------------------------------------------------- /RxExample/RxExample-iOSUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /RxExample/RxExample-macOSUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /RxExample/RxExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxExample/RxExample/Application+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Application+Extensions.swift 3 | // RxExample 4 | // 5 | // Created by Krunoslav Zaher on 8/20/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | import UIKit 11 | typealias OSApplication = UIApplication 12 | #elseif os(macOS) 13 | import Cocoa 14 | typealias OSApplication = NSApplication 15 | #endif 16 | 17 | extension OSApplication { 18 | static var isInUITest: Bool { 19 | ProcessInfo.processInfo.environment["isUITest"] != nil; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /RxExample/RxExample/Examples/GitHubSearchRepositories/UINavigationController+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationController+Extensions.swift 3 | // RxExample 4 | // 5 | // Created by Krunoslav Zaher on 12/13/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import RxSwift 11 | import RxCocoa 12 | 13 | struct Colors { 14 | static let offlineColor = UIColor(red: 1.0, green: 0.6, blue: 0.6, alpha: 1.0) 15 | static let onlineColor = nil as UIColor? 16 | } 17 | 18 | extension Reactive where Base: UINavigationController { 19 | var isOffline: Binder { 20 | return Binder(base) { navigationController, isOffline in 21 | navigationController.navigationBar.barTintColor = isOffline 22 | ? Colors.offlineColor 23 | : Colors.onlineColor 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /RxExample/RxExample/Examples/TableViewPartialUpdates/NumberCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NumberCell.swift 3 | // RxExample 4 | // 5 | // Created by Krunoslav Zaher on 7/2/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class NumberCell : UICollectionViewCell { 12 | @IBOutlet var value: UILabel? 13 | } 14 | -------------------------------------------------------------------------------- /RxExample/RxExample/Examples/TableViewPartialUpdates/NumberSectionView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NumberSectionView.swift 3 | // RxExample 4 | // 5 | // Created by Krunoslav Zaher on 7/2/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class NumberSectionView : UICollectionReusableView { 12 | @IBOutlet weak var value: UILabel? 13 | } 14 | -------------------------------------------------------------------------------- /RxExample/RxExample/Examples/TableViewWithEditingCommands/UIImageView+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageView+Extensions.swift 3 | // RxExample 4 | // 5 | // Created by carlos on 28/5/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | extension UIImageView { 12 | 13 | func makeRoundedCorners(_ radius: CGFloat) { 14 | self.layer.cornerRadius = radius 15 | self.layer.masksToBounds = true 16 | } 17 | 18 | func makeRoundedCorners() { 19 | self.makeRoundedCorners(self.frame.size.width / 2) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /RxExample/RxExample/Examples/TableViewWithEditingCommands/User.swift: -------------------------------------------------------------------------------- 1 | // 2 | // User.swift 3 | // RxExample 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | struct User: Equatable, CustomDebugStringConvertible { 10 | 11 | var firstName: String 12 | var lastName: String 13 | var imageURL: String 14 | 15 | init(firstName: String, lastName: String, imageURL: String) { 16 | self.firstName = firstName 17 | self.lastName = lastName 18 | self.imageURL = imageURL 19 | } 20 | } 21 | 22 | extension User { 23 | var debugDescription: String { 24 | firstName + " " + lastName 25 | } 26 | } 27 | 28 | func ==(lhs: User, rhs:User) -> Bool { 29 | return lhs.firstName == rhs.firstName && 30 | lhs.lastName == rhs.lastName && 31 | lhs.imageURL == rhs.imageURL 32 | } 33 | -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-40.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-40@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-40@2x-1.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-60@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-60@2x-1.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-76.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-Small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-Small.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Rx_Logo-iPad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Rx_Logo-iPad.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Rx_Logo_L.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Rx_Logo_L.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Rx_Logo_M.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Rx_Logo_M.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/ReactiveExtensionsLogo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "ReactiveExtensionsLogo.png" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x", 15 | "filename" : "ReactiveExtensionsLogo-2.png" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/ReactiveExtensionsLogo.imageset/ReactiveExtensionsLogo-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/RxExample/RxExample/Images.xcassets/ReactiveExtensionsLogo.imageset/ReactiveExtensionsLogo-2.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/ReactiveExtensionsLogo.imageset/ReactiveExtensionsLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/RxExample/RxExample/Images.xcassets/ReactiveExtensionsLogo.imageset/ReactiveExtensionsLogo.png -------------------------------------------------------------------------------- /RxExample/RxExample/Lenses.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Lenses.swift 3 | // RxExample 4 | // 5 | // Created by Krunoslav Zaher on 5/20/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | // These are kind of "Swift" lenses. We don't need to generate a lot of code this way and can just use Swift `var`. 10 | protocol Mutable { 11 | } 12 | 13 | extension Mutable { 14 | func mutateOne(transform: (inout Self) -> T) -> Self { 15 | var newSelf = self 16 | _ = transform(&newSelf) 17 | return newSelf 18 | } 19 | 20 | func mutate(transform: (inout Self) -> Void) -> Self { 21 | var newSelf = self 22 | transform(&newSelf) 23 | return newSelf 24 | } 25 | 26 | func mutate(transform: (inout Self) throws -> Void) rethrows -> Self { 27 | var newSelf = self 28 | try transform(&newSelf) 29 | return newSelf 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /RxExample/RxExample/RxExample.xcdatamodeld/.xccurrentversion: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /RxExample/RxExample/RxExample.xcdatamodeld/RxExample.xcdatamodel/contents: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /RxExample/RxExample/Services/DownloadableImage.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DownloadableImage.swift 3 | // RxExample 4 | // 5 | // Created by Vodovozov Gleb on 10/31/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | #if os(iOS) 11 | import UIKit 12 | #elseif os(macOS) 13 | import Cocoa 14 | #endif 15 | 16 | enum DownloadableImage{ 17 | case content(image:Image) 18 | case offlinePlaceholder 19 | 20 | } 21 | -------------------------------------------------------------------------------- /RxExample/RxExample/Services/PseudoRandomGenerator.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PseudoRandomGenerator.swift 3 | // RxExample 4 | // 5 | // Created by Krunoslav Zaher on 6/28/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | 10 | 11 | // https://en.wikipedia.org/wiki/Random_number_generation 12 | class PseudoRandomGenerator { 13 | var m_w: UInt32 /* must not be zero, nor 0x464fffff */ 14 | var m_z: UInt32 /* must not be zero, nor 0x9068ffff */ 15 | 16 | init(_ m_w: UInt32, _ m_z: UInt32) { 17 | self.m_w = m_w 18 | self.m_z = m_z 19 | } 20 | 21 | func get_random() -> Int { 22 | m_z = 36969 &* (m_z & 65535) &+ (m_z >> 16); 23 | m_w = 18000 &* (m_w & 65535) &+ (m_w >> 16); 24 | let val = ((m_z << 16) &+ m_w) 25 | return Int(val % (1 << 30)) /* 32-bit result */ 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /RxExample/RxExample/Services/UIImage+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIImage+Extensions.swift 3 | // RxExample 4 | // 5 | // Created by Krunoslav Zaher on 11/1/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | import UIKit 11 | #endif 12 | 13 | extension Image { 14 | func forceLazyImageDecompression() -> Image { 15 | #if os(iOS) 16 | UIGraphicsBeginImageContext(CGSize(width: 1, height: 1)) 17 | self.draw(at: CGPoint.zero) 18 | UIGraphicsEndImageContext() 19 | #endif 20 | return self 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /RxExample/RxExample/String+URL.swift: -------------------------------------------------------------------------------- 1 | // 2 | // String+URL.swift 3 | // RxExample 4 | // 5 | // Created by Krunoslav Zaher on 12/28/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | 10 | extension String { 11 | var URLEscaped: String { 12 | return self.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) ?? "" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /RxExample/RxExample/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // RxExample 4 | // 5 | // Created by Krunoslav Zaher on 4/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | #if os(iOS) 12 | import UIKit 13 | typealias OSViewController = UIViewController 14 | #elseif os(macOS) 15 | import Cocoa 16 | typealias OSViewController = NSViewController 17 | #endif 18 | 19 | class ViewController: OSViewController { 20 | var disposeBag = DisposeBag() 21 | } 22 | -------------------------------------------------------------------------------- /RxExample/RxExample/iOS/UITableView+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UITableView+Extensions.swift 3 | // RxExample 4 | // 5 | // Created by Krunoslav Zaher on 8/20/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | extension UITableView { 12 | func hideEmptyCells() { 13 | self.tableFooterView = UIView(frame: .zero) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /RxExample/RxExample/macOS/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // RxExample 4 | // 5 | // Created by Krunoslav Zaher on 5/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | @NSApplicationMain 12 | class AppDelegate: NSObject, NSApplicationDelegate { 13 | 14 | func applicationDidFinishLaunching(aNotification: Notification) { 15 | // Insert code here to initialize your application 16 | } 17 | 18 | func applicationWillTerminate(aNotification: Notification) { 19 | // Insert code here to tear down your application 20 | } 21 | 22 | 23 | } 24 | -------------------------------------------------------------------------------- /RxRelay/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 6.9.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(CURRENT_PROJECT_VERSION) 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /RxRelay/Utils.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Utils.swift 3 | // RxRelay 4 | // 5 | // Created by Shai Mishali on 09/04/2019. 6 | // Copyright © 2019 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | func rxFatalErrorInDebug(_ lastMessage: @autoclosure () -> String, file: StaticString = #file, line: UInt = #line) { 12 | #if DEBUG 13 | fatalError(lastMessage(), file: file, line: line) 14 | #else 15 | print("\(file):\(line): \(lastMessage())") 16 | #endif 17 | } 18 | -------------------------------------------------------------------------------- /RxSwift/Cancelable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Cancelable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents disposable resource with state tracking. 10 | public protocol Cancelable : Disposable { 11 | /// Was resource disposed. 12 | var isDisposed: Bool { get } 13 | } 14 | -------------------------------------------------------------------------------- /RxSwift/Concurrency/Lock.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Lock.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/31/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol Lock { 10 | func lock() 11 | func unlock() 12 | } 13 | 14 | // https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20151214/000321.html 15 | typealias SpinLock = RecursiveLock 16 | 17 | extension RecursiveLock : Lock { 18 | @inline(__always) 19 | final func performLocked(_ action: () -> T) -> T { 20 | self.lock(); defer { self.unlock() } 21 | return action() 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /RxSwift/Concurrency/LockOwnerType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LockOwnerType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol LockOwnerType: AnyObject, Lock { 10 | var lock: RecursiveLock { get } 11 | } 12 | 13 | extension LockOwnerType { 14 | func lock() { self.lock.lock() } 15 | func unlock() { self.lock.unlock() } 16 | } 17 | -------------------------------------------------------------------------------- /RxSwift/Concurrency/SynchronizedDisposeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedDisposeType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol SynchronizedDisposeType: AnyObject, Disposable, Lock { 10 | func synchronized_dispose() 11 | } 12 | 13 | extension SynchronizedDisposeType { 14 | func synchronizedDispose() { 15 | self.lock(); defer { self.unlock() } 16 | self.synchronized_dispose() 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /RxSwift/Concurrency/SynchronizedOnType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedOnType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol SynchronizedOnType: AnyObject, ObserverType, Lock { 10 | func synchronized_on(_ event: Event) 11 | } 12 | 13 | extension SynchronizedOnType { 14 | func synchronizedOn(_ event: Event) { 15 | self.lock(); defer { self.unlock() } 16 | self.synchronized_on(event) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /RxSwift/Concurrency/SynchronizedUnsubscribeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedUnsubscribeType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol SynchronizedUnsubscribeType: AnyObject { 10 | associatedtype DisposeKey 11 | 12 | func synchronizedUnsubscribe(_ disposeKey: DisposeKey) 13 | } 14 | -------------------------------------------------------------------------------- /RxSwift/ConnectableObservableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ConnectableObservableType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/1/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /** 10 | Represents an observable sequence wrapper that can be connected and disconnected from its underlying observable sequence. 11 | */ 12 | public protocol ConnectableObservableType : ObservableType { 13 | /** 14 | Connects the observable wrapper to its source. All subscribed observers will receive values from the underlying observable sequence as long as the connection is established. 15 | 16 | - returns: Disposable used to disconnect the observable wrapper from its source, causing subscribed observer to stop receiving values from the underlying observable sequence. 17 | */ 18 | func connect() -> Disposable 19 | } 20 | -------------------------------------------------------------------------------- /RxSwift/Disposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Disposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents a disposable resource. 10 | public protocol Disposable { 11 | /// Dispose resource. 12 | func dispose() 13 | } 14 | -------------------------------------------------------------------------------- /RxSwift/Disposables/Disposables.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Disposables.swift 3 | // RxSwift 4 | // 5 | // Created by Mohsen Ramezanpoor on 01/08/2016. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// A collection of utility methods for common disposable operations. 10 | public struct Disposables { 11 | private init() {} 12 | } 13 | 14 | -------------------------------------------------------------------------------- /RxSwift/Disposables/DisposeBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DisposeBase.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 4/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Base class for all disposables. 10 | public class DisposeBase { 11 | init() { 12 | #if TRACE_RESOURCES 13 | _ = Resources.incrementTotal() 14 | #endif 15 | } 16 | 17 | deinit { 18 | #if TRACE_RESOURCES 19 | _ = Resources.decrementTotal() 20 | #endif 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /RxSwift/Disposables/NopDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NopDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/15/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents a disposable that does nothing on disposal. 10 | /// 11 | /// Nop = No Operation 12 | private struct NopDisposable : Disposable { 13 | 14 | fileprivate static let noOp: Disposable = NopDisposable() 15 | 16 | private init() { 17 | 18 | } 19 | 20 | /// Does nothing. 21 | public func dispose() { 22 | } 23 | } 24 | 25 | extension Disposables { 26 | /** 27 | Creates a disposable that does nothing on disposal. 28 | */ 29 | static public func create() -> Disposable { NopDisposable.noOp } 30 | } 31 | -------------------------------------------------------------------------------- /RxSwift/Disposables/SubscriptionDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubscriptionDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | struct SubscriptionDisposable : Disposable { 10 | private let key: T.DisposeKey 11 | private weak var owner: T? 12 | 13 | init(owner: T, key: T.DisposeKey) { 14 | self.owner = owner 15 | self.key = key 16 | } 17 | 18 | func dispose() { 19 | self.owner?.synchronizedUnsubscribe(self.key) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /RxSwift/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 6.9.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(CURRENT_PROJECT_VERSION) 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /RxSwift/Observable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Observable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// A type-erased `ObservableType`. 10 | /// 11 | /// It represents a push style sequence. 12 | 13 | public typealias RxObservable = RxSwift.Observable 14 | 15 | public class Observable : ObservableType { 16 | init() { 17 | #if TRACE_RESOURCES 18 | _ = Resources.incrementTotal() 19 | #endif 20 | } 21 | 22 | public func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 23 | rxAbstractMethod() 24 | } 25 | 26 | public func asObservable() -> Observable { self } 27 | 28 | deinit { 29 | #if TRACE_RESOURCES 30 | _ = Resources.decrementTotal() 31 | #endif 32 | } 33 | } 34 | 35 | -------------------------------------------------------------------------------- /RxSwift/ObservableConvertibleType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObservableConvertibleType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 9/17/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Type that can be converted to observable sequence (`Observable`). 10 | public protocol ObservableConvertibleType { 11 | /// Type of elements in sequence. 12 | associatedtype Element 13 | 14 | /// Converts `self` to `Observable` sequence. 15 | /// 16 | /// - returns: Observable sequence that represents `self`. 17 | func asObservable() -> Observable 18 | } 19 | -------------------------------------------------------------------------------- /RxSwift/Observers/AnonymousObserver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnonymousObserver.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | final class AnonymousObserver: ObserverBase { 10 | typealias EventHandler = (Event) -> Void 11 | 12 | private let eventHandler : EventHandler 13 | 14 | init(_ eventHandler: @escaping EventHandler) { 15 | #if TRACE_RESOURCES 16 | _ = Resources.incrementTotal() 17 | #endif 18 | self.eventHandler = eventHandler 19 | } 20 | 21 | override func onCore(_ event: Event) { 22 | self.eventHandler(event) 23 | } 24 | 25 | #if TRACE_RESOURCES 26 | deinit { 27 | _ = Resources.decrementTotal() 28 | } 29 | #endif 30 | } 31 | -------------------------------------------------------------------------------- /RxSwift/Observers/ObserverBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObserverBase.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/15/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | class ObserverBase : Disposable, ObserverType { 10 | private let isStopped = AtomicInt(0) 11 | 12 | func on(_ event: Event) { 13 | switch event { 14 | case .next: 15 | if load(self.isStopped) == 0 { 16 | self.onCore(event) 17 | } 18 | case .error, .completed: 19 | if fetchOr(self.isStopped, 1) == 0 { 20 | self.onCore(event) 21 | } 22 | } 23 | } 24 | 25 | func onCore(_ event: Event) { 26 | rxAbstractMethod() 27 | } 28 | 29 | func dispose() { 30 | fetchOr(self.isStopped, 1) 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /RxSwift/Platform/AtomicInt.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/AtomicInt.swift -------------------------------------------------------------------------------- /RxSwift/Platform/DataStructures/Bag.swift: -------------------------------------------------------------------------------- 1 | ../../../Platform/DataStructures/Bag.swift -------------------------------------------------------------------------------- /RxSwift/Platform/DataStructures/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | ../../../Platform/DataStructures/InfiniteSequence.swift -------------------------------------------------------------------------------- /RxSwift/Platform/DataStructures/PriorityQueue.swift: -------------------------------------------------------------------------------- 1 | ../../../Platform/DataStructures/PriorityQueue.swift -------------------------------------------------------------------------------- /RxSwift/Platform/DataStructures/Queue.swift: -------------------------------------------------------------------------------- 1 | ../../../Platform/DataStructures/Queue.swift -------------------------------------------------------------------------------- /RxSwift/Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/DispatchQueue+Extensions.swift -------------------------------------------------------------------------------- /RxSwift/Platform/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/Platform.Darwin.swift -------------------------------------------------------------------------------- /RxSwift/Platform/Platform.Linux.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/Platform.Linux.swift -------------------------------------------------------------------------------- /RxSwift/Platform/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/RecursiveLock.swift -------------------------------------------------------------------------------- /RxSwift/Schedulers/HistoricalScheduler.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HistoricalScheduler.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 12/27/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Provides a virtual time scheduler that uses `Date` for absolute time and `TimeInterval` for relative time. 12 | public class HistoricalScheduler : VirtualTimeScheduler { 13 | 14 | /** 15 | Creates a new historical scheduler with initial clock value. 16 | 17 | - parameter initialClock: Initial value for virtual clock. 18 | */ 19 | public init(initialClock: RxTime = Date(timeIntervalSince1970: 0)) { 20 | super.init(initialClock: initialClock, converter: HistoricalSchedulerTimeConverter()) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /RxSwift/Schedulers/Internal/InvocableScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableScheduledItem.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | struct InvocableScheduledItem : InvocableType { 10 | 11 | let invocable: I 12 | let state: I.Value 13 | 14 | init(invocable: I, state: I.Value) { 15 | self.invocable = invocable 16 | self.state = state 17 | } 18 | 19 | func invoke() { 20 | self.invocable.invoke(self.state) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /RxSwift/Schedulers/Internal/InvocableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol InvocableType { 10 | func invoke() 11 | } 12 | 13 | protocol InvocableWithValueType { 14 | associatedtype Value 15 | 16 | func invoke(_ value: Value) 17 | } 18 | -------------------------------------------------------------------------------- /RxSwift/Schedulers/Internal/ScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledItem.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 9/2/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | struct ScheduledItem 10 | : ScheduledItemType 11 | , InvocableType { 12 | typealias Action = (T) -> Disposable 13 | 14 | private let action: Action 15 | private let state: T 16 | 17 | private let disposable = SingleAssignmentDisposable() 18 | 19 | var isDisposed: Bool { 20 | self.disposable.isDisposed 21 | } 22 | 23 | init(action: @escaping Action, state: T) { 24 | self.action = action 25 | self.state = state 26 | } 27 | 28 | func invoke() { 29 | self.disposable.setDisposable(self.action(self.state)) 30 | } 31 | 32 | func dispose() { 33 | self.disposable.dispose() 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /RxSwift/Schedulers/Internal/ScheduledItemType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledItemType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol ScheduledItemType 10 | : Cancelable 11 | , InvocableType { 12 | func invoke() 13 | } 14 | -------------------------------------------------------------------------------- /RxSwift/Subjects/SubjectType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubjectType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/1/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents an object that is both an observable sequence as well as an observer. 10 | public protocol SubjectType : ObservableType { 11 | /// The type of the observer that represents this subject. 12 | /// 13 | /// Usually this type is type of subject itself, but it doesn't have to be. 14 | associatedtype Observer: ObserverType 15 | 16 | /// Returns observer interface for subject. 17 | /// 18 | /// - returns: Observer interface for subject. 19 | func asObserver() -> Observer 20 | 21 | } 22 | -------------------------------------------------------------------------------- /RxSwift/SwiftSupport/SwiftSupport.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SwiftSupport.swift 3 | // RxSwift 4 | // 5 | // Created by Volodymyr Gorbenko on 3/6/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | typealias IntMax = Int64 12 | public typealias RxAbstractInteger = FixedWidthInteger 13 | 14 | extension SignedInteger { 15 | func toIntMax() -> IntMax { 16 | IntMax(self) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /RxTest/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 6.9.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(CURRENT_PROJECT_VERSION) 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /RxTest/Platform/DataStructures/Bag.swift: -------------------------------------------------------------------------------- 1 | ../../../Platform/DataStructures/Bag.swift -------------------------------------------------------------------------------- /RxTest/RxTest.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTest.swift 3 | // RxTest 4 | // 5 | // Created by Krunoslav Zaher on 12/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Virtual time type. 10 | public typealias TestTime = Int 11 | 12 | -------------------------------------------------------------------------------- /RxTest/TestableObserver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TestableObserver.swift 3 | // RxTest 4 | // 5 | // Created by Krunoslav Zaher on 2/15/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | /// Observer that records events together with virtual time when they were received. 12 | public final class TestableObserver 13 | : ObserverType { 14 | private let scheduler: TestScheduler 15 | 16 | /// Recorded events. 17 | public private(set) var events = [Recorded>]() 18 | 19 | init(scheduler: TestScheduler) { 20 | self.scheduler = scheduler 21 | } 22 | 23 | /// Notify observer about sequence event. 24 | /// 25 | /// - parameter event: Event that occurred. 26 | public func on(_ event: Event) { 27 | self.events.append(Recorded(time: self.scheduler.clock, value: event)) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Sources/AllTestz/Anomalies.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Anomalies.swift -------------------------------------------------------------------------------- /Sources/AllTestz/AssumptionsTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/AssumptionsTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/AsyncSubjectTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/AsyncSubjectTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Atomic+Overrides.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Atomic+Overrides.swift -------------------------------------------------------------------------------- /Sources/AllTestz/AtomicInt.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/AtomicInt.swift -------------------------------------------------------------------------------- /Sources/AllTestz/AtomicTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/AtomicTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/BackgroundThreadPrimitiveHotObservable.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/Mocks/BackgroundThreadPrimitiveHotObservable.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Bag.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/DataStructures/Bag.swift -------------------------------------------------------------------------------- /Sources/AllTestz/BehaviorSubjectTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/BehaviorSubjectTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Binder+Tests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Binder+Tests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Completable+AndThen.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Completable+AndThen.swift -------------------------------------------------------------------------------- /Sources/AllTestz/CompletableTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/CompletableTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/CurrentThreadSchedulerTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/CurrentThreadSchedulerTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/DispatchQueue+Extensions.swift -------------------------------------------------------------------------------- /Sources/AllTestz/DisposableTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/DisposableTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/DisposeBagTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/DisposeBagTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Driver+Test.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxCocoaTests/Driver+Test.swift -------------------------------------------------------------------------------- /Sources/AllTestz/ElementIndexPair.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/ElementIndexPair.swift -------------------------------------------------------------------------------- /Sources/AllTestz/EquatableArray.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/EquatableArray.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Event+Test.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Event+Test.swift -------------------------------------------------------------------------------- /Sources/AllTestz/HistoricalSchedulerTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/HistoricalSchedulerTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Infallible+CombineLatestTests+arity.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Infallible+CombineLatestTests+arity.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Infallible+ConcurrencyTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Infallible+ConcurrencyTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Infallible+Tests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Infallible+Tests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/DataStructures/InfiniteSequence.swift -------------------------------------------------------------------------------- /Sources/AllTestz/MainSchedulerTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/MainSchedulerTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/MainThreadPrimitiveHotObservable.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/Mocks/MainThreadPrimitiveHotObservable.swift -------------------------------------------------------------------------------- /Sources/AllTestz/MaybeTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/MaybeTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/MockDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/Mocks/MockDisposable.swift -------------------------------------------------------------------------------- /Sources/AllTestz/MySubject.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/Mocks/MySubject.swift -------------------------------------------------------------------------------- /Sources/AllTestz/NotificationCenterTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxCocoaTests/NotificationCenterTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+AmbTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+AmbTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+BlockingTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxBlockingTests/Observable+BlockingTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+BufferTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+BufferTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+CatchTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+CatchTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+CombineLatestTests+arity.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+CombineLatestTests+arity.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+CombineLatestTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+CombineLatestTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+CompactMapTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+CompactMapTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+ConcatTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+ConcatTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+ConcurrencyTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+ConcurrencyTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+DebugTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+DebugTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+DecodeTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+DecodeTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+DefaultIfEmpty.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+DefaultIfEmpty.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+DelaySubscriptionTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+DelaySubscriptionTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+DelayTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+DelayTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+DematerializeTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+DematerializeTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+DistinctUntilChangedTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+DistinctUntilChangedTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+DoOnTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+DoOnTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+ElementAtTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+ElementAtTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+EnumeratedTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+EnumeratedTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/Observable+Extensions.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+FilterTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+FilterTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+GenerateTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+GenerateTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+GroupByTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+GroupByTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+JustTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+JustTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+MapTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+MapTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+MaterializeTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+MaterializeTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+MergeTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+MergeTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+MulticastTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+MulticastTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+ObserveOnTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+ObserveOnTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+OptionalTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+OptionalTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+PrimitiveSequenceTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+PrimitiveSequenceTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+RangeTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+RangeTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+ReduceTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+ReduceTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+RelayBindTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxRelayTests/Observable+RelayBindTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+RepeatTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+RepeatTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+RetryWhenTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+RetryWhenTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+SampleTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+SampleTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+ScanTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+ScanTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+SequenceTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+SequenceTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+ShareReplayScopeTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+ShareReplayScopeTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+SingleTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+SingleTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+SkipTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+SkipTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+SkipUntilTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+SkipUntilTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+SkipWhileTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+SkipWhileTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+SubscribeOnTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+SubscribeOnTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+SubscriptionTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+SubscriptionTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+SwitchIfEmptyTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+SwitchIfEmptyTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+SwitchTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+SwitchTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+TakeLastTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+TakeLastTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+TakeTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+TakeTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+TakeUntilTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+TakeUntilTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+TakeWhileTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+TakeWhileTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+Tests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+Tests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+ThrottleTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+ThrottleTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+TimeoutTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+TimeoutTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+TimerTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+TimerTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+ToArrayTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+ToArrayTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+UsingTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+UsingTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+WindowTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+WindowTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+WithLatestFromTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+WithLatestFromTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+WithUnretainedTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+WithUnretainedTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+ZipTests+arity.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+ZipTests+arity.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+ZipTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+ZipTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable.Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/Mocks/Observable.Extensions.swift -------------------------------------------------------------------------------- /Sources/AllTestz/ObservableType+SubscriptionTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/ObservableType+SubscriptionTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/ObserverTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/ObserverTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/Platform.Darwin.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Platform.Linux.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/Platform.Linux.swift -------------------------------------------------------------------------------- /Sources/AllTestz/PrimitiveHotObservable.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/Mocks/PrimitiveHotObservable.swift -------------------------------------------------------------------------------- /Sources/AllTestz/PrimitiveMockObserver.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/Mocks/PrimitiveMockObserver.swift -------------------------------------------------------------------------------- /Sources/AllTestz/PrimitiveSequence+ConcurrencyTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/PrimitiveSequence+ConcurrencyTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/PrimitiveSequenceTest+zip+arity.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/PrimitiveSequenceTest+zip+arity.swift -------------------------------------------------------------------------------- /Sources/AllTestz/PriorityQueue.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/DataStructures/PriorityQueue.swift -------------------------------------------------------------------------------- /Sources/AllTestz/PublishSubjectTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/PublishSubjectTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Queue.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/DataStructures/Queue.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Reactive+Tests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Reactive+Tests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Recorded+Timeless.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/Recorded+Timeless.swift -------------------------------------------------------------------------------- /Sources/AllTestz/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/RecursiveLock.swift -------------------------------------------------------------------------------- /Sources/AllTestz/RecursiveLockTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/RecursiveLockTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/ReplayRelayTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxRelayTests/ReplayRelayTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/ReplaySubjectTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/ReplaySubjectTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/RxMutableBox.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/RxMutableBox.swift -------------------------------------------------------------------------------- /Sources/AllTestz/RxTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/SchedulerTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/SchedulerTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/SharedSequence+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxCocoaTests/SharedSequence+Extensions.swift -------------------------------------------------------------------------------- /Sources/AllTestz/SharedSequence+OperatorTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxCocoaTests/SharedSequence+OperatorTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/SharedSequence+Test.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxCocoaTests/SharedSequence+Test.swift -------------------------------------------------------------------------------- /Sources/AllTestz/SharingSchedulerTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/SharingSchedulerTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Signal+Test.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxCocoaTests/Signal+Test.swift -------------------------------------------------------------------------------- /Sources/AllTestz/SingleTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/SingleTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Synchronized.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Synchronized.swift -------------------------------------------------------------------------------- /Sources/AllTestz/TestConnectableObservable.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/Mocks/TestConnectableObservable.swift -------------------------------------------------------------------------------- /Sources/AllTestz/TestErrors.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/TestErrors.swift -------------------------------------------------------------------------------- /Sources/AllTestz/TestVirtualScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/TestVirtualScheduler.swift -------------------------------------------------------------------------------- /Sources/AllTestz/VirtualSchedulerTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/VirtualSchedulerTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/XCTest+AllTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/XCTest+AllTests.swift -------------------------------------------------------------------------------- /Sources/RxBlocking/AtomicInt.swift: -------------------------------------------------------------------------------- 1 | ../../RxBlocking/Platform/AtomicInt.swift -------------------------------------------------------------------------------- /Sources/RxBlocking/BlockingObservable+Operators.swift: -------------------------------------------------------------------------------- 1 | ../../RxBlocking/BlockingObservable+Operators.swift -------------------------------------------------------------------------------- /Sources/RxBlocking/BlockingObservable.swift: -------------------------------------------------------------------------------- 1 | ../../RxBlocking/BlockingObservable.swift -------------------------------------------------------------------------------- /Sources/RxBlocking/ObservableConvertibleType+Blocking.swift: -------------------------------------------------------------------------------- 1 | ../../RxBlocking/ObservableConvertibleType+Blocking.swift -------------------------------------------------------------------------------- /Sources/RxBlocking/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | ../../RxBlocking/Platform/Platform.Darwin.swift -------------------------------------------------------------------------------- /Sources/RxBlocking/Platform.Linux.swift: -------------------------------------------------------------------------------- 1 | ../../RxBlocking/Platform/Platform.Linux.swift -------------------------------------------------------------------------------- /Sources/RxBlocking/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | ../../RxBlocking/Platform/RecursiveLock.swift -------------------------------------------------------------------------------- /Sources/RxBlocking/Resources.swift: -------------------------------------------------------------------------------- 1 | ../../RxBlocking/Resources.swift -------------------------------------------------------------------------------- /Sources/RxBlocking/RunLoopLock.swift: -------------------------------------------------------------------------------- 1 | ../../RxBlocking/RunLoopLock.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/BehaviorRelay+Driver.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Driver/BehaviorRelay+Driver.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/ControlEvent+Driver.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Driver/ControlEvent+Driver.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/ControlEvent+Signal.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Signal/ControlEvent+Signal.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/ControlEvent.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/ControlEvent.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/ControlProperty+Driver.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Driver/ControlProperty+Driver.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/ControlProperty.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/ControlProperty.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/ControlTarget.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Common/ControlTarget.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/DelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Common/DelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/DelegateProxyType.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Common/DelegateProxyType.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Platform/DispatchQueue+Extensions.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/Driver+Subscription.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Driver/Driver+Subscription.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/Driver.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Driver/Driver.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/Infallible+Bind.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Common/Infallible+Bind.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/Infallible+Driver.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Driver/Infallible+Driver.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/ItemEvents.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Events/ItemEvents.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/KVORepresentable+CoreGraphics.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Foundation/KVORepresentable+CoreGraphics.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/KVORepresentable+Swift.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Foundation/KVORepresentable+Swift.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/KVORepresentable.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Foundation/KVORepresentable.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/NSButton+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/macOS/NSButton+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/NSControl+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/macOS/NSControl+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/NSObject+Rx+KVORepresentable.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Foundation/NSObject+Rx+KVORepresentable.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/NSObject+Rx+RawRepresentable.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Foundation/NSObject+Rx+RawRepresentable.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/NSObject+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Foundation/NSObject+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/NSSlider+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/macOS/NSSlider+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/NSTextField+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/macOS/NSTextField+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/NSTextStorage+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/NSTextStorage+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/NSTextView+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/macOS/NSTextView+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/NSView+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/macOS/NSView+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/NotificationCenter+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Foundation/NotificationCenter+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/Observable+Bind.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Common/Observable+Bind.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/ObservableConvertibleType+Driver.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Driver/ObservableConvertibleType+Driver.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/ObservableConvertibleType+SharedSequence.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/SharedSequence/ObservableConvertibleType+SharedSequence.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/ObservableConvertibleType+Signal.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Signal/ObservableConvertibleType+Signal.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/PrivacyInfo.xcprivacy: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSPrivacyTracking 6 | 7 | NSPrivacyAccessedAPITypes 8 | 9 | NSPrivacyCollectedDataTypes 10 | 11 | NSPrivacyTrackingDomains 12 | 13 | 14 | -------------------------------------------------------------------------------- /Sources/RxCocoa/PublishRelay+Signal.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Signal/PublishRelay+Signal.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxCocoa.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/RxCocoa.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxCocoaObjCRuntimeError+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Common/RxCocoaObjCRuntimeError+Extensions.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxCollectionViewDataSourcePrefetchingProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxCollectionViewDataSourcePrefetchingProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxCollectionViewDataSourceProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxCollectionViewDataSourceProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxCollectionViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Protocols/RxCollectionViewDataSourceType.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxCollectionViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxCollectionViewDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxCollectionViewReactiveArrayDataSource.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/DataSources/RxCollectionViewReactiveArrayDataSource.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxNavigationControllerDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxNavigationControllerDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxPickerViewAdapter.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/DataSources/RxPickerViewAdapter.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxPickerViewDataSourceProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxPickerViewDataSourceProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxPickerViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Protocols/RxPickerViewDataSourceType.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxPickerViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxPickerViewDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxScrollViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxScrollViewDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxSearchBarDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxSearchBarDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxSearchControllerDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxSearchControllerDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxTabBarControllerDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxTabBarControllerDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxTabBarDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxTabBarDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxTableViewDataSourcePrefetchingProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxTableViewDataSourcePrefetchingProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxTableViewDataSourceProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxTableViewDataSourceProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxTableViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Protocols/RxTableViewDataSourceType.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxTableViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxTableViewDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxTableViewReactiveArrayDataSource.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/DataSources/RxTableViewReactiveArrayDataSource.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxTarget.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Common/RxTarget.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxTextStorageDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxTextStorageDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxTextViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxTextViewDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxWKNavigationDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxWKNavigationDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/SchedulerType+SharedSequence.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/SharedSequence/SchedulerType+SharedSequence.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/SectionedViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Common/SectionedViewDataSourceType.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/SharedSequence+Concurrency.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/SharedSequence/SharedSequence+Concurrency.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/SharedSequence+Operators+arity.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/SharedSequence/SharedSequence+Operators+arity.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/SharedSequence+Operators.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/SharedSequence/SharedSequence+Operators.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/SharedSequence.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/SharedSequence/SharedSequence.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/Signal+Subscription.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Signal/Signal+Subscription.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/Signal.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Signal/Signal.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/TextInput.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Common/TextInput.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIActivityIndicatorView+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIActivityIndicatorView+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIApplication+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIApplication+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIBarButtonItem+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIBarButtonItem+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIButton+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIButton+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UICollectionView+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UICollectionView+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIControl+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIControl+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIDatePicker+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIDatePicker+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIGestureRecognizer+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIGestureRecognizer+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UINavigationController+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UINavigationController+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIPickerView+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIPickerView+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIRefreshControl+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIRefreshControl+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIScrollView+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIScrollView+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UISearchBar+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UISearchBar+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UISearchController+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UISearchController+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UISegmentedControl+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UISegmentedControl+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UISlider+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UISlider+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIStepper+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIStepper+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UISwitch+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UISwitch+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UITabBar+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UITabBar+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UITabBarController+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UITabBarController+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UITableView+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UITableView+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UITextField+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UITextField+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UITextView+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UITextView+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/URLSession+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Foundation/URLSession+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/WKWebView+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/WKWebView+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoaRuntime/PrivacyInfo.xcprivacy: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSPrivacyTracking 6 | 7 | NSPrivacyAccessedAPITypes 8 | 9 | NSPrivacyCollectedDataTypes 10 | 11 | NSPrivacyTrackingDomains 12 | 13 | 14 | -------------------------------------------------------------------------------- /Sources/RxCocoaRuntime/_RX.m: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Runtime/_RX.m -------------------------------------------------------------------------------- /Sources/RxCocoaRuntime/_RXDelegateProxy.m: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Runtime/_RXDelegateProxy.m -------------------------------------------------------------------------------- /Sources/RxCocoaRuntime/_RXKVOObserver.m: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Runtime/_RXKVOObserver.m -------------------------------------------------------------------------------- /Sources/RxCocoaRuntime/_RXObjCRuntime.m: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Runtime/_RXObjCRuntime.m -------------------------------------------------------------------------------- /Sources/RxCocoaRuntime/include/RxCocoaRuntime.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoaRuntime.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "_RX.h" 11 | #import "_RXDelegateProxy.h" 12 | #import "_RXKVOObserver.h" 13 | #import "_RXObjCRuntime.h" 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 20 | -------------------------------------------------------------------------------- /Sources/RxCocoaRuntime/include/_RXDelegateProxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXDelegateProxy.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface _RXDelegateProxy : NSObject 14 | 15 | @property (nonatomic, weak, readonly) id _forwardToDelegate; 16 | 17 | -(void)_setForwardToDelegate:(id __nullable)forwardToDelegate retainDelegate:(BOOL)retainDelegate NS_SWIFT_NAME(_setForwardToDelegate(_:retainDelegate:)) ; 18 | 19 | -(BOOL)hasWiredImplementationForSelector:(SEL)selector; 20 | -(BOOL)voidDelegateMethodsContain:(SEL)selector; 21 | 22 | -(void)_sentMessage:(SEL)selector withArguments:(NSArray*)arguments; 23 | -(void)_methodInvoked:(SEL)selector withArguments:(NSArray*)arguments; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /Sources/RxRelay/BehaviorRelay.swift: -------------------------------------------------------------------------------- 1 | ../../RxRelay/BehaviorRelay.swift -------------------------------------------------------------------------------- /Sources/RxRelay/Observable+Bind.swift: -------------------------------------------------------------------------------- 1 | ../../RxRelay/Observable+Bind.swift -------------------------------------------------------------------------------- /Sources/RxRelay/PrivacyInfo.xcprivacy: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSPrivacyTracking 6 | 7 | NSPrivacyAccessedAPITypes 8 | 9 | NSPrivacyCollectedDataTypes 10 | 11 | NSPrivacyTrackingDomains 12 | 13 | 14 | -------------------------------------------------------------------------------- /Sources/RxRelay/PublishRelay.swift: -------------------------------------------------------------------------------- 1 | ../../RxRelay/PublishRelay.swift -------------------------------------------------------------------------------- /Sources/RxRelay/ReplayRelay.swift: -------------------------------------------------------------------------------- 1 | ../../RxRelay/ReplayRelay.swift -------------------------------------------------------------------------------- /Sources/RxRelay/Utils.swift: -------------------------------------------------------------------------------- 1 | ../../RxRelay/Utils.swift -------------------------------------------------------------------------------- /Sources/RxSwift/AddRef.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/AddRef.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Amb.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Amb.swift -------------------------------------------------------------------------------- /Sources/RxSwift/AnonymousDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/AnonymousDisposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/AnonymousObserver.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observers/AnonymousObserver.swift -------------------------------------------------------------------------------- /Sources/RxSwift/AnyObserver.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/AnyObserver.swift -------------------------------------------------------------------------------- /Sources/RxSwift/AsMaybe.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/AsMaybe.swift -------------------------------------------------------------------------------- /Sources/RxSwift/AsSingle.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/AsSingle.swift -------------------------------------------------------------------------------- /Sources/RxSwift/AsyncLock.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Concurrency/AsyncLock.swift -------------------------------------------------------------------------------- /Sources/RxSwift/AsyncSubject.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Subjects/AsyncSubject.swift -------------------------------------------------------------------------------- /Sources/RxSwift/AtomicInt.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Platform/AtomicInt.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Bag+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Extensions/Bag+Rx.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Bag.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Platform/DataStructures/Bag.swift -------------------------------------------------------------------------------- /Sources/RxSwift/BehaviorSubject.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Subjects/BehaviorSubject.swift -------------------------------------------------------------------------------- /Sources/RxSwift/BinaryDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/BinaryDisposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Binder.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Binder.swift -------------------------------------------------------------------------------- /Sources/RxSwift/BooleanDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/BooleanDisposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Buffer.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Buffer.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Cancelable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Cancelable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Catch.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Catch.swift -------------------------------------------------------------------------------- /Sources/RxSwift/CombineLatest+Collection.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/CombineLatest+Collection.swift -------------------------------------------------------------------------------- /Sources/RxSwift/CombineLatest+arity.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/CombineLatest+arity.swift -------------------------------------------------------------------------------- /Sources/RxSwift/CombineLatest.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/CombineLatest.swift -------------------------------------------------------------------------------- /Sources/RxSwift/CompactMap.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/CompactMap.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Completable+AndThen.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/PrimitiveSequence/Completable+AndThen.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Completable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/PrimitiveSequence/Completable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/CompositeDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/CompositeDisposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Concat.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Concat.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ConcurrentDispatchQueueScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/ConcurrentDispatchQueueScheduler.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ConcurrentMainScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/ConcurrentMainScheduler.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ConnectableObservableType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/ConnectableObservableType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Create.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Create.swift -------------------------------------------------------------------------------- /Sources/RxSwift/CurrentThreadScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/CurrentThreadScheduler.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Date+Dispatch.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Date+Dispatch.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Debounce.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Debounce.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Debug.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Debug.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Decode.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Decode.swift -------------------------------------------------------------------------------- /Sources/RxSwift/DefaultIfEmpty.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/DefaultIfEmpty.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Deferred.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Deferred.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Delay.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Delay.swift -------------------------------------------------------------------------------- /Sources/RxSwift/DelaySubscription.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/DelaySubscription.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Dematerialize.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Dematerialize.swift -------------------------------------------------------------------------------- /Sources/RxSwift/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Platform/DispatchQueue+Extensions.swift -------------------------------------------------------------------------------- /Sources/RxSwift/DispatchQueueConfiguration.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/Internal/DispatchQueueConfiguration.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Disposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Disposables.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/Disposables.swift -------------------------------------------------------------------------------- /Sources/RxSwift/DisposeBag.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/DisposeBag.swift -------------------------------------------------------------------------------- /Sources/RxSwift/DisposeBase.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/DisposeBase.swift -------------------------------------------------------------------------------- /Sources/RxSwift/DistinctUntilChanged.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/DistinctUntilChanged.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Do.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Do.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ElementAt.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/ElementAt.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Empty.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Empty.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Enumerated.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Enumerated.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Error.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Error.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Errors.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Errors.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Event.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Event.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Filter.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Filter.swift -------------------------------------------------------------------------------- /Sources/RxSwift/First.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/First.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Generate.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Generate.swift -------------------------------------------------------------------------------- /Sources/RxSwift/GroupBy.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/GroupBy.swift -------------------------------------------------------------------------------- /Sources/RxSwift/GroupedObservable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/GroupedObservable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/HistoricalScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/HistoricalScheduler.swift -------------------------------------------------------------------------------- /Sources/RxSwift/HistoricalSchedulerTimeConverter.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/HistoricalSchedulerTimeConverter.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ImmediateSchedulerType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/ImmediateSchedulerType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Infallible+CombineLatest+Collection.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/Infallible/Infallible+CombineLatest+Collection.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Infallible+CombineLatest+arity.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/Infallible/Infallible+CombineLatest+arity.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Infallible+Concurrency.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/Infallible/Infallible+Concurrency.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Infallible+Create.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/Infallible/Infallible+Create.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Infallible+Debug.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/Infallible/Infallible+Debug.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Infallible+Operators.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/Infallible/Infallible+Operators.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Infallible+Zip+arity.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/Infallible/Infallible+Zip+arity.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Infallible.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/Infallible/Infallible.swift -------------------------------------------------------------------------------- /Sources/RxSwift/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Platform/DataStructures/InfiniteSequence.swift -------------------------------------------------------------------------------- /Sources/RxSwift/InvocableScheduledItem.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/Internal/InvocableScheduledItem.swift -------------------------------------------------------------------------------- /Sources/RxSwift/InvocableType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/Internal/InvocableType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Just.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Just.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Lock.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Concurrency/Lock.swift -------------------------------------------------------------------------------- /Sources/RxSwift/LockOwnerType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Concurrency/LockOwnerType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/MainScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/MainScheduler.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Map.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Map.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Materialize.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Materialize.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Maybe.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/PrimitiveSequence/Maybe.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Merge.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Merge.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Multicast.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Multicast.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Never.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Never.swift -------------------------------------------------------------------------------- /Sources/RxSwift/NopDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/NopDisposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Observable+Concurrency.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observable+Concurrency.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Observable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ObservableConvertibleType+Infallible.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/Infallible/ObservableConvertibleType+Infallible.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ObservableConvertibleType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/ObservableConvertibleType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ObservableType+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/ObservableType+Extensions.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ObservableType+PrimitiveSequence.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/PrimitiveSequence/ObservableType+PrimitiveSequence.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ObservableType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/ObservableType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ObserveOn.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/ObserveOn.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ObserverBase.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observers/ObserverBase.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ObserverType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/ObserverType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/OperationQueueScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/OperationQueueScheduler.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Optional.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Optional.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Platform/Platform.Darwin.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Platform.Linux.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Platform/Platform.Linux.swift -------------------------------------------------------------------------------- /Sources/RxSwift/PrimitiveSequence+Concurrency.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/PrimitiveSequence/PrimitiveSequence+Concurrency.swift -------------------------------------------------------------------------------- /Sources/RxSwift/PrimitiveSequence+Zip+arity.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/PrimitiveSequence/PrimitiveSequence+Zip+arity.swift -------------------------------------------------------------------------------- /Sources/RxSwift/PrimitiveSequence.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/PrimitiveSequence/PrimitiveSequence.swift -------------------------------------------------------------------------------- /Sources/RxSwift/PriorityQueue.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Platform/DataStructures/PriorityQueue.swift -------------------------------------------------------------------------------- /Sources/RxSwift/PrivacyInfo.xcprivacy: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSPrivacyTracking 6 | 7 | NSPrivacyAccessedAPITypes 8 | 9 | NSPrivacyCollectedDataTypes 10 | 11 | NSPrivacyTrackingDomains 12 | 13 | 14 | -------------------------------------------------------------------------------- /Sources/RxSwift/Producer.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Producer.swift -------------------------------------------------------------------------------- /Sources/RxSwift/PublishSubject.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Subjects/PublishSubject.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Queue.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Platform/DataStructures/Queue.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Range.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Range.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Reactive.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Reactive.swift -------------------------------------------------------------------------------- /Sources/RxSwift/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Platform/RecursiveLock.swift -------------------------------------------------------------------------------- /Sources/RxSwift/RecursiveScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/RecursiveScheduler.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Reduce.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Reduce.swift -------------------------------------------------------------------------------- /Sources/RxSwift/RefCountDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/RefCountDisposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Repeat.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Repeat.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ReplaySubject.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Subjects/ReplaySubject.swift -------------------------------------------------------------------------------- /Sources/RxSwift/RetryWhen.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/RetryWhen.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Rx.swift -------------------------------------------------------------------------------- /Sources/RxSwift/RxMutableBox.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/RxMutableBox.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Sample.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Sample.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Scan.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Scan.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ScheduledDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/ScheduledDisposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ScheduledItem.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/Internal/ScheduledItem.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ScheduledItemType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/Internal/ScheduledItemType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SchedulerServices+Emulation.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/SchedulerServices+Emulation.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SchedulerType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/SchedulerType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Sequence.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Sequence.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SerialDispatchQueueScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/SerialDispatchQueueScheduler.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SerialDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/SerialDisposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ShareReplayScope.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/ShareReplayScope.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Single.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/PrimitiveSequence/Single.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SingleAssignmentDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/SingleAssignmentDisposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SingleAsync.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/SingleAsync.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Sink.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Sink.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Skip.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Skip.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SkipUntil.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/SkipUntil.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SkipWhile.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/SkipWhile.swift -------------------------------------------------------------------------------- /Sources/RxSwift/StartWith.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/StartWith.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SubjectType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Subjects/SubjectType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SubscribeOn.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/SubscribeOn.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SubscriptionDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/SubscriptionDisposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SwiftSupport.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/SwiftSupport/SwiftSupport.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Switch.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Switch.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SwitchIfEmpty.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/SwitchIfEmpty.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SynchronizedDisposeType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Concurrency/SynchronizedDisposeType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SynchronizedOnType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Concurrency/SynchronizedOnType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SynchronizedUnsubscribeType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Concurrency/SynchronizedUnsubscribeType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/TailRecursiveSink.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observers/TailRecursiveSink.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Take.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Take.swift -------------------------------------------------------------------------------- /Sources/RxSwift/TakeLast.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/TakeLast.swift -------------------------------------------------------------------------------- /Sources/RxSwift/TakeWithPredicate.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/TakeWithPredicate.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Throttle.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Throttle.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Timeout.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Timeout.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Timer.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Timer.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ToArray.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/ToArray.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Using.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Using.swift -------------------------------------------------------------------------------- /Sources/RxSwift/VirtualTimeConverterType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/VirtualTimeConverterType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/VirtualTimeScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/VirtualTimeScheduler.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Window.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Window.swift -------------------------------------------------------------------------------- /Sources/RxSwift/WithLatestFrom.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/WithLatestFrom.swift -------------------------------------------------------------------------------- /Sources/RxSwift/WithUnretained.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/WithUnretained.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Zip+Collection.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Zip+Collection.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Zip+arity.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Zip+arity.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Zip.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Zip.swift -------------------------------------------------------------------------------- /Sources/RxTest/Any+Equatable.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/Any+Equatable.swift -------------------------------------------------------------------------------- /Sources/RxTest/Bag.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/Platform/DataStructures/Bag.swift -------------------------------------------------------------------------------- /Sources/RxTest/ColdObservable.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/ColdObservable.swift -------------------------------------------------------------------------------- /Sources/RxTest/Event+Equatable.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/Event+Equatable.swift -------------------------------------------------------------------------------- /Sources/RxTest/HotObservable.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/HotObservable.swift -------------------------------------------------------------------------------- /Sources/RxTest/Recorded+Event.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/Recorded+Event.swift -------------------------------------------------------------------------------- /Sources/RxTest/Recorded.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/Recorded.swift -------------------------------------------------------------------------------- /Sources/RxTest/RxTest.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/RxTest.swift -------------------------------------------------------------------------------- /Sources/RxTest/Subscription.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/Subscription.swift -------------------------------------------------------------------------------- /Sources/RxTest/TestScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/Schedulers/TestScheduler.swift -------------------------------------------------------------------------------- /Sources/RxTest/TestSchedulerVirtualTimeConverter.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/Schedulers/TestSchedulerVirtualTimeConverter.swift -------------------------------------------------------------------------------- /Sources/RxTest/TestableObservable.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/TestableObservable.swift -------------------------------------------------------------------------------- /Sources/RxTest/TestableObserver.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/TestableObserver.swift -------------------------------------------------------------------------------- /Sources/RxTest/XCTest+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/XCTest+Rx.swift -------------------------------------------------------------------------------- /Tests/Benchmarks/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /Tests/Platform/AtomicInt.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/AtomicInt.swift -------------------------------------------------------------------------------- /Tests/Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/DispatchQueue+Extensions.swift -------------------------------------------------------------------------------- /Tests/Platform/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/Platform.Darwin.swift -------------------------------------------------------------------------------- /Tests/Platform/Platform.Linux.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/Platform.Linux.swift -------------------------------------------------------------------------------- /Tests/Platform/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/RecursiveLock.swift -------------------------------------------------------------------------------- /Tests/Recorded+Timeless.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Recorded+Timeless.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 12/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxTest 10 | import RxSwift 11 | 12 | extension Recorded { 13 | 14 | static func next(_ element: T) -> Recorded> where Value == Event { 15 | Recorded(time: 0, value: .next(element)) 16 | } 17 | 18 | static func completed(_ type: T.Type = T.self) -> Recorded> where Value == Event { 19 | Recorded(time: 0, value: .completed) 20 | } 21 | 22 | static func error(_ error: Swift.Error, _ type: T.Type = T.self) -> Recorded> where Value == Event { 23 | Recorded(time: 0, value: .error(error)) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Tests/Resources.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Resources.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 1/21/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | #if TRACE_RESOURCES 12 | struct Resources { 13 | static func incrementTotal() -> Int32 { 14 | return RxSwift.Resources.incrementTotal() 15 | } 16 | 17 | static func decrementTotal() -> Int32 { 18 | return RxSwift.Resources.decrementTotal() 19 | } 20 | 21 | static var numberOfSerialDispatchQueueObservables: Int32 { 22 | return RxSwift.Resources.numberOfSerialDispatchQueueObservables 23 | } 24 | 25 | static var total: Int32 { 26 | return RxSwift.Resources.total 27 | } 28 | } 29 | #endif 30 | -------------------------------------------------------------------------------- /Tests/RxCocoaTests/NSSlider+RxTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSSlider+RxTests.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 11/26/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | import RxCocoa 11 | import AppKit 12 | import XCTest 13 | 14 | final class NSSliderTests: RxTest { 15 | 16 | } 17 | 18 | extension NSSliderTests { 19 | func testSlider_ValueCompletesOnDealloc() { 20 | let createView: () -> NSSlider = { NSSlider(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) } 21 | ensurePropertyDeallocated(createView, 0.3) { (view: NSSlider) in view.rx.value } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Tests/RxCocoaTests/RxTest-iOS-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxTest-iOS-Bridging-Header.h 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 11/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import "RXObjCRuntime+Testing.h" 10 | -------------------------------------------------------------------------------- /Tests/RxCocoaTests/RxTest-macOS-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxTest-macOS-Bridging-Header.h 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 11/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import "RXObjCRuntime+Testing.h" 10 | -------------------------------------------------------------------------------- /Tests/RxCocoaTests/RxTest-tvOS-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxTest-tvOS-Bridging-Header.h 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 11/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import "RXObjCRuntime+Testing.h" 10 | -------------------------------------------------------------------------------- /Tests/RxCocoaTests/SharedSequence+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SharedSequence+Extensions.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 12/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxCocoa 10 | 11 | extension SharedSequence : Equatable { 12 | 13 | } 14 | 15 | public func == (lhs: SharedSequence, rhs: SharedSequence) -> Bool { 16 | return lhs.asObservable() === rhs.asObservable() 17 | } 18 | -------------------------------------------------------------------------------- /Tests/RxCocoaTests/UIAlertAction+RxTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIAlertAction+RxTests.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 11/26/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxCocoa 10 | import RxSwift 11 | import RxTest 12 | import XCTest 13 | 14 | final class UIAlertActionTests: RxTest { 15 | 16 | } 17 | 18 | extension UIAlertActionTests { 19 | func testAlertAction_Enable() { 20 | let subject = UIAlertAction() 21 | Observable.just(false).subscribe(subject.rx.isEnabled).dispose() 22 | 23 | XCTAssertTrue(subject.isEnabled == false) 24 | } 25 | 26 | func testAlertAction_Disable() { 27 | let subject = UIAlertAction() 28 | Observable.just(true).subscribe(subject.rx.isEnabled).dispose() 29 | 30 | XCTAssertTrue(subject.isEnabled == true) 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Tests/RxCocoaTests/UIGestureRecognizer+RxTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIGestureRecognizer+RxTests.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 11/26/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxCocoa 10 | import RxSwift 11 | import RxTest 12 | import XCTest 13 | 14 | final class UIGestureRecognizerTests: RxTest { 15 | 16 | } 17 | 18 | extension UIGestureRecognizerTests { 19 | func testGestureRecognizer_DelegateEventCompletesOnDealloc() { 20 | let createView: () -> UIGestureRecognizer = { UIGestureRecognizer(target: nil, action: NSSelectorFromString("s")) } 21 | ensureEventDeallocated(createView) { (view: UIGestureRecognizer) in view.rx.event } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Tests/RxCocoaTests/UINavigationItem+RxTests.swift.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationItem+RxTests.swift.swift 3 | // Tests 4 | // 5 | // Created by kumapo on 2016/05/11. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | import RxCocoa 11 | import UIKit 12 | import XCTest 13 | 14 | final class UINavigationItemTests : RxTest { 15 | } 16 | 17 | extension UINavigationItemTests { 18 | func testTitle_Text() { 19 | let subject = UINavigationItem() 20 | Observable.just("Editing").subscribe(subject.rx.title).dispose() 21 | 22 | XCTAssertTrue(subject.title == "Editing") 23 | } 24 | 25 | func testTitle_Empty() { 26 | let subject = UINavigationItem() 27 | Observable.just(nil).subscribe(subject.rx.title).dispose() 28 | 29 | XCTAssertTrue(subject.title == nil) 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Tests/RxCocoaTests/UISlider+RxTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UISlider+RxTests.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 11/26/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxCocoa 10 | import RxSwift 11 | import RxTest 12 | import XCTest 13 | 14 | #if os(iOS) 15 | 16 | final class UISliderTests: RxTest { 17 | 18 | } 19 | 20 | extension UISliderTests { 21 | func testSlider_DelegateEventCompletesOnDealloc() { 22 | let createView: () -> UISlider = { UISlider(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) } 23 | ensurePropertyDeallocated(createView, 0.5) { (view: UISlider) in view.rx.value } 24 | } 25 | } 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /Tests/RxCocoaTests/UITabBarItem+RxTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UITabBarItem+RxTests.swift 3 | // Tests 4 | // 5 | // Created by Mateusz Derks on 04/03/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | import RxCocoa 11 | import UIKit 12 | import XCTest 13 | 14 | final class UITabBarItemTests : RxTest { 15 | } 16 | 17 | extension UITabBarItemTests { 18 | func testBadgeValue_Text() { 19 | let subject = UITabBarItem(tabBarSystemItem: .more, tag: 0) 20 | Observable.just("5").subscribe(subject.rx.badgeValue).dispose() 21 | 22 | XCTAssertEqual(subject.badgeValue, "5") 23 | } 24 | 25 | func testBadgeValue_Empty() { 26 | let subject = UITabBarItem(tabBarSystemItem: .more, tag: 0) 27 | Observable.just(nil).subscribe(subject.rx.badgeValue).dispose() 28 | 29 | XCTAssertNil(subject.badgeValue) 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Tests/RxCocoaTests/UIViewController+RxTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+RxTests.swift 3 | // Tests 4 | // 5 | // Created by Kyle Fuller on 30/05/2016. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | import RxCocoa 11 | import UIKit 12 | import XCTest 13 | 14 | final class UIViewControllerTests : RxTest { 15 | } 16 | 17 | extension UIViewControllerTests { 18 | func testRxTitle() { 19 | let viewController = UIViewController() 20 | 21 | _ = Observable.just("title").bind(to: viewController.rx.title) 22 | 23 | XCTAssertEqual("title", viewController.title) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Tests/RxSwiftTests/AssumptionsTest.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AssumptionsTest.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 2/14/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | import RxSwift 11 | import Foundation 12 | 13 | final class AssumptionsTest : RxTest { 14 | 15 | func testResourceLeaksDetectionIsTurnedOn() { 16 | #if TRACE_RESOURCES 17 | let startResourceCount = Resources.total 18 | 19 | var observable: Observable! = Observable.just(1) 20 | 21 | XCTAssertTrue(observable != nil) 22 | XCTAssertEqual(Resources.total, (startResourceCount + 1) as Int32) 23 | 24 | observable = nil 25 | 26 | XCTAssertEqual(Resources.total, startResourceCount) 27 | #elseif RELEASE 28 | 29 | #else 30 | XCTAssert(false, "Can't run unit tests in without tracing") 31 | #endif 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Tests/RxSwiftTests/Atomic+Overrides.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Atomic+Overrides.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 1/29/19. 6 | // Copyright © 2019 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// This is a workaround for the overloaded `load` symbol. 10 | @inline(__always) 11 | func globalLoad(_ this: AtomicInt) -> Int32 { 12 | return load(this) 13 | } 14 | 15 | /// This is a workaround for the overloaded `add` symbol. 16 | @inline(__always) 17 | @discardableResult 18 | func globalAdd(_ this: AtomicInt, _ value: Int32) -> Int32 { 19 | return add(this, value) 20 | } 21 | -------------------------------------------------------------------------------- /Tests/RxSwiftTests/Observable+RepeatTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Observable+RepeatTests.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 4/29/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | import RxSwift 11 | import RxTest 12 | 13 | class ObservableRepeatTest : RxTest { 14 | } 15 | 16 | extension ObservableRepeatTest { 17 | func testRepeat_Element() { 18 | let scheduler = TestScheduler(initialClock: 0) 19 | 20 | let res = scheduler.start(disposed: 207) { 21 | Observable.repeatElement(42, scheduler: scheduler) 22 | } 23 | 24 | XCTAssertEqual(res.events, [ 25 | .next(201, 42), 26 | .next(202, 42), 27 | .next(203, 42), 28 | .next(204, 42), 29 | .next(205, 42), 30 | .next(206, 42) 31 | ]) 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Tests/RxSwiftTests/Synchronized.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Synchronized.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 1/29/19. 6 | // Copyright © 2019 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | class Synchronized { 12 | private let lock = NSRecursiveLock() 13 | private var _value: Value 14 | 15 | public init(_ value: Value) { 16 | self._value = value 17 | } 18 | 19 | public var value: Value { 20 | self.lock.lock(); defer { self.lock.unlock() } 21 | return _value 22 | } 23 | 24 | public func mutate(_ mutate: (inout Value) -> Result) -> Result { 25 | self.lock.lock(); defer { self.lock.unlock() } 26 | return mutate(&_value) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Tests/RxSwiftTests/TestImplementations/ElementIndexPair.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ElementIndexPair.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 6/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | struct ElementIndexPair : Equatable { 10 | let element: Element 11 | let index: I 12 | 13 | init(_ element: Element, _ index: I) { 14 | self.element = element 15 | self.index = index 16 | } 17 | } 18 | 19 | func == (lhs: ElementIndexPair, rhs: ElementIndexPair) -> Bool { 20 | return lhs.element == rhs.element && lhs.index == rhs.index 21 | } 22 | -------------------------------------------------------------------------------- /Tests/RxSwiftTests/TestImplementations/EquatableArray.swift: -------------------------------------------------------------------------------- 1 | // 2 | // EquatableArray.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 10/15/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | struct EquatableArray : Equatable { 10 | let elements: [Element] 11 | init(_ elements: [Element]) { 12 | self.elements = elements 13 | } 14 | } 15 | 16 | func ==(lhs: EquatableArray, rhs: EquatableArray) -> Bool { 17 | return lhs.elements == rhs.elements 18 | } 19 | 20 | -------------------------------------------------------------------------------- /Tests/RxSwiftTests/TestImplementations/Mocks/BackgroundThreadPrimitiveHotObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BackgroundThreadPrimitiveHotObservable.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 10/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | import XCTest 11 | import Dispatch 12 | 13 | final class BackgroundThreadPrimitiveHotObservable : PrimitiveHotObservable { 14 | override func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 15 | XCTAssertTrue(!DispatchQueue.isMain) 16 | return super.subscribe(observer) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Tests/RxSwiftTests/TestImplementations/Mocks/MainThreadPrimitiveHotObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MainThreadPrimitiveHotObservable.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 10/14/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | import XCTest 11 | import Dispatch 12 | 13 | final class MainThreadPrimitiveHotObservable : PrimitiveHotObservable { 14 | override func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 15 | XCTAssertTrue(DispatchQueue.isMain) 16 | return super.subscribe(observer) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Tests/RxSwiftTests/TestImplementations/Mocks/MockDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MockDisposable.swift 3 | // Tests 4 | // 5 | // Created by Yury Korolev on 10/17/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | import RxTest 11 | 12 | final class MockDisposable : Disposable 13 | { 14 | var ticks = [Int]() 15 | private let scheduler: TestScheduler 16 | 17 | init(scheduler: TestScheduler) { 18 | self.scheduler = scheduler 19 | ticks.append(self.scheduler.clock) 20 | } 21 | 22 | func dispose() { 23 | ticks.append(self.scheduler.clock) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Tests/RxSwiftTests/TestImplementations/Mocks/Observable.Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Observable.Extensions.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 3/14/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension Observable : Equatable { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /Tests/RxSwiftTests/TestImplementations/Mocks/PrimitiveMockObserver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PrimitiveMockObserver.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 6/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | import RxTest 11 | 12 | final class PrimitiveMockObserver : ObserverType { 13 | private let _events = Synchronized([Recorded>]()) 14 | 15 | var events: [Recorded>] { 16 | self._events.value 17 | } 18 | 19 | func on(_ event: Event) { 20 | self._events.mutate { $0.append(Recorded(time: 0, value: event)) } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Tests/RxSwiftTests/TestImplementations/Mocks/TestConnectableObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TestConnectableObservable.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 4/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | final class TestConnectableObservable : ConnectableObservableType where Subject.Element == Subject.Observer.Element { 12 | typealias Element = Subject.Element 13 | 14 | let o: ConnectableObservable 15 | 16 | init(o: Observable, s: Subject) { 17 | self.o = o.multicast(s) 18 | } 19 | 20 | func connect() -> Disposable { 21 | self.o.connect() 22 | } 23 | 24 | func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 25 | self.o.subscribe(observer) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Tests/RxSwiftTests/TestImplementations/Observable+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Observable+Extensions.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 6/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | import RxTest 11 | 12 | public func == (lhs: Observable, rhs: Observable) -> Bool { 13 | return lhs === rhs 14 | } 15 | 16 | extension TestableObservable : Equatable { 17 | 18 | } 19 | 20 | public func == (lhs: TestableObservable, rhs: TestableObservable) -> Bool { 21 | return lhs === rhs 22 | } 23 | 24 | -------------------------------------------------------------------------------- /Tests/TestErrors.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TestErrors.swift 3 | // Tests 4 | // 5 | // Created by Krunoslav Zaher on 12/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | enum TestError: Error { 10 | case dummyError 11 | case dummyError1 12 | case dummyError2 13 | } 14 | let testError = TestError.dummyError 15 | let testError1 = TestError.dummyError1 16 | let testError2 = TestError.dummyError2 17 | -------------------------------------------------------------------------------- /assets/CNAME.txt: -------------------------------------------------------------------------------- 1 | reactivex.io 2 | -------------------------------------------------------------------------------- /assets/RxSwift_Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/assets/RxSwift_Logo.png -------------------------------------------------------------------------------- /assets/example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/assets/example.png -------------------------------------------------------------------------------- /assets/xcframeworks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/assets/xcframeworks.png -------------------------------------------------------------------------------- /assets/xcframeworks_signing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/assets/xcframeworks_signing.png -------------------------------------------------------------------------------- /default.profraw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/default.profraw -------------------------------------------------------------------------------- /docs/img/carat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/docs/img/carat.png -------------------------------------------------------------------------------- /docs/img/dash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/docs/img/dash.png -------------------------------------------------------------------------------- /docs/img/gh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/docs/img/gh.png -------------------------------------------------------------------------------- /docs/img/spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReactiveX/RxSwift/5dd1907d64f0d36f158f61a466bab75067224893/docs/img/spinner.gif -------------------------------------------------------------------------------- /scripts/profile-build-times.sh: -------------------------------------------------------------------------------- 1 | set -oe pipefail 2 | mkdir -p build 3 | xcodebuild -workspace Rx.xcworkspace -scheme RxSwift-iOS -configuration Debug -destination "name=iPhone 7" clean test \ 4 | | tee build/output \ 5 | | grep .[0-9]ms \ 6 | | grep -v ^0.[0-9]ms \ 7 | | sort -nr > build/build-times.txt \ 8 | && cat build/build-times.txt | less 9 | -------------------------------------------------------------------------------- /scripts/swiftlint.sh: -------------------------------------------------------------------------------- 1 | if [[ "${TRAVIS}" != "" ]] || [[ "${LINT}" != "" ]]; then 2 | if which swiftlint >/dev/null; then 3 | swiftlint 4 | else 5 | echo "warning: SwiftLint is not installed" 6 | fi 7 | else 8 | echo "To run swiftlint please set TRAVIS or LINT environmental variable." 9 | fi 10 | -------------------------------------------------------------------------------- /scripts/test-linux.sh: -------------------------------------------------------------------------------- 1 | set -e 2 | 3 | function cleanup { 4 | git checkout Package.swift 5 | } 6 | 7 | if [[ `uname` == "Darwin" ]]; then 8 | if [[ `git diff HEAD Package.swift | wc -l` > 0 ]]; then 9 | echo "Package.swift has uncommitted changes" 10 | exit -1 11 | fi 12 | trap cleanup EXIT 13 | echo "Running linux" 14 | eval $(docker-machine env default) 15 | docker run --rm -it -v `pwd`:/RxSwift swift:latest bash -c "cd /RxSwift; scripts/test-linux.sh" || (echo "You maybe need to pull the docker image: 'docker pull swift'" && exit -1) 16 | elif [[ `uname` == "Linux" ]]; then 17 | CONFIGURATIONS=(debug release) 18 | 19 | rm -rf .build || true 20 | 21 | echo "Using `swift -version`" 22 | 23 | ./scripts/all-tests.sh Unix 24 | else 25 | echo "Unknown os (`uname`)" 26 | exit -1 27 | fi 28 | -------------------------------------------------------------------------------- /scripts/update-jazzy-config.rb: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require 'yaml' 4 | 5 | included_directories = %w(RxSwift RxCocoa RxRelay) 6 | 7 | files_and_directories = included_directories.collect do |directory| 8 | Dir.glob("#{directory}/**/*") 9 | end.flatten.sort_by { |file| file } 10 | 11 | swift_files = files_and_directories.select { |file| file =~ /.*\.swift$/ } 12 | 13 | directory_and_name = swift_files.map do |file| 14 | { File.dirname(file) => File.basename(file, '.swift') } 15 | end 16 | 17 | categories = directory_and_name.flat_map(&:entries) 18 | .group_by(&:first) 19 | .map { |k,v| { 'name' => k, 'children' => v.map(&:last) } } 20 | 21 | config = { 'custom_categories' => categories } 22 | 23 | File.open('.jazzy.yml','w') do |h| 24 | h.write config.to_yaml 25 | end 26 | -------------------------------------------------------------------------------- /scripts/update-jazzy-docs.sh: -------------------------------------------------------------------------------- 1 | . scripts/common.sh 2 | 3 | function updateDocs() { 4 | WORKSPACE=$1 5 | SCHEME=$2 6 | CONFIGURATION=$3 7 | SIMULATOR=$4 8 | MODULE=$5 9 | 10 | # ensure_simulator_available "${SIMULATOR}" 11 | SIMULATOR_GUID="B20E615F-E3A6-477B-A7A4-8C8541D0E06A" 12 | DESTINATION='id='$SIMULATOR_GUID'' 13 | 14 | set -x 15 | killall Simulator || true 16 | jazzy --config .jazzy.yml --theme fullwidth --github_url https://github.com/ReactiveX/RxSwift -m "${MODULE}" -x -workspace,"${WORKSPACE}",-scheme,"${SCHEME}",-configuration,"${CONFIGURATION}",-derivedDataPath,"${BUILD_DIRECTORY}",-destination,"$DESTINATION",CODE_SIGN_IDENTITY=,CODE_SIGNING_REQUIRED=NO,CODE_SIGNING_ALLOWED=NO 17 | set +x 18 | } 19 | 20 | ./scripts/update-jazzy-config.rb 21 | 22 | updateDocs Rx.xcworkspace "RxExample-iOS" "Release" "iPhone 16 Pro" "RxSwift" 23 | -------------------------------------------------------------------------------- /scripts/validate-markdown.sh: -------------------------------------------------------------------------------- 1 | ROOT=`pwd` 2 | pushd `npm root -g` 3 | remark -u remark-slug -u remark-validate-links "${ROOT}/*.md" "${ROOT}/**/*.md" "${ROOT}/.github/ISSUE_TEMPLATE.md" "${ROOT}/RxExample/" "${ROOT}/RxCocoa/Foundation/KVORepresentable+CoreGraphics.swift" "${ROOT}/Rx.playground" 4 | popd 5 | -------------------------------------------------------------------------------- /scripts/validate-playgrounds.sh: -------------------------------------------------------------------------------- 1 | . scripts/common.sh 2 | 3 | PLAYGROUND_CONFIGURATIONS=(Release) 4 | 5 | # make sure macOS builds 6 | for scheme in "RxSwift" 7 | do 8 | for configuration in ${PLAYGROUND_CONFIGURATIONS[@]} 9 | do 10 | PAGES_PATH=${BUILD_DIRECTORY}/Build/Products/${configuration}/all-playground-pages.swift 11 | rx ${scheme} ${configuration} "" build 12 | cat Rx.playground/Sources/*.swift Rx.playground/Pages/**/*.swift > ${PAGES_PATH} 13 | swift -v -D NOT_IN_PLAYGROUND -F ${BUILD_DIRECTORY}/Build/Products/${configuration} ${PAGES_PATH} 14 | done 15 | done --------------------------------------------------------------------------------