├── .gitattributes ├── .gitignore ├── .swift-version ├── .travis.yml ├── CHANGELOG.md ├── Cartfile ├── Example ├── Podfile ├── Podfile.lock ├── Pods │ ├── Local Podspecs │ │ └── RxAppState.podspec.json │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── RxAppState.xcscheme │ ├── RxCocoa │ │ ├── LICENSE.md │ │ ├── Platform │ │ │ ├── DataStructures │ │ │ │ ├── Bag.swift │ │ │ │ ├── InfiniteSequence.swift │ │ │ │ ├── PriorityQueue.swift │ │ │ │ └── Queue.swift │ │ │ ├── DispatchQueue+Extensions.swift │ │ │ ├── Platform.Darwin.swift │ │ │ ├── Platform.Linux.swift │ │ │ └── RecursiveLock.swift │ │ ├── README.md │ │ └── RxCocoa │ │ │ ├── Common │ │ │ ├── ControlTarget.swift │ │ │ ├── DelegateProxy.swift │ │ │ ├── DelegateProxyType.swift │ │ │ ├── Infallible+Bind.swift │ │ │ ├── Observable+Bind.swift │ │ │ ├── RxCocoaObjCRuntimeError+Extensions.swift │ │ │ ├── RxTarget.swift │ │ │ ├── SectionedViewDataSourceType.swift │ │ │ └── TextInput.swift │ │ │ ├── Foundation │ │ │ ├── KVORepresentable+CoreGraphics.swift │ │ │ ├── KVORepresentable+Swift.swift │ │ │ ├── KVORepresentable.swift │ │ │ ├── NSObject+Rx+KVORepresentable.swift │ │ │ ├── NSObject+Rx+RawRepresentable.swift │ │ │ ├── NSObject+Rx.swift │ │ │ ├── NotificationCenter+Rx.swift │ │ │ └── URLSession+Rx.swift │ │ │ ├── Runtime │ │ │ ├── _RX.m │ │ │ ├── _RXDelegateProxy.m │ │ │ ├── _RXKVOObserver.m │ │ │ ├── _RXObjCRuntime.m │ │ │ └── include │ │ │ │ ├── RxCocoaRuntime.h │ │ │ │ ├── _RX.h │ │ │ │ ├── _RXDelegateProxy.h │ │ │ │ ├── _RXKVOObserver.h │ │ │ │ └── _RXObjCRuntime.h │ │ │ ├── RxCocoa.h │ │ │ ├── RxCocoa.swift │ │ │ ├── Traits │ │ │ ├── ControlEvent.swift │ │ │ ├── ControlProperty.swift │ │ │ ├── Driver │ │ │ │ ├── BehaviorRelay+Driver.swift │ │ │ │ ├── ControlEvent+Driver.swift │ │ │ │ ├── ControlProperty+Driver.swift │ │ │ │ ├── Driver+Subscription.swift │ │ │ │ ├── Driver.swift │ │ │ │ ├── Infallible+Driver.swift │ │ │ │ └── ObservableConvertibleType+Driver.swift │ │ │ ├── SharedSequence │ │ │ │ ├── ObservableConvertibleType+SharedSequence.swift │ │ │ │ ├── SchedulerType+SharedSequence.swift │ │ │ │ ├── SharedSequence+Concurrency.swift │ │ │ │ ├── SharedSequence+Operators+arity.swift │ │ │ │ ├── SharedSequence+Operators.swift │ │ │ │ └── SharedSequence.swift │ │ │ └── Signal │ │ │ │ ├── ControlEvent+Signal.swift │ │ │ │ ├── ObservableConvertibleType+Signal.swift │ │ │ │ ├── PublishRelay+Signal.swift │ │ │ │ ├── Signal+Subscription.swift │ │ │ │ └── Signal.swift │ │ │ ├── iOS │ │ │ ├── DataSources │ │ │ │ ├── RxCollectionViewReactiveArrayDataSource.swift │ │ │ │ ├── RxPickerViewAdapter.swift │ │ │ │ └── RxTableViewReactiveArrayDataSource.swift │ │ │ ├── Events │ │ │ │ └── ItemEvents.swift │ │ │ ├── NSTextStorage+Rx.swift │ │ │ ├── Protocols │ │ │ │ ├── RxCollectionViewDataSourceType.swift │ │ │ │ ├── RxPickerViewDataSourceType.swift │ │ │ │ └── RxTableViewDataSourceType.swift │ │ │ ├── Proxies │ │ │ │ ├── RxCollectionViewDataSourcePrefetchingProxy.swift │ │ │ │ ├── RxCollectionViewDataSourceProxy.swift │ │ │ │ ├── RxCollectionViewDelegateProxy.swift │ │ │ │ ├── RxDelegateProxyCrashFix.swift │ │ │ │ ├── RxNavigationControllerDelegateProxy.swift │ │ │ │ ├── RxPickerViewDataSourceProxy.swift │ │ │ │ ├── RxPickerViewDelegateProxy.swift │ │ │ │ ├── RxScrollViewDelegateProxy.swift │ │ │ │ ├── RxSearchBarDelegateProxy.swift │ │ │ │ ├── RxSearchControllerDelegateProxy.swift │ │ │ │ ├── RxTabBarControllerDelegateProxy.swift │ │ │ │ ├── RxTabBarDelegateProxy.swift │ │ │ │ ├── RxTableViewDataSourcePrefetchingProxy.swift │ │ │ │ ├── RxTableViewDataSourceProxy.swift │ │ │ │ ├── RxTableViewDelegateProxy.swift │ │ │ │ ├── RxTextStorageDelegateProxy.swift │ │ │ │ ├── RxTextViewDelegateProxy.swift │ │ │ │ └── RxWKNavigationDelegateProxy.swift │ │ │ ├── UIActivityIndicatorView+Rx.swift │ │ │ ├── UIApplication+Rx.swift │ │ │ ├── UIBarButtonItem+Rx.swift │ │ │ ├── UIButton+Rx.swift │ │ │ ├── UICollectionView+Rx.swift │ │ │ ├── UIControl+Rx.swift │ │ │ ├── UIDatePicker+Rx.swift │ │ │ ├── UIGestureRecognizer+Rx.swift │ │ │ ├── UINavigationController+Rx.swift │ │ │ ├── UIPickerView+Rx.swift │ │ │ ├── UIRefreshControl+Rx.swift │ │ │ ├── UIScrollView+Rx.swift │ │ │ ├── UISearchBar+Rx.swift │ │ │ ├── UISearchController+Rx.swift │ │ │ ├── UISegmentedControl+Rx.swift │ │ │ ├── UISlider+Rx.swift │ │ │ ├── UIStepper+Rx.swift │ │ │ ├── UISwitch+Rx.swift │ │ │ ├── UITabBar+Rx.swift │ │ │ ├── UITabBarController+Rx.swift │ │ │ ├── UITableView+Rx.swift │ │ │ ├── UITextField+Rx.swift │ │ │ ├── UITextView+Rx.swift │ │ │ └── WKWebView+Rx.swift │ │ │ └── macOS │ │ │ ├── NSButton+Rx.swift │ │ │ ├── NSControl+Rx.swift │ │ │ ├── NSSlider+Rx.swift │ │ │ ├── NSTextField+Rx.swift │ │ │ ├── NSTextView+Rx.swift │ │ │ └── NSView+Rx.swift │ ├── RxRelay │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── RxRelay │ │ │ ├── BehaviorRelay.swift │ │ │ ├── Observable+Bind.swift │ │ │ ├── PublishRelay.swift │ │ │ ├── ReplayRelay.swift │ │ │ └── Utils.swift │ ├── RxSwift │ │ ├── LICENSE.md │ │ ├── Platform │ │ │ ├── AtomicInt.swift │ │ │ ├── DataStructures │ │ │ │ ├── Bag.swift │ │ │ │ ├── InfiniteSequence.swift │ │ │ │ ├── PriorityQueue.swift │ │ │ │ └── Queue.swift │ │ │ ├── DispatchQueue+Extensions.swift │ │ │ ├── Platform.Darwin.swift │ │ │ ├── Platform.Linux.swift │ │ │ └── RecursiveLock.swift │ │ ├── README.md │ │ └── RxSwift │ │ │ ├── AnyObserver.swift │ │ │ ├── Binder.swift │ │ │ ├── Cancelable.swift │ │ │ ├── Concurrency │ │ │ ├── AsyncLock.swift │ │ │ ├── Lock.swift │ │ │ ├── LockOwnerType.swift │ │ │ ├── SynchronizedDisposeType.swift │ │ │ ├── SynchronizedOnType.swift │ │ │ └── SynchronizedUnsubscribeType.swift │ │ │ ├── ConnectableObservableType.swift │ │ │ ├── Date+Dispatch.swift │ │ │ ├── Disposable.swift │ │ │ ├── Disposables │ │ │ ├── AnonymousDisposable.swift │ │ │ ├── BinaryDisposable.swift │ │ │ ├── BooleanDisposable.swift │ │ │ ├── CompositeDisposable.swift │ │ │ ├── Disposables.swift │ │ │ ├── DisposeBag.swift │ │ │ ├── DisposeBase.swift │ │ │ ├── NopDisposable.swift │ │ │ ├── RefCountDisposable.swift │ │ │ ├── ScheduledDisposable.swift │ │ │ ├── SerialDisposable.swift │ │ │ ├── SingleAssignmentDisposable.swift │ │ │ └── SubscriptionDisposable.swift │ │ │ ├── Errors.swift │ │ │ ├── Event.swift │ │ │ ├── Extensions │ │ │ └── Bag+Rx.swift │ │ │ ├── GroupedObservable.swift │ │ │ ├── ImmediateSchedulerType.swift │ │ │ ├── Observable+Concurrency.swift │ │ │ ├── Observable.swift │ │ │ ├── ObservableConvertibleType.swift │ │ │ ├── ObservableType+Extensions.swift │ │ │ ├── ObservableType.swift │ │ │ ├── Observables │ │ │ ├── AddRef.swift │ │ │ ├── Amb.swift │ │ │ ├── AsMaybe.swift │ │ │ ├── AsSingle.swift │ │ │ ├── Buffer.swift │ │ │ ├── Catch.swift │ │ │ ├── CombineLatest+Collection.swift │ │ │ ├── CombineLatest+arity.swift │ │ │ ├── CombineLatest.swift │ │ │ ├── CompactMap.swift │ │ │ ├── Concat.swift │ │ │ ├── Create.swift │ │ │ ├── Debounce.swift │ │ │ ├── Debug.swift │ │ │ ├── Decode.swift │ │ │ ├── DefaultIfEmpty.swift │ │ │ ├── Deferred.swift │ │ │ ├── Delay.swift │ │ │ ├── DelaySubscription.swift │ │ │ ├── Dematerialize.swift │ │ │ ├── DistinctUntilChanged.swift │ │ │ ├── Do.swift │ │ │ ├── ElementAt.swift │ │ │ ├── Empty.swift │ │ │ ├── Enumerated.swift │ │ │ ├── Error.swift │ │ │ ├── Filter.swift │ │ │ ├── First.swift │ │ │ ├── Generate.swift │ │ │ ├── GroupBy.swift │ │ │ ├── Just.swift │ │ │ ├── Map.swift │ │ │ ├── Materialize.swift │ │ │ ├── Merge.swift │ │ │ ├── Multicast.swift │ │ │ ├── Never.swift │ │ │ ├── ObserveOn.swift │ │ │ ├── Optional.swift │ │ │ ├── Producer.swift │ │ │ ├── Range.swift │ │ │ ├── Reduce.swift │ │ │ ├── Repeat.swift │ │ │ ├── RetryWhen.swift │ │ │ ├── Sample.swift │ │ │ ├── Scan.swift │ │ │ ├── Sequence.swift │ │ │ ├── ShareReplayScope.swift │ │ │ ├── SingleAsync.swift │ │ │ ├── Sink.swift │ │ │ ├── Skip.swift │ │ │ ├── SkipUntil.swift │ │ │ ├── SkipWhile.swift │ │ │ ├── StartWith.swift │ │ │ ├── SubscribeOn.swift │ │ │ ├── Switch.swift │ │ │ ├── SwitchIfEmpty.swift │ │ │ ├── Take.swift │ │ │ ├── TakeLast.swift │ │ │ ├── TakeWithPredicate.swift │ │ │ ├── Throttle.swift │ │ │ ├── Timeout.swift │ │ │ ├── Timer.swift │ │ │ ├── ToArray.swift │ │ │ ├── Using.swift │ │ │ ├── Window.swift │ │ │ ├── WithLatestFrom.swift │ │ │ ├── WithUnretained.swift │ │ │ ├── Zip+Collection.swift │ │ │ ├── Zip+arity.swift │ │ │ └── Zip.swift │ │ │ ├── ObserverType.swift │ │ │ ├── Observers │ │ │ ├── AnonymousObserver.swift │ │ │ ├── ObserverBase.swift │ │ │ └── TailRecursiveSink.swift │ │ │ ├── Reactive.swift │ │ │ ├── Rx.swift │ │ │ ├── RxMutableBox.swift │ │ │ ├── SchedulerType.swift │ │ │ ├── Schedulers │ │ │ ├── ConcurrentDispatchQueueScheduler.swift │ │ │ ├── ConcurrentMainScheduler.swift │ │ │ ├── CurrentThreadScheduler.swift │ │ │ ├── HistoricalScheduler.swift │ │ │ ├── HistoricalSchedulerTimeConverter.swift │ │ │ ├── Internal │ │ │ │ ├── DispatchQueueConfiguration.swift │ │ │ │ ├── InvocableScheduledItem.swift │ │ │ │ ├── InvocableType.swift │ │ │ │ ├── ScheduledItem.swift │ │ │ │ └── ScheduledItemType.swift │ │ │ ├── MainScheduler.swift │ │ │ ├── OperationQueueScheduler.swift │ │ │ ├── RecursiveScheduler.swift │ │ │ ├── SchedulerServices+Emulation.swift │ │ │ ├── SerialDispatchQueueScheduler.swift │ │ │ ├── VirtualTimeConverterType.swift │ │ │ └── VirtualTimeScheduler.swift │ │ │ ├── Subjects │ │ │ ├── AsyncSubject.swift │ │ │ ├── BehaviorSubject.swift │ │ │ ├── PublishSubject.swift │ │ │ ├── ReplaySubject.swift │ │ │ └── SubjectType.swift │ │ │ ├── SwiftSupport │ │ │ └── SwiftSupport.swift │ │ │ └── Traits │ │ │ ├── Infallible │ │ │ ├── Infallible+CombineLatest+Collection.swift │ │ │ ├── Infallible+CombineLatest+arity.swift │ │ │ ├── Infallible+Concurrency.swift │ │ │ ├── Infallible+Create.swift │ │ │ ├── Infallible+Debug.swift │ │ │ ├── Infallible+Operators.swift │ │ │ ├── Infallible+Zip+arity.swift │ │ │ ├── Infallible.swift │ │ │ └── ObservableConvertibleType+Infallible.swift │ │ │ └── PrimitiveSequence │ │ │ ├── Completable+AndThen.swift │ │ │ ├── Completable.swift │ │ │ ├── Maybe.swift │ │ │ ├── ObservableType+PrimitiveSequence.swift │ │ │ ├── PrimitiveSequence+Concurrency.swift │ │ │ ├── PrimitiveSequence+Zip+arity.swift │ │ │ ├── PrimitiveSequence.swift │ │ │ └── Single.swift │ └── Target Support Files │ │ ├── Pods-RxAppState_Example │ │ ├── Info.plist │ │ ├── Pods-RxAppState_Example-Info.plist │ │ ├── Pods-RxAppState_Example-acknowledgements.markdown │ │ ├── Pods-RxAppState_Example-acknowledgements.plist │ │ ├── Pods-RxAppState_Example-dummy.m │ │ ├── Pods-RxAppState_Example-frameworks.sh │ │ ├── Pods-RxAppState_Example-resources.sh │ │ ├── Pods-RxAppState_Example-umbrella.h │ │ ├── Pods-RxAppState_Example.debug.xcconfig │ │ ├── Pods-RxAppState_Example.modulemap │ │ └── Pods-RxAppState_Example.release.xcconfig │ │ ├── Pods-RxAppState_ExampleTests │ │ ├── Info.plist │ │ ├── Pods-RxAppState_ExampleTests-Info.plist │ │ ├── Pods-RxAppState_ExampleTests-acknowledgements.markdown │ │ ├── Pods-RxAppState_ExampleTests-acknowledgements.plist │ │ ├── Pods-RxAppState_ExampleTests-dummy.m │ │ ├── Pods-RxAppState_ExampleTests-frameworks.sh │ │ ├── Pods-RxAppState_ExampleTests-resources.sh │ │ ├── Pods-RxAppState_ExampleTests-umbrella.h │ │ ├── Pods-RxAppState_ExampleTests.debug.xcconfig │ │ ├── Pods-RxAppState_ExampleTests.modulemap │ │ └── Pods-RxAppState_ExampleTests.release.xcconfig │ │ ├── RxAppState │ │ ├── Info.plist │ │ ├── RxAppState-Info.plist │ │ ├── RxAppState-dummy.m │ │ ├── RxAppState-prefix.pch │ │ ├── RxAppState-umbrella.h │ │ ├── RxAppState.debug.xcconfig │ │ ├── RxAppState.modulemap │ │ ├── RxAppState.release.xcconfig │ │ └── RxAppState.xcconfig │ │ ├── RxCocoa │ │ ├── Info.plist │ │ ├── RxCocoa-Info.plist │ │ ├── RxCocoa-dummy.m │ │ ├── RxCocoa-prefix.pch │ │ ├── RxCocoa-umbrella.h │ │ ├── RxCocoa.debug.xcconfig │ │ ├── RxCocoa.modulemap │ │ ├── RxCocoa.release.xcconfig │ │ └── RxCocoa.xcconfig │ │ ├── RxRelay │ │ ├── RxRelay-Info.plist │ │ ├── RxRelay-dummy.m │ │ ├── RxRelay-prefix.pch │ │ ├── RxRelay-umbrella.h │ │ ├── RxRelay.debug.xcconfig │ │ ├── RxRelay.modulemap │ │ ├── RxRelay.release.xcconfig │ │ └── RxRelay.xcconfig │ │ └── RxSwift │ │ ├── Info.plist │ │ ├── RxSwift-Info.plist │ │ ├── RxSwift-dummy.m │ │ ├── RxSwift-prefix.pch │ │ ├── RxSwift-umbrella.h │ │ ├── RxSwift.debug.xcconfig │ │ ├── RxSwift.modulemap │ │ ├── RxSwift.release.xcconfig │ │ └── RxSwift.xcconfig ├── RxAppState.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── RxAppState-Example.xcscheme ├── RxAppState.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── RxAppState │ ├── AppDelegate.swift │ ├── Base.lproj │ │ ├── LaunchScreen.xib │ │ └── Main.storyboard │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── logo_pd@2x.png │ │ │ ├── logo_pd@3x.png │ │ │ └── logo_pd_large.png │ │ ├── Contents.json │ │ └── PDIcon.imageset │ │ │ ├── Contents.json │ │ │ ├── launch@1x.png │ │ │ ├── launch@2x.png │ │ │ └── launch@3x.png │ ├── Info.plist │ ├── SecondaryViewController.swift │ ├── TestingAppDelegate.swift │ ├── UILabel+Rx.swift │ ├── ViewController.swift │ └── main.swift └── RxAppState_ExampleTests │ ├── Info.plist │ ├── RxAppStateTests.swift │ └── RxAppStateVCTests.swift ├── LICENSE ├── Package.swift ├── Pod ├── Assets │ └── .gitkeep └── Classes │ ├── .gitkeep │ ├── UIApplication+Rx.swift │ └── UIViewController+Rx.swift ├── PrivacyInfo.xcprivacy ├── README.md ├── RxAppState.podspec ├── RxAppState.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── xcshareddata │ └── xcschemes │ └── RxAppState.xcscheme ├── RxAppState ├── Info.plist └── RxAppState.h ├── _Pods.xcodeproj └── carthage_build.sh /.gitattributes: -------------------------------------------------------------------------------- 1 | Example/Pods/* linguist-vendored 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata 15 | *.xccheckout 16 | profile 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | 22 | # Bundler 23 | .bundle 24 | 25 | Carthage 26 | # We recommend against adding the Pods directory to your .gitignore. However 27 | # you should judge for yourself, the pros and cons are mentioned at: 28 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 29 | # 30 | # Note: if you ignore the Pods directory, make sure to uncomment 31 | # `pod install` in .travis.yml 32 | # 33 | # Pods/ 34 | Package.resolved 35 | .swiftpm 36 | -------------------------------------------------------------------------------- /.swift-version: -------------------------------------------------------------------------------- 1 | 5.2 2 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # references: 2 | # * http://www.objc.io/issue-6/travis-ci.html 3 | # * https://github.com/supermarin/xcpretty#usage 4 | 5 | language: objective-c 6 | osx_image: xcode13.1 7 | podfile: Example/Podfile 8 | cache: cocoapods 9 | 10 | before_install: travis_wait pod repo update --silent 11 | 12 | script: cd Example ; set -o pipefail && xcodebuild test -workspace 'RxAppState.xcworkspace' -scheme 'RxAppState-Example' -configuration 'Debug' -sdk iphonesimulator -destination platform='iOS Simulator',OS='15.0',name='iPhone SE (2nd generation)' build test | xcpretty -c --test 13 | -------------------------------------------------------------------------------- /Cartfile: -------------------------------------------------------------------------------- 1 | github "ReactiveX/RxSwift" ~> 6.2 2 | -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | source 'https://github.com/CocoaPods/Specs.git' 2 | platform :ios, '13.0' 3 | use_frameworks! 4 | 5 | target 'RxAppState_Example' do 6 | pod 'RxAppState', :path => '../' 7 | 8 | target 'RxAppState_ExampleTests' do 9 | inherit! :search_paths 10 | end 11 | end 12 | 13 | pod 'RxSwift', :inhibit_warnings => true 14 | pod 'RxCocoa', :inhibit_warnings => true 15 | 16 | post_install do |installer| 17 | installer.pods_project.targets.each do |target| 18 | target.build_configurations.each do |config| 19 | config.build_settings['SWIFT_VERSION'] = '5.0' 20 | end 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - RxAppState (1.8.1): 3 | - RxCocoa (~> 6.2) 4 | - RxSwift (~> 6.2) 5 | - RxCocoa (6.6.0): 6 | - RxRelay (= 6.6.0) 7 | - RxSwift (= 6.6.0) 8 | - RxRelay (6.6.0): 9 | - RxSwift (= 6.6.0) 10 | - RxSwift (6.6.0) 11 | 12 | DEPENDENCIES: 13 | - RxAppState (from `../`) 14 | - RxCocoa 15 | - RxSwift 16 | 17 | SPEC REPOS: 18 | https://github.com/CocoaPods/Specs.git: 19 | - RxCocoa 20 | - RxRelay 21 | - RxSwift 22 | 23 | EXTERNAL SOURCES: 24 | RxAppState: 25 | :path: "../" 26 | 27 | SPEC CHECKSUMS: 28 | RxAppState: 6cf8a0ee5824302d8c945d4450ee2d653178c858 29 | RxCocoa: 44a80de90e25b739b5aeaae3c8c371a32e3343cc 30 | RxRelay: 45eaa5db8ee4fb50e5ebd57deec0159e97fa51e6 31 | RxSwift: a4b44f7d24599f674deebd1818eab82e58410632 32 | 33 | PODFILE CHECKSUM: f83df3656d53b341e4095d2af0f05d21c3ecd033 34 | 35 | COCOAPODS: 1.14.3 36 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/RxAppState.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "RxAppState", 3 | "version": "1.8.1", 4 | "swift_versions": [ 5 | "5.0" 6 | ], 7 | "summary": "Handy RxSwift extensions to observe your app's state and view controllers' view-related notifications", 8 | "description": "Transform the state of your App and UIViewController's view-related notifications into RxSwift Observables. Including convenience Observables for common scenarios.", 9 | "homepage": "https://github.com/pixeldock/RxAppState", 10 | "license": "MIT", 11 | "authors": { 12 | "Jörn Schoppe": "joern@pixeldock.com" 13 | }, 14 | "source": { 15 | "git": "https://github.com/pixeldock/RxAppState.git", 16 | "tag": "1.8.1" 17 | }, 18 | "platforms": { 19 | "ios": "13.0", 20 | "tvos": "13.0" 21 | }, 22 | "requires_arc": true, 23 | "source_files": "Pod/Classes/**/*", 24 | "frameworks": "Foundation", 25 | "dependencies": { 26 | "RxSwift": [ 27 | "~> 6.2" 28 | ], 29 | "RxCocoa": [ 30 | "~> 6.2" 31 | ] 32 | }, 33 | "swift_version": "5.0" 34 | } 35 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - RxAppState (1.8.1): 3 | - RxCocoa (~> 6.2) 4 | - RxSwift (~> 6.2) 5 | - RxCocoa (6.6.0): 6 | - RxRelay (= 6.6.0) 7 | - RxSwift (= 6.6.0) 8 | - RxRelay (6.6.0): 9 | - RxSwift (= 6.6.0) 10 | - RxSwift (6.6.0) 11 | 12 | DEPENDENCIES: 13 | - RxAppState (from `../`) 14 | - RxCocoa 15 | - RxSwift 16 | 17 | SPEC REPOS: 18 | https://github.com/CocoaPods/Specs.git: 19 | - RxCocoa 20 | - RxRelay 21 | - RxSwift 22 | 23 | EXTERNAL SOURCES: 24 | RxAppState: 25 | :path: "../" 26 | 27 | SPEC CHECKSUMS: 28 | RxAppState: 6cf8a0ee5824302d8c945d4450ee2d653178c858 29 | RxCocoa: 44a80de90e25b739b5aeaae3c8c371a32e3343cc 30 | RxRelay: 45eaa5db8ee4fb50e5ebd57deec0159e97fa51e6 31 | RxSwift: a4b44f7d24599f674deebd1818eab82e58410632 32 | 33 | PODFILE CHECKSUM: f83df3656d53b341e4095d2af0f05d21c3ecd033 34 | 35 | COCOAPODS: 1.14.3 36 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/LICENSE.md: -------------------------------------------------------------------------------- 1 | **The MIT License** 2 | **Copyright © 2015 Krunoslav Zaher, Shai Mishali** 3 | **All rights reserved.** 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/Platform/DataStructures/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InfiniteSequence.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 6/13/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Sequence that repeats `repeatedValue` infinite number of times. 10 | struct InfiniteSequence : Sequence { 11 | typealias Iterator = AnyIterator 12 | 13 | private let repeatedValue: Element 14 | 15 | init(repeatedValue: Element) { 16 | self.repeatedValue = repeatedValue 17 | } 18 | 19 | func makeIterator() -> Iterator { 20 | let repeatedValue = self.repeatedValue 21 | return AnyIterator { repeatedValue } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueue+Extensions.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 10/22/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Dispatch 10 | 11 | extension DispatchQueue { 12 | private static var token: DispatchSpecificKey<()> = { 13 | let key = DispatchSpecificKey<()>() 14 | DispatchQueue.main.setSpecific(key: key, value: ()) 15 | return key 16 | }() 17 | 18 | static var isMain: Bool { 19 | DispatchQueue.getSpecific(key: token) != nil 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/Platform/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Platform.Darwin.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) 10 | 11 | import Darwin 12 | import Foundation 13 | 14 | extension Thread { 15 | static func setThreadLocalStorageValue(_ value: T?, forKey key: NSCopying) { 16 | let currentThread = Thread.current 17 | let threadDictionary = currentThread.threadDictionary 18 | 19 | if let newValue = value { 20 | threadDictionary[key] = newValue 21 | } 22 | else { 23 | threadDictionary[key] = nil 24 | } 25 | } 26 | 27 | static func getThreadLocalStorageValueForKey(_ key: NSCopying) -> T? { 28 | let currentThread = Thread.current 29 | let threadDictionary = currentThread.threadDictionary 30 | 31 | return threadDictionary[key] as? T 32 | } 33 | } 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/Platform/Platform.Linux.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Platform.Linux.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(Linux) 10 | 11 | import Foundation 12 | 13 | extension Thread { 14 | 15 | static func setThreadLocalStorageValue(_ value: T?, forKey key: String) { 16 | if let newValue = value { 17 | Thread.current.threadDictionary[key] = newValue 18 | } 19 | else { 20 | Thread.current.threadDictionary[key] = nil 21 | } 22 | } 23 | 24 | static func getThreadLocalStorageValueForKey(_ key: String) -> T? { 25 | let currentThread = Thread.current 26 | let threadDictionary = currentThread.threadDictionary 27 | 28 | return threadDictionary[key] as? T 29 | } 30 | } 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/Platform/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RecursiveLock.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/18/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | #if TRACE_RESOURCES 12 | class RecursiveLock: NSRecursiveLock { 13 | override init() { 14 | _ = Resources.incrementTotal() 15 | super.init() 16 | } 17 | 18 | override func lock() { 19 | super.lock() 20 | _ = Resources.incrementTotal() 21 | } 22 | 23 | override func unlock() { 24 | super.unlock() 25 | _ = Resources.decrementTotal() 26 | } 27 | 28 | deinit { 29 | _ = Resources.decrementTotal() 30 | } 31 | } 32 | #else 33 | typealias RecursiveLock = NSRecursiveLock 34 | #endif 35 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/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 Foundation 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.ensureRunningOnMainThread() 28 | #endif 29 | } 30 | 31 | func dispose() { 32 | #if DEBUG 33 | MainScheduler.ensureRunningOnMainThread() 34 | #endif 35 | self.retainSelf = nil 36 | } 37 | 38 | #if TRACE_RESOURCES 39 | deinit { 40 | _ = Resources.decrementTotal() 41 | } 42 | #endif 43 | } 44 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Common/SectionedViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SectionedViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 1/10/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Data source with access to underlying sectioned model. 12 | public protocol SectionedViewDataSourceType { 13 | /// Returns model at index path. 14 | /// 15 | /// In case data source doesn't contain any sections when this method is being called, `RxCocoaError.ItemsNotYetBound(object: self)` is thrown. 16 | 17 | /// - parameter indexPath: Model index path 18 | /// - returns: Model at index path. 19 | func model(at indexPath: IndexPath) throws -> Any 20 | } 21 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Foundation/KVORepresentable+CoreGraphics.swift: -------------------------------------------------------------------------------- 1 | // 2 | // KVORepresentable+CoreGraphics.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 11/14/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if !os(Linux) 10 | 11 | import RxSwift 12 | import CoreGraphics 13 | 14 | import Foundation 15 | 16 | #if arch(x86_64) || arch(arm64) 17 | let CGRectType = "{CGRect={CGPoint=dd}{CGSize=dd}}" 18 | let CGSizeType = "{CGSize=dd}" 19 | let CGPointType = "{CGPoint=dd}" 20 | #elseif arch(i386) || arch(arm) || os(watchOS) 21 | let CGRectType = "{CGRect={CGPoint=ff}{CGSize=ff}}" 22 | let CGSizeType = "{CGSize=ff}" 23 | let CGPointType = "{CGPoint=ff}" 24 | #endif 25 | 26 | extension CGRect : KVORepresentable { 27 | public typealias KVOType = NSValue 28 | 29 | /// Constructs self from `NSValue`. 30 | public init?(KVOValue: KVOType) { 31 | if strcmp(KVOValue.objCType, CGRectType) != 0 { 32 | return nil 33 | } 34 | var typedValue = CGRect(x: 0, y: 0, width: 0, height: 0) 35 | KVOValue.getValue(&typedValue) 36 | self = typedValue 37 | } 38 | } 39 | 40 | extension CGPoint : KVORepresentable { 41 | public typealias KVOType = NSValue 42 | 43 | /// Constructs self from `NSValue`. 44 | public init?(KVOValue: KVOType) { 45 | if strcmp(KVOValue.objCType, CGPointType) != 0 { 46 | return nil 47 | } 48 | var typedValue = CGPoint(x: 0, y: 0) 49 | KVOValue.getValue(&typedValue) 50 | self = typedValue 51 | } 52 | } 53 | 54 | extension CGSize : KVORepresentable { 55 | public typealias KVOType = NSValue 56 | 57 | /// Constructs self from `NSValue`. 58 | public init?(KVOValue: KVOType) { 59 | if strcmp(KVOValue.objCType, CGSizeType) != 0 { 60 | return nil 61 | } 62 | var typedValue = CGSize(width: 0, height: 0) 63 | KVOValue.getValue(&typedValue) 64 | self = typedValue 65 | } 66 | } 67 | 68 | #endif 69 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/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 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Foundation/NSObject+Rx+RawRepresentable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+Rx+RawRepresentable.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 11/9/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if !os(Linux) 10 | 11 | import RxSwift 12 | 13 | import Foundation 14 | 15 | extension Reactive where Base: NSObject { 16 | /** 17 | Specialization of generic `observe` method. 18 | 19 | This specialization first observes `KVORepresentable` value and then converts it to `RawRepresentable` value. 20 | 21 | It is useful for observing bridged ObjC enum values. 22 | 23 | For more information take a look at `observe` method. 24 | */ 25 | public func observe(_ type: Element.Type, _ keyPath: String, options: KeyValueObservingOptions = [.new, .initial], retainSelf: Bool = true) -> Observable where Element.RawValue: KVORepresentable { 26 | return self.observe(Element.RawValue.KVOType.self, keyPath, options: options, retainSelf: retainSelf) 27 | .map(Element.init) 28 | } 29 | } 30 | 31 | #if !DISABLE_SWIZZLING 32 | 33 | // observeWeakly + RawRepresentable 34 | extension Reactive where Base: NSObject { 35 | 36 | /** 37 | Specialization of generic `observeWeakly` method. 38 | 39 | This specialization first observes `KVORepresentable` value and then converts it to `RawRepresentable` value. 40 | 41 | It is useful for observing bridged ObjC enum values. 42 | 43 | For more information take a look at `observeWeakly` method. 44 | */ 45 | public func observeWeakly(_ type: Element.Type, _ keyPath: String, options: KeyValueObservingOptions = [.new, .initial]) -> Observable where Element.RawValue: KVORepresentable { 46 | return self.observeWeakly(Element.RawValue.KVOType.self, keyPath, options: options) 47 | .map(Element.init) 48 | } 49 | } 50 | #endif 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Foundation/NotificationCenter+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NotificationCenter+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 5/2/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | 12 | extension Reactive where Base: NotificationCenter { 13 | /** 14 | Transforms notifications posted to notification center to observable sequence of notifications. 15 | 16 | - parameter name: Optional name used to filter notifications. 17 | - parameter object: Optional object used to filter notifications. 18 | - returns: Observable sequence of posted notifications. 19 | */ 20 | public func notification(_ name: Notification.Name?, object: AnyObject? = nil) -> Observable { 21 | return Observable.create { [weak object] observer in 22 | let nsObserver = self.base.addObserver(forName: name, object: object, queue: nil) { notification in 23 | observer.on(.next(notification)) 24 | } 25 | 26 | return Disposables.create { 27 | self.base.removeObserver(nsObserver) 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/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 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Runtime/_RXKVOObserver.m: -------------------------------------------------------------------------------- 1 | // 2 | // _RXKVOObserver.m 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/11/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import "include/_RXKVOObserver.h" 10 | 11 | @interface _RXKVOObserver () 12 | 13 | @property (nonatomic, unsafe_unretained) id target; 14 | @property (nonatomic, strong ) id retainedTarget; 15 | @property (nonatomic, copy ) NSString *keyPath; 16 | @property (nonatomic, copy ) void (^callback)(id); 17 | 18 | @end 19 | 20 | @implementation _RXKVOObserver 21 | 22 | -(instancetype)initWithTarget:(id)target 23 | retainTarget:(BOOL)retainTarget 24 | keyPath:(NSString*)keyPath 25 | options:(NSKeyValueObservingOptions)options 26 | callback:(void (^)(id))callback { 27 | self = [super init]; 28 | if (!self) return nil; 29 | 30 | self.target = target; 31 | if (retainTarget) { 32 | self.retainedTarget = target; 33 | } 34 | self.keyPath = keyPath; 35 | self.callback = callback; 36 | 37 | [self.target addObserver:self forKeyPath:self.keyPath options:options context:nil]; 38 | 39 | return self; 40 | } 41 | 42 | -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 43 | @synchronized(self) { 44 | self.callback(change[NSKeyValueChangeNewKey]); 45 | } 46 | } 47 | 48 | -(void)dispose { 49 | [self.target removeObserver:self forKeyPath:self.keyPath context:nil]; 50 | self.target = nil; 51 | self.retainedTarget = nil; 52 | } 53 | 54 | @end 55 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/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 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/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 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/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 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/RxCocoa.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoa.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | #import 13 | #import 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 20 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Traits/Driver/BehaviorRelay+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BehaviorRelay+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 10/7/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | import RxRelay 11 | 12 | extension BehaviorRelay { 13 | /// Converts `BehaviorRelay` to `Driver`. 14 | /// 15 | /// - returns: Observable sequence. 16 | public func asDriver() -> Driver { 17 | let source = self.asObservable() 18 | .observe(on:DriverSharingStrategy.scheduler) 19 | return SharedSequence(source) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Traits/Driver/ControlEvent+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ControlEvent+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 9/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension ControlEvent { 12 | /// Converts `ControlEvent` to `Driver` trait. 13 | /// 14 | /// `ControlEvent` already can't fail, so no special case needs to be handled. 15 | public func asDriver() -> Driver { 16 | return self.asDriver { _ -> Driver in 17 | #if DEBUG 18 | rxFatalError("Somehow driver received error from a source that shouldn't fail.") 19 | #else 20 | return Driver.empty() 21 | #endif 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Traits/Driver/ControlProperty+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ControlProperty+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 9/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension ControlProperty { 12 | /// Converts `ControlProperty` to `Driver` trait. 13 | /// 14 | /// `ControlProperty` already can't fail, so no special case needs to be handled. 15 | public func asDriver() -> Driver { 16 | return self.asDriver { _ -> Driver in 17 | #if DEBUG 18 | rxFatalError("Somehow driver received error from a source that shouldn't fail.") 19 | #else 20 | return Driver.empty() 21 | #endif 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Traits/Driver/Infallible+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Infallible+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Anton Siliuk on 14/02/2022. 6 | // Copyright © 2022 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension InfallibleType { 12 | /// Converts `InfallibleType` to `Driver`. 13 | /// 14 | /// - returns: Observable sequence. 15 | public func asDriver() -> Driver { 16 | SharedSequence(asObservable().observe(on: DriverSharingStrategy.scheduler)) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Traits/Driver/ObservableConvertibleType+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObservableConvertibleType+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 ObservableConvertibleType { 12 | /** 13 | Converts observable sequence to `Driver` trait. 14 | 15 | - parameter onErrorJustReturn: Element to return in case of error and after that complete the sequence. 16 | - returns: Driver trait. 17 | */ 18 | public func asDriver(onErrorJustReturn: Element) -> Driver { 19 | let source = self 20 | .asObservable() 21 | .observe(on:DriverSharingStrategy.scheduler) 22 | .catchAndReturn(onErrorJustReturn) 23 | return Driver(source) 24 | } 25 | 26 | /** 27 | Converts observable sequence to `Driver` trait. 28 | 29 | - parameter onErrorDriveWith: Driver that continues to drive the sequence in case of error. 30 | - returns: Driver trait. 31 | */ 32 | public func asDriver(onErrorDriveWith: Driver) -> Driver { 33 | let source = self 34 | .asObservable() 35 | .observe(on:DriverSharingStrategy.scheduler) 36 | .catch { _ in 37 | onErrorDriveWith.asObservable() 38 | } 39 | return Driver(source) 40 | } 41 | 42 | /** 43 | Converts observable sequence to `Driver` trait. 44 | 45 | - parameter onErrorRecover: Calculates driver that continues to drive the sequence in case of error. 46 | - returns: Driver trait. 47 | */ 48 | public func asDriver(onErrorRecover: @escaping (_ error: Swift.Error) -> Driver) -> Driver { 49 | let source = self 50 | .asObservable() 51 | .observe(on:DriverSharingStrategy.scheduler) 52 | .catch { error in 53 | onErrorRecover(error).asObservable() 54 | } 55 | return Driver(source) 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Traits/SharedSequence/SchedulerType+SharedSequence.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SchedulerType+SharedSequence.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 8/27/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | public enum SharingScheduler { 12 | /// Default scheduler used in SharedSequence based traits. 13 | public private(set) static var make: () -> SchedulerType = { MainScheduler() } 14 | 15 | /** 16 | This method can be used in unit tests to ensure that built in shared sequences are using mock schedulers instead 17 | of main schedulers. 18 | 19 | **This shouldn't be used in normal release builds.** 20 | */ 21 | static public func mock(scheduler: SchedulerType, action: () throws -> Void) rethrows { 22 | return try mock(makeScheduler: { scheduler }, action: action) 23 | } 24 | 25 | /** 26 | This method can be used in unit tests to ensure that built in shared sequences are using mock schedulers instead 27 | of main schedulers. 28 | 29 | **This shouldn't be used in normal release builds.** 30 | */ 31 | static public func mock(makeScheduler: @escaping () -> SchedulerType, action: () throws -> Void) rethrows { 32 | let originalMake = make 33 | make = makeScheduler 34 | defer { 35 | make = originalMake 36 | } 37 | 38 | try action() 39 | 40 | // If you remove this line , compiler buggy optimizations will change behavior of this code 41 | _forceCompilerToStopDoingInsaneOptimizationsThatBreakCode(makeScheduler) 42 | // Scary, I know 43 | } 44 | } 45 | 46 | #if os(Linux) 47 | import Glibc 48 | #else 49 | import Foundation 50 | #endif 51 | 52 | func _forceCompilerToStopDoingInsaneOptimizationsThatBreakCode(_ scheduler: () -> SchedulerType) { 53 | let a: Int32 = 1 54 | #if os(Linux) 55 | let b = 314 + Int32(Glibc.random() & 1) 56 | #else 57 | let b = 314 + Int32(arc4random() & 1) 58 | #endif 59 | if a == b { 60 | print(scheduler()) 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Traits/SharedSequence/SharedSequence+Concurrency.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SharedSequence+Concurrency.swift 3 | // RxCocoa 4 | // 5 | // Created by Shai Mishali on 22/09/2021. 6 | // Copyright © 2021 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if swift(>=5.6) && canImport(_Concurrency) && !os(Linux) 10 | import Foundation 11 | 12 | // MARK: - Shared Sequence 13 | @available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *) 14 | public extension SharedSequence { 15 | /// Allows iterating over the values of this Shared Sequence 16 | /// asynchronously via Swift's concurrency features (`async/await`) 17 | /// 18 | /// A sample usage would look like so: 19 | /// 20 | /// ```swift 21 | /// for await value in driver.values { 22 | /// // Handle emitted values 23 | /// } 24 | /// ``` 25 | @MainActor var values: AsyncStream { 26 | AsyncStream { continuation in 27 | // It is safe to ignore the `onError` closure here since 28 | // Shared Sequences (`Driver` and `Signal`) cannot fail 29 | let disposable = self.asObservable() 30 | .subscribe( 31 | onNext: { value in continuation.yield(value) }, 32 | onCompleted: { continuation.finish() } 33 | ) 34 | continuation.onTermination = { @Sendable termination in 35 | if termination == .cancelled { 36 | disposable.dispose() 37 | } 38 | } 39 | } 40 | } 41 | } 42 | #endif 43 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Traits/Signal/ControlEvent+Signal.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ControlEvent+Signal.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 11/1/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension ControlEvent { 12 | /// Converts `ControlEvent` to `Signal` trait. 13 | /// 14 | /// `ControlEvent` already can't fail, so no special case needs to be handled. 15 | public func asSignal() -> Signal { 16 | return self.asSignal { _ -> Signal in 17 | #if DEBUG 18 | rxFatalError("Somehow signal received error from a source that shouldn't fail.") 19 | #else 20 | return Signal.empty() 21 | #endif 22 | } 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Traits/Signal/ObservableConvertibleType+Signal.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObservableConvertibleType+Signal.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 ObservableConvertibleType { 12 | /** 13 | Converts observable sequence to `Signal` trait. 14 | 15 | - parameter onErrorJustReturn: Element to return in case of error and after that complete the sequence. 16 | - returns: Signal trait. 17 | */ 18 | public func asSignal(onErrorJustReturn: Element) -> Signal { 19 | let source = self 20 | .asObservable() 21 | .observe(on: SignalSharingStrategy.scheduler) 22 | .catchAndReturn(onErrorJustReturn) 23 | return Signal(source) 24 | } 25 | 26 | /** 27 | Converts observable sequence to `Signal` trait. 28 | 29 | - parameter onErrorSignalWith: Signal that continues to emit the sequence in case of error. 30 | - returns: Signal trait. 31 | */ 32 | public func asSignal(onErrorSignalWith: Signal) -> Signal { 33 | let source = self 34 | .asObservable() 35 | .observe(on: SignalSharingStrategy.scheduler) 36 | .catch { _ in 37 | onErrorSignalWith.asObservable() 38 | } 39 | return Signal(source) 40 | } 41 | 42 | /** 43 | Converts observable sequence to `Signal` trait. 44 | 45 | - parameter onErrorRecover: Calculates signal that continues to emit the sequence in case of error. 46 | - returns: Signal trait. 47 | */ 48 | public func asSignal(onErrorRecover: @escaping (_ error: Swift.Error) -> Signal) -> Signal { 49 | let source = self 50 | .asObservable() 51 | .observe(on: SignalSharingStrategy.scheduler) 52 | .catch { error in 53 | onErrorRecover(error).asObservable() 54 | } 55 | return Signal(source) 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Traits/Signal/PublishRelay+Signal.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PublishRelay+Signal.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 12/28/15. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | import RxRelay 11 | 12 | extension PublishRelay { 13 | /// Converts `PublishRelay` to `Signal`. 14 | /// 15 | /// - returns: Observable sequence. 16 | public func asSignal() -> Signal { 17 | let source = self.asObservable() 18 | .observe(on:SignalSharingStrategy.scheduler) 19 | return SharedSequence(source) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Traits/Signal/Signal.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Signal.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 9/26/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | /** 12 | Trait that represents observable sequence with following properties: 13 | 14 | - it never fails 15 | - it delivers events on `MainScheduler.instance` 16 | - `share(scope: .whileConnected)` sharing strategy 17 | 18 | Additional explanation: 19 | - all observers share sequence computation resources 20 | - there is no replaying of sequence elements on new observer subscription 21 | - computation of elements is reference counted with respect to the number of observers 22 | - if there are no subscribers, it will release sequence computation resources 23 | 24 | In case trait that models state propagation is required, please check `Driver`. 25 | 26 | `Signal` can be considered a builder pattern for observable sequences that model imperative events part of the application. 27 | 28 | To find out more about units and how to use them, please visit `Documentation/Traits.md`. 29 | */ 30 | public typealias Signal = SharedSequence 31 | 32 | public struct SignalSharingStrategy: SharingStrategyProtocol { 33 | public static var scheduler: SchedulerType { SharingScheduler.make() } 34 | 35 | public static func share(_ source: Observable) -> Observable { 36 | source.share(scope: .whileConnected) 37 | } 38 | } 39 | 40 | extension SharedSequenceConvertibleType where SharingStrategy == SignalSharingStrategy { 41 | /// Adds `asPublisher` to `SharingSequence` with `PublishSharingStrategy`. 42 | public func asSignal() -> Signal { 43 | self.asSharedSequence() 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/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 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/NSTextStorage+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSTextStorage+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Segii Shulga on 12/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | import RxSwift 11 | import UIKit 12 | 13 | extension Reactive where Base: NSTextStorage { 14 | 15 | /// Reactive wrapper for `delegate`. 16 | /// 17 | /// For more information take a look at `DelegateProxyType` protocol documentation. 18 | public var delegate: DelegateProxy { 19 | return RxTextStorageDelegateProxy.proxy(for: base) 20 | } 21 | 22 | /// Reactive wrapper for `delegate` message. 23 | public var didProcessEditingRangeChangeInLength: Observable<(editedMask: NSTextStorage.EditActions, editedRange: NSRange, delta: Int)> { 24 | return delegate 25 | .methodInvoked(#selector(NSTextStorageDelegate.textStorage(_:didProcessEditing:range:changeInLength:))) 26 | .map { a in 27 | let editedMask = NSTextStorage.EditActions(rawValue: try castOrThrow(UInt.self, a[1]) ) 28 | let editedRange = try castOrThrow(NSValue.self, a[2]).rangeValue 29 | let delta = try castOrThrow(Int.self, a[3]) 30 | 31 | return (editedMask, editedRange, delta) 32 | } 33 | } 34 | } 35 | #endif 36 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/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) 25 | } 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/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 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/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) 25 | } 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxCollectionViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxCollectionViewDelegateProxy.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 | /// For more information take a look at `DelegateProxyType`. 15 | open class RxCollectionViewDelegateProxy 16 | : RxScrollViewDelegateProxy { 17 | 18 | /// Typed parent object. 19 | public weak private(set) var collectionView: UICollectionView? 20 | 21 | /// Initializes `RxCollectionViewDelegateProxy` 22 | /// 23 | /// - parameter collectionView: Parent object for delegate proxy. 24 | public init(collectionView: UICollectionView) { 25 | self.collectionView = collectionView 26 | super.init(scrollView: collectionView) 27 | } 28 | } 29 | 30 | extension RxCollectionViewDelegateProxy: UICollectionViewDelegateFlowLayout {} 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxDelegateProxyCrashFix.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxDelegateProxyCrashFix.swift 3 | // RxCocoa 4 | // 5 | // Created by SlashDevSlashGnoll (SlashDevSlashGnoll@users.noreply.github.com) on 9/9/22. 6 | // Copyright © 2022 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | import Foundation 11 | 12 | // This extension exists solely to get around a crash found on iOS 15.4+ where a `text` 13 | // method invocation is being sent to the RxCollectionViewDelegateProxy which doesn't implement it. 14 | // This is tracked at this bug: https://github.com/ReactiveX/RxSwift/issues/2428 This can be 15 | // removed if/when the actual source of the problem is found 16 | @objc extension RxCollectionViewDelegateProxy { 17 | var text: String { 18 | return String() 19 | } 20 | } 21 | 22 | // This extension exists solely to get around a crash found on iOS 15.4+ where a `text` 23 | // method invocation is being sent to the RxTableViewDelegateProxy which doesn't implement it. 24 | // This is tracked at this bug: https://github.com/ReactiveX/RxSwift/issues/2428 This can be 25 | //removed if/when the actual source of the problem is found 26 | @objc extension RxTableViewDelegateProxy { 27 | var text: String { 28 | return String() 29 | } 30 | } 31 | #endif 32 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxNavigationControllerDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxNavigationControllerDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Diogo on 13/04/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension UINavigationController: HasDelegate { 15 | public typealias Delegate = UINavigationControllerDelegate 16 | } 17 | 18 | /// For more information take a look at `DelegateProxyType`. 19 | open class RxNavigationControllerDelegateProxy 20 | : DelegateProxy 21 | , DelegateProxyType { 22 | 23 | /// Typed parent object. 24 | public weak private(set) var navigationController: UINavigationController? 25 | 26 | /// - parameter navigationController: Parent object for delegate proxy. 27 | public init(navigationController: ParentObject) { 28 | self.navigationController = navigationController 29 | super.init(parentObject: navigationController, delegateProxy: RxNavigationControllerDelegateProxy.self) 30 | } 31 | 32 | // Register known implementations 33 | public static func registerKnownImplementations() { 34 | self.register { RxNavigationControllerDelegateProxy(navigationController: $0) } 35 | } 36 | } 37 | 38 | extension RxNavigationControllerDelegateProxy: UINavigationControllerDelegate {} 39 | #endif 40 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxPickerViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxPickerViewDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Segii Shulga on 5/12/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension UIPickerView: HasDelegate { 15 | public typealias Delegate = UIPickerViewDelegate 16 | } 17 | 18 | open class RxPickerViewDelegateProxy 19 | : DelegateProxy 20 | , DelegateProxyType { 21 | 22 | /// Typed parent object. 23 | public weak private(set) var pickerView: UIPickerView? 24 | 25 | /// - parameter pickerView: Parent object for delegate proxy. 26 | public init(pickerView: ParentObject) { 27 | self.pickerView = pickerView 28 | super.init(parentObject: pickerView, delegateProxy: RxPickerViewDelegateProxy.self) 29 | } 30 | 31 | // Register known implementations 32 | public static func registerKnownImplementations() { 33 | self.register { RxPickerViewDelegateProxy(pickerView: $0) } 34 | } 35 | } 36 | 37 | extension RxPickerViewDelegateProxy: UIPickerViewDelegate {} 38 | #endif 39 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxSearchBarDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxSearchBarDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/4/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 UISearchBar: HasDelegate { 15 | public typealias Delegate = UISearchBarDelegate 16 | } 17 | 18 | /// For more information take a look at `DelegateProxyType`. 19 | open class RxSearchBarDelegateProxy 20 | : DelegateProxy 21 | , DelegateProxyType { 22 | 23 | /// Typed parent object. 24 | public weak private(set) var searchBar: UISearchBar? 25 | 26 | /// - parameter searchBar: Parent object for delegate proxy. 27 | public init(searchBar: ParentObject) { 28 | self.searchBar = searchBar 29 | super.init(parentObject: searchBar, delegateProxy: RxSearchBarDelegateProxy.self) 30 | } 31 | 32 | // Register known implementations 33 | public static func registerKnownImplementations() { 34 | self.register { RxSearchBarDelegateProxy(searchBar: $0) } 35 | } 36 | } 37 | 38 | extension RxSearchBarDelegateProxy: UISearchBarDelegate {} 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxSearchControllerDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxSearchControllerDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Segii Shulga on 3/17/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension UISearchController: HasDelegate { 15 | public typealias Delegate = UISearchControllerDelegate 16 | } 17 | 18 | /// For more information take a look at `DelegateProxyType`. 19 | open class RxSearchControllerDelegateProxy 20 | : DelegateProxy 21 | , DelegateProxyType { 22 | 23 | /// Typed parent object. 24 | public weak private(set) var searchController: UISearchController? 25 | 26 | /// - parameter searchController: Parent object for delegate proxy. 27 | public init(searchController: UISearchController) { 28 | self.searchController = searchController 29 | super.init(parentObject: searchController, delegateProxy: RxSearchControllerDelegateProxy.self) 30 | } 31 | 32 | // Register known implementations 33 | public static func registerKnownImplementations() { 34 | self.register { RxSearchControllerDelegateProxy(searchController: $0) } 35 | } 36 | } 37 | 38 | extension RxSearchControllerDelegateProxy: UISearchControllerDelegate {} 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTabBarControllerDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTabBarControllerDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Yusuke Kita on 2016/12/07. 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 UITabBarController: HasDelegate { 15 | public typealias Delegate = UITabBarControllerDelegate 16 | } 17 | 18 | /// For more information take a look at `DelegateProxyType`. 19 | open class RxTabBarControllerDelegateProxy 20 | : DelegateProxy 21 | , DelegateProxyType { 22 | 23 | /// Typed parent object. 24 | public weak private(set) var tabBar: UITabBarController? 25 | 26 | /// - parameter tabBar: Parent object for delegate proxy. 27 | public init(tabBar: ParentObject) { 28 | self.tabBar = tabBar 29 | super.init(parentObject: tabBar, delegateProxy: RxTabBarControllerDelegateProxy.self) 30 | } 31 | 32 | // Register known implementations 33 | public static func registerKnownImplementations() { 34 | self.register { RxTabBarControllerDelegateProxy(tabBar: $0) } 35 | } 36 | } 37 | 38 | extension RxTabBarControllerDelegateProxy: UITabBarControllerDelegate {} 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTabBarDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTabBarDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Jesse Farless on 5/14/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 UITabBar: HasDelegate { 15 | public typealias Delegate = UITabBarDelegate 16 | } 17 | 18 | /// For more information take a look at `DelegateProxyType`. 19 | open class RxTabBarDelegateProxy 20 | : DelegateProxy 21 | , DelegateProxyType { 22 | 23 | /// Typed parent object. 24 | public weak private(set) var tabBar: UITabBar? 25 | 26 | /// - parameter tabBar: Parent object for delegate proxy. 27 | public init(tabBar: ParentObject) { 28 | self.tabBar = tabBar 29 | super.init(parentObject: tabBar, delegateProxy: RxTabBarDelegateProxy.self) 30 | } 31 | 32 | // Register known implementations 33 | public static func registerKnownImplementations() { 34 | self.register { RxTabBarDelegateProxy(tabBar: $0) } 35 | } 36 | 37 | /// For more information take a look at `DelegateProxyType`. 38 | open class func currentDelegate(for object: ParentObject) -> UITabBarDelegate? { 39 | object.delegate 40 | } 41 | 42 | /// For more information take a look at `DelegateProxyType`. 43 | open class func setCurrentDelegate(_ delegate: UITabBarDelegate?, to object: ParentObject) { 44 | object.delegate = delegate 45 | } 46 | } 47 | 48 | extension RxTabBarDelegateProxy: UITabBarDelegate {} 49 | 50 | #endif 51 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/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 | 18 | /// Typed parent object. 19 | public weak private(set) var tableView: UITableView? 20 | 21 | /// - parameter tableView: Parent object for delegate proxy. 22 | public init(tableView: UITableView) { 23 | self.tableView = tableView 24 | super.init(scrollView: tableView) 25 | } 26 | 27 | } 28 | 29 | extension RxTableViewDelegateProxy: UITableViewDelegate {} 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTextStorageDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTextStorageDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Segii Shulga on 12/30/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 NSTextStorage: HasDelegate { 15 | public typealias Delegate = NSTextStorageDelegate 16 | } 17 | 18 | open class RxTextStorageDelegateProxy 19 | : DelegateProxy 20 | , DelegateProxyType { 21 | 22 | /// Typed parent object. 23 | public weak private(set) var textStorage: NSTextStorage? 24 | 25 | /// - parameter textStorage: Parent object for delegate proxy. 26 | public init(textStorage: NSTextStorage) { 27 | self.textStorage = textStorage 28 | super.init(parentObject: textStorage, delegateProxy: RxTextStorageDelegateProxy.self) 29 | } 30 | 31 | // Register known implementations 32 | public static func registerKnownImplementations() { 33 | self.register { RxTextStorageDelegateProxy(textStorage: $0) } 34 | } 35 | } 36 | 37 | extension RxTextStorageDelegateProxy: NSTextStorageDelegate {} 38 | #endif 39 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTextViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTextViewDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Yuta ToKoRo on 7/19/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 RxTextViewDelegateProxy 16 | : RxScrollViewDelegateProxy { 17 | 18 | /// Typed parent object. 19 | public weak private(set) var textView: UITextView? 20 | 21 | /// - parameter textview: Parent object for delegate proxy. 22 | public init(textView: UITextView) { 23 | self.textView = textView 24 | super.init(scrollView: textView) 25 | } 26 | } 27 | 28 | extension RxTextViewDelegateProxy: UITextViewDelegate { 29 | /// For more information take a look at `DelegateProxyType`. 30 | @objc open func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { 31 | /** 32 | We've had some issues with observing text changes. This is here just in case we need the same hack in future and that 33 | we wouldn't need to change the public interface. 34 | */ 35 | let forwardToDelegate = self.forwardToDelegate() as? UITextViewDelegate 36 | return forwardToDelegate?.textView?(textView, 37 | shouldChangeTextIn: range, 38 | replacementText: text) ?? true 39 | } 40 | } 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxWKNavigationDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxWKNavigationDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Giuseppe Lanza on 14/02/2020. 6 | // Copyright © 2020 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(macOS) 10 | 11 | import RxSwift 12 | import WebKit 13 | 14 | @available(iOS 8.0, macOS 10.10, macOSApplicationExtension 10.10, *) 15 | open class RxWKNavigationDelegateProxy 16 | : DelegateProxy 17 | , DelegateProxyType { 18 | 19 | /// Typed parent object. 20 | public weak private(set) var webView: WKWebView? 21 | 22 | /// - parameter webView: Parent object for delegate proxy. 23 | public init(webView: ParentObject) { 24 | self.webView = webView 25 | super.init(parentObject: webView, delegateProxy: RxWKNavigationDelegateProxy.self) 26 | } 27 | 28 | // Register known implementations 29 | public static func registerKnownImplementations() { 30 | self.register { RxWKNavigationDelegateProxy(webView: $0) } 31 | } 32 | 33 | public static func currentDelegate(for object: WKWebView) -> WKNavigationDelegate? { 34 | object.navigationDelegate 35 | } 36 | 37 | public static func setCurrentDelegate(_ delegate: WKNavigationDelegate?, to object: WKWebView) { 38 | object.navigationDelegate = delegate 39 | } 40 | } 41 | 42 | @available(iOS 8.0, macOS 10.10, macOSApplicationExtension 10.10, *) 43 | extension RxWKNavigationDelegateProxy: WKNavigationDelegate {} 44 | 45 | #endif 46 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/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 | /// Bindable sink for `startAnimating()`, `stopAnimating()` methods. 16 | public var isAnimating: Binder { 17 | Binder(self.base) { activityIndicator, active in 18 | if active { 19 | activityIndicator.startAnimating() 20 | } else { 21 | activityIndicator.stopAnimating() 22 | } 23 | } 24 | } 25 | } 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/UIBarButtonItem+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIBarButtonItem+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Daniel Tartaglia on 5/31/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 | private var rx_tap_key: UInt8 = 0 15 | 16 | extension Reactive where Base: UIBarButtonItem { 17 | /// Reactive wrapper for target action pattern on `self`. 18 | public var tap: ControlEvent<()> { 19 | let source = lazyInstanceObservable(&rx_tap_key) { () -> Observable<()> in 20 | Observable.create { [weak control = self.base] observer in 21 | guard let control = control else { 22 | observer.on(.completed) 23 | return Disposables.create() 24 | } 25 | let target = BarButtonItemTarget(barButtonItem: control) { 26 | observer.on(.next(())) 27 | } 28 | return target 29 | } 30 | .take(until: self.deallocated) 31 | .share() 32 | } 33 | 34 | return ControlEvent(events: source) 35 | } 36 | } 37 | 38 | 39 | @objc 40 | final class BarButtonItemTarget: RxTarget { 41 | typealias Callback = () -> Void 42 | 43 | weak var barButtonItem: UIBarButtonItem? 44 | var callback: Callback! 45 | 46 | init(barButtonItem: UIBarButtonItem, callback: @escaping () -> Void) { 47 | self.barButtonItem = barButtonItem 48 | self.callback = callback 49 | super.init() 50 | barButtonItem.target = self 51 | barButtonItem.action = #selector(BarButtonItemTarget.action(_:)) 52 | } 53 | 54 | override func dispose() { 55 | super.dispose() 56 | #if DEBUG 57 | MainScheduler.ensureRunningOnMainThread() 58 | #endif 59 | 60 | barButtonItem?.target = nil 61 | barButtonItem?.action = nil 62 | 63 | callback = nil 64 | } 65 | 66 | @objc func action(_ sender: AnyObject) { 67 | callback() 68 | } 69 | 70 | } 71 | 72 | #endif 73 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/UIDatePicker+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIDatePicker+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Daniel Tartaglia on 5/31/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: UIDatePicker { 15 | /// Reactive wrapper for `date` property. 16 | public var date: ControlProperty { 17 | value 18 | } 19 | 20 | /// Reactive wrapper for `date` property. 21 | public var value: ControlProperty { 22 | return base.rx.controlPropertyWithDefaultEvents( 23 | getter: { datePicker in 24 | datePicker.date 25 | }, setter: { datePicker, value in 26 | datePicker.date = value 27 | } 28 | ) 29 | } 30 | 31 | /// Reactive wrapper for `countDownDuration` property. 32 | public var countDownDuration: ControlProperty { 33 | return base.rx.controlPropertyWithDefaultEvents( 34 | getter: { datePicker in 35 | datePicker.countDownDuration 36 | }, setter: { datePicker, value in 37 | datePicker.countDownDuration = value 38 | } 39 | ) 40 | } 41 | } 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/UINavigationController+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationController+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Diogo on 13/04/17. 6 | // Copyright © 2017 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: UINavigationController { 15 | public typealias ShowEvent = (viewController: UIViewController, animated: Bool) 16 | 17 | /// Reactive wrapper for `delegate`. 18 | /// 19 | /// For more information take a look at `DelegateProxyType` protocol documentation. 20 | public var delegate: DelegateProxy { 21 | RxNavigationControllerDelegateProxy.proxy(for: base) 22 | } 23 | 24 | /// Reactive wrapper for delegate method `navigationController(:willShow:animated:)`. 25 | public var willShow: ControlEvent { 26 | let source: Observable = delegate 27 | .methodInvoked(#selector(UINavigationControllerDelegate.navigationController(_:willShow:animated:))) 28 | .map { arg in 29 | let viewController = try castOrThrow(UIViewController.self, arg[1]) 30 | let animated = try castOrThrow(Bool.self, arg[2]) 31 | return (viewController, animated) 32 | } 33 | return ControlEvent(events: source) 34 | } 35 | 36 | /// Reactive wrapper for delegate method `navigationController(:didShow:animated:)`. 37 | public var didShow: ControlEvent { 38 | let source: Observable = delegate 39 | .methodInvoked(#selector(UINavigationControllerDelegate.navigationController(_:didShow:animated:))) 40 | .map { arg in 41 | let viewController = try castOrThrow(UIViewController.self, arg[1]) 42 | let animated = try castOrThrow(Bool.self, arg[2]) 43 | return (viewController, animated) 44 | } 45 | return ControlEvent(events: source) 46 | } 47 | } 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/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 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/UISegmentedControl+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UISegmentedControl+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Carlos García on 8/7/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: UISegmentedControl { 15 | /// Reactive wrapper for `selectedSegmentIndex` property. 16 | public var selectedSegmentIndex: ControlProperty { 17 | value 18 | } 19 | 20 | /// Reactive wrapper for `selectedSegmentIndex` property. 21 | public var value: ControlProperty { 22 | return base.rx.controlPropertyWithDefaultEvents( 23 | getter: { segmentedControl in 24 | segmentedControl.selectedSegmentIndex 25 | }, setter: { segmentedControl, value in 26 | segmentedControl.selectedSegmentIndex = value 27 | } 28 | ) 29 | } 30 | 31 | /// Reactive wrapper for `setEnabled(_:forSegmentAt:)` 32 | public func enabledForSegment(at index: Int) -> Binder { 33 | return Binder(self.base) { segmentedControl, segmentEnabled -> Void in 34 | segmentedControl.setEnabled(segmentEnabled, forSegmentAt: index) 35 | } 36 | } 37 | 38 | /// Reactive wrapper for `setTitle(_:forSegmentAt:)` 39 | public func titleForSegment(at index: Int) -> Binder { 40 | return Binder(self.base) { segmentedControl, title -> Void in 41 | segmentedControl.setTitle(title, forSegmentAt: index) 42 | } 43 | } 44 | 45 | /// Reactive wrapper for `setImage(_:forSegmentAt:)` 46 | public func imageForSegment(at index: Int) -> Binder { 47 | return Binder(self.base) { segmentedControl, image -> Void in 48 | segmentedControl.setImage(image, forSegmentAt: index) 49 | } 50 | } 51 | 52 | } 53 | 54 | #endif 55 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/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 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/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 | 28 | #endif 29 | 30 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/UISwitch+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UISwitch+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Carlos García on 8/7/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: UISwitch { 15 | 16 | /// Reactive wrapper for `isOn` property. 17 | public var isOn: ControlProperty { 18 | value 19 | } 20 | 21 | /// Reactive wrapper for `isOn` property. 22 | /// 23 | /// ⚠️ Versions prior to iOS 10.2 were leaking `UISwitch`'s, so on those versions 24 | /// underlying observable sequence won't complete when nothing holds a strong reference 25 | /// to `UISwitch`. 26 | public var value: ControlProperty { 27 | return base.rx.controlPropertyWithDefaultEvents( 28 | getter: { uiSwitch in 29 | uiSwitch.isOn 30 | }, setter: { uiSwitch, value in 31 | uiSwitch.isOn = value 32 | } 33 | ) 34 | } 35 | 36 | } 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/UITextField+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UITextField+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/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: UITextField { 15 | /// Reactive wrapper for `text` property. 16 | public var text: ControlProperty { 17 | value 18 | } 19 | 20 | /// Reactive wrapper for `text` property. 21 | public var value: ControlProperty { 22 | return base.rx.controlPropertyWithDefaultEvents( 23 | getter: { textField in 24 | textField.text 25 | }, 26 | setter: { textField, value in 27 | // This check is important because setting text value always clears control state 28 | // including marked text selection which is important for proper input 29 | // when IME input method is used. 30 | if textField.text != value { 31 | textField.text = value 32 | } 33 | } 34 | ) 35 | } 36 | 37 | /// Bindable sink for `attributedText` property. 38 | public var attributedText: ControlProperty { 39 | return base.rx.controlPropertyWithDefaultEvents( 40 | getter: { textField in 41 | textField.attributedText 42 | }, 43 | setter: { textField, value in 44 | // This check is important because setting text value always clears control state 45 | // including marked text selection which is important for proper input 46 | // when IME input method is used. 47 | if textField.attributedText != value { 48 | textField.attributedText = value 49 | } 50 | } 51 | ) 52 | } 53 | } 54 | 55 | #endif 56 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/WKWebView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WKWebView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Giuseppe Lanza on 14/02/2020. 6 | // Copyright © 2020 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(macOS) 10 | 11 | import RxSwift 12 | import WebKit 13 | 14 | @available(iOS 8.0, macOS 10.10, macOSApplicationExtension 10.10, *) 15 | extension Reactive where Base: WKWebView { 16 | 17 | /// Reactive wrapper for `navigationDelegate`. 18 | /// For more information take a look at `DelegateProxyType` protocol documentation. 19 | public var navigationDelegate: DelegateProxy { 20 | RxWKNavigationDelegateProxy.proxy(for: base) 21 | } 22 | 23 | /// Reactive wrapper for `navigationDelegate` message. 24 | public var didCommit: Observable { 25 | navigationDelegate 26 | .methodInvoked(#selector(WKNavigationDelegate.webView(_:didCommit:))) 27 | .map { a in try castOrThrow(WKNavigation.self, a[1]) } 28 | } 29 | 30 | /// Reactive wrapper for `navigationDelegate` message. 31 | public var didStartLoad: Observable { 32 | navigationDelegate 33 | .methodInvoked(#selector(WKNavigationDelegate.webView(_:didStartProvisionalNavigation:))) 34 | .map { a in try castOrThrow(WKNavigation.self, a[1]) } 35 | } 36 | 37 | /// Reactive wrapper for `navigationDelegate` message. 38 | public var didFinishLoad: Observable { 39 | navigationDelegate 40 | .methodInvoked(#selector(WKNavigationDelegate.webView(_:didFinish:))) 41 | .map { a in try castOrThrow(WKNavigation.self, a[1]) } 42 | } 43 | 44 | /// Reactive wrapper for `navigationDelegate` message. 45 | public var didFailLoad: Observable<(WKNavigation, Error)> { 46 | navigationDelegate 47 | .methodInvoked(#selector(WKNavigationDelegate.webView(_:didFail:withError:))) 48 | .map { a in 49 | ( 50 | try castOrThrow(WKNavigation.self, a[1]), 51 | try castOrThrow(Error.self, a[2]) 52 | ) 53 | } 54 | } 55 | } 56 | 57 | #endif 58 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/macOS/NSButton+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSButton+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 5/17/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) 10 | 11 | import RxSwift 12 | import Cocoa 13 | 14 | extension Reactive where Base: NSButton { 15 | 16 | /// Reactive wrapper for control event. 17 | public var tap: ControlEvent { 18 | self.controlEvent 19 | } 20 | 21 | /// Reactive wrapper for `state` property`. 22 | public var state: ControlProperty { 23 | return self.base.rx.controlProperty( 24 | getter: { control in 25 | return control.state 26 | }, setter: { (control: NSButton, state: NSControl.StateValue) in 27 | control.state = state 28 | } 29 | ) 30 | } 31 | } 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/macOS/NSSlider+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSSlider+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Junior B. on 24/05/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) 10 | 11 | import RxSwift 12 | import Cocoa 13 | 14 | extension Reactive where Base: NSSlider { 15 | 16 | /// Reactive wrapper for `value` property. 17 | public var value: ControlProperty { 18 | return self.base.rx.controlProperty( 19 | getter: { control -> Double in 20 | return control.doubleValue 21 | }, 22 | setter: { control, value in 23 | control.doubleValue = value 24 | } 25 | ) 26 | } 27 | 28 | } 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/macOS/NSView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 12/6/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) 10 | import Cocoa 11 | import RxSwift 12 | 13 | extension Reactive where Base: NSView { 14 | /// Bindable sink for `alphaValue` property. 15 | public var alpha: Binder { 16 | return Binder(self.base) { view, value in 17 | view.alphaValue = value 18 | } 19 | } 20 | } 21 | #endif 22 | -------------------------------------------------------------------------------- /Example/Pods/RxRelay/LICENSE.md: -------------------------------------------------------------------------------- 1 | **The MIT License** 2 | **Copyright © 2015 Krunoslav Zaher, Shai Mishali** 3 | **All rights reserved.** 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /Example/Pods/RxRelay/RxRelay/BehaviorRelay.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BehaviorRelay.swift 3 | // RxRelay 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 | /// BehaviorRelay is a wrapper for `BehaviorSubject`. 12 | /// 13 | /// Unlike `BehaviorSubject` it can't terminate with error or completed. 14 | public final class BehaviorRelay: ObservableType { 15 | private let subject: BehaviorSubject 16 | 17 | /// Accepts `event` and emits it to subscribers 18 | public func accept(_ event: Element) { 19 | self.subject.onNext(event) 20 | } 21 | 22 | /// Current value of behavior subject 23 | public var value: Element { 24 | // this try! is ok because subject can't error out or be disposed 25 | return try! self.subject.value() 26 | } 27 | 28 | /// Initializes behavior relay with initial value. 29 | public init(value: Element) { 30 | self.subject = BehaviorSubject(value: value) 31 | } 32 | 33 | /// Subscribes observer 34 | public func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 35 | self.subject.subscribe(observer) 36 | } 37 | 38 | /// - returns: Canonical interface for push style sequence 39 | public func asObservable() -> Observable { 40 | self.subject.asObservable() 41 | } 42 | 43 | /// Convert to an `Infallible` 44 | /// 45 | /// - returns: `Infallible` 46 | public func asInfallible() -> Infallible { 47 | asInfallible(onErrorFallbackTo: .empty()) 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Example/Pods/RxRelay/RxRelay/PublishRelay.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PublishRelay.swift 3 | // RxRelay 4 | // 5 | // Created by Krunoslav Zaher on 3/28/15. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | /// PublishRelay is a wrapper for `PublishSubject`. 12 | /// 13 | /// Unlike `PublishSubject` it can't terminate with error or completed. 14 | public final class PublishRelay: ObservableType { 15 | private let subject: PublishSubject 16 | 17 | // Accepts `event` and emits it to subscribers 18 | public func accept(_ event: Element) { 19 | self.subject.onNext(event) 20 | } 21 | 22 | /// Initializes with internal empty subject. 23 | public init() { 24 | self.subject = PublishSubject() 25 | } 26 | 27 | /// Subscribes observer 28 | public func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 29 | self.subject.subscribe(observer) 30 | } 31 | 32 | /// - returns: Canonical interface for push style sequence 33 | public func asObservable() -> Observable { 34 | self.subject.asObservable() 35 | } 36 | 37 | /// Convert to an `Infallible` 38 | /// 39 | /// - returns: `Infallible` 40 | public func asInfallible() -> Infallible { 41 | asInfallible(onErrorFallbackTo: .empty()) 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Example/Pods/RxRelay/RxRelay/ReplayRelay.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ReplayRelay.swift 3 | // RxRelay 4 | // 5 | // Created by Zsolt Kovacs on 12/22/19. 6 | // Copyright © 2019 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | /// ReplayRelay is a wrapper for `ReplaySubject`. 12 | /// 13 | /// Unlike `ReplaySubject` it can't terminate with an error or complete. 14 | public final class ReplayRelay: ObservableType { 15 | private let subject: ReplaySubject 16 | 17 | // Accepts `event` and emits it to subscribers 18 | public func accept(_ event: Element) { 19 | self.subject.onNext(event) 20 | } 21 | 22 | private init(subject: ReplaySubject) { 23 | self.subject = subject 24 | } 25 | 26 | /// Creates new instance of `ReplayRelay` that replays at most `bufferSize` last elements sent to it. 27 | /// 28 | /// - parameter bufferSize: Maximal number of elements to replay to observers after subscription. 29 | /// - returns: New instance of replay relay. 30 | public static func create(bufferSize: Int) -> ReplayRelay { 31 | ReplayRelay(subject: ReplaySubject.create(bufferSize: bufferSize)) 32 | } 33 | 34 | /// Creates a new instance of `ReplayRelay` that buffers all the sent to it. 35 | /// To avoid filling up memory, developer needs to make sure that the use case will only ever store a 'reasonable' 36 | /// number of elements. 37 | public static func createUnbound() -> ReplayRelay { 38 | ReplayRelay(subject: ReplaySubject.createUnbounded()) 39 | } 40 | 41 | /// Subscribes observer 42 | public func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 43 | self.subject.subscribe(observer) 44 | } 45 | 46 | /// - returns: Canonical interface for push style sequence 47 | public func asObservable() -> Observable { 48 | self.subject.asObserver() 49 | } 50 | 51 | /// Convert to an `Infallible` 52 | /// 53 | /// - returns: `Infallible` 54 | public func asInfallible() -> Infallible { 55 | asInfallible(onErrorFallbackTo: .empty()) 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /Example/Pods/RxRelay/RxRelay/Utils.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Utils.swift 3 | // RxRelay 4 | // 5 | // Created by Shai Mishali on 09/04/2019. 6 | // Copyright © 2019 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | func rxFatalErrorInDebug(_ lastMessage: @autoclosure () -> String, file: StaticString = #file, line: UInt = #line) { 12 | #if DEBUG 13 | fatalError(lastMessage(), file: file, line: line) 14 | #else 15 | print("\(file):\(line): \(lastMessage())") 16 | #endif 17 | } 18 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/LICENSE.md: -------------------------------------------------------------------------------- 1 | **The MIT License** 2 | **Copyright © 2015 Krunoslav Zaher, Shai Mishali** 3 | **All rights reserved.** 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/Platform/AtomicInt.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AtomicInt.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 10/28/18. 6 | // Copyright © 2018 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | final class AtomicInt: NSLock { 12 | fileprivate var value: Int32 13 | public init(_ value: Int32 = 0) { 14 | self.value = value 15 | } 16 | } 17 | 18 | @discardableResult 19 | @inline(__always) 20 | func add(_ this: AtomicInt, _ value: Int32) -> Int32 { 21 | this.lock() 22 | let oldValue = this.value 23 | this.value += value 24 | this.unlock() 25 | return oldValue 26 | } 27 | 28 | @discardableResult 29 | @inline(__always) 30 | func sub(_ this: AtomicInt, _ value: Int32) -> Int32 { 31 | this.lock() 32 | let oldValue = this.value 33 | this.value -= value 34 | this.unlock() 35 | return oldValue 36 | } 37 | 38 | @discardableResult 39 | @inline(__always) 40 | func fetchOr(_ this: AtomicInt, _ mask: Int32) -> Int32 { 41 | this.lock() 42 | let oldValue = this.value 43 | this.value |= mask 44 | this.unlock() 45 | return oldValue 46 | } 47 | 48 | @inline(__always) 49 | func load(_ this: AtomicInt) -> Int32 { 50 | this.lock() 51 | let oldValue = this.value 52 | this.unlock() 53 | return oldValue 54 | } 55 | 56 | @discardableResult 57 | @inline(__always) 58 | func increment(_ this: AtomicInt) -> Int32 { 59 | add(this, 1) 60 | } 61 | 62 | @discardableResult 63 | @inline(__always) 64 | func decrement(_ this: AtomicInt) -> Int32 { 65 | sub(this, 1) 66 | } 67 | 68 | @inline(__always) 69 | func isFlagSet(_ this: AtomicInt, _ mask: Int32) -> Bool { 70 | (load(this) & mask) != 0 71 | } 72 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/Platform/DataStructures/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InfiniteSequence.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 6/13/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Sequence that repeats `repeatedValue` infinite number of times. 10 | struct InfiniteSequence : Sequence { 11 | typealias Iterator = AnyIterator 12 | 13 | private let repeatedValue: Element 14 | 15 | init(repeatedValue: Element) { 16 | self.repeatedValue = repeatedValue 17 | } 18 | 19 | func makeIterator() -> Iterator { 20 | let repeatedValue = self.repeatedValue 21 | return AnyIterator { repeatedValue } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueue+Extensions.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 10/22/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Dispatch 10 | 11 | extension DispatchQueue { 12 | private static var token: DispatchSpecificKey<()> = { 13 | let key = DispatchSpecificKey<()>() 14 | DispatchQueue.main.setSpecific(key: key, value: ()) 15 | return key 16 | }() 17 | 18 | static var isMain: Bool { 19 | DispatchQueue.getSpecific(key: token) != nil 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/Platform/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Platform.Darwin.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) 10 | 11 | import Darwin 12 | import Foundation 13 | 14 | extension Thread { 15 | static func setThreadLocalStorageValue(_ value: T?, forKey key: NSCopying) { 16 | let currentThread = Thread.current 17 | let threadDictionary = currentThread.threadDictionary 18 | 19 | if let newValue = value { 20 | threadDictionary[key] = newValue 21 | } 22 | else { 23 | threadDictionary[key] = nil 24 | } 25 | } 26 | 27 | static func getThreadLocalStorageValueForKey(_ key: NSCopying) -> T? { 28 | let currentThread = Thread.current 29 | let threadDictionary = currentThread.threadDictionary 30 | 31 | return threadDictionary[key] as? T 32 | } 33 | } 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/Platform/Platform.Linux.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Platform.Linux.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(Linux) 10 | 11 | import Foundation 12 | 13 | extension Thread { 14 | 15 | static func setThreadLocalStorageValue(_ value: T?, forKey key: String) { 16 | if let newValue = value { 17 | Thread.current.threadDictionary[key] = newValue 18 | } 19 | else { 20 | Thread.current.threadDictionary[key] = nil 21 | } 22 | } 23 | 24 | static func getThreadLocalStorageValueForKey(_ key: String) -> T? { 25 | let currentThread = Thread.current 26 | let threadDictionary = currentThread.threadDictionary 27 | 28 | return threadDictionary[key] as? T 29 | } 30 | } 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/Platform/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RecursiveLock.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/18/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | #if TRACE_RESOURCES 12 | class RecursiveLock: NSRecursiveLock { 13 | override init() { 14 | _ = Resources.incrementTotal() 15 | super.init() 16 | } 17 | 18 | override func lock() { 19 | super.lock() 20 | _ = Resources.incrementTotal() 21 | } 22 | 23 | override func unlock() { 24 | super.unlock() 25 | _ = Resources.decrementTotal() 26 | } 27 | 28 | deinit { 29 | _ = Resources.decrementTotal() 30 | } 31 | } 32 | #else 33 | typealias RecursiveLock = NSRecursiveLock 34 | #endif 35 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Binder.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Binder.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 9/17/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /** 10 | Observer that enforces interface binding rules: 11 | * can't bind errors (in debug builds binding of errors causes `fatalError` in release builds errors are being logged) 12 | * ensures binding is performed on a specific scheduler 13 | 14 | `Binder` doesn't retain target and in case target is released, element isn't bound. 15 | 16 | By default it binds elements on main scheduler. 17 | */ 18 | public struct Binder: ObserverType { 19 | public typealias Element = Value 20 | 21 | private let binding: (Event) -> Void 22 | 23 | /// Initializes `Binder` 24 | /// 25 | /// - parameter target: Target object. 26 | /// - parameter scheduler: Scheduler used to bind the events. 27 | /// - parameter binding: Binding logic. 28 | public init(_ target: Target, scheduler: ImmediateSchedulerType = MainScheduler(), binding: @escaping (Target, Value) -> Void) { 29 | weak var weakTarget = target 30 | 31 | self.binding = { event in 32 | switch event { 33 | case .next(let element): 34 | _ = scheduler.schedule(element) { element in 35 | if let target = weakTarget { 36 | binding(target, element) 37 | } 38 | return Disposables.create() 39 | } 40 | case .error(let error): 41 | rxFatalErrorInDebug("Binding error: \(error)") 42 | case .completed: 43 | break 44 | } 45 | } 46 | } 47 | 48 | /// Binds next element to owner view as described in `binding`. 49 | public func on(_ event: Event) { 50 | self.binding(event) 51 | } 52 | 53 | /// Erases type of observer. 54 | /// 55 | /// - returns: type erased observer. 56 | public func asObserver() -> AnyObserver { 57 | AnyObserver(eventHandler: self.on) 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/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 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Concurrency/Lock.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Lock.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/31/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol Lock { 10 | func lock() 11 | func unlock() 12 | } 13 | 14 | // https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20151214/000321.html 15 | typealias SpinLock = RecursiveLock 16 | 17 | extension RecursiveLock : Lock { 18 | @inline(__always) 19 | final func performLocked(_ action: () -> T) -> T { 20 | self.lock(); defer { self.unlock() } 21 | return action() 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Concurrency/LockOwnerType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LockOwnerType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol LockOwnerType: AnyObject, Lock { 10 | var lock: RecursiveLock { get } 11 | } 12 | 13 | extension LockOwnerType { 14 | func lock() { self.lock.lock() } 15 | func unlock() { self.lock.unlock() } 16 | } 17 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Concurrency/SynchronizedDisposeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedDisposeType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol SynchronizedDisposeType: AnyObject, Disposable, Lock { 10 | func synchronized_dispose() 11 | } 12 | 13 | extension SynchronizedDisposeType { 14 | func synchronizedDispose() { 15 | self.lock(); defer { self.unlock() } 16 | self.synchronized_dispose() 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Concurrency/SynchronizedOnType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedOnType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol SynchronizedOnType: AnyObject, ObserverType, Lock { 10 | func synchronized_on(_ event: Event) 11 | } 12 | 13 | extension SynchronizedOnType { 14 | func synchronizedOn(_ event: Event) { 15 | self.lock(); defer { self.unlock() } 16 | self.synchronized_on(event) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Concurrency/SynchronizedUnsubscribeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedUnsubscribeType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol SynchronizedUnsubscribeType: AnyObject { 10 | associatedtype DisposeKey 11 | 12 | func synchronizedUnsubscribe(_ disposeKey: DisposeKey) 13 | } 14 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/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 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Disposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Disposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents a disposable resource. 10 | public protocol Disposable { 11 | /// Dispose resource. 12 | func dispose() 13 | } 14 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Disposables/AnonymousDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnonymousDisposable.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 an Action-based disposable. 10 | /// 11 | /// When dispose method is called, disposal action will be dereferenced. 12 | private final class AnonymousDisposable : DisposeBase, Cancelable { 13 | public typealias DisposeAction = () -> Void 14 | 15 | private let disposed = AtomicInt(0) 16 | private var disposeAction: DisposeAction? 17 | 18 | /// - returns: Was resource disposed. 19 | public var isDisposed: Bool { 20 | isFlagSet(self.disposed, 1) 21 | } 22 | 23 | /// Constructs a new disposable with the given action used for disposal. 24 | /// 25 | /// - parameter disposeAction: Disposal action which will be run upon calling `dispose`. 26 | private init(_ disposeAction: @escaping DisposeAction) { 27 | self.disposeAction = disposeAction 28 | super.init() 29 | } 30 | 31 | // Non-deprecated version of the constructor, used by `Disposables.create(with:)` 32 | fileprivate init(disposeAction: @escaping DisposeAction) { 33 | self.disposeAction = disposeAction 34 | super.init() 35 | } 36 | 37 | /// Calls the disposal action if and only if the current instance hasn't been disposed yet. 38 | /// 39 | /// After invoking disposal action, disposal action will be dereferenced. 40 | fileprivate func dispose() { 41 | if fetchOr(self.disposed, 1) == 0 { 42 | if let action = self.disposeAction { 43 | self.disposeAction = nil 44 | action() 45 | } 46 | } 47 | } 48 | } 49 | 50 | extension Disposables { 51 | 52 | /// Constructs a new disposable with the given action used for disposal. 53 | /// 54 | /// - parameter dispose: Disposal action which will be run upon calling `dispose`. 55 | public static func create(with dispose: @escaping () -> Void) -> Cancelable { 56 | AnonymousDisposable(disposeAction: dispose) 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Disposables/BinaryDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BinaryDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 6/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents two disposable resources that are disposed together. 10 | private final class BinaryDisposable : DisposeBase, Cancelable { 11 | 12 | private let disposed = AtomicInt(0) 13 | 14 | // state 15 | private var disposable1: Disposable? 16 | private var disposable2: Disposable? 17 | 18 | /// - returns: Was resource disposed. 19 | var isDisposed: Bool { 20 | isFlagSet(self.disposed, 1) 21 | } 22 | 23 | /// Constructs new binary disposable from two disposables. 24 | /// 25 | /// - parameter disposable1: First disposable 26 | /// - parameter disposable2: Second disposable 27 | init(_ disposable1: Disposable, _ disposable2: Disposable) { 28 | self.disposable1 = disposable1 29 | self.disposable2 = disposable2 30 | super.init() 31 | } 32 | 33 | /// Calls the disposal action if and only if the current instance hasn't been disposed yet. 34 | /// 35 | /// After invoking disposal action, disposal action will be dereferenced. 36 | func dispose() { 37 | if fetchOr(self.disposed, 1) == 0 { 38 | self.disposable1?.dispose() 39 | self.disposable2?.dispose() 40 | self.disposable1 = nil 41 | self.disposable2 = nil 42 | } 43 | } 44 | } 45 | 46 | extension Disposables { 47 | 48 | /// Creates a disposable with the given disposables. 49 | public static func create(_ disposable1: Disposable, _ disposable2: Disposable) -> Cancelable { 50 | BinaryDisposable(disposable1, disposable2) 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Disposables/BooleanDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BooleanDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Junior B. on 10/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents a disposable resource that can be checked for disposal status. 10 | public final class BooleanDisposable : Cancelable { 11 | 12 | internal static let BooleanDisposableTrue = BooleanDisposable(isDisposed: true) 13 | private let disposed: AtomicInt 14 | 15 | /// Initializes a new instance of the `BooleanDisposable` class 16 | public init() { 17 | disposed = AtomicInt(0) 18 | } 19 | 20 | /// Initializes a new instance of the `BooleanDisposable` class with given value 21 | public init(isDisposed: Bool) { 22 | self.disposed = AtomicInt(isDisposed ? 1 : 0) 23 | } 24 | 25 | /// - returns: Was resource disposed. 26 | public var isDisposed: Bool { 27 | isFlagSet(self.disposed, 1) 28 | } 29 | 30 | /// Sets the status to disposed, which can be observer through the `isDisposed` property. 31 | public func dispose() { 32 | fetchOr(self.disposed, 1) 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/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 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Disposables/DisposeBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DisposeBase.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 4/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Base class for all disposables. 10 | public class DisposeBase { 11 | init() { 12 | #if TRACE_RESOURCES 13 | _ = Resources.incrementTotal() 14 | #endif 15 | } 16 | 17 | deinit { 18 | #if TRACE_RESOURCES 19 | _ = Resources.decrementTotal() 20 | #endif 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Disposables/NopDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NopDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/15/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents a disposable that does nothing on disposal. 10 | /// 11 | /// Nop = No Operation 12 | private struct NopDisposable : Disposable { 13 | 14 | fileprivate static let noOp: Disposable = NopDisposable() 15 | 16 | private init() { 17 | 18 | } 19 | 20 | /// Does nothing. 21 | public func dispose() { 22 | } 23 | } 24 | 25 | extension Disposables { 26 | /** 27 | Creates a disposable that does nothing on disposal. 28 | */ 29 | static public func create() -> Disposable { NopDisposable.noOp } 30 | } 31 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Disposables/ScheduledDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 6/13/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | private let disposeScheduledDisposable: (ScheduledDisposable) -> Disposable = { sd in 10 | sd.disposeInner() 11 | return Disposables.create() 12 | } 13 | 14 | /// Represents a disposable resource whose disposal invocation will be scheduled on the specified scheduler. 15 | public final class ScheduledDisposable : Cancelable { 16 | public let scheduler: ImmediateSchedulerType 17 | 18 | private let disposed = AtomicInt(0) 19 | 20 | // state 21 | private var disposable: Disposable? 22 | 23 | /// - returns: Was resource disposed. 24 | public var isDisposed: Bool { 25 | isFlagSet(self.disposed, 1) 26 | } 27 | 28 | /** 29 | Initializes a new instance of the `ScheduledDisposable` that uses a `scheduler` on which to dispose the `disposable`. 30 | 31 | - parameter scheduler: Scheduler where the disposable resource will be disposed on. 32 | - parameter disposable: Disposable resource to dispose on the given scheduler. 33 | */ 34 | public init(scheduler: ImmediateSchedulerType, disposable: Disposable) { 35 | self.scheduler = scheduler 36 | self.disposable = disposable 37 | } 38 | 39 | /// Disposes the wrapped disposable on the provided scheduler. 40 | public func dispose() { 41 | _ = self.scheduler.schedule(self, action: disposeScheduledDisposable) 42 | } 43 | 44 | func disposeInner() { 45 | if fetchOr(self.disposed, 1) == 0 { 46 | self.disposable!.dispose() 47 | self.disposable = nil 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Disposables/SubscriptionDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubscriptionDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | struct SubscriptionDisposable : Disposable { 10 | private let key: T.DisposeKey 11 | private weak var owner: T? 12 | 13 | init(owner: T, key: T.DisposeKey) { 14 | self.owner = owner 15 | self.key = key 16 | } 17 | 18 | func dispose() { 19 | self.owner?.synchronizedUnsubscribe(self.key) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Errors.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Errors.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/28/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | let RxErrorDomain = "RxErrorDomain" 10 | let RxCompositeFailures = "RxCompositeFailures" 11 | 12 | /// Generic Rx error codes. 13 | public enum RxError 14 | : Swift.Error 15 | , CustomDebugStringConvertible { 16 | /// Unknown error occurred. 17 | case unknown 18 | /// Performing an action on disposed object. 19 | case disposed(object: AnyObject) 20 | /// Arithmetic overflow error. 21 | case overflow 22 | /// Argument out of range error. 23 | case argumentOutOfRange 24 | /// Sequence doesn't contain any elements. 25 | case noElements 26 | /// Sequence contains more than one element. 27 | case moreThanOneElement 28 | /// Timeout error. 29 | case timeout 30 | } 31 | 32 | extension RxError { 33 | /// A textual representation of `self`, suitable for debugging. 34 | public var debugDescription: String { 35 | switch self { 36 | case .unknown: 37 | return "Unknown error occurred." 38 | case .disposed(let object): 39 | return "Object `\(object)` was already disposed." 40 | case .overflow: 41 | return "Arithmetic overflow occurred." 42 | case .argumentOutOfRange: 43 | return "Argument out of range." 44 | case .noElements: 45 | return "Sequence doesn't contain any elements." 46 | case .moreThanOneElement: 47 | return "Sequence contains more than one element." 48 | case .timeout: 49 | return "Sequence timeout." 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Extensions/Bag+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Bag+Rx.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/19/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | 10 | // MARK: forEach 11 | 12 | @inline(__always) 13 | func dispatch(_ bag: Bag<(Event) -> Void>, _ event: Event) { 14 | bag._value0?(event) 15 | 16 | if bag._onlyFastPath { 17 | return 18 | } 19 | 20 | let pairs = bag._pairs 21 | for i in 0 ..< pairs.count { 22 | pairs[i].value(event) 23 | } 24 | 25 | if let dictionary = bag._dictionary { 26 | for element in dictionary.values { 27 | element(event) 28 | } 29 | } 30 | } 31 | 32 | /// Dispatches `dispose` to all disposables contained inside bag. 33 | func disposeAll(in bag: Bag) { 34 | bag._value0?.dispose() 35 | 36 | if bag._onlyFastPath { 37 | return 38 | } 39 | 40 | let pairs = bag._pairs 41 | for i in 0 ..< pairs.count { 42 | pairs[i].value.dispose() 43 | } 44 | 45 | if let dictionary = bag._dictionary { 46 | for element in dictionary.values { 47 | element.dispose() 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/GroupedObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GroupedObservable.swift 3 | // RxSwift 4 | // 5 | // Created by Tomi Koskinen on 01/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents an observable sequence of elements that have a common key. 10 | public struct GroupedObservable : ObservableType { 11 | /// Gets the common key. 12 | public let key: Key 13 | 14 | private let source: Observable 15 | 16 | /// Initializes grouped observable sequence with key and source observable sequence. 17 | /// 18 | /// - parameter key: Grouped observable sequence key 19 | /// - parameter source: Observable sequence that represents sequence of elements for the key 20 | /// - returns: Grouped observable sequence of elements for the specific key 21 | public init(key: Key, source: Observable) { 22 | self.key = key 23 | self.source = source 24 | } 25 | 26 | /// Subscribes `observer` to receive events for this sequence. 27 | public func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 28 | self.source.subscribe(observer) 29 | } 30 | 31 | /// Converts `self` to `Observable` sequence. 32 | public func asObservable() -> Observable { 33 | self.source 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/ImmediateSchedulerType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ImmediateSchedulerType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 5/31/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents an object that immediately schedules units of work. 10 | public protocol ImmediateSchedulerType { 11 | /** 12 | Schedules an action to be executed immediately. 13 | 14 | - parameter state: State passed to the action to be executed. 15 | - parameter action: Action to be executed. 16 | - returns: The disposable object used to cancel the scheduled action (best effort). 17 | */ 18 | func schedule(_ state: StateType, action: @escaping (StateType) -> Disposable) -> Disposable 19 | } 20 | 21 | extension ImmediateSchedulerType { 22 | /** 23 | Schedules an action to be executed recursively. 24 | 25 | - parameter state: State passed to the action to be executed. 26 | - parameter action: Action to execute recursively. The last parameter passed to the action is used to trigger recursive scheduling of the action, passing in recursive invocation state. 27 | - returns: The disposable object used to cancel the scheduled action (best effort). 28 | */ 29 | public func scheduleRecursive(_ state: State, action: @escaping (_ state: State, _ recurse: (State) -> Void) -> Void) -> Disposable { 30 | let recursiveScheduler = RecursiveImmediateScheduler(action: action, scheduler: self) 31 | 32 | recursiveScheduler.schedule(state) 33 | 34 | return Disposables.create(with: recursiveScheduler.dispose) 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Observable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// A type-erased `ObservableType`. 10 | /// 11 | /// It represents a push style sequence. 12 | public class Observable : ObservableType { 13 | init() { 14 | #if TRACE_RESOURCES 15 | _ = Resources.incrementTotal() 16 | #endif 17 | } 18 | 19 | public func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 20 | rxAbstractMethod() 21 | } 22 | 23 | public func asObservable() -> Observable { self } 24 | 25 | deinit { 26 | #if TRACE_RESOURCES 27 | _ = Resources.decrementTotal() 28 | #endif 29 | } 30 | } 31 | 32 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/ObservableConvertibleType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObservableConvertibleType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 9/17/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Type that can be converted to observable sequence (`Observable`). 10 | public protocol ObservableConvertibleType { 11 | /// Type of elements in sequence. 12 | associatedtype Element 13 | 14 | /// Converts `self` to `Observable` sequence. 15 | /// 16 | /// - returns: Observable sequence that represents `self`. 17 | func asObservable() -> Observable 18 | } 19 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/ObservableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObservableType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 8/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents a push style sequence. 10 | public protocol ObservableType: ObservableConvertibleType { 11 | /** 12 | Subscribes `observer` to receive events for this sequence. 13 | 14 | ### Grammar 15 | 16 | **Next\* (Error | Completed)?** 17 | 18 | * sequences can produce zero or more elements so zero or more `Next` events can be sent to `observer` 19 | * once an `Error` or `Completed` event is sent, the sequence terminates and can't produce any other elements 20 | 21 | It is possible that events are sent from different threads, but no two events can be sent concurrently to 22 | `observer`. 23 | 24 | ### Resource Management 25 | 26 | When sequence sends `Complete` or `Error` event all internal resources that compute sequence elements 27 | will be freed. 28 | 29 | To cancel production of sequence elements and free resources immediately, call `dispose` on returned 30 | subscription. 31 | 32 | - returns: Subscription for `observer` that can be used to cancel production of sequence elements and free resources. 33 | */ 34 | func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element 35 | } 36 | 37 | extension ObservableType { 38 | 39 | /// Default implementation of converting `ObservableType` to `Observable`. 40 | public func asObservable() -> Observable { 41 | // temporary workaround 42 | //return Observable.create(subscribe: self.subscribe) 43 | Observable.create { o in self.subscribe(o) } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observables/AddRef.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AddRef.swift 3 | // RxSwift 4 | // 5 | // Created by Junior B. on 30/10/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | final class AddRefSink : Sink, ObserverType { 10 | typealias Element = Observer.Element 11 | 12 | override init(observer: Observer, cancel: Cancelable) { 13 | super.init(observer: observer, cancel: cancel) 14 | } 15 | 16 | func on(_ event: Event) { 17 | switch event { 18 | case .next: 19 | self.forwardOn(event) 20 | case .completed, .error: 21 | self.forwardOn(event) 22 | self.dispose() 23 | } 24 | } 25 | } 26 | 27 | final class AddRef : Producer { 28 | 29 | private let source: Observable 30 | private let refCount: RefCountDisposable 31 | 32 | init(source: Observable, refCount: RefCountDisposable) { 33 | self.source = source 34 | self.refCount = refCount 35 | } 36 | 37 | override func run(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element { 38 | let releaseDisposable = self.refCount.retain() 39 | let sink = AddRefSink(observer: observer, cancel: cancel) 40 | let subscription = Disposables.create(releaseDisposable, self.source.subscribe(sink)) 41 | 42 | return (sink: sink, subscription: subscription) 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observables/AsMaybe.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AsMaybe.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/12/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | private final class AsMaybeSink : Sink, ObserverType { 10 | typealias Element = Observer.Element 11 | 12 | private var element: Event? 13 | 14 | func on(_ event: Event) { 15 | switch event { 16 | case .next: 17 | if self.element != nil { 18 | self.forwardOn(.error(RxError.moreThanOneElement)) 19 | self.dispose() 20 | } 21 | 22 | self.element = event 23 | case .error: 24 | self.forwardOn(event) 25 | self.dispose() 26 | case .completed: 27 | if let element = self.element { 28 | self.forwardOn(element) 29 | } 30 | self.forwardOn(.completed) 31 | self.dispose() 32 | } 33 | } 34 | } 35 | 36 | final class AsMaybe: Producer { 37 | private let source: Observable 38 | 39 | init(source: Observable) { 40 | self.source = source 41 | } 42 | 43 | override func run(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element { 44 | let sink = AsMaybeSink(observer: observer, cancel: cancel) 45 | let subscription = self.source.subscribe(sink) 46 | return (sink: sink, subscription: subscription) 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observables/AsSingle.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AsSingle.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/12/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | private final class AsSingleSink : Sink, ObserverType { 10 | typealias Element = Observer.Element 11 | 12 | private var element: Event? 13 | 14 | func on(_ event: Event) { 15 | switch event { 16 | case .next: 17 | if self.element != nil { 18 | self.forwardOn(.error(RxError.moreThanOneElement)) 19 | self.dispose() 20 | } 21 | 22 | self.element = event 23 | case .error: 24 | self.forwardOn(event) 25 | self.dispose() 26 | case .completed: 27 | if let element = self.element { 28 | self.forwardOn(element) 29 | self.forwardOn(.completed) 30 | } 31 | else { 32 | self.forwardOn(.error(RxError.noElements)) 33 | } 34 | self.dispose() 35 | } 36 | } 37 | } 38 | 39 | final class AsSingle: Producer { 40 | private let source: Observable 41 | 42 | init(source: Observable) { 43 | self.source = source 44 | } 45 | 46 | override func run(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element { 47 | let sink = AsSingleSink(observer: observer, cancel: cancel) 48 | let subscription = self.source.subscribe(sink) 49 | return (sink: sink, subscription: subscription) 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observables/Decode.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Decode.swift 3 | // RxSwift 4 | // 5 | // Created by Shai Mishali on 24/07/2020. 6 | // Copyright © 2020 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public extension ObservableType where Element == Data { 12 | /// Attempt to decode the emitted `Data` using a provided decoder. 13 | /// 14 | /// - parameter type: A `Decodable`-conforming type to attempt to decode to 15 | /// - parameter decoder: A capable decoder, e.g. `JSONDecoder` or `PropertyListDecoder` 16 | /// 17 | /// - note: If using a custom decoder, it must conform to the `DataDecoder` protocol. 18 | /// 19 | /// - returns: An `Observable` of the decoded type 20 | func decode(type: Item.Type, 22 | decoder: Decoder) -> Observable { 23 | map { try decoder.decode(type, from: $0) } 24 | } 25 | } 26 | 27 | /// Represents an entity capable of decoding raw `Data` 28 | /// into a concrete `Decodable` type 29 | public protocol DataDecoder { 30 | func decode(_ type: Item.Type, from data: Data) throws -> Item 31 | } 32 | 33 | extension JSONDecoder: DataDecoder {} 34 | extension PropertyListDecoder: DataDecoder {} 35 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observables/Dematerialize.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Dematerialize.swift 3 | // RxSwift 4 | // 5 | // Created by Jamie Pinkham on 3/13/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | extension ObservableType where Element: EventConvertible { 10 | /** 11 | Convert any previously materialized Observable into it's original form. 12 | - seealso: [materialize operator on reactivex.io](http://reactivex.io/documentation/operators/materialize-dematerialize.html) 13 | - returns: The dematerialized observable sequence. 14 | */ 15 | public func dematerialize() -> Observable { 16 | Dematerialize(source: self.asObservable()) 17 | } 18 | 19 | } 20 | 21 | private final class DematerializeSink: Sink, ObserverType where Observer.Element == T.Element { 22 | fileprivate func on(_ event: Event) { 23 | switch event { 24 | case .next(let element): 25 | self.forwardOn(element.event) 26 | if element.event.isStopEvent { 27 | self.dispose() 28 | } 29 | case .completed: 30 | self.forwardOn(.completed) 31 | self.dispose() 32 | case .error(let error): 33 | self.forwardOn(.error(error)) 34 | self.dispose() 35 | } 36 | } 37 | } 38 | 39 | final private class Dematerialize: Producer { 40 | private let source: Observable 41 | 42 | init(source: Observable) { 43 | self.source = source 44 | } 45 | 46 | override func run(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == T.Element { 47 | let sink = DematerializeSink(observer: observer, cancel: cancel) 48 | let subscription = self.source.subscribe(sink) 49 | return (sink: sink, subscription: subscription) 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/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 | EmptyProducer() 19 | } 20 | } 21 | 22 | final private class EmptyProducer: Producer { 23 | override func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 24 | observer.on(.completed) 25 | return Disposables.create() 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observables/Error.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Error.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 observable sequence that terminates with an `error`. 12 | 13 | - seealso: [throw operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html) 14 | 15 | - returns: The observable sequence that terminates with specified error. 16 | */ 17 | public static func error(_ error: Swift.Error) -> Observable { 18 | ErrorProducer(error: error) 19 | } 20 | } 21 | 22 | final private class ErrorProducer: Producer { 23 | private let error: Swift.Error 24 | 25 | init(error: Swift.Error) { 26 | self.error = error 27 | } 28 | 29 | override func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 30 | observer.on(.error(self.error)) 31 | return Disposables.create() 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observables/First.swift: -------------------------------------------------------------------------------- 1 | // 2 | // First.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 7/31/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | private final class FirstSink : Sink, ObserverType where Observer.Element == Element? { 10 | typealias Parent = First 11 | 12 | func on(_ event: Event) { 13 | switch event { 14 | case .next(let value): 15 | self.forwardOn(.next(value)) 16 | self.forwardOn(.completed) 17 | self.dispose() 18 | case .error(let error): 19 | self.forwardOn(.error(error)) 20 | self.dispose() 21 | case .completed: 22 | self.forwardOn(.next(nil)) 23 | self.forwardOn(.completed) 24 | self.dispose() 25 | } 26 | } 27 | } 28 | 29 | final class First: Producer { 30 | private let source: Observable 31 | 32 | init(source: Observable) { 33 | self.source = source 34 | } 35 | 36 | override func run(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element? { 37 | let sink = FirstSink(observer: observer, cancel: cancel) 38 | let subscription = self.source.subscribe(sink) 39 | return (sink: sink, subscription: subscription) 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observables/Materialize.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Materialize.swift 3 | // RxSwift 4 | // 5 | // Created by sergdort on 08/03/2017. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | extension ObservableType { 10 | /** 11 | Convert any Observable into an Observable of its events. 12 | - seealso: [materialize operator on reactivex.io](http://reactivex.io/documentation/operators/materialize-dematerialize.html) 13 | - returns: An observable sequence that wraps events in an Event. The returned Observable never errors, but it does complete after observing all of the events of the underlying Observable. 14 | */ 15 | public func materialize() -> Observable> { 16 | Materialize(source: self.asObservable()) 17 | } 18 | } 19 | 20 | private final class MaterializeSink: Sink, ObserverType where Observer.Element == Event { 21 | 22 | func on(_ event: Event) { 23 | self.forwardOn(.next(event)) 24 | if event.isStopEvent { 25 | self.forwardOn(.completed) 26 | self.dispose() 27 | } 28 | } 29 | } 30 | 31 | final private class Materialize: Producer> { 32 | private let source: Observable 33 | 34 | init(source: Observable) { 35 | self.source = source 36 | } 37 | 38 | override func run(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element { 39 | let sink = MaterializeSink(observer: observer, cancel: cancel) 40 | let subscription = self.source.subscribe(sink) 41 | 42 | return (sink: sink, subscription: subscription) 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/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 | NeverProducer() 20 | } 21 | } 22 | 23 | final private class NeverProducer: Producer { 24 | override func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 25 | Disposables.create() 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observables/Sink.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Sink.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | class Sink: Disposable { 10 | fileprivate let observer: Observer 11 | fileprivate let cancel: Cancelable 12 | private let disposed = AtomicInt(0) 13 | 14 | #if DEBUG 15 | private let synchronizationTracker = SynchronizationTracker() 16 | #endif 17 | 18 | init(observer: Observer, cancel: Cancelable) { 19 | #if TRACE_RESOURCES 20 | _ = Resources.incrementTotal() 21 | #endif 22 | self.observer = observer 23 | self.cancel = cancel 24 | } 25 | 26 | final func forwardOn(_ event: Event) { 27 | #if DEBUG 28 | self.synchronizationTracker.register(synchronizationErrorMessage: .default) 29 | defer { self.synchronizationTracker.unregister() } 30 | #endif 31 | if isFlagSet(self.disposed, 1) { 32 | return 33 | } 34 | self.observer.on(event) 35 | } 36 | 37 | final func forwarder() -> SinkForward { 38 | SinkForward(forward: self) 39 | } 40 | 41 | final var isDisposed: Bool { 42 | isFlagSet(self.disposed, 1) 43 | } 44 | 45 | func dispose() { 46 | fetchOr(self.disposed, 1) 47 | self.cancel.dispose() 48 | } 49 | 50 | deinit { 51 | #if TRACE_RESOURCES 52 | _ = Resources.decrementTotal() 53 | #endif 54 | } 55 | } 56 | 57 | final class SinkForward: ObserverType { 58 | typealias Element = Observer.Element 59 | 60 | private let forward: Sink 61 | 62 | init(forward: Sink) { 63 | self.forward = forward 64 | } 65 | 66 | final func on(_ event: Event) { 67 | switch event { 68 | case .next: 69 | self.forward.observer.on(event) 70 | case .error, .completed: 71 | self.forward.observer.on(event) 72 | self.forward.cancel.dispose() 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observables/StartWith.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StartWith.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 4/6/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | extension ObservableType { 10 | 11 | /** 12 | Prepends a sequence of values to an observable sequence. 13 | 14 | - seealso: [startWith operator on reactivex.io](http://reactivex.io/documentation/operators/startwith.html) 15 | 16 | - parameter elements: Elements to prepend to the specified sequence. 17 | - returns: The source sequence prepended with the specified values. 18 | */ 19 | public func startWith(_ elements: Element ...) 20 | -> Observable { 21 | return StartWith(source: self.asObservable(), elements: elements) 22 | } 23 | } 24 | 25 | final private class StartWith: Producer { 26 | let elements: [Element] 27 | let source: Observable 28 | 29 | init(source: Observable, elements: [Element]) { 30 | self.source = source 31 | self.elements = elements 32 | super.init() 33 | } 34 | 35 | override func run(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element { 36 | for e in self.elements { 37 | observer.on(.next(e)) 38 | } 39 | 40 | return (sink: Disposables.create(), subscription: self.source.subscribe(observer)) 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/ObserverType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObserverType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Supports push-style iteration over an observable sequence. 10 | public protocol ObserverType { 11 | /// The type of elements in sequence that observer can observe. 12 | associatedtype Element 13 | 14 | /// Notify observer about sequence event. 15 | /// 16 | /// - parameter event: Event that occurred. 17 | func on(_ event: Event) 18 | } 19 | 20 | /// Convenience API extensions to provide alternate next, error, completed events 21 | extension ObserverType { 22 | 23 | /// Convenience method equivalent to `on(.next(element: Element))` 24 | /// 25 | /// - parameter element: Next element to send to observer(s) 26 | public func onNext(_ element: Element) { 27 | self.on(.next(element)) 28 | } 29 | 30 | /// Convenience method equivalent to `on(.completed)` 31 | public func onCompleted() { 32 | self.on(.completed) 33 | } 34 | 35 | /// Convenience method equivalent to `on(.error(Swift.Error))` 36 | /// - parameter error: Swift.Error to send to observer(s) 37 | public func onError(_ error: Swift.Error) { 38 | self.on(.error(error)) 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observers/AnonymousObserver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnonymousObserver.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | final class AnonymousObserver: ObserverBase { 10 | typealias EventHandler = (Event) -> Void 11 | 12 | private let eventHandler : EventHandler 13 | 14 | init(_ eventHandler: @escaping EventHandler) { 15 | #if TRACE_RESOURCES 16 | _ = Resources.incrementTotal() 17 | #endif 18 | self.eventHandler = eventHandler 19 | } 20 | 21 | override func onCore(_ event: Event) { 22 | self.eventHandler(event) 23 | } 24 | 25 | #if TRACE_RESOURCES 26 | deinit { 27 | _ = Resources.decrementTotal() 28 | } 29 | #endif 30 | } 31 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observers/ObserverBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObserverBase.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/15/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | class ObserverBase : Disposable, ObserverType { 10 | private let isStopped = AtomicInt(0) 11 | 12 | func on(_ event: Event) { 13 | switch event { 14 | case .next: 15 | if load(self.isStopped) == 0 { 16 | self.onCore(event) 17 | } 18 | case .error, .completed: 19 | if fetchOr(self.isStopped, 1) == 0 { 20 | self.onCore(event) 21 | } 22 | } 23 | } 24 | 25 | func onCore(_ event: Event) { 26 | rxAbstractMethod() 27 | } 28 | 29 | func dispose() { 30 | fetchOr(self.isStopped, 1) 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/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 | #if os(Linux) 10 | /// As Swift 5 was released, A patch to `Thread` for Linux 11 | /// changed `threadDictionary` to a `NSMutableDictionary` instead of 12 | /// a `Dictionary`: https://github.com/apple/swift-corelibs-foundation/pull/1762/files 13 | /// 14 | /// This means that on Linux specifically, `RxMutableBox` must be a `NSObject` 15 | /// or it won't be possible to store it in `Thread.threadDictionary`. 16 | /// 17 | /// For more information, read the discussion at: 18 | /// https://github.com/ReactiveX/RxSwift/issues/1911#issuecomment-479723298 19 | import Foundation 20 | 21 | /// Creates mutable reference wrapper for any type. 22 | final class RxMutableBox: NSObject { 23 | /// Wrapped value 24 | var value: T 25 | 26 | /// Creates reference wrapper for `value`. 27 | /// 28 | /// - parameter value: Value to wrap. 29 | init (_ value: T) { 30 | self.value = value 31 | } 32 | } 33 | #else 34 | /// Creates mutable reference wrapper for any type. 35 | final class RxMutableBox: CustomDebugStringConvertible { 36 | /// Wrapped value 37 | var value: T 38 | 39 | /// Creates reference wrapper for `value`. 40 | /// 41 | /// - parameter value: Value to wrap. 42 | init (_ value: T) { 43 | self.value = value 44 | } 45 | } 46 | 47 | extension RxMutableBox { 48 | /// - returns: Box description. 49 | var debugDescription: String { 50 | "MutatingBox(\(self.value))" 51 | } 52 | } 53 | #endif 54 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Schedulers/HistoricalScheduler.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HistoricalScheduler.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 12/27/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Provides a virtual time scheduler that uses `Date` for absolute time and `TimeInterval` for relative time. 12 | public class HistoricalScheduler : VirtualTimeScheduler { 13 | 14 | /** 15 | Creates a new historical scheduler with initial clock value. 16 | 17 | - parameter initialClock: Initial value for virtual clock. 18 | */ 19 | public init(initialClock: RxTime = Date(timeIntervalSince1970: 0)) { 20 | super.init(initialClock: initialClock, converter: HistoricalSchedulerTimeConverter()) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableScheduledItem.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | struct InvocableScheduledItem : InvocableType { 10 | 11 | let invocable: I 12 | let state: I.Value 13 | 14 | init(invocable: I, state: I.Value) { 15 | self.invocable = invocable 16 | self.state = state 17 | } 18 | 19 | func invoke() { 20 | self.invocable.invoke(self.state) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/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 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledItem.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 9/2/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | struct ScheduledItem 10 | : ScheduledItemType 11 | , InvocableType { 12 | typealias Action = (T) -> Disposable 13 | 14 | private let action: Action 15 | private let state: T 16 | 17 | private let disposable = SingleAssignmentDisposable() 18 | 19 | var isDisposed: Bool { 20 | self.disposable.isDisposed 21 | } 22 | 23 | init(action: @escaping Action, state: T) { 24 | self.action = action 25 | self.state = state 26 | } 27 | 28 | func invoke() { 29 | self.disposable.setDisposable(self.action(self.state)) 30 | } 31 | 32 | func dispose() { 33 | self.disposable.dispose() 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/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 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Subjects/SubjectType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubjectType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/1/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents an object that is both an observable sequence as well as an observer. 10 | public protocol SubjectType : ObservableType { 11 | /// The type of the observer that represents this subject. 12 | /// 13 | /// Usually this type is type of subject itself, but it doesn't have to be. 14 | associatedtype Observer: ObserverType 15 | 16 | /// Returns observer interface for subject. 17 | /// 18 | /// - returns: Observer interface for subject. 19 | func asObserver() -> Observer 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/SwiftSupport/SwiftSupport.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SwiftSupport.swift 3 | // RxSwift 4 | // 5 | // Created by Volodymyr Gorbenko on 3/6/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | typealias IntMax = Int64 12 | public typealias RxAbstractInteger = FixedWidthInteger 13 | 14 | extension SignedInteger { 15 | func toIntMax() -> IntMax { 16 | IntMax(self) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Traits/Infallible/Infallible+CombineLatest+Collection.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Infallible+CombineLatest+Collection.swift 3 | // RxSwift 4 | // 5 | // Created by Hal Lee on 4/11/23. 6 | // Copyright © 2023 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | extension InfallibleType { 12 | /** 13 | Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. 14 | 15 | - seealso: [combinelatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html) 16 | 17 | - parameter resultSelector: Function to invoke whenever any of the sources produces an element. 18 | - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function. 19 | */ 20 | public static func combineLatest(_ collection: Collection, resultSelector: @escaping ([Collection.Element.Element]) throws -> Element) -> Infallible 21 | where Collection.Element: InfallibleType { 22 | Infallible(CombineLatestCollectionType(sources: collection, resultSelector: resultSelector)) 23 | } 24 | 25 | /** 26 | Merges the specified observable sequences into one observable sequence whenever any of the observable sequences produces an element. 27 | 28 | - seealso: [combinelatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html) 29 | 30 | - returns: An observable sequence containing the result of combining elements of the sources. 31 | */ 32 | public static func combineLatest(_ collection: Collection) -> Infallible<[Element]> 33 | where Collection.Element: InfallibleType, Collection.Element.Element == Element { 34 | Infallible(CombineLatestCollectionType(sources: collection) { $0 }) 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Traits/Infallible/Infallible+Concurrency.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Infallible+Concurrency.swift 3 | // RxSwift 4 | // 5 | // Created by Shai Mishali on 22/09/2021. 6 | // Copyright © 2021 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if swift(>=5.6) && canImport(_Concurrency) && !os(Linux) 10 | // MARK: - Infallible 11 | @available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *) 12 | public extension InfallibleType { 13 | /// Allows iterating over the values of an Infallible 14 | /// asynchronously via Swift's concurrency features (`async/await`) 15 | /// 16 | /// A sample usage would look like so: 17 | /// 18 | /// ```swift 19 | /// for await value in observable.values { 20 | /// // Handle emitted values 21 | /// } 22 | /// ``` 23 | var values: AsyncStream { 24 | AsyncStream { continuation in 25 | let disposable = subscribe( 26 | onNext: { value in continuation.yield(value) }, 27 | onCompleted: { continuation.finish() } 28 | ) 29 | continuation.onTermination = { @Sendable termination in 30 | if termination == .cancelled { 31 | disposable.dispose() 32 | } 33 | } 34 | } 35 | } 36 | } 37 | #endif 38 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Traits/Infallible/Infallible+Create.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Infallible+Create.swift 3 | // RxSwift 4 | // 5 | // Created by Shai Mishali on 27/08/2020. 6 | // Copyright © 2020 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public enum InfallibleEvent { 12 | /// Next element is produced. 13 | case next(Element) 14 | 15 | /// Sequence completed successfully. 16 | case completed 17 | } 18 | 19 | extension Infallible { 20 | public typealias InfallibleObserver = (InfallibleEvent) -> Void 21 | 22 | /** 23 | Creates an observable sequence from a specified subscribe method implementation. 24 | 25 | - seealso: [create operator on reactivex.io](http://reactivex.io/documentation/operators/create.html) 26 | 27 | - parameter subscribe: Implementation of the resulting observable sequence's `subscribe` method. 28 | - returns: The observable sequence with the specified implementation for the `subscribe` method. 29 | */ 30 | public static func create(subscribe: @escaping (@escaping InfallibleObserver) -> Disposable) -> Infallible { 31 | let source = Observable.create { observer in 32 | subscribe { event in 33 | switch event { 34 | case .next(let element): 35 | observer.onNext(element) 36 | case .completed: 37 | observer.onCompleted() 38 | } 39 | } 40 | } 41 | 42 | return Infallible(source) 43 | } 44 | } 45 | 46 | extension InfallibleEvent: EventConvertible { 47 | public var event: Event { 48 | switch self { 49 | case let .next(element): 50 | return .next(element) 51 | case .completed: 52 | return .completed 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Traits/Infallible/Infallible+Debug.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Infallible+Debug.swift 3 | // RxSwift 4 | // 5 | // Created by Marcelo Fabri on 11/05/2023. 6 | // Copyright © 2023 RxSwift. All rights reserved. 7 | // 8 | 9 | extension InfallibleType { 10 | /** 11 | Prints received events for all observers on standard output. 12 | 13 | - seealso: [do operator on reactivex.io](http://reactivex.io/documentation/operators/do.html) 14 | 15 | - parameter identifier: Identifier that is printed together with event description to standard output. 16 | - parameter trimOutput: Should output be trimmed to max 40 characters. 17 | - returns: An Infallible sequence whose events are printed to standard output. 18 | */ 19 | public func debug(_ identifier: String? = nil, trimOutput: Bool = false, file: String = #file, line: UInt = #line, function: String = #function) 20 | -> Infallible { 21 | Infallible( 22 | asObservable() 23 | .debug(identifier, trimOutput: trimOutput, file: file, line: line, function: function) 24 | ) 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Traits/Infallible/ObservableConvertibleType+Infallible.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObservableConvertibleType+Infallible.swift 3 | // RxSwift 4 | // 5 | // Created by Shai Mishali on 27/08/2020. 6 | // Copyright © 2020 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | public extension ObservableConvertibleType { 10 | /// Convert to an `Infallible` 11 | /// 12 | /// - returns: `Infallible` 13 | func asInfallible(onErrorJustReturn element: Element) -> Infallible { 14 | Infallible(self.asObservable().catchAndReturn(element)) 15 | } 16 | 17 | /// Convert to an `Infallible` 18 | /// 19 | /// - parameter infallible: Fall back to this provided infallible on error 20 | /// 21 | /// 22 | /// - returns: `Infallible` 23 | func asInfallible(onErrorFallbackTo infallible: Infallible) -> Infallible { 24 | Infallible(self.asObservable().catch { _ in infallible.asObservable() }) 25 | } 26 | 27 | /// Convert to an `Infallible` 28 | /// 29 | /// - parameter onErrorRecover: Recover with the this infallible closure 30 | /// 31 | /// - returns: `Infallible` 32 | func asInfallible(onErrorRecover: @escaping (Swift.Error) -> Infallible) -> Infallible { 33 | Infallible(asObservable().catch { onErrorRecover($0).asObservable() }) 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxAppState_Example/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 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxAppState_Example/Pods-RxAppState_Example-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ${PODS_DEVELOPMENT_LANGUAGE} 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 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxAppState_Example/Pods-RxAppState_Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_RxAppState_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_RxAppState_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxAppState_Example/Pods-RxAppState_Example-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_RxAppState_ExampleVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_RxAppState_ExampleVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxAppState_Example/Pods-RxAppState_Example.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxAppState" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxAppState/RxAppState.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay/RxRelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" 6 | LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' 7 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 8 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 9 | OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "RxAppState" -framework "RxCocoa" -framework "RxRelay" -framework "RxSwift" 10 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 11 | PODS_BUILD_DIR = ${BUILD_DIR} 12 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 13 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 14 | PODS_ROOT = ${SRCROOT}/Pods 15 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 16 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxAppState_Example/Pods-RxAppState_Example.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_RxAppState_Example { 2 | umbrella header "Pods-RxAppState_Example-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxAppState_Example/Pods-RxAppState_Example.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxAppState" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxAppState/RxAppState.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay/RxRelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" 6 | LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' 7 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 8 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 9 | OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "RxAppState" -framework "RxCocoa" -framework "RxRelay" -framework "RxSwift" 10 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 11 | PODS_BUILD_DIR = ${BUILD_DIR} 12 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 13 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 14 | PODS_ROOT = ${SRCROOT}/Pods 15 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 16 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxAppState_ExampleTests/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 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxAppState_ExampleTests/Pods-RxAppState_ExampleTests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ${PODS_DEVELOPMENT_LANGUAGE} 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 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxAppState_ExampleTests/Pods-RxAppState_ExampleTests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | Generated by CocoaPods - https://cocoapods.org 4 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxAppState_ExampleTests/Pods-RxAppState_ExampleTests-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Generated by CocoaPods - https://cocoapods.org 18 | Title 19 | 20 | Type 21 | PSGroupSpecifier 22 | 23 | 24 | StringsTable 25 | Acknowledgements 26 | Title 27 | Acknowledgements 28 | 29 | 30 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxAppState_ExampleTests/Pods-RxAppState_ExampleTests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_RxAppState_ExampleTests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_RxAppState_ExampleTests 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxAppState_ExampleTests/Pods-RxAppState_ExampleTests-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_RxAppState_ExampleTestsVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_RxAppState_ExampleTestsVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxAppState_ExampleTests/Pods-RxAppState_ExampleTests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxAppState" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxAppState/RxAppState.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay/RxRelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "RxAppState" -framework "RxCocoa" -framework "RxRelay" -framework "RxSwift" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxAppState_ExampleTests/Pods-RxAppState_ExampleTests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_RxAppState_ExampleTests { 2 | umbrella header "Pods-RxAppState_ExampleTests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxAppState_ExampleTests/Pods-RxAppState_ExampleTests.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxAppState" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxAppState/RxAppState.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay/RxRelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "RxAppState" -framework "RxCocoa" -framework "RxRelay" -framework "RxSwift" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxAppState/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 | 1.5.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxAppState/RxAppState-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ${PODS_DEVELOPMENT_LANGUAGE} 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 | 1.8.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxAppState/RxAppState-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxAppState : NSObject 3 | @end 4 | @implementation PodsDummy_RxAppState 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxAppState/RxAppState-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxAppState/RxAppState-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double RxAppStateVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char RxAppStateVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxAppState/RxAppState.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxAppState 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 6 | OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "RxCocoa" -framework "RxSwift" 7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 11 | PODS_ROOT = ${SRCROOT} 12 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 13 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 14 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 15 | SKIP_INSTALL = YES 16 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxAppState/RxAppState.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxAppState { 2 | umbrella header "RxAppState-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxAppState/RxAppState.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxAppState 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 6 | OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "RxCocoa" -framework "RxSwift" 7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 11 | PODS_ROOT = ${SRCROOT} 12 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 13 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 14 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 15 | SKIP_INSTALL = YES 16 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxAppState/RxAppState.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxAppState 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_LDFLAGS = $(inherited) -framework "Foundation" 5 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/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.4.2 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxCocoa/RxCocoa-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ${PODS_DEVELOPMENT_LANGUAGE} 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 6.6.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxCocoa/RxCocoa-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxCocoa : NSObject 3 | @end 4 | @implementation PodsDummy_RxCocoa 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxCocoa/RxCocoa-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxCocoa/RxCocoa-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "RxCocoaRuntime.h" 14 | #import "_RX.h" 15 | #import "_RXDelegateProxy.h" 16 | #import "_RXKVOObserver.h" 17 | #import "_RXObjCRuntime.h" 18 | #import "RxCocoa.h" 19 | 20 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 21 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 22 | 23 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxCocoa/RxCocoa.debug.xcconfig: -------------------------------------------------------------------------------- 1 | APPLICATION_EXTENSION_API_ONLY = YES 2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa 4 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 6 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 7 | OTHER_LDFLAGS = $(inherited) -framework "RxRelay" -framework "RxSwift" 8 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings 9 | PODS_BUILD_DIR = ${BUILD_DIR} 10 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 12 | PODS_ROOT = ${SRCROOT} 13 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxCocoa 14 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 15 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 16 | SKIP_INSTALL = YES 17 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 18 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxCocoa/RxCocoa.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxCocoa { 2 | umbrella header "RxCocoa-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxCocoa/RxCocoa.release.xcconfig: -------------------------------------------------------------------------------- 1 | APPLICATION_EXTENSION_API_ONLY = YES 2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa 4 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 6 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 7 | OTHER_LDFLAGS = $(inherited) -framework "RxRelay" -framework "RxSwift" 8 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings 9 | PODS_BUILD_DIR = ${BUILD_DIR} 10 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 12 | PODS_ROOT = ${SRCROOT} 13 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxCocoa 14 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 15 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 16 | SKIP_INSTALL = YES 17 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 18 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxCocoa/RxCocoa.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxCocoa 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxRelay/RxRelay-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ${PODS_DEVELOPMENT_LANGUAGE} 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 6.6.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxRelay/RxRelay-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxRelay : NSObject 3 | @end 4 | @implementation PodsDummy_RxRelay 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxRelay/RxRelay-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxRelay/RxRelay-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double RxRelayVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char RxRelayVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxRelay/RxRelay.debug.xcconfig: -------------------------------------------------------------------------------- 1 | APPLICATION_EXTENSION_API_ONLY = YES 2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxRelay 4 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 6 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 7 | OTHER_LDFLAGS = $(inherited) -framework "RxSwift" 8 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 9 | PODS_BUILD_DIR = ${BUILD_DIR} 10 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 12 | PODS_ROOT = ${SRCROOT} 13 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxRelay 14 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 15 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 16 | SKIP_INSTALL = YES 17 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 18 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxRelay/RxRelay.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxRelay { 2 | umbrella header "RxRelay-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxRelay/RxRelay.release.xcconfig: -------------------------------------------------------------------------------- 1 | APPLICATION_EXTENSION_API_ONLY = YES 2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxRelay 4 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 6 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 7 | OTHER_LDFLAGS = $(inherited) -framework "RxSwift" 8 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 9 | PODS_BUILD_DIR = ${BUILD_DIR} 10 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 12 | PODS_ROOT = ${SRCROOT} 13 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxRelay 14 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 15 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 16 | SKIP_INSTALL = YES 17 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 18 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxRelay/RxRelay.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxRelay 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxRelay 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/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.4.2 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxSwift/RxSwift-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ${PODS_DEVELOPMENT_LANGUAGE} 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 6.6.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxSwift/RxSwift-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxSwift : NSObject 3 | @end 4 | @implementation PodsDummy_RxSwift 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxSwift/RxSwift-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxSwift/RxSwift-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double RxSwiftVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char RxSwiftVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxSwift/RxSwift.debug.xcconfig: -------------------------------------------------------------------------------- 1 | APPLICATION_EXTENSION_API_ONLY = YES 2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxSwift 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 6 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 10 | PODS_ROOT = ${SRCROOT} 11 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxSwift 12 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 13 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 14 | SKIP_INSTALL = YES 15 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 16 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxSwift/RxSwift.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxSwift { 2 | umbrella header "RxSwift-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxSwift/RxSwift.release.xcconfig: -------------------------------------------------------------------------------- 1 | APPLICATION_EXTENSION_API_ONLY = YES 2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxSwift 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 6 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 10 | PODS_ROOT = ${SRCROOT} 11 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxSwift 12 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 13 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 14 | SKIP_INSTALL = YES 15 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 16 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxSwift/RxSwift.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxSwift 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxSwift 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 11 | -------------------------------------------------------------------------------- /Example/RxAppState.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/RxAppState.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/RxAppState.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/RxAppState.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/RxAppState/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // RxAppState 4 | // 5 | // Created by Jörn Schoppe on 03/06/2016. 6 | // Copyright (c) 2016 Jörn Schoppe. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import RxSwift 11 | import RxAppState 12 | 13 | class AppDelegate: UIResponder, UIApplicationDelegate { 14 | 15 | var window: UIWindow? 16 | 17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 18 | // Override point for customization after application launch. 19 | return true 20 | } 21 | 22 | // Looking for all the UIApplicationDelegate methods? 23 | // With RxAppState you don't need them anymore. 24 | // Have a look at ViewController to see how you can 25 | // handle the changes in your app's state. 26 | 27 | } 28 | -------------------------------------------------------------------------------- /Example/RxAppState/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "60x60", 35 | "idiom" : "iphone", 36 | "filename" : "logo_pd@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "60x60", 41 | "idiom" : "iphone", 42 | "filename" : "logo_pd@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "1024x1024", 47 | "idiom" : "ios-marketing", 48 | "filename" : "logo_pd_large.png", 49 | "scale" : "1x" 50 | } 51 | ], 52 | "info" : { 53 | "version" : 1, 54 | "author" : "xcode" 55 | } 56 | } -------------------------------------------------------------------------------- /Example/RxAppState/Images.xcassets/AppIcon.appiconset/logo_pd@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pixeldock/RxAppState/1c3f32433b4ffa431671b21e46b98af0d875081e/Example/RxAppState/Images.xcassets/AppIcon.appiconset/logo_pd@2x.png -------------------------------------------------------------------------------- /Example/RxAppState/Images.xcassets/AppIcon.appiconset/logo_pd@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pixeldock/RxAppState/1c3f32433b4ffa431671b21e46b98af0d875081e/Example/RxAppState/Images.xcassets/AppIcon.appiconset/logo_pd@3x.png -------------------------------------------------------------------------------- /Example/RxAppState/Images.xcassets/AppIcon.appiconset/logo_pd_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pixeldock/RxAppState/1c3f32433b4ffa431671b21e46b98af0d875081e/Example/RxAppState/Images.xcassets/AppIcon.appiconset/logo_pd_large.png -------------------------------------------------------------------------------- /Example/RxAppState/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Example/RxAppState/Images.xcassets/PDIcon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "launch@1x.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "launch@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "launch@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Example/RxAppState/Images.xcassets/PDIcon.imageset/launch@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pixeldock/RxAppState/1c3f32433b4ffa431671b21e46b98af0d875081e/Example/RxAppState/Images.xcassets/PDIcon.imageset/launch@1x.png -------------------------------------------------------------------------------- /Example/RxAppState/Images.xcassets/PDIcon.imageset/launch@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pixeldock/RxAppState/1c3f32433b4ffa431671b21e46b98af0d875081e/Example/RxAppState/Images.xcassets/PDIcon.imageset/launch@2x.png -------------------------------------------------------------------------------- /Example/RxAppState/Images.xcassets/PDIcon.imageset/launch@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pixeldock/RxAppState/1c3f32433b4ffa431671b21e46b98af0d875081e/Example/RxAppState/Images.xcassets/PDIcon.imageset/launch@3x.png -------------------------------------------------------------------------------- /Example/RxAppState/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | RxAppState 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSRequiresIPhoneOS 26 | 27 | UILaunchStoryboardName 28 | LaunchScreen 29 | UIMainStoryboardFile 30 | Main 31 | UIRequiredDeviceCapabilities 32 | 33 | armv7 34 | 35 | UISupportedInterfaceOrientations 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationLandscapeLeft 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /Example/RxAppState/TestingAppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TestingAppDelegate.swift 3 | // RxAppState 4 | // 5 | // Created by Jörn Schoppe on 19.03.16. 6 | // Copyright © 2016 CocoaPods. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class TestingAppDelegate: UIResponder, UIApplicationDelegate { 12 | var window: UIWindow? 13 | 14 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 15 | window = UIWindow(frame: UIScreen.main.bounds) 16 | window?.rootViewController = UIViewController() 17 | window?.makeKeyAndVisible() 18 | 19 | return true 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /Example/RxAppState/main.swift: -------------------------------------------------------------------------------- 1 | // 2 | // main.swift 3 | // RxAppState 4 | // 5 | // Created by Jörn Schoppe on 19.03.16. 6 | // Copyright © 2016 CocoaPods. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | let isRunningTests = NSClassFromString("XCTestCase") != nil 13 | 14 | if isRunningTests { 15 | UIApplicationMain( 16 | CommandLine.argc, 17 | CommandLine.unsafeArgv, 18 | nil, 19 | NSStringFromClass(TestingAppDelegate.self) 20 | ) 21 | } else { 22 | UIApplicationMain( 23 | CommandLine.argc, 24 | CommandLine.unsafeArgv, 25 | nil, 26 | NSStringFromClass(AppDelegate.self) 27 | ) 28 | } 29 | -------------------------------------------------------------------------------- /Example/RxAppState_ExampleTests/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 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2021 Jörn Schoppe 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version:5.2 2 | // The swift-tools-version declares the minimum version of Swift required to build this package. 3 | 4 | import PackageDescription 5 | let package = Package( 6 | name: "RxAppState", 7 | platforms: [ 8 | .iOS(.v13) 9 | ], 10 | products: [ 11 | .library( 12 | name: "RxAppState", 13 | targets: ["RxAppState"]) 14 | ], 15 | dependencies: [ 16 | .package(url: "https://github.com/ReactiveX/RxSwift.git", .upToNextMajor(from: "6.2.0")) 17 | ], 18 | targets: [ 19 | .target( 20 | name: "RxAppState", 21 | dependencies: [ 22 | "RxSwift", 23 | .product(name: "RxCocoa", package: "RxSwift") 24 | ], 25 | path: "Pod/Classes" 26 | ) 27 | ], 28 | swiftLanguageVersions: [.v5] 29 | ) 30 | -------------------------------------------------------------------------------- /Pod/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pixeldock/RxAppState/1c3f32433b4ffa431671b21e46b98af0d875081e/Pod/Assets/.gitkeep -------------------------------------------------------------------------------- /Pod/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pixeldock/RxAppState/1c3f32433b4ffa431671b21e46b98af0d875081e/Pod/Classes/.gitkeep -------------------------------------------------------------------------------- /PrivacyInfo.xcprivacy: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSPrivacyAccessedAPITypes 6 | 7 | 8 | NSPrivacyAccessedAPIType 9 | NSPrivacyAccessedAPICategoryUserDefaults 10 | NSPrivacyAccessedAPITypeReasons 11 | 12 | CA92.1 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /RxAppState.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = "RxAppState" 3 | s.version = "1.8.1" 4 | s.swift_versions = ['5.2'] 5 | s.summary = "Handy RxSwift extensions to observe your app's state and view controllers' view-related notifications" 6 | s.description = <<-DESC 7 | Transform the state of your App and UIViewController's view-related notifications into RxSwift Observables. Including convenience Observables for common scenarios. 8 | DESC 9 | s.homepage = "https://github.com/pixeldock/RxAppState" 10 | s.license = 'MIT' 11 | s.author = { "Jörn Schoppe" => "joern@pixeldock.com" } 12 | s.source = { :git => "https://github.com/pixeldock/RxAppState.git", :tag => s.version.to_s } 13 | #s.social_media_url = 'https://twitter.com/pixeldock' 14 | 15 | s.ios.deployment_target = '13.0' 16 | s.tvos.deployment_target = '13.0' 17 | s.requires_arc = true 18 | 19 | s.source_files = 'Pod/Classes/**/*' 20 | 21 | s.frameworks = 'Foundation' 22 | s.dependency 'RxSwift', '~> 6.2' 23 | s.dependency 'RxCocoa', '~> 6.2' 24 | 25 | end 26 | -------------------------------------------------------------------------------- /RxAppState.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /RxAppState.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /RxAppState/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 | 1.0 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /RxAppState/RxAppState.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxAppState.h 3 | // RxAppState 4 | // 5 | // Created by Paul Dziwoki on 22.06.17. 6 | // Copyright © 2017 RxAppState. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for RxAppState. 12 | FOUNDATION_EXPORT double RxAppStateVersionNumber; 13 | 14 | //! Project version string for RxAppState. 15 | FOUNDATION_EXPORT const unsigned char RxAppStateVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj -------------------------------------------------------------------------------- /carthage_build.sh: -------------------------------------------------------------------------------- 1 | carthage update --platform iOS --------------------------------------------------------------------------------