├── .swift-version ├── assets ├── CNAME.txt └── Rx_Logo_M.png ├── Sources ├── RxSwift │ ├── Rx.swift │ ├── Event.swift │ ├── Do.swift │ ├── Errors.swift │ ├── Reactive.swift │ ├── Amb.swift │ ├── Cancelable.swift │ ├── Deprecated.swift │ ├── Disposable.swift │ ├── Just.swift │ ├── Lock.swift │ ├── Map.swift │ ├── Maybe.swift │ ├── Observable.swift │ ├── Scan.swift │ ├── Single.swift │ ├── Sink.swift │ ├── Skip.swift │ ├── Take.swift │ ├── Zip.swift │ ├── AddRef.swift │ ├── AnyObserver.swift │ ├── AsMaybe.swift │ ├── Bag+Rx.swift │ ├── Buffer.swift │ ├── Catch.swift │ ├── Concat.swift │ ├── Create.swift │ ├── Debug.swift │ ├── Delay.swift │ ├── Empty.swift │ ├── Error.swift │ ├── Filter.swift │ ├── First.swift │ ├── GroupBy.swift │ ├── Merge.swift │ ├── Never.swift │ ├── ObserverType.swift │ ├── Range.swift │ ├── Reduce.swift │ ├── Repeat.swift │ ├── RxMutableBox.swift │ ├── Sample.swift │ ├── SchedulerType.swift │ ├── Switch.swift │ ├── Timeout.swift │ ├── Timer.swift │ ├── ToArray.swift │ ├── Using.swift │ ├── Window.swift │ ├── AsSingle.swift │ ├── AsyncLock.swift │ ├── Bag.swift │ ├── Completable.swift │ ├── Debounce.swift │ ├── Deferred.swift │ ├── ElementAt.swift │ ├── Generate.swift │ ├── Multicast.swift │ ├── ObservableType.swift │ ├── ObserveOn.swift │ ├── Optional.swift │ ├── Producer.swift │ ├── RetryWhen.swift │ ├── Sequence.swift │ ├── SkipUntil.swift │ ├── SkipWhile.swift │ ├── StartWith.swift │ ├── String+Rx.swift │ ├── SubjectType.swift │ ├── TakeLast.swift │ ├── TakeUntil.swift │ ├── TakeWhile.swift │ ├── Throttle.swift │ ├── Zip+arity.swift │ ├── AsyncSubject.swift │ ├── Disposables.swift │ ├── DisposeBag.swift │ ├── DisposeBase.swift │ ├── Enumerated.swift │ ├── GroupedObservable.swift │ ├── Materialize.swift │ ├── ObserverBase.swift │ ├── Queue.swift │ ├── RecursiveLock.swift │ ├── ReplaySubject.swift │ ├── SingleAsync.swift │ ├── SubscribeOn.swift │ ├── BehaviorSubject.swift │ ├── CombineLatest.swift │ ├── DefaultIfEmpty.swift │ ├── Dematerialize.swift │ ├── LockOwnerType.swift │ ├── MainScheduler.swift │ ├── NopDisposable.swift │ ├── Platform.Darwin.swift │ ├── Platform.Linux.swift │ ├── PrimitiveSequence.swift │ ├── PublishSubject.swift │ ├── SwiftSupport.swift │ ├── SwitchIfEmpty.swift │ ├── WithLatestFrom.swift │ ├── Zip+Collection.swift │ ├── AnonymousObserver.swift │ ├── BinaryDisposable.swift │ ├── BooleanDisposable.swift │ ├── Completable+AndThen.swift │ ├── DelaySubscription.swift │ ├── ImmediateSchedulerType.swift │ ├── InvocableType.swift │ ├── ScheduledItem.swift │ ├── SerialDisposable.swift │ ├── ShareReplayScope.swift │ ├── TailRecursiveSink.swift │ ├── AnonymousDisposable.swift │ ├── CombineLatest+arity.swift │ ├── CompositeDisposable.swift │ ├── ConnectableObservableType.swift │ ├── HistoricalScheduler.swift │ ├── ObservableConvertibleType.swift │ ├── ObservableType+Extensions.swift │ ├── PriorityQueue.swift │ ├── RecursiveScheduler.swift │ ├── RefCountDisposable.swift │ ├── ScheduledDisposable.swift │ ├── SynchronizedOnType.swift │ ├── VirtualTimeScheduler.swift │ ├── CurrentThreadScheduler.swift │ ├── DistinctUntilChanged.swift │ ├── InfiniteSequence.swift │ ├── ScheduledItemType.swift │ ├── SubscriptionDisposable.swift │ ├── CombineLatest+Collection.swift │ ├── ConcurrentMainScheduler.swift │ ├── DispatchQueue+Extensions.swift │ ├── OperationQueueScheduler.swift │ ├── PrimitiveSequence+Zip+arity.swift │ ├── SynchronizedDisposeType.swift │ ├── VirtualTimeConverterType.swift │ ├── InvocableScheduledItem.swift │ ├── SchedulerServices+Emulation.swift │ ├── SingleAssignmentDisposable.swift │ ├── SynchronizedUnsubscribeType.swift │ ├── ObservableType+PrimitiveSequence.swift │ ├── SerialDispatchQueueScheduler.swift │ ├── ConcurrentDispatchQueueScheduler.swift │ ├── DispatchQueueConfiguration.swift │ └── HistoricalSchedulerTimeConverter.swift ├── AllTestz │ ├── RxTest.swift │ ├── TestErrors.swift │ ├── Bag.swift │ ├── RxMutableBox.swift │ ├── Anomalies.swift │ ├── MaybeTest.swift │ ├── Platform.Linux.swift │ ├── Queue.swift │ ├── RecursiveLock.swift │ ├── XCTest+AllTests.swift │ ├── Driver+Test.swift │ ├── Event+Test.swift │ ├── Platform.Darwin.swift │ ├── Recorded+Timeless.swift │ ├── Signal+Test.swift │ ├── SingleTest.swift │ ├── VariableTest.swift │ ├── DisposableTest.swift │ ├── ObserverTests.swift │ ├── Reactive+Tests.swift │ ├── SchedulerTests.swift │ ├── AssumptionsTest.swift │ ├── AsyncSubjectTests.swift │ ├── CompletableTest.swift │ ├── Observable+Tests.swift │ ├── PriorityQueue.swift │ ├── RecursiveLockTest.swift │ ├── ReplaySubjectTest.swift │ ├── BehaviorSubjectTest.swift │ ├── Completable+AndThen.swift │ ├── DispatchQueue+Extensions.swift │ ├── InfiniteSequence.swift │ ├── MainSchedulerTests.swift │ ├── Observable+AmbTests.swift │ ├── Observable+MapTests.swift │ ├── Observable+ZipTests.swift │ ├── PublishSubjectTest.swift │ ├── SharedSequence+Test.swift │ ├── MySubject.swift │ ├── Observable+BufferTests.swift │ ├── Observable+CatchTests.swift │ ├── Observable+ConcatTests.swift │ ├── Observable+DebugTests.swift │ ├── Observable+DelayTests.swift │ ├── Observable+DoOnTests.swift │ ├── Observable+FilterTests.swift │ ├── Observable+JustTests.swift │ ├── Observable+MergeTests.swift │ ├── Observable+RangeTests.swift │ ├── Observable+ReduceTests.swift │ ├── Observable+RepeatTests.swift │ ├── Observable+SampleTests.swift │ ├── Observable+ScanTests.swift │ ├── Observable+SingleTests.swift │ ├── Observable+SkipTests.swift │ ├── Observable+SwitchTests.swift │ ├── Observable+TakeTests.swift │ ├── Observable+TimerTests.swift │ ├── Observable+UsingTests.swift │ ├── Observable+WindowTests.swift │ ├── SharingSchedulerTests.swift │ ├── VirtualSchedulerTest.swift │ ├── EquatableArray.swift │ ├── HistoricalSchedulerTest.swift │ ├── NotificationCenterTests.swift │ ├── Observable+BlockingTest.swift │ ├── Observable+GenerateTests.swift │ ├── Observable+GroupByTests.swift │ ├── Observable+OptionalTests.swift │ ├── Observable+SequenceTests.swift │ ├── Observable+TakeLastTests.swift │ ├── Observable+ThrottleTests.swift │ ├── Observable+TimeoutTests.swift │ ├── Observable+ToArrayTests.swift │ ├── CurrentThreadSchedulerTest.swift │ ├── ElementIndexPair.swift │ ├── MockDisposable.swift │ ├── Observable+DefaultIfEmpty.swift │ ├── Observable+ElementAtTests.swift │ ├── Observable+EnumeratedTests.swift │ ├── Observable+MaterializeTests.swift │ ├── Observable+MulticastTests.swift │ ├── Observable+ObserveOnTests.swift │ ├── Observable+RetryWhenTests.swift │ ├── Observable+SkipUntilTests.swift │ ├── Observable+SkipWhileTests.swift │ ├── Observable+SubscribeOnTests.swift │ ├── Observable+SubscriptionTest.swift │ ├── Observable+TakeUntilTests.swift │ ├── Observable+TakeWhileTests.swift │ ├── Observable+ZipTests+arity.swift │ ├── SharedSequence+Extensions.swift │ ├── SharedSequence+OperatorTest.swift │ ├── Observable+CombineLatestTests.swift │ ├── Observable+DematerializeTests.swift │ ├── Observable+SwitchIfEmptyTests.swift │ ├── Observable+Extensions.swift │ ├── Observable+PrimitiveSequenceTest.swift │ ├── Observable+ShareReplayScopeTests.swift │ ├── Observable+WithLatestFromTests.swift │ ├── ObservableType+SubscriptionTests.swift │ ├── PrimitiveSequenceTest+zip+arity.swift │ ├── TestVirtualScheduler.swift │ ├── Observable+DelaySubscriptionTests.swift │ ├── Observable.Extensions.swift │ ├── PrimitiveMockObserver.swift │ ├── Observable+CombineLatestTests+arity.swift │ ├── Observable+DistinctUntilChangedTests.swift │ ├── PrimitiveHotObservable.swift │ ├── TestConnectableObservable.swift │ ├── MainThreadPrimitiveHotObservable.swift │ └── BackgroundThreadPrimitiveHotObservable.swift ├── RxCocoa │ ├── RxCocoa.swift │ ├── Binder.swift │ ├── Deprecated.swift │ ├── Driver.swift │ ├── Logging.swift │ ├── NSView+Rx.swift │ ├── RxTarget.swift │ ├── Signal.swift │ ├── TextInput.swift │ ├── UIButton+Rx.swift │ ├── UILabel+Rx.swift │ ├── UISlider+Rx.swift │ ├── UISwitch+Rx.swift │ ├── UITabBar+Rx.swift │ ├── UIView+Rx.swift │ ├── ControlEvent.swift │ ├── ItemEvents.swift │ ├── NSButton+Rx.swift │ ├── NSControl+Rx.swift │ ├── NSSlider+Rx.swift │ ├── PublishRelay.swift │ ├── UIControl+Rx.swift │ ├── UIStepper+Rx.swift │ ├── UITextView+Rx.swift │ ├── UIWebView+Rx.swift │ ├── BehaviorRelay.swift │ ├── ControlTarget.swift │ ├── DelegateProxy.swift │ ├── NSImageView+Rx.swift │ ├── NSObject+Rx.swift │ ├── NSTextField+Rx.swift │ ├── NSTextStorage+Rx.swift │ ├── UIAlertAction+Rx.swift │ ├── UIApplication+Rx.swift │ ├── UIDatePicker+Rx.swift │ ├── UIImageView+Rx.swift │ ├── UIPageControl+Rx.swift │ ├── UIPickerView+Rx.swift │ ├── UIScrollView+Rx.swift │ ├── UISearchBar+Rx.swift │ ├── UITabBarItem+Rx.swift │ ├── UITableView+Rx.swift │ ├── UITextField+Rx.swift │ ├── ControlProperty.swift │ ├── DelegateProxyType.swift │ ├── Observable+Bind.swift │ ├── UIBarButtonItem+Rx.swift │ ├── UIProgressView+Rx.swift │ ├── URLSession+Rx.swift │ ├── KVORepresentable.swift │ ├── UICollectionView+Rx.swift │ ├── UINavigationItem+Rx.swift │ ├── UIRefreshControl+Rx.swift │ ├── UISearchController+Rx.swift │ ├── UISegmentedControl+Rx.swift │ ├── UITabBarController+Rx.swift │ ├── UIViewController+Rx.swift │ ├── NSLayoutConstraint+Rx.swift │ ├── SharedSequence.swift │ ├── UIGestureRecognizer+Rx.swift │ ├── BehaviorRelay+Driver.swift │ ├── ControlEvent+Driver.swift │ ├── ControlEvent+Signal.swift │ ├── Driver+Subscription.swift │ ├── KVORepresentable+Swift.swift │ ├── NotificationCenter+Rx.swift │ ├── PublishRelay+Signal.swift │ ├── RxPickerViewAdapter.swift │ ├── RxTabBarDelegateProxy.swift │ ├── RxWebViewDelegateProxy.swift │ ├── Signal+Subscription.swift │ ├── UIActivityIndicatorView+Rx.swift │ ├── UINavigationController+Rx.swift │ ├── ControlProperty+Driver.swift │ ├── DispatchQueue+Extensions.swift │ ├── RxSearchBarDelegateProxy.swift │ ├── RxTableViewDelegateProxy.swift │ ├── RxTextViewDelegateProxy.swift │ ├── SectionedViewDataSourceType.swift │ ├── RxPickerViewDataSourceProxy.swift │ ├── RxPickerViewDataSourceType.swift │ ├── RxPickerViewDelegateProxy.swift │ ├── RxScrollViewDelegateProxy.swift │ ├── RxTableViewDataSourceProxy.swift │ ├── RxTableViewDataSourceType.swift │ ├── RxTextStorageDelegateProxy.swift │ ├── KVORepresentable+CoreGraphics.swift │ ├── NSObject+Rx+KVORepresentable.swift │ ├── NSObject+Rx+RawRepresentable.swift │ ├── RxCollectionViewDelegateProxy.swift │ ├── SharedSequence+Operators.swift │ ├── RxCocoaObjCRuntimeError+Extensions.swift │ ├── RxCollectionViewDataSourceProxy.swift │ ├── RxCollectionViewDataSourceType.swift │ ├── RxSearchControllerDelegateProxy.swift │ ├── RxTabBarControllerDelegateProxy.swift │ ├── ObservableConvertibleType+Driver.swift │ ├── ObservableConvertibleType+Signal.swift │ ├── SchedulerType+SharedSequence.swift │ ├── RxNavigationControllerDelegateProxy.swift │ ├── RxTableViewReactiveArrayDataSource.swift │ ├── SharedSequence+Operators+arity.swift │ ├── RxCollectionViewReactiveArrayDataSource.swift │ └── ObservableConvertibleType+SharedSequence.swift ├── RxCocoaRuntime │ ├── _RX.m │ ├── _RXKVOObserver.m │ ├── _RXObjCRuntime.m │ ├── _RXDelegateProxy.m │ └── include │ │ ├── RxCocoaRuntime.h │ │ ├── _RXDelegateProxy.h │ │ └── _RXKVOObserver.h ├── RxTest │ ├── Recorded.swift │ ├── RxTests.swift │ ├── XCTest+Rx.swift │ ├── Deprecated.swift │ ├── Any+Equatable.swift │ ├── ColdObservable.swift │ ├── HotObservable.swift │ ├── Subscription.swift │ ├── Bag.swift │ ├── Event+Equatable.swift │ ├── TestableObserver.swift │ ├── TestScheduler.swift │ ├── TestableObservable.swift │ └── TestSchedulerVirtualTimeConverter.swift └── RxBlocking │ ├── Resources.swift │ ├── RunLoopLock.swift │ ├── RecursiveLock.swift │ ├── BlockingObservable.swift │ ├── Platform.Darwin.swift │ ├── Platform.Linux.swift │ ├── BlockingObservable+Operators.swift │ └── ObservableConvertibleType+Blocking.swift ├── Gemfile ├── Tests ├── Platform │ ├── RecursiveLock.swift │ ├── Platform.Darwin.swift │ ├── Platform.Linux.swift │ └── DispatchQueue+Extensions.swift ├── RxCocoaTests │ ├── RxTest-iOS-Bridging-Header.h │ ├── RxTest-macOS-Bridging-Header.h │ ├── RxTest-tvOS-Bridging-Header.h │ ├── SharedSequence+Extensions.swift │ ├── UIViewController+RxTests.swift │ ├── NSSlider+RxTests.swift │ ├── UIGestureRecognizer+RxTests.swift │ ├── UISlider+RxTests.swift │ ├── UINavigationItem+RxTests.swift.swift │ ├── UIAlertAction+RxTests.swift │ ├── UIRefreshControl+RxTests.swift │ └── UITabBarItem+RxTests.swift ├── RxSwiftTests │ ├── TestImplementations │ │ ├── Mocks │ │ │ ├── Observable.Extensions.swift │ │ │ ├── MockDisposable.swift │ │ │ ├── MainThreadPrimitiveHotObservable.swift │ │ │ ├── PrimitiveMockObserver.swift │ │ │ ├── BackgroundThreadPrimitiveHotObservable.swift │ │ │ └── TestConnectableObservable.swift │ │ ├── EquatableArray.swift │ │ ├── Observable+Extensions.swift │ │ └── ElementIndexPair.swift │ ├── Observable+RepeatTests.swift │ └── AssumptionsTest.swift ├── TestErrors.swift ├── Recorded+Timeless.swift ├── Benchmarks │ └── Info.plist ├── Info.plist └── Resources.swift ├── RxBlocking ├── Platform │ ├── RecursiveLock.swift │ ├── Platform.Darwin.swift │ └── Platform.Linux.swift ├── BlockingObservable.swift ├── ObservableConvertibleType+Blocking.swift ├── README.md ├── Info.plist └── Resources.swift ├── RxSwift ├── Platform │ ├── Platform.Linux.swift │ ├── RecursiveLock.swift │ ├── Platform.Darwin.swift │ ├── DataStructures │ │ ├── Bag.swift │ │ ├── Queue.swift │ │ ├── PriorityQueue.swift │ │ └── InfiniteSequence.swift │ └── DispatchQueue+Extensions.swift ├── Disposable.swift ├── Schedulers │ ├── Internal │ │ ├── ScheduledItemType.swift │ │ ├── InvocableType.swift │ │ ├── InvocableScheduledItem.swift │ │ └── ScheduledItem.swift │ └── HistoricalScheduler.swift ├── Disposables │ ├── Disposables.swift │ ├── DisposeBase.swift │ ├── SubscriptionDisposable.swift │ └── NopDisposable.swift ├── Cancelable.swift ├── Concurrency │ ├── SynchronizedUnsubscribeType.swift │ ├── LockOwnerType.swift │ ├── SynchronizedDisposeType.swift │ └── SynchronizedOnType.swift ├── ObservableConvertibleType.swift ├── Extensions │ └── String+Rx.swift ├── RxMutableBox.swift ├── Subjects │ └── SubjectType.swift ├── SwiftSupport │ └── SwiftSupport.swift ├── ConnectableObservableType.swift ├── Observers │ ├── AnonymousObserver.swift │ └── ObserverBase.swift ├── Observables │ ├── Never.swift │ └── Empty.swift └── Info.plist ├── RxTest ├── Platform │ └── DataStructures │ │ └── Bag.swift ├── RxTests.swift ├── Info.plist └── Deprecated.swift ├── default.profraw ├── RxCocoa ├── Platform │ └── DispatchQueue+Extensions.swift ├── Runtime │ ├── _RX.m │ └── include │ │ ├── RxCocoaRuntime.h │ │ ├── _RXDelegateProxy.h │ │ └── _RXKVOObserver.h ├── iOS │ ├── Events │ │ └── ItemEvents.swift │ ├── UIImageView+Rx.swift │ ├── UIProgressView+Rx.swift │ ├── UIAlertAction+Rx.swift │ ├── UINavigationItem+Rx.swift │ ├── UITabBarItem+Rx.swift │ ├── UIViewController+Rx.swift │ ├── UIApplication+Rx.swift │ ├── UISlider+Rx.swift │ ├── UIRefreshControl+Rx.swift │ ├── UIActivityIndicatorView+Rx.swift │ ├── UILabel+Rx.swift │ ├── Proxies │ │ └── RxTableViewDelegateProxy.swift │ ├── Protocols │ │ ├── RxPickerViewDataSourceType.swift │ │ ├── RxTableViewDataSourceType.swift │ │ └── RxCollectionViewDataSourceType.swift │ ├── UIPageControl+Rx.swift │ └── UIStepper+Rx.swift ├── RxCocoa.h ├── macOS │ ├── NSImageView+Rx.swift │ ├── NSSlider+Rx.swift │ └── NSView+Rx.swift ├── Traits │ ├── Signal │ │ ├── PublishRelay+Signal.swift │ │ └── ControlEvent+Signal.swift │ └── Driver │ │ ├── BehaviorRelay+Driver.swift │ │ ├── ControlEvent+Driver.swift │ │ └── ControlProperty+Driver.swift ├── Foundation │ ├── Logging.swift │ └── KVORepresentable.swift ├── Common │ ├── SectionedViewDataSourceType.swift │ └── RxTarget.swift └── Info.plist ├── Documentation ├── Subjects.md ├── Playgrounds.md ├── ExampleApp.md └── NewFeatureRequestTemplate.md ├── RxExample ├── RxExample │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Icon-40.png │ │ │ ├── Icon-76.png │ │ │ ├── Rx_Logo_M.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@2x.png │ │ │ ├── Icon-Small.png │ │ │ ├── Rx_Logo-iPad.png │ │ │ ├── Icon-Small@3x.png │ │ │ └── Icon-Small@2x-1.png │ │ └── ReactiveExtensionsLogo.imageset │ │ │ ├── ReactiveExtensionsLogo-2.png │ │ │ ├── ReactiveExtensionsLogo.png │ │ │ └── Contents.json │ ├── RxExample.xcdatamodeld │ │ ├── .xccurrentversion │ │ └── RxExample.xcdatamodel │ │ │ └── contents │ ├── Result.swift │ ├── Examples │ │ ├── TableViewPartialUpdates │ │ │ ├── NumberCell.swift │ │ │ └── NumberSectionView.swift │ │ ├── TableViewWithEditingCommands │ │ │ ├── UIImageView+Extensions.swift │ │ │ └── User.swift │ │ └── GitHubSearchRepositories │ │ │ └── UINavigationController+Extensions.swift │ ├── String+URL.swift │ ├── iOS │ │ └── UITableView+Extensions.swift │ ├── Services │ │ ├── DownloadableImage.swift │ │ ├── UIImage+Extensions.swift │ │ └── PseudoRandomGenerator.swift │ ├── Application+Extensions.swift │ ├── macOS │ │ └── AppDelegate.swift │ └── Lenses.swift ├── RxExample.xcodeproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata ├── RxDataSources │ ├── Differentiator │ │ ├── IdentifiableType.swift │ │ ├── SectionModelType.swift │ │ ├── AnimatableSectionModelType.swift │ │ ├── AnimatableSectionModelType+ItemPath.swift │ │ ├── Optional+Extensions.swift │ │ ├── Differentiator.h │ │ ├── Info.plist │ │ ├── Utilities.swift │ │ └── ItemPath.swift │ └── RxDataSources │ │ ├── String+IdentifiableType.swift │ │ ├── FloatingPointType+IdentifiableType.swift │ │ ├── Deprecated.swift │ │ ├── RxDataSources.h │ │ ├── DataSources.swift │ │ └── Info.plist ├── RxExample-iOSTests │ ├── RxTest.swift │ └── Mocks │ │ ├── ValidationResult+Equatable.swift │ │ └── NotImplementedStubs.swift ├── Extensions │ └── RxImagePickerDelegateProxy.swift ├── RxExample-iOSUITests │ └── Info.plist └── RxExample-macOSUITests │ └── Info.plist ├── scripts ├── validate-markdown.sh ├── profile-build-times.sh ├── validate-playgrounds.sh ├── update-jazzy-docs.sh ├── update-jazzy-config.rb └── test-linux.sh ├── Rx.playground ├── playground.xcworkspace │ └── contents.xcworkspacedata ├── SupportCode.remap ├── Pages │ └── TryYourself.xcplaygroundpage │ │ └── Contents.swift └── contents.xcplayground ├── Rx.xcodeproj └── project.xcworkspace │ └── contents.xcworkspacedata ├── Preprocessor └── Preprocessor.xcodeproj │ └── project.xcworkspace │ └── contents.xcworkspacedata └── Platform ├── DispatchQueue+Extensions.swift ├── DataStructures └── InfiniteSequence.swift └── RecursiveLock.swift /.swift-version: -------------------------------------------------------------------------------- 1 | 4.0 2 | -------------------------------------------------------------------------------- /assets/CNAME.txt: -------------------------------------------------------------------------------- 1 | reactivex.io 2 | -------------------------------------------------------------------------------- /Sources/RxSwift/Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Rx.swift -------------------------------------------------------------------------------- /Sources/AllTestz/RxTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxTest.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Event.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Event.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxCocoa.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/RxCocoa.swift -------------------------------------------------------------------------------- /Sources/RxCocoaRuntime/_RX.m: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Runtime/_RX.m -------------------------------------------------------------------------------- /Sources/RxSwift/Do.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Do.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Errors.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Errors.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Reactive.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Reactive.swift -------------------------------------------------------------------------------- /Sources/RxTest/Recorded.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/Recorded.swift -------------------------------------------------------------------------------- /Sources/RxTest/RxTests.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/RxTests.swift -------------------------------------------------------------------------------- /Sources/RxTest/XCTest+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/XCTest+Rx.swift -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | gem 'danger' 4 | -------------------------------------------------------------------------------- /Sources/AllTestz/TestErrors.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/TestErrors.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/Binder.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Common/Binder.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/Deprecated.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Deprecated.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Amb.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Amb.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Cancelable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Cancelable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Deprecated.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Deprecated.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Disposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Just.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Just.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Lock.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Concurrency/Lock.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Map.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Map.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Maybe.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/Maybe.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Observable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Scan.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Scan.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Single.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/Single.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Sink.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Sink.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Skip.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Skip.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Take.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Take.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Zip.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Zip.swift -------------------------------------------------------------------------------- /Sources/RxTest/Deprecated.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/Deprecated.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Bag.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/DataStructures/Bag.swift -------------------------------------------------------------------------------- /Sources/AllTestz/RxMutableBox.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/RxMutableBox.swift -------------------------------------------------------------------------------- /Sources/RxBlocking/Resources.swift: -------------------------------------------------------------------------------- 1 | ../../RxBlocking/Resources.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/Driver.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Driver/Driver.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/Logging.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Foundation/Logging.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/NSView+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/macOS/NSView+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxTarget.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Common/RxTarget.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/Signal.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Signal/Signal.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/TextInput.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Common/TextInput.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIButton+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIButton+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UILabel+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UILabel+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UISlider+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UISlider+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/UIView+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIView+Rx.swift -------------------------------------------------------------------------------- /Sources/RxSwift/AddRef.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/AddRef.swift -------------------------------------------------------------------------------- /Sources/RxSwift/AnyObserver.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/AnyObserver.swift -------------------------------------------------------------------------------- /Sources/RxSwift/AsMaybe.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/AsMaybe.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Bag+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Extensions/Bag+Rx.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Buffer.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Buffer.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Catch.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Catch.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Concat.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Concat.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Create.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Create.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Debug.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Debug.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Delay.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Delay.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Empty.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Empty.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Error.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Error.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Filter.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Filter.swift -------------------------------------------------------------------------------- /Sources/RxSwift/First.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/First.swift -------------------------------------------------------------------------------- /Sources/RxSwift/GroupBy.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/GroupBy.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Merge.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Merge.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Never.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Never.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ObserverType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/ObserverType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Range.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Range.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Reduce.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Reduce.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Repeat.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Repeat.swift -------------------------------------------------------------------------------- /Sources/RxSwift/RxMutableBox.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/RxMutableBox.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Sample.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Sample.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SchedulerType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/SchedulerType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Switch.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Switch.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/Window.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Window.swift -------------------------------------------------------------------------------- /Sources/RxTest/Any+Equatable.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/Any+Equatable.swift -------------------------------------------------------------------------------- /Sources/RxTest/ColdObservable.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/ColdObservable.swift -------------------------------------------------------------------------------- /Sources/RxTest/HotObservable.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/HotObservable.swift -------------------------------------------------------------------------------- /Sources/RxTest/Subscription.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/Subscription.swift -------------------------------------------------------------------------------- /Tests/Platform/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/RecursiveLock.swift -------------------------------------------------------------------------------- /RxBlocking/Platform/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/RecursiveLock.swift -------------------------------------------------------------------------------- /RxSwift/Platform/Platform.Linux.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/Platform.Linux.swift -------------------------------------------------------------------------------- /RxSwift/Platform/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/RecursiveLock.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Anomalies.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Anomalies.swift -------------------------------------------------------------------------------- /Sources/AllTestz/MaybeTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/MaybeTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Platform.Linux.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/Platform.Linux.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Queue.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/DataStructures/Queue.swift -------------------------------------------------------------------------------- /Sources/AllTestz/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/RecursiveLock.swift -------------------------------------------------------------------------------- /Sources/AllTestz/XCTest+AllTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/XCTest+AllTests.swift -------------------------------------------------------------------------------- /Sources/RxBlocking/RunLoopLock.swift: -------------------------------------------------------------------------------- 1 | ../../RxBlocking/RunLoopLock.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/ControlEvent.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/ControlEvent.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/ItemEvents.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Events/ItemEvents.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/NSSlider+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/macOS/NSSlider+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/PublishRelay.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/PublishRelay.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIControl+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIControl+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIStepper+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIStepper+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UITextView+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UITextView+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIWebView+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIWebView+Rx.swift -------------------------------------------------------------------------------- /Sources/RxSwift/AsSingle.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/AsSingle.swift -------------------------------------------------------------------------------- /Sources/RxSwift/AsyncLock.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Concurrency/AsyncLock.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Bag.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Platform/DataStructures/Bag.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Completable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/Completable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Debounce.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Debounce.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Deferred.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Deferred.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ElementAt.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/ElementAt.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Generate.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Generate.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Multicast.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Multicast.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ObservableType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/ObservableType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ObserveOn.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/ObserveOn.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Optional.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Optional.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Producer.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Producer.swift -------------------------------------------------------------------------------- /Sources/RxSwift/RetryWhen.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/RetryWhen.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Sequence.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Sequence.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/String+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Extensions/String+Rx.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SubjectType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Subjects/SubjectType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/TakeLast.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/TakeLast.swift -------------------------------------------------------------------------------- /Sources/RxSwift/TakeUntil.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/TakeUntil.swift -------------------------------------------------------------------------------- /Sources/RxSwift/TakeWhile.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/TakeWhile.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Throttle.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Throttle.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Zip+arity.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Zip+arity.swift -------------------------------------------------------------------------------- /Sources/RxTest/Bag.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/Platform/DataStructures/Bag.swift -------------------------------------------------------------------------------- /Sources/RxTest/Event+Equatable.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/Event+Equatable.swift -------------------------------------------------------------------------------- /Sources/RxTest/TestableObserver.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/TestableObserver.swift -------------------------------------------------------------------------------- /Tests/Platform/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/Platform.Darwin.swift -------------------------------------------------------------------------------- /Tests/Platform/Platform.Linux.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/Platform.Linux.swift -------------------------------------------------------------------------------- /RxBlocking/Platform/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/Platform.Darwin.swift -------------------------------------------------------------------------------- /RxBlocking/Platform/Platform.Linux.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/Platform.Linux.swift -------------------------------------------------------------------------------- /RxSwift/Platform/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/Platform.Darwin.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Driver+Test.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxCocoaTests/Driver+Test.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Event+Test.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Event+Test.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/Platform.Darwin.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Recorded+Timeless.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/Recorded+Timeless.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Signal+Test.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxCocoaTests/Signal+Test.swift -------------------------------------------------------------------------------- /Sources/AllTestz/SingleTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/SingleTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/VariableTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/VariableTest.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/BehaviorRelay.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/BehaviorRelay.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/ControlTarget.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Common/ControlTarget.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/DelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Common/DelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/NSImageView+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/macOS/NSImageView+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/NSObject+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Foundation/NSObject+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/UIAlertAction+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIAlertAction+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIApplication+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIApplication+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIDatePicker+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIDatePicker+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIImageView+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIImageView+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIPageControl+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIPageControl+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIPickerView+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIPickerView+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/UITabBarItem+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UITabBarItem+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/RxCocoaRuntime/_RXKVOObserver.m: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Runtime/_RXKVOObserver.m -------------------------------------------------------------------------------- /Sources/RxCocoaRuntime/_RXObjCRuntime.m: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Runtime/_RXObjCRuntime.m -------------------------------------------------------------------------------- /Sources/RxSwift/AsyncSubject.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Subjects/AsyncSubject.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/Enumerated.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Enumerated.swift -------------------------------------------------------------------------------- /Sources/RxSwift/GroupedObservable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/GroupedObservable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Materialize.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Materialize.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ObserverBase.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observers/ObserverBase.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Queue.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Platform/DataStructures/Queue.swift -------------------------------------------------------------------------------- /Sources/RxSwift/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Platform/RecursiveLock.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ReplaySubject.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Subjects/ReplaySubject.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SingleAsync.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/SingleAsync.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SubscribeOn.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/SubscribeOn.swift -------------------------------------------------------------------------------- /Sources/RxTest/TestScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/Schedulers/TestScheduler.swift -------------------------------------------------------------------------------- /Sources/RxTest/TestableObservable.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/TestableObservable.swift -------------------------------------------------------------------------------- /RxSwift/Platform/DataStructures/Bag.swift: -------------------------------------------------------------------------------- 1 | ../../../Platform/DataStructures/Bag.swift -------------------------------------------------------------------------------- /RxTest/Platform/DataStructures/Bag.swift: -------------------------------------------------------------------------------- 1 | ../../../Platform/DataStructures/Bag.swift -------------------------------------------------------------------------------- /Sources/AllTestz/DisposableTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/DisposableTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/ObserverTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/ObserverTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Reactive+Tests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Reactive+Tests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/SchedulerTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/SchedulerTests.swift -------------------------------------------------------------------------------- /Sources/RxBlocking/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | ../../RxBlocking/Platform/RecursiveLock.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/ControlProperty.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/ControlProperty.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/DelegateProxyType.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Common/DelegateProxyType.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/Observable+Bind.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Common/Observable+Bind.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIBarButtonItem+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIBarButtonItem+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIProgressView+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIProgressView+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/URLSession+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Foundation/URLSession+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoaRuntime/_RXDelegateProxy.m: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Runtime/_RXDelegateProxy.m -------------------------------------------------------------------------------- /Sources/RxSwift/BehaviorSubject.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Subjects/BehaviorSubject.swift -------------------------------------------------------------------------------- /Sources/RxSwift/CombineLatest.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/CombineLatest.swift -------------------------------------------------------------------------------- /Sources/RxSwift/DefaultIfEmpty.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/DefaultIfEmpty.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Dematerialize.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Dematerialize.swift -------------------------------------------------------------------------------- /Sources/RxSwift/LockOwnerType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Concurrency/LockOwnerType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/MainScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/MainScheduler.swift -------------------------------------------------------------------------------- /Sources/RxSwift/NopDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/NopDisposable.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.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/PrimitiveSequence.swift -------------------------------------------------------------------------------- /Sources/RxSwift/PublishSubject.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Subjects/PublishSubject.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SwiftSupport.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/SwiftSupport/SwiftSupport.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SwitchIfEmpty.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/SwitchIfEmpty.swift -------------------------------------------------------------------------------- /Sources/RxSwift/WithLatestFrom.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/WithLatestFrom.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Zip+Collection.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/Zip+Collection.swift -------------------------------------------------------------------------------- /RxSwift/Platform/DataStructures/Queue.swift: -------------------------------------------------------------------------------- 1 | ../../../Platform/DataStructures/Queue.swift -------------------------------------------------------------------------------- /Sources/AllTestz/AssumptionsTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/AssumptionsTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/AsyncSubjectTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/AsyncSubjectTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/CompletableTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/CompletableTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+Tests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+Tests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/PriorityQueue.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/DataStructures/PriorityQueue.swift -------------------------------------------------------------------------------- /Sources/AllTestz/RecursiveLockTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/RecursiveLockTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/ReplaySubjectTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/ReplaySubjectTest.swift -------------------------------------------------------------------------------- /Sources/RxBlocking/BlockingObservable.swift: -------------------------------------------------------------------------------- 1 | ../../RxBlocking/BlockingObservable.swift -------------------------------------------------------------------------------- /Sources/RxBlocking/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | ../../RxBlocking/Platform/Platform.Darwin.swift -------------------------------------------------------------------------------- /Sources/RxBlocking/Platform.Linux.swift: -------------------------------------------------------------------------------- 1 | ../../RxBlocking/Platform/Platform.Linux.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/KVORepresentable.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Foundation/KVORepresentable.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UICollectionView+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UICollectionView+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UINavigationItem+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UINavigationItem+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIRefreshControl+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIRefreshControl+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/UITabBarController+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UITabBarController+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIViewController+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIViewController+Rx.swift -------------------------------------------------------------------------------- /Sources/RxSwift/AnonymousObserver.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observers/AnonymousObserver.swift -------------------------------------------------------------------------------- /Sources/RxSwift/BinaryDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/BinaryDisposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/BooleanDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/BooleanDisposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/Completable+AndThen.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/Completable+AndThen.swift -------------------------------------------------------------------------------- /Sources/RxSwift/DelaySubscription.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/DelaySubscription.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ImmediateSchedulerType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/ImmediateSchedulerType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/InvocableType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/Internal/InvocableType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ScheduledItem.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/Internal/ScheduledItem.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SerialDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/SerialDisposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ShareReplayScope.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/ShareReplayScope.swift -------------------------------------------------------------------------------- /Sources/RxSwift/TailRecursiveSink.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observers/TailRecursiveSink.swift -------------------------------------------------------------------------------- /default.profraw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/totocaster/RxSwift/master/default.profraw -------------------------------------------------------------------------------- /RxSwift/Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/DispatchQueue+Extensions.swift -------------------------------------------------------------------------------- /Sources/AllTestz/BehaviorSubjectTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/BehaviorSubjectTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Completable+AndThen.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Completable+AndThen.swift -------------------------------------------------------------------------------- /Sources/AllTestz/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/DispatchQueue+Extensions.swift -------------------------------------------------------------------------------- /Sources/AllTestz/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/DataStructures/InfiniteSequence.swift -------------------------------------------------------------------------------- /Sources/AllTestz/MainSchedulerTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/MainSchedulerTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+AmbTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+AmbTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+MapTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+MapTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+ZipTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+ZipTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/PublishSubjectTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/PublishSubjectTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/SharedSequence+Test.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxCocoaTests/SharedSequence+Test.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/NSLayoutConstraint+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Common/NSLayoutConstraint+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/SharedSequence.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/SharedSequence/SharedSequence.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIGestureRecognizer+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIGestureRecognizer+Rx.swift -------------------------------------------------------------------------------- /Sources/RxSwift/AnonymousDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/AnonymousDisposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/CombineLatest+arity.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/CombineLatest+arity.swift -------------------------------------------------------------------------------- /Sources/RxSwift/CompositeDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/CompositeDisposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ConnectableObservableType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/ConnectableObservableType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/HistoricalScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/HistoricalScheduler.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ObservableConvertibleType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/ObservableConvertibleType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ObservableType+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/ObservableType+Extensions.swift -------------------------------------------------------------------------------- /Sources/RxSwift/PriorityQueue.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Platform/DataStructures/PriorityQueue.swift -------------------------------------------------------------------------------- /Sources/RxSwift/RecursiveScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/RecursiveScheduler.swift -------------------------------------------------------------------------------- /Sources/RxSwift/RefCountDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/RefCountDisposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ScheduledDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/ScheduledDisposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SynchronizedOnType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Concurrency/SynchronizedOnType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/VirtualTimeScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/VirtualTimeScheduler.swift -------------------------------------------------------------------------------- /Tests/Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../Platform/DispatchQueue+Extensions.swift -------------------------------------------------------------------------------- /Sources/AllTestz/MySubject.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/Mocks/MySubject.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+ConcatTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+ConcatTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+DebugTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+DebugTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+DelayTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+DelayTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+DoOnTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+DoOnTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+FilterTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+FilterTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+JustTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+JustTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+MergeTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+MergeTests.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+RepeatTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+RepeatTests.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+SingleTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+SingleTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+SkipTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+SkipTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+SwitchTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+SwitchTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+TakeTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+TakeTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+TimerTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+TimerTests.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/SharingSchedulerTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/SharingSchedulerTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/VirtualSchedulerTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/VirtualSchedulerTest.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/Driver+Subscription.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Driver/Driver+Subscription.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/KVORepresentable+Swift.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Foundation/KVORepresentable+Swift.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/NotificationCenter+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Foundation/NotificationCenter+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/PublishRelay+Signal.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Signal/PublishRelay+Signal.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxPickerViewAdapter.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/DataSources/RxPickerViewAdapter.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxTabBarDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxTabBarDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxWebViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxWebViewDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/Signal+Subscription.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Signal/Signal+Subscription.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UIActivityIndicatorView+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UIActivityIndicatorView+Rx.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/UINavigationController+Rx.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/UINavigationController+Rx.swift -------------------------------------------------------------------------------- /Sources/RxSwift/CurrentThreadScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/CurrentThreadScheduler.swift -------------------------------------------------------------------------------- /Sources/RxSwift/DistinctUntilChanged.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/DistinctUntilChanged.swift -------------------------------------------------------------------------------- /Sources/RxSwift/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Platform/DataStructures/InfiniteSequence.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ScheduledItemType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/Internal/ScheduledItemType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SubscriptionDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/SubscriptionDisposable.swift -------------------------------------------------------------------------------- /assets/Rx_Logo_M.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/totocaster/RxSwift/master/assets/Rx_Logo_M.png -------------------------------------------------------------------------------- /RxCocoa/Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Platform/DispatchQueue+Extensions.swift -------------------------------------------------------------------------------- /RxSwift/Platform/DataStructures/PriorityQueue.swift: -------------------------------------------------------------------------------- 1 | ../../../Platform/DataStructures/PriorityQueue.swift -------------------------------------------------------------------------------- /Sources/AllTestz/EquatableArray.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/EquatableArray.swift -------------------------------------------------------------------------------- /Sources/AllTestz/HistoricalSchedulerTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/HistoricalSchedulerTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/NotificationCenterTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxCocoaTests/NotificationCenterTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+BlockingTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxBlockingTests/Observable+BlockingTest.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+OptionalTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+OptionalTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+SequenceTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+SequenceTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+TakeLastTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+TakeLastTests.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+ToArrayTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+ToArrayTests.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/ControlProperty+Driver.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Driver/ControlProperty+Driver.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Platform/DispatchQueue+Extensions.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxSearchBarDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxSearchBarDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxTableViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxTableViewDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxTextViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxTextViewDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/SectionedViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Common/SectionedViewDataSourceType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/CombineLatest+Collection.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Observables/CombineLatest+Collection.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ConcurrentMainScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/ConcurrentMainScheduler.swift -------------------------------------------------------------------------------- /Sources/RxSwift/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Platform/DispatchQueue+Extensions.swift -------------------------------------------------------------------------------- /Sources/RxSwift/OperationQueueScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/OperationQueueScheduler.swift -------------------------------------------------------------------------------- /Sources/RxSwift/PrimitiveSequence+Zip+arity.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/PrimitiveSequence+Zip+arity.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SynchronizedDisposeType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Concurrency/SynchronizedDisposeType.swift -------------------------------------------------------------------------------- /Sources/RxSwift/VirtualTimeConverterType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/VirtualTimeConverterType.swift -------------------------------------------------------------------------------- /Sources/AllTestz/CurrentThreadSchedulerTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/CurrentThreadSchedulerTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/ElementIndexPair.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/ElementIndexPair.swift -------------------------------------------------------------------------------- /Sources/AllTestz/MockDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/Mocks/MockDisposable.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+DefaultIfEmpty.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+DefaultIfEmpty.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+MaterializeTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+MaterializeTests.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+RetryWhenTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+RetryWhenTests.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+TakeUntilTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+TakeUntilTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+TakeWhileTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+TakeWhileTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+ZipTests+arity.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+ZipTests+arity.swift -------------------------------------------------------------------------------- /Sources/AllTestz/SharedSequence+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxCocoaTests/SharedSequence+Extensions.swift -------------------------------------------------------------------------------- /Sources/AllTestz/SharedSequence+OperatorTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxCocoaTests/SharedSequence+OperatorTest.swift -------------------------------------------------------------------------------- /Sources/RxBlocking/BlockingObservable+Operators.swift: -------------------------------------------------------------------------------- 1 | ../../RxBlocking/BlockingObservable+Operators.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/RxTableViewDataSourceProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxTableViewDataSourceProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxTableViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Protocols/RxTableViewDataSourceType.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxTextStorageDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxTextStorageDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxSwift/InvocableScheduledItem.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/Internal/InvocableScheduledItem.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SchedulerServices+Emulation.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/SchedulerServices+Emulation.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SingleAssignmentDisposable.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Disposables/SingleAssignmentDisposable.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SynchronizedUnsubscribeType.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Concurrency/SynchronizedUnsubscribeType.swift -------------------------------------------------------------------------------- /RxSwift/Platform/DataStructures/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | ../../../Platform/DataStructures/InfiniteSequence.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+CombineLatestTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+CombineLatestTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+DematerializeTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+DematerializeTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+SwitchIfEmptyTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+SwitchIfEmptyTests.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/KVORepresentable+CoreGraphics.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Foundation/KVORepresentable+CoreGraphics.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/RxCollectionViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxCollectionViewDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/SharedSequence+Operators.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/SharedSequence/SharedSequence+Operators.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ObservableType+PrimitiveSequence.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Traits/ObservableType+PrimitiveSequence.swift -------------------------------------------------------------------------------- /Sources/RxSwift/SerialDispatchQueueScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/SerialDispatchQueueScheduler.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/Observable+Extensions.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+PrimitiveSequenceTest.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+PrimitiveSequenceTest.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+ShareReplayScopeTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+ShareReplayScopeTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+WithLatestFromTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+WithLatestFromTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/ObservableType+SubscriptionTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/ObservableType+SubscriptionTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/PrimitiveSequenceTest+zip+arity.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/PrimitiveSequenceTest+zip+arity.swift -------------------------------------------------------------------------------- /Sources/AllTestz/TestVirtualScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/TestVirtualScheduler.swift -------------------------------------------------------------------------------- /Sources/RxBlocking/ObservableConvertibleType+Blocking.swift: -------------------------------------------------------------------------------- 1 | ../../RxBlocking/ObservableConvertibleType+Blocking.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxCocoaObjCRuntimeError+Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Common/RxCocoaObjCRuntimeError+Extensions.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxCollectionViewDataSourceProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxCollectionViewDataSourceProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxCollectionViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Protocols/RxCollectionViewDataSourceType.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxSearchControllerDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxSearchControllerDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxTabBarControllerDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxTabBarControllerDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxSwift/ConcurrentDispatchQueueScheduler.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/ConcurrentDispatchQueueScheduler.swift -------------------------------------------------------------------------------- /Sources/RxSwift/DispatchQueueConfiguration.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/Internal/DispatchQueueConfiguration.swift -------------------------------------------------------------------------------- /Sources/RxSwift/HistoricalSchedulerTimeConverter.swift: -------------------------------------------------------------------------------- 1 | ../../RxSwift/Schedulers/HistoricalSchedulerTimeConverter.swift -------------------------------------------------------------------------------- /Sources/RxTest/TestSchedulerVirtualTimeConverter.swift: -------------------------------------------------------------------------------- 1 | ../../RxTest/Schedulers/TestSchedulerVirtualTimeConverter.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+DelaySubscriptionTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+DelaySubscriptionTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable.Extensions.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/Mocks/Observable.Extensions.swift -------------------------------------------------------------------------------- /Sources/AllTestz/PrimitiveMockObserver.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/Mocks/PrimitiveMockObserver.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/ObservableConvertibleType+Driver.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Driver/ObservableConvertibleType+Driver.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/ObservableConvertibleType+Signal.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/Signal/ObservableConvertibleType+Signal.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/SchedulerType+SharedSequence.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/SharedSequence/SchedulerType+SharedSequence.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+CombineLatestTests+arity.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+CombineLatestTests+arity.swift -------------------------------------------------------------------------------- /Sources/AllTestz/Observable+DistinctUntilChangedTests.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/Observable+DistinctUntilChangedTests.swift -------------------------------------------------------------------------------- /Sources/AllTestz/PrimitiveHotObservable.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/Mocks/PrimitiveHotObservable.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxNavigationControllerDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/Proxies/RxNavigationControllerDelegateProxy.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxTableViewReactiveArrayDataSource.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/DataSources/RxTableViewReactiveArrayDataSource.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/SharedSequence+Operators+arity.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/SharedSequence/SharedSequence+Operators+arity.swift -------------------------------------------------------------------------------- /Sources/AllTestz/TestConnectableObservable.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/Mocks/TestConnectableObservable.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/RxCollectionViewReactiveArrayDataSource.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/iOS/DataSources/RxCollectionViewReactiveArrayDataSource.swift -------------------------------------------------------------------------------- /Sources/AllTestz/MainThreadPrimitiveHotObservable.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/Mocks/MainThreadPrimitiveHotObservable.swift -------------------------------------------------------------------------------- /Sources/RxCocoa/ObservableConvertibleType+SharedSequence.swift: -------------------------------------------------------------------------------- 1 | ../../RxCocoa/Traits/SharedSequence/ObservableConvertibleType+SharedSequence.swift -------------------------------------------------------------------------------- /Sources/AllTestz/BackgroundThreadPrimitiveHotObservable.swift: -------------------------------------------------------------------------------- 1 | ../../Tests/RxSwiftTests/TestImplementations/Mocks/BackgroundThreadPrimitiveHotObservable.swift -------------------------------------------------------------------------------- /Documentation/Subjects.md: -------------------------------------------------------------------------------- 1 | Subjects 2 | ======== 3 | 4 | All of behave exactly the same like described [here](http://reactivex.io/documentation/subject.html) 5 | -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/totocaster/RxSwift/master/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-40.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/totocaster/RxSwift/master/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-76.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Rx_Logo_M.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/totocaster/RxSwift/master/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Rx_Logo_M.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-40@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/totocaster/RxSwift/master/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/totocaster/RxSwift/master/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/totocaster/RxSwift/master/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/totocaster/RxSwift/master/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/totocaster/RxSwift/master/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/totocaster/RxSwift/master/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-Small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/totocaster/RxSwift/master/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-Small.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Rx_Logo-iPad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/totocaster/RxSwift/master/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Rx_Logo-iPad.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/totocaster/RxSwift/master/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/totocaster/RxSwift/master/RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png -------------------------------------------------------------------------------- /scripts/validate-markdown.sh: -------------------------------------------------------------------------------- 1 | ROOT=`pwd` 2 | pushd `npm root -g` 3 | remark -u remark-slug -u remark-validate-links "${ROOT}/*.md" 4 | remark -u remark-slug -u remark-validate-links "${ROOT}/**/*.md" 5 | popd 6 | -------------------------------------------------------------------------------- /Rx.playground/playground.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Rx.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/ReactiveExtensionsLogo.imageset/ReactiveExtensionsLogo-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/totocaster/RxSwift/master/RxExample/RxExample/Images.xcassets/ReactiveExtensionsLogo.imageset/ReactiveExtensionsLogo-2.png -------------------------------------------------------------------------------- /RxExample/RxExample/Images.xcassets/ReactiveExtensionsLogo.imageset/ReactiveExtensionsLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/totocaster/RxSwift/master/RxExample/RxExample/Images.xcassets/ReactiveExtensionsLogo.imageset/ReactiveExtensionsLogo.png -------------------------------------------------------------------------------- /RxExample/RxExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Documentation/Playgrounds.md: -------------------------------------------------------------------------------- 1 | ## Playgrounds 2 | 3 | To use playgrounds: 4 | 5 | * Open `Rx.xcworkspace` 6 | * Build the `RxSwift-macOS` scheme 7 | * Open `Rx` playground in the `Rx.xcworkspace` tree view. 8 | * Choose `View > Debug Area > Show Debug Area` 9 | -------------------------------------------------------------------------------- /RxExample/RxExample/RxExample.xcdatamodeld/.xccurrentversion: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Preprocessor/Preprocessor.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxTest/RxTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTests.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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /RxExample/RxExample/Result.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Result.swift 3 | // RxExample 4 | // 5 | // Created by Krunoslav Zaher on 3/18/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | enum Result { 10 | case success(T) 11 | case failure(E) 12 | } 13 | -------------------------------------------------------------------------------- /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-OSX) and hit `Run`. 8 | 9 | You can also run the example app using CocoaPods. 10 | 11 | ``` 12 | pod try RxSwift 13 | ``` 14 | -------------------------------------------------------------------------------- /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 | /// Respresents a disposable resource. 10 | public protocol Disposable { 11 | /// Dispose resource. 12 | func dispose() 13 | } 14 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Rx.playground/SupportCode.remap: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "file": "/Users/mo/Documents/OpenSource/RxSwift/Rx.playground/Sources/SupportCode.swift", 4 | "offset": 276, 5 | "remove": 9, 6 | }, 7 | { 8 | "file": "/Users/mo/Documents/OpenSource/RxSwift/Rx.playground/Sources/SupportCode.swift", 9 | "offset": 733, 10 | "text": "@escaping ", 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | } -------------------------------------------------------------------------------- /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 : class { 10 | associatedtype DisposeKey 11 | 12 | func synchronizedUnsubscribe(_ disposeKey: DisposeKey) 13 | } 14 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /RxExample/RxExample/RxExample.xcdatamodeld/RxExample.xcdatamodel/contents: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | return self 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 : class, Lock { 10 | var _lock: RecursiveLock { get } 11 | } 12 | 13 | extension LockOwnerType { 14 | func lock() { 15 | _lock.lock() 16 | } 17 | 18 | func unlock() { 19 | _lock.unlock() 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | return self[index.sectionIndex].items[index.itemIndex] 14 | } 15 | } -------------------------------------------------------------------------------- /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 | let _ = Resources.incrementTotal() 14 | #endif 15 | } 16 | 17 | deinit { 18 | #if TRACE_RESOURCES 19 | let _ = Resources.decrementTotal() 20 | #endif 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 : class, Disposable, Lock { 10 | func _synchronized_dispose() 11 | } 12 | 13 | extension SynchronizedDisposeType { 14 | func synchronizedDispose() { 15 | lock(); defer { unlock() } 16 | _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 : class, ObserverType, Lock { 10 | func _synchronized_on(_ event: Event) 11 | } 12 | 13 | extension SynchronizedOnType { 14 | func synchronizedOn(_ event: Event) { 15 | lock(); defer { unlock() } 16 | _synchronized_on(event) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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) 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/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 "_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[]; -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /RxCocoa/macOS/NSImageView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSImageView+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: NSImageView { 15 | 16 | /// Bindable sink for `image` property. 17 | public var image: Binder { 18 | return Binder(base) { imageView, image in 19 | imageView.image = image 20 | } 21 | } 22 | } 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /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 | return self 16 | } 17 | } 18 | 19 | extension Float : IdentifiableType { 20 | 21 | } 22 | 23 | extension Double : IdentifiableType { 24 | 25 | } 26 | -------------------------------------------------------------------------------- /RxCocoa/iOS/UIImageView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 4/1/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension Reactive where Base: UIImageView { 15 | 16 | /// Bindable sink for `image` property. 17 | public var image: Binder { 18 | return Binder(base) { imageView, image in 19 | imageView.image = image 20 | } 21 | } 22 | } 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | return ProcessInfo.processInfo.environment["isUITest"] != nil; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /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 | _invocable = invocable 16 | _state = state 17 | } 18 | 19 | func invoke() { 20 | _invocable.invoke(_state) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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 | _owner = owner 15 | _key = key 16 | } 17 | 18 | func dispose() { 19 | _owner?.synchronizedUnsubscribe(_key) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /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 | 11 | extension PublishRelay { 12 | /// Converts `PublishRelay` to `Signal`. 13 | /// 14 | /// - returns: Observable sequence. 15 | public func asSignal() -> Signal { 16 | let source = self.asObservable() 17 | .observeOn(SignalSharingStrategy.scheduler) 18 | return SharedSequence(source) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /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 | 11 | extension BehaviorRelay { 12 | /// Converts `BehaviorRelay` to `Driver`. 13 | /// 14 | /// - returns: Observable sequence. 15 | public func asDriver() -> Driver { 16 | let source = self.asObservable() 17 | .observeOn(DriverSharingStrategy.scheduler) 18 | return SharedSequence(source) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /RxCocoa/iOS/UIProgressView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIProgressView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Samuel Bae on 2/27/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension Reactive where Base: UIProgressView { 15 | 16 | /// Bindable sink for `progress` property 17 | public var progress: Binder { 18 | return Binder(self.base) { progressView, progress in 19 | progressView.progress = progress 20 | } 21 | } 22 | 23 | } 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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 E 13 | 14 | /// Converts `self` to `Observable` sequence. 15 | /// 16 | /// - returns: Observable sequence that represents `self`. 17 | func asObservable() -> Observable 18 | } 19 | -------------------------------------------------------------------------------- /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 | func next(_ value: T) -> Recorded> { 13 | return Recorded(time: 0, value: .next(value)) 14 | } 15 | 16 | func completed() -> Recorded> { 17 | return Recorded(time: 0, value: .completed) 18 | } 19 | 20 | func error(_ error: Swift.Error) -> Recorded> { 21 | return Recorded(time: 0, value: .error(error)) 22 | } 23 | -------------------------------------------------------------------------------- /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 | return DispatchQueue.getSpecific(key: token) != nil 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /RxCocoa/iOS/UIAlertAction+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIAlertAction+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Andrew Breckenridge on 5/7/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIAlertAction { 15 | 16 | /// Bindable sink for `enabled` property. 17 | public var isEnabled: Binder { 18 | return Binder(self.base) { alertAction, value in 19 | alertAction.isEnabled = value 20 | } 21 | } 22 | 23 | } 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /RxCocoa/iOS/UINavigationItem+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationItem+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by kumapo on 2016/05/09. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UINavigationItem { 15 | 16 | /// Bindable sink for `title` property. 17 | public var title: Binder { 18 | return Binder(self.base) { navigationItem, text in 19 | navigationItem.title = text 20 | } 21 | } 22 | 23 | } 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /RxCocoa/iOS/UITabBarItem+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UITabBarItem+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Mateusz Derks on 04/03/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UITabBarItem { 15 | 16 | /// Bindable sink for `badgeValue` property. 17 | public var badgeValue: Binder { 18 | return Binder(self.base) { tabBarItem, badgeValue in 19 | tabBarItem.badgeValue = badgeValue 20 | } 21 | } 22 | 23 | } 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /RxCocoa/iOS/UIViewController+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Kyle Fuller on 27/05/2016. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIViewController { 15 | 16 | /// Bindable sink for `title`. 17 | public var title: Binder { 18 | return Binder(self.base) { viewController, title in 19 | viewController.title = title 20 | } 21 | } 22 | 23 | } 24 | #endif 25 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /scripts/validate-playgrounds.sh: -------------------------------------------------------------------------------- 1 | . scripts/common.sh 2 | 3 | PLAYGROUND_CONFIGURATIONS=(Release) 4 | 5 | # make sure macOS builds 6 | for scheme in "RxSwift-macOS" 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 -target x86_64-apple-macosx10.10 -F ${BUILD_DIRECTORY}/Build/Products/${configuration} ${PAGES_PATH} 14 | done 15 | done 16 | 17 | -------------------------------------------------------------------------------- /RxCocoa/Foundation/Logging.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Logging.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 4/3/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import struct Foundation.URLRequest 10 | 11 | /// Simple logging settings for RxCocoa library. 12 | public struct Logging { 13 | public typealias LogURLRequest = (URLRequest) -> Bool 14 | 15 | /// Log URL requests to standard output in curl format. 16 | public static var URLRequests: LogURLRequest = { _ in 17 | #if DEBUG 18 | return true 19 | #else 20 | return false 21 | #endif 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /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 | _scheduler = scheduler 19 | ticks.append(_scheduler.clock) 20 | } 21 | 22 | func dispose() { 23 | ticks.append(_scheduler.clock) 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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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: E 11 | let index: I 12 | 13 | init(_ element: E, _ 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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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/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: O) -> Disposable where O.E == E { 15 | XCTAssertTrue(DispatchQueue.isMain) 16 | return super.subscribe(observer) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /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 | typealias Element = ElementType 14 | 15 | var events: [Recorded>] 16 | 17 | init() { 18 | self.events = [] 19 | } 20 | 21 | func on(_ event: Event) { 22 | events.append(Recorded(time: 0, value: event)) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /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: O) -> Disposable where O.E == E { 15 | XCTAssertTrue(!DispatchQueue.isMain) 16 | return super.subscribe(observer) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /RxSwift/Extensions/String+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // String+Rx.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 12/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | extension String { 10 | /// This is needed because on Linux Swift doesn't have `rangeOfString(..., options: .BackwardsSearch)` 11 | func lastIndexOf(_ character: Character) -> Index? { 12 | var index = endIndex 13 | while index > startIndex { 14 | index = self.index(before: index) 15 | if self[index] == character { 16 | return index 17 | } 18 | } 19 | 20 | return nil 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /RxCocoa/iOS/UIApplication+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIApplication+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Mads Bøgeskov on 18/01/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIApplication { 15 | 16 | /// Bindable sink for `networkActivityIndicatorVisible`. 17 | public var isNetworkActivityIndicatorVisible: Binder { 18 | return Binder(self.base) { application, active in 19 | application.isNetworkActivityIndicatorVisible = active 20 | } 21 | } 22 | } 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /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 RxSwift 10 | 11 | /** 12 | `BlockingObservable` is a variety of `Observable` that provides blocking operators. 13 | 14 | It can be useful for testing and demo purposes, but is generally inappropriate for production applications. 15 | 16 | If you think you need to use a `BlockingObservable` this is usually a sign that you should rethink your 17 | design. 18 | */ 19 | public struct BlockingObservable { 20 | let timeout: RxTimeInterval? 21 | let source: Observable 22 | } 23 | -------------------------------------------------------------------------------- /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=`simulator_ids "${SIMULATOR}"` 12 | DESTINATION='id='$SIMULATOR_GUID'' 13 | 14 | set -x 15 | killall Simulator || true 16 | jazzy --config .jazzy.yml -m "${MODULE}" -x -workspace,"${WORKSPACE}",-scheme,"${SCHEME}",-configuration,"${CONFIGURATION}",-derivedDataPath,"${BUILD_DIRECTORY}",-destination,"$DESTINATION" 17 | set +x 18 | } 19 | 20 | ./scripts/update-jazzy-config.rb 21 | 22 | updateDocs Rx.xcworkspace "RxExample-iOS" "Release" $DEFAULT_IOS_SIMULATOR "RxSwift" 23 | -------------------------------------------------------------------------------- /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) 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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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 base.rx.controlProperty( 19 | getter: { control in 20 | return control.doubleValue 21 | }, 22 | setter: { control, value in 23 | control.doubleValue = value 24 | } 25 | ) 26 | } 27 | 28 | } 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /RxSwift/RxMutableBox.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxMutableBox.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 5/22/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Creates mutable reference wrapper for any type. 10 | final class RxMutableBox : CustomDebugStringConvertible { 11 | /// Wrapped value 12 | var value : T 13 | 14 | /// Creates reference wrapper for `value`. 15 | /// 16 | /// - parameter value: Value to wrap. 17 | init (_ value: T) { 18 | self.value = value 19 | } 20 | } 21 | 22 | extension RxMutableBox { 23 | /// - returns: Box description. 24 | var debugDescription: String { 25 | return "MutatingBox(\(self.value))" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /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 SubjectObserverType : ObserverType 15 | 16 | /// Returns observer interface for subject. 17 | /// 18 | /// - returns: Observer interface for subject. 19 | func asObserver() -> SubjectObserverType 20 | 21 | } 22 | -------------------------------------------------------------------------------- /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 Element = E 12 | typealias Iterator = AnyIterator 13 | 14 | private let _repeatedValue: E 15 | 16 | init(repeatedValue: E) { 17 | _repeatedValue = repeatedValue 18 | } 19 | 20 | func makeIterator() -> Iterator { 21 | let repeatedValue = _repeatedValue 22 | return AnyIterator { 23 | return repeatedValue 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /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) 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 | -------------------------------------------------------------------------------- /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 | #if swift(>=4.0) 12 | typealias IntMax = Int64 13 | public typealias RxAbstractInteger = FixedWidthInteger 14 | 15 | extension SignedInteger { 16 | func toIntMax() -> IntMax { 17 | return IntMax(self) 18 | } 19 | } 20 | #else 21 | public typealias RxAbstractInteger = SignedInteger 22 | 23 | extension Array { 24 | public mutating func swapAt(_ i: Int, _ j: Int) { 25 | swap(&self[i], &self[j]) 26 | } 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 struct Foundation.IndexPath 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 | -------------------------------------------------------------------------------- /scripts/update-jazzy-config.rb: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require 'yaml' 4 | 5 | included_directories = %w(RxSwift RxCocoa) 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 | -------------------------------------------------------------------------------- /Rx.playground/Pages/TryYourself.xcplaygroundpage/Contents.swift: -------------------------------------------------------------------------------- 1 | /*: 2 | > # IMPORTANT: To use **Rx.playground**: 3 | 1. Open **Rx.xcworkspace**. 4 | 1. Build the **RxSwift-macOS** scheme (**Product** → **Build**). 5 | 1. Open **Rx** playground in the **Project navigator**. 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 | -------------------------------------------------------------------------------- /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 { (error) -> 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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 { (error) -> 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/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 | -------------------------------------------------------------------------------- /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 | 11 | extension ObservableConvertibleType { 12 | /// Converts an Observable into a `BlockingObservable` (an Observable with blocking operators). 13 | /// 14 | /// - parameter timeout: Maximal time interval BlockingObservable can block without throwing `RxError.timeout`. 15 | /// - returns: `BlockingObservable` version of `self` 16 | public func toBlocking(timeout: RxTimeInterval? = nil) -> BlockingObservable { 17 | return BlockingObservable(timeout: timeout, source: self.asObservable()) 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /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 { (error) -> 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/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) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIActivityIndicatorView { 15 | 16 | /// Bindable sink for `startAnimating()`, `stopAnimating()` methods. 17 | public var isAnimating: Binder { 18 | return Binder(self.base) { activityIndicator, active in 19 | if active { 20 | activityIndicator.startAnimating() 21 | } else { 22 | activityIndicator.stopAnimating() 23 | } 24 | } 25 | } 26 | 27 | } 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 exec -it rx4.0 bash -c "cd /projects/RxSwift; scripts/test-linux.sh" 16 | elif [[ `uname` == "Linux" ]]; then 17 | CONFIGURATIONS=(debug release) 18 | 19 | rm -rf .build || true 20 | 21 | ./scripts/all-tests.sh Unix 22 | 23 | git checkout Package.swift 24 | 25 | for configuration in ${CONFIGURATIONS[@]} 26 | do 27 | swift build -c ${configuration} 28 | done 29 | else 30 | echo "Unknown os (`uname`)" 31 | exit -1 32 | fi 33 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | fileprivate struct NopDisposable : Disposable { 13 | 14 | fileprivate static let noOp: Disposable = NopDisposable() 15 | 16 | fileprivate 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 { 30 | return NopDisposable.noOp 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /RxCocoa/iOS/UILabel+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UILabel+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 4/1/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension Reactive where Base: UILabel { 15 | 16 | /// Bindable sink for `text` property. 17 | public var text: Binder { 18 | return Binder(self.base) { label, text in 19 | label.text = text 20 | } 21 | } 22 | 23 | /// Bindable sink for `attributedText` property. 24 | public var attributedText: Binder { 25 | return Binder(self.base) { label, text in 26 | label.attributedText = text 27 | } 28 | } 29 | 30 | } 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /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 S.E == S.SubjectObserverType.E { 12 | typealias E = S.E 13 | 14 | let _o: ConnectableObservable 15 | 16 | init(o: Observable, s: S) { 17 | _o = o.multicast(s) 18 | } 19 | 20 | func connect() -> Disposable { 21 | return _o.connect() 22 | } 23 | 24 | func subscribe(_ observer: O) -> Disposable where O.E == E { 25 | return _o.subscribe(observer) 26 | } 27 | } 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) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// For more information take a look at `DelegateProxyType`. 15 | open class RxTableViewDelegateProxy 16 | : RxScrollViewDelegateProxy 17 | , UITableViewDelegate { 18 | 19 | /// Typed parent object. 20 | public weak private(set) var tableView: UITableView? 21 | 22 | /// - parameter tableView: Parent object for delegate proxy. 23 | public init(tableView: UITableView) { 24 | self.tableView = tableView 25 | super.init(scrollView: tableView) 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 | 11 | import Cocoa 12 | import RxSwift 13 | 14 | extension Reactive where Base: NSView { 15 | /// Bindable sink for `hidden` property. 16 | public var isHidden: Binder { 17 | return Binder(self.base) { view, value in 18 | view.isHidden = value 19 | } 20 | } 21 | 22 | /// Bindable sink for `alphaValue` property. 23 | public var alpha: Binder { 24 | return Binder(self.base) { view, value in 25 | view.alphaValue = value 26 | } 27 | } 28 | } 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 struct Foundation.Date 10 | 11 | /// Provides a virtual time scheduler that uses `Date` for absolute time and `NSTimeInterval` 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 | -------------------------------------------------------------------------------- /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) 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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Rx.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /RxCocoa/iOS/UIPageControl+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIPageControl+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Francesco Puntillo on 14/04/2016. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension Reactive where Base: UIPageControl { 15 | 16 | /// Bindable sink for `currentPage` property. 17 | public var currentPage: Binder { 18 | return Binder(self.base) { controller, page in 19 | controller.currentPage = page 20 | } 21 | } 22 | 23 | /// Bindable sink for `numberOfPages` property. 24 | public var numberOfPages: Binder { 25 | return Binder(self.base) { controller, page in 26 | controller.numberOfPages = page 27 | } 28 | } 29 | 30 | } 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /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 -> E? {} 16 | } 17 | 18 | extension BlockingObservable { 19 | public func last() throws -> E? {} 20 | } 21 | 22 | extension BlockingObservable { 23 | public func single() throws -> E? {} 24 | public func single(_ predicate: @escaping (E) throws -> Bool) throws -> E? {} 25 | } 26 | 27 | extension BlockingObservable { 28 | public func materialize() -> MaterializedSequenceResult 29 | } 30 | ``` 31 | 32 | 33 | -------------------------------------------------------------------------------- /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 -> () { 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/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 | -------------------------------------------------------------------------------- /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 class Foundation.NSRecursiveLock 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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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/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 | -------------------------------------------------------------------------------- /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) 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) -> Void 25 | } 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 Element = ElementType 11 | 12 | typealias EventHandler = (Event) -> Void 13 | 14 | private let _eventHandler : EventHandler 15 | 16 | init(_ eventHandler: @escaping EventHandler) { 17 | #if TRACE_RESOURCES 18 | let _ = Resources.incrementTotal() 19 | #endif 20 | _eventHandler = eventHandler 21 | } 22 | 23 | override func onCore(_ event: Event) { 24 | return _eventHandler(event) 25 | } 26 | 27 | #if TRACE_RESOURCES 28 | deinit { 29 | let _ = Resources.decrementTotal() 30 | } 31 | #endif 32 | } 33 | -------------------------------------------------------------------------------- /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 | return _disposable.isDisposed 21 | } 22 | 23 | init(action: @escaping Action, state: T) { 24 | _action = action 25 | _state = state 26 | } 27 | 28 | func invoke() { 29 | _disposable.setDisposable(_action(_state)) 30 | } 31 | 32 | func dispose() { 33 | _disposable.dispose() 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /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 -> () { 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/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) -> ()) -> Self { 21 | var newSelf = self 22 | transform(&newSelf) 23 | return newSelf 24 | } 25 | 26 | func mutate(transform: (inout Self) throws -> ()) rethrows -> Self { 27 | var newSelf = self 28 | try transform(&newSelf) 29 | return newSelf 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /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 | typealias E = ElementType 11 | 12 | private var _isStopped: AtomicInt = 0 13 | 14 | func on(_ event: Event) { 15 | switch event { 16 | case .next: 17 | if _isStopped == 0 { 18 | onCore(event) 19 | } 20 | case .error, .completed: 21 | if AtomicCompareAndSwap(0, 1, &_isStopped) { 22 | onCore(event) 23 | } 24 | } 25 | } 26 | 27 | func onCore(_ event: Event) { 28 | rxAbstractMethod() 29 | } 30 | 31 | func dispose() { 32 | _ = AtomicCompareAndSwap(0, 1, &_isStopped) 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /RxSwift/Observables/Never.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Never.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | extension ObservableType { 10 | 11 | /** 12 | Returns a non-terminating observable sequence, which can be used to denote an infinite duration. 13 | 14 | - seealso: [never operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html) 15 | 16 | - returns: An observable sequence whose observers will never get called. 17 | */ 18 | public static func never() -> Observable { 19 | return NeverProducer() 20 | } 21 | } 22 | 23 | final fileprivate class NeverProducer : Producer { 24 | override func subscribe(_ observer: O) -> Disposable where O.E == Element { 25 | return Disposables.create() 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /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 | 4.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(CURRENT_PROJECT_VERSION) 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /RxExample/RxDataSources/Differentiator/ItemPath.swift: -------------------------------------------------------------------------------- 1 | // 2 | // 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 | public struct ItemPath { 12 | public let sectionIndex: Int 13 | public let itemIndex: Int 14 | 15 | public init(sectionIndex: Int, itemIndex: Int) { 16 | self.sectionIndex = sectionIndex 17 | self.itemIndex = itemIndex 18 | } 19 | } 20 | 21 | extension ItemPath : Equatable { 22 | 23 | } 24 | 25 | public func == (lhs: ItemPath, rhs: ItemPath) -> Bool { 26 | return lhs.sectionIndex == rhs.sectionIndex && lhs.itemIndex == rhs.itemIndex 27 | } 28 | 29 | extension ItemPath: Hashable { 30 | 31 | public var hashValue: Int { 32 | return sectionIndex.byteSwapped.hashValue ^ itemIndex.hashValue 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /RxExample/RxExample-iOSTests/Mocks/NotImplementedStubs.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NotImplementedStubs.swift 3 | // RxExample 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | import RxTest 11 | 12 | import func Foundation.arc4random 13 | 14 | func genericFatal(_ message: String) -> T { 15 | if -1 == Int(arc4random() % 4) { 16 | print("This is hack to remove warning") 17 | } 18 | _ = fatalError(message) 19 | } 20 | 21 | // MARK: Generic support code 22 | 23 | // MARK: Not implemented stubs 24 | 25 | func notImplemented() -> (T1) -> Observable { 26 | return { _ -> Observable in 27 | return genericFatal("Not implemented") 28 | } 29 | } 30 | 31 | func notImplementedSync() -> (T1) -> Void { 32 | return { _ in 33 | genericFatal("Not implemented") 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /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 | return 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 | -------------------------------------------------------------------------------- /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 | 4.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(CURRENT_PROJECT_VERSION) 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /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 | 4.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(CURRENT_PROJECT_VERSION) 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /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 | 4.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(CURRENT_PROJECT_VERSION) 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /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 class Foundation.NSNull 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/RxCocoaTests/UIRefreshControl+RxTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIRefreshControl+RxTests.swift 3 | // Tests 4 | // 5 | // Created by Yosuke Ishikawa on 1/31/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 | import XCTest 15 | 16 | final class UIRefreshControlTests : RxTest { 17 | } 18 | 19 | extension UIRefreshControlTests { 20 | func testRefreshing_True() { 21 | let subject = UIRefreshControl() 22 | Observable.just(true).subscribe(subject.rx.isRefreshing).dispose() 23 | 24 | XCTAssertTrue(subject.isRefreshing == true) 25 | } 26 | 27 | func testRefreshing_False() { 28 | let subject = UIRefreshControl() 29 | Observable.just(false).subscribe(subject.rx.isRefreshing).dispose() 30 | 31 | XCTAssertTrue(subject.isRefreshing == false) 32 | } 33 | } 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /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 testBadgetValue_Text() { 19 | let subject = UITabBarItem(tabBarSystemItem: .more, tag: 0) 20 | Observable.just("5").subscribe(subject.rx.badgeValue).dispose() 21 | 22 | XCTAssertTrue(subject.badgeValue == "5") 23 | } 24 | 25 | func testBadgetValue_Empty() { 26 | let subject = UITabBarItem(tabBarSystemItem: .more, tag: 0) 27 | Observable.just(nil).subscribe(subject.rx.badgeValue).dispose() 28 | 29 | XCTAssertTrue(subject.badgeValue == nil) 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /RxCocoa/Common/RxTarget.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTarget.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import class Foundation.NSObject 10 | 11 | import RxSwift 12 | 13 | class RxTarget : NSObject 14 | , Disposable { 15 | 16 | private var retainSelf: RxTarget? 17 | 18 | override init() { 19 | super.init() 20 | self.retainSelf = self 21 | 22 | #if TRACE_RESOURCES 23 | _ = Resources.incrementTotal() 24 | #endif 25 | 26 | #if DEBUG 27 | MainScheduler.ensureExecutingOnScheduler() 28 | #endif 29 | } 30 | 31 | func dispose() { 32 | #if DEBUG 33 | MainScheduler.ensureExecutingOnScheduler() 34 | #endif 35 | self.retainSelf = nil 36 | } 37 | 38 | #if TRACE_RESOURCES 39 | deinit { 40 | _ = Resources.decrementTotal() 41 | } 42 | #endif 43 | } 44 | -------------------------------------------------------------------------------- /RxCocoa/Runtime/include/_RXKVOObserver.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXKVOObserver.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/11/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | ################################################################################ 13 | This file is part of RX private API 14 | ################################################################################ 15 | */ 16 | 17 | // Exists because if written in Swift, reading unowned is disabled during dealloc process 18 | @interface _RXKVOObserver : NSObject 19 | 20 | -(instancetype)initWithTarget:(id)target 21 | retainTarget:(BOOL)retainTarget 22 | keyPath:(NSString*)keyPath 23 | options:(NSKeyValueObservingOptions)options 24 | callback:(void (^)(id))callback; 25 | 26 | -(void)dispose; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /RxCocoa/iOS/Protocols/RxCollectionViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxCollectionViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// Marks data source as `UICollectionView` reactive data source enabling it to be used with one of the `bindTo` methods. 15 | public protocol RxCollectionViewDataSourceType /*: UICollectionViewDataSource*/ { 16 | 17 | /// Type of elements that can be bound to collection view. 18 | associatedtype Element 19 | 20 | /// New observable sequence event observed. 21 | /// 22 | /// - parameter collectionView: Bound collection view. 23 | /// - parameter observedEvent: Event 24 | func collectionView(_ collectionView: UICollectionView, observedEvent: Event) -> Void 25 | } 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /RxSwift/Observables/Empty.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Empty.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | extension ObservableType { 10 | /** 11 | Returns an empty observable sequence, using the specified scheduler to send out the single `Completed` message. 12 | 13 | - seealso: [empty operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html) 14 | 15 | - returns: An observable sequence with no elements. 16 | */ 17 | public static func empty() -> Observable { 18 | return EmptyProducer() 19 | } 20 | } 21 | 22 | final fileprivate class EmptyProducer : Producer { 23 | override func subscribe(_ observer: O) -> Disposable where O.E == Element { 24 | observer.on(.completed) 25 | return Disposables.create() 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /RxExample/RxDataSources/RxDataSources/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 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(CURRENT_PROJECT_VERSION) 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /RxTest/Deprecated.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Deprecated.swift 3 | // RxTest 4 | // 5 | // Created by Krunoslav Zaher on 4/29/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension TestScheduler { 12 | @available(*, deprecated, renamed: "start(disposed:create:)") 13 | public func start(_ disposed: TestTime, create: @escaping () -> Observable) -> TestableObserver { 14 | return start(Defaults.created, subscribed: Defaults.subscribed, disposed: disposed, create: create) 15 | } 16 | 17 | @available(*, deprecated, renamed: "start(created:subscribed:disposed:create:)") 18 | public func start(_ created: TestTime, subscribed: TestTime, disposed: TestTime, create: @escaping () -> Observable) -> TestableObserver { 19 | return start(created: created, subscribed: subscribed, disposed: disposed, create: create) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Sources/RxCocoaRuntime/include/_RXKVOObserver.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXKVOObserver.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/11/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | ################################################################################ 13 | This file is part of RX private API 14 | ################################################################################ 15 | */ 16 | 17 | // Exists because if written in Swift, reading unowned is disabled during dealloc process 18 | @interface _RXKVOObserver : NSObject 19 | 20 | -(instancetype)initWithTarget:(id)target 21 | retainTarget:(BOOL)retainTarget 22 | keyPath:(NSString*)keyPath 23 | options:(NSKeyValueObservingOptions)options 24 | callback:(void (^)(id))callback; 25 | 26 | -(void)dispose; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /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 numberOfMapOperators: Int32 { 26 | return RxSwift.Resources.numberOfMapOperators 27 | } 28 | 29 | static var total: Int32 { 30 | return RxSwift.Resources.total 31 | } 32 | } 33 | #endif 34 | -------------------------------------------------------------------------------- /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) 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 | /// Reactive wrapper for `stepValue` property. 28 | public var stepValue: Binder { 29 | return Binder(self.base) { stepper, value in 30 | stepper.stepValue = value 31 | } 32 | } 33 | 34 | } 35 | 36 | #endif 37 | 38 | -------------------------------------------------------------------------------- /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 numberOfMapOperators: Int32 { 26 | return RxSwift.Resources.numberOfMapOperators 27 | } 28 | 29 | static var total: Int32 { 30 | return RxSwift.Resources.total 31 | } 32 | } 33 | #endif 34 | --------------------------------------------------------------------------------