gitextract_kt6_0xq_/ ├── .ci/ │ └── buildkite/ │ ├── pipeline.sh │ └── upload ├── .github/ │ ├── CONTRIBUTING.md │ └── workflows/ │ └── ci.yml ├── .gitignore ├── .jazzy.json ├── .ruby-gemset ├── .ruby-version ├── .swiftlint.yml ├── .travis.yml ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── Documentation/ │ ├── Guides/ │ │ ├── Advanced Topics/ │ │ │ ├── Advanced Result Injection.md │ │ │ └── Mutual Exclusion.md │ │ ├── Basic Features/ │ │ │ ├── Conditions.md │ │ │ ├── Groups.md │ │ │ ├── Observers.md │ │ │ └── Result Injection.md │ │ ├── Cancellation/ │ │ │ ├── Handling Cancellation.md │ │ │ ├── In Asynchronous Procedures.md │ │ │ └── In Synchronous Procedures.md │ │ ├── Getting Started/ │ │ │ ├── Dependencies.md │ │ │ ├── Installing ProcedureKit.md │ │ │ ├── MyFirstProcedure.md │ │ │ └── What is ProcedureKit?.md │ │ └── Migration/ │ │ ├── From NSOperation.md │ │ ├── From PSOperations.md │ │ ├── From WWDC2015.md │ │ └── From v3 Operations.md │ └── Themes/ │ └── fullwidth_pk/ │ ├── assets/ │ │ ├── css/ │ │ │ ├── highlight.css.scss │ │ │ └── jazzy.css.scss │ │ └── js/ │ │ ├── jazzy.js │ │ ├── jazzy.search.js │ │ └── typeahead.jquery.js │ └── templates/ │ ├── doc.mustache │ ├── footer.mustache │ ├── header.mustache │ ├── nav.mustache │ ├── parameter.mustache │ ├── task.mustache │ └── tasks.mustache ├── Gemfile ├── Integrations/ │ ├── CocoaPods/ │ │ ├── Podfile │ │ ├── TryProcedureKit/ │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets/ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ └── Contents.json │ │ │ ├── Base.lproj/ │ │ │ │ └── Main.storyboard │ │ │ ├── Info.plist │ │ │ └── ViewController.swift │ │ ├── TryProcedureKit iOS/ │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets/ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ └── Contents.json │ │ │ ├── Base.lproj/ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ └── Main.storyboard │ │ │ ├── Info.plist │ │ │ └── ViewController.swift │ │ ├── TryProcedureKit iOSTests/ │ │ │ ├── Info.plist │ │ │ └── TryProcedureKit_iOSTests.swift │ │ ├── TryProcedureKit.xcodeproj/ │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace/ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata/ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcshareddata/ │ │ │ └── xcschemes/ │ │ │ └── TryProcedureKit.xcscheme │ │ ├── TryProcedureKit.xcworkspace/ │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata/ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── TryProcedureKitTests/ │ │ ├── Info.plist │ │ └── TryProcedureKitTests.swift │ └── SPM/ │ ├── .gitignore │ ├── Package.swift │ ├── Sources/ │ │ └── SPM-Integration-Check/ │ │ └── main.swift │ └── Tests/ │ └── SPM-Integration-CheckTests/ │ └── SPM-Integration-CheckTests.swift ├── LICENSE ├── Package.swift ├── Presentations/ │ ├── 20160607 danthorpe @ CocoaHeads Stockholm/ │ │ ├── Dependencies Example.graffle │ │ ├── NSOperation Lifecycle.graffle │ │ ├── Operation Observers.graffle │ │ ├── Operation State Machine 1.graffle │ │ └── Operations Schedule.graffle │ ├── 20160714 danthorpe @ Sky UK iOS Community/ │ │ ├── Practical use case.graffle │ │ └── Result Injection.graffle │ └── README.md ├── ProcedureKit.podspec ├── ProcedureKit.xcodeproj/ │ ├── project.pbxproj │ ├── project.xcworkspace/ │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata/ │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings │ └── xcshareddata/ │ ├── xcbaselines/ │ │ └── 653CA0171D60A34E0070B7A2.xcbaseline/ │ │ ├── 6DA284CC-3922-4524-95E8-F180E4F487EF.plist │ │ ├── D985A880-E116-4CF0-97E0-2E8A8D0C0F69.plist │ │ └── Info.plist │ └── xcschemes/ │ ├── Mac.xcscheme │ ├── ProcedureKit.xcscheme │ ├── ProcedureKitCloud.xcscheme │ ├── ProcedureKitCoreData.xcscheme │ ├── ProcedureKitLocation.xcscheme │ ├── ProcedureKitMac.xcscheme │ ├── ProcedureKitMobile.xcscheme │ ├── ProcedureKitNetwork.xcscheme │ ├── ProcedureKitTV.xcscheme │ ├── Stress Tests.xcscheme │ ├── TestingProcedureKit.xcscheme │ ├── iOS.xcscheme │ └── tvOS.xcscheme ├── README.md ├── Sources/ │ ├── ProcedureKit/ │ │ ├── Any.swift │ │ ├── AnyObserver.swift │ │ ├── Batch.swift │ │ ├── Block.swift │ │ ├── BlockCondition.swift │ │ ├── BlockObservers.swift │ │ ├── Capability.swift │ │ ├── Collection+ProcedureKit.swift │ │ ├── Composed.swift │ │ ├── Condition.swift │ │ ├── Decode.swift │ │ ├── Delay.swift │ │ ├── DispatchQueue+ProcedureKit.swift │ │ ├── Encode.swift │ │ ├── Errors.swift │ │ ├── Filter.swift │ │ ├── Group.swift │ │ ├── Identity.swift │ │ ├── IgnoreErrors.swift │ │ ├── Logging.swift │ │ ├── Map.swift │ │ ├── MutualExclusion.swift │ │ ├── NegatedCondition.swift │ │ ├── NetworkObserver.swift │ │ ├── NoFailedDependenciesCondition.swift │ │ ├── Operation+ProcedureKit.swift │ │ ├── PendingEvent.swift │ │ ├── Procedure.swift │ │ ├── ProcedureEventQueue.swift │ │ ├── ProcedureFuture.swift │ │ ├── ProcedureObserver.swift │ │ ├── ProcedureProcotol.swift │ │ ├── ProcedureQueue.swift │ │ ├── ProcedureResult.swift │ │ ├── Profiler.swift │ │ ├── Reachability.swift │ │ ├── Reduce.swift │ │ ├── Repeat.swift │ │ ├── Result.swift │ │ ├── Retry.swift │ │ ├── SignpostObserver.swift │ │ ├── SilentCondition.swift │ │ ├── Support.swift │ │ ├── TimeoutObserver.swift │ │ └── Transform.swift │ ├── ProcedureKitCloud/ │ │ ├── CKOperation.swift │ │ ├── CloudKit.swift │ │ ├── CloudKitCapability.swift │ │ ├── CloudKitError.swift │ │ ├── CloudKitSupport.swift │ │ ├── Database Operations/ │ │ │ ├── CKDatabaseOperation.swift │ │ │ ├── CKDiscoverAllUserIdentitiesOperation.swift │ │ │ ├── CKDiscoverUserIdentitiesOperation.swift │ │ │ └── CKModifyBadgeOperation.swift │ │ ├── Notification Operations/ │ │ │ ├── CKFetchNotificationChangesOperation.swift │ │ │ └── CKMarkNotificationsReadOperation.swift │ │ ├── Query Operations/ │ │ │ └── CKQueryOperation.swift │ │ ├── Record Operations/ │ │ │ ├── CKFetchDatabaseChangesOperation.swift │ │ │ ├── CKFetchRecordZoneChangesOperation.swift │ │ │ ├── CKFetchRecordZonesOperation.swift │ │ │ ├── CKFetchRecordsOperation.swift │ │ │ ├── CKModifyRecordZonesOperation.swift │ │ │ └── CKModifyRecordsOperation.swift │ │ ├── Share Operations/ │ │ │ ├── CKAcceptSharesOperation.swift │ │ │ ├── CKFetchShareMetadataOperation.swift │ │ │ └── CKFetchShareParticipantsOperation.swift │ │ └── Subscription Operations/ │ │ ├── CKFetchSubscriptionsOperation.swift │ │ └── CKModifySubscriptionsOperation.swift │ ├── ProcedureKitCoreData/ │ │ ├── CoreDataHelpers.swift │ │ ├── InsertManagedObjects.swift │ │ ├── LoadCoreData.swift │ │ ├── MakeFetchedResultController.swift │ │ ├── MakesBackgroundManagedObjectContext.swift │ │ ├── ProcessManagedObjectContext.swift │ │ └── SaveManagedObjectContext.swift │ ├── ProcedureKitInstruments/ │ │ └── ProcedureKitInstruments.instrpkg │ ├── ProcedureKitLocation/ │ │ ├── LocationCapability.swift │ │ ├── LocationSupport.swift │ │ ├── ReverseGeocode.swift │ │ ├── ReverseGeocodeUserLocation.swift │ │ └── UserLocation.swift │ ├── ProcedureKitMac/ │ │ └── Process.swift │ ├── ProcedureKitMobile/ │ │ ├── Alert.swift │ │ ├── BackgroundObserver.swift │ │ ├── NetworkObserver+Mobile.swift │ │ ├── UI.swift │ │ ├── UserConfirmation.swift │ │ └── ViewControllerContainment.swift │ ├── ProcedureKitNetwork/ │ │ ├── Network.swift │ │ ├── NetworkData.swift │ │ ├── NetworkDownload.swift │ │ ├── NetworkReachability.swift │ │ ├── NetworkSupport.swift │ │ └── NetworkUpload.swift │ └── TestingProcedureKit/ │ ├── CapabilityTestCase.swift │ ├── ConcurrencyTestCase.swift │ ├── GroupTestCase.swift │ ├── ProcedureKitTestCase.swift │ ├── QueueTestDelegate.swift │ ├── RepeatTestCase.swift │ ├── StressTestCase.swift │ ├── TestCondition.swift │ ├── TestProcedure.swift │ ├── TestableLogging.swift │ ├── TestableNetwork.swift │ ├── TestableNetworkReachability.swift │ └── XCTAsserts.swift ├── Supporting Files/ │ ├── Info.plist │ ├── ProcedureKit.h │ ├── ProcedureKit.xcconfig │ ├── ProcedureKitCloud.h │ ├── ProcedureKitCloud.xcconfig │ ├── ProcedureKitCoreData.h │ ├── ProcedureKitCoreData.xcconfig │ ├── ProcedureKitInstrument.xcconfig │ ├── ProcedureKitInstruments.xcconfig │ ├── ProcedureKitLocation.h │ ├── ProcedureKitLocation.xcconfig │ ├── ProcedureKitMac.h │ ├── ProcedureKitMac.xcconfig │ ├── ProcedureKitMobile.h │ ├── ProcedureKitMobile.xcconfig │ ├── ProcedureKitNetwork.h │ ├── ProcedureKitNetwork.xcconfig │ ├── ProcedureKitTV.h │ ├── ProcedureKitTV.xcconfig │ ├── TestingProcedureKit.h │ ├── TestingProcedureKit.xcconfig │ ├── Version.xcconfig │ └── Warnings.xcconfig ├── TestingProcedureKit.podspec └── Tests/ ├── Info.plist ├── ProcedureKitCloudTests/ │ ├── CKAcceptSharesOperationTests.swift │ ├── CKDatabaseOperationTests.swift │ ├── CKDiscoverAllUserIdentitiesOperationTests.swift │ ├── CKDiscoverUserIdentitiesOperationTests.swift │ ├── CKFetchAllChangesTests.swift │ ├── CKFetchDatabaseChangesOperationTests.swift │ ├── CKFetchNotificationChangesOperationTests.swift │ ├── CKFetchRecordZoneChangesOperationTests.swift │ ├── CKFetchRecordZonesOperationTests.swift │ ├── CKFetchRecordsOperationTests.swift │ ├── CKFetchShareMetadataOperationTests.swift │ ├── CKFetchShareParticipantsOperationTests.swift │ ├── CKFetchSubscriptionsOperationTests.swift │ ├── CKMarkNotificationsReadOperationTests.swift │ ├── CKModifyBadgeOperationTests.swift │ ├── CKModifyRecordZonesOperationTests.swift │ ├── CKModifyRecordsOperationTests.swift │ ├── CKModifySubscriptionsOperationTests.swift │ ├── CKOperationTests.swift │ ├── CKQueryOperationTests.swift │ ├── CloudKitCapabilityTests.swift │ ├── ProcedureKitCloudTests.swift │ └── TestableCloudKitContainer.swift ├── ProcedureKitCoreDataTests/ │ ├── InsertManagedObjectsProcedureTests.swift │ ├── LoadCoreDataProcedureTests.swift │ ├── MakeFetchedResultsControllerProcedureTests.swift │ ├── ProcedureKitCoreDataTests.swift │ ├── SaveManagedObjectContextProcedureTests.swift │ └── TestDataModel.xcdatamodeld/ │ └── TestDataModel.xcdatamodel/ │ └── contents ├── ProcedureKitLocationTests/ │ ├── LocationCapabilityTests.swift │ ├── ProcedureKitLocationTests.swift │ ├── ReverseGeocodeProcedureTests.swift │ ├── ReverseGeocodeUserLocationProcedureTests.swift │ ├── TestableLocationServices.swift │ └── UserLocationProcedureTests.swift ├── ProcedureKitMacTests/ │ ├── ProcedureKitMacTests.swift │ └── ProcessProcedureTests.swift ├── ProcedureKitMobileTests/ │ ├── AlertProcedureTests.swift │ ├── BackgroundObserverTests.swift │ ├── PresentationProcedureTests.swift │ ├── ProcedureKitMobileTests.swift │ ├── TestableUIApplication.swift │ └── UIProcedureTests.swift ├── ProcedureKitNetworkTests/ │ ├── NetworkDataProcedureTests.swift │ ├── NetworkDownloadProcedureTests.swift │ ├── NetworkProcedureTests.swift │ ├── NetworkReachabilityTests.swift │ ├── NetworkUploadProcedureTests.swift │ ├── ProcedureKitNetworkTests.swift │ └── URLTests.swift ├── ProcedureKitStressTests/ │ ├── BlockProcedureStressTests.swift │ ├── GroupStressTests.swift │ ├── ProcedureKitStressTests.swift │ ├── ProcedureStressTests.swift │ └── RepeatStressTests.swift ├── ProcedureKitTVTests/ │ └── ProcedureKitTVTests.swift └── ProcedureKitTests/ ├── AnyProcedureTests.swift ├── BatchTests.swift ├── BlockConditionTests.swift ├── BlockObserverTests.swift ├── BlockProcedureTests.swift ├── CancellationTests.swift ├── CapabilityTests.swift ├── ComposedProcedureTests.swift ├── ConditionTests.swift ├── DelayProcedureTests.swift ├── DispatchQueueExtensionsTests.swift ├── FilterProcedureTests.swift ├── FinishingTests.swift ├── GroupTests.swift ├── IgnoreErrorsProcedureTests.swift ├── JSONCodingTests.swift ├── KVONotificationTests.swift ├── LoggingTests.swift ├── MapProcedureTests.swift ├── MutualExclusivityTests.swift ├── NegatedConditionTests.swift ├── NetworkObserverTests.swift ├── NoFailedDependenciesConditionTests.swift ├── ProcedureKitErrorTests.swift ├── ProcedureKitTests.swift ├── ProcedureTests.swift ├── ProfilerTests.swift ├── ReachabilityTests.swift ├── ReduceProcedureTests.swift ├── RepeatProcedureTests.swift ├── ResultInjectionTests.swift ├── RetryProcedureTests.swift ├── SilentConditionTests.swift ├── TimeoutObserverTests.swift └── TransformProcedureTests.swift