From 79a092c838da032e0f74829c3b9c67e8d60ece3f Mon Sep 17 00:00:00 2001 From: Johannes Kreutz Date: Thu, 29 Sep 2022 11:10:39 +0200 Subject: [PATCH] Move from CocoaPods to Swift Package Manager --- JKDesFireReader.xcodeproj/project.pbxproj | 77 +- .../contents.xcworkspacedata | 2 +- .../xcshareddata/swiftpm/Package.resolved | 14 + .../xcschemes/JKDesFireReader.xcscheme | 2 +- .../contents.xcworkspacedata | 10 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - Podfile | 7 - Podfile.lock | 24 - Pods/Manifest.lock | 24 - Pods/Pods.xcodeproj/project.pbxproj | 812 ------------------ .../Sources/NSNotificationCenter+AnyPromise.h | 44 - .../Sources/NSNotificationCenter+AnyPromise.m | 18 - .../NSNotificationCenter+Promise.swift | 33 - .../Foundation/Sources/NSObject+Promise.swift | 57 -- .../Foundation/Sources/NSTask+AnyPromise.h | 53 -- .../Foundation/Sources/NSTask+AnyPromise.m | 59 -- .../Sources/NSURLSession+AnyPromise.h | 79 -- .../Sources/NSURLSession+AnyPromise.m | 113 --- .../Sources/NSURLSession+Promise.swift | 246 ------ .../Foundation/Sources/PMKFoundation.h | 3 - .../Foundation/Sources/Process+Promise.swift | 190 ---- .../Foundation/Sources/afterlife.swift | 26 - .../Extensions/UIKit/Sources/PMKUIKit.h | 8 - .../UIKit/Sources/UIView+AnyPromise.h | 80 -- .../UIKit/Sources/UIView+AnyPromise.m | 64 -- .../UIKit/Sources/UIView+Promise.swift | 115 --- .../Sources/UIViewController+AnyPromise.h | 71 -- .../Sources/UIViewController+AnyPromise.m | 140 --- .../UIViewPropertyAnimator+Promise.swift | 14 - Pods/PromiseKit/LICENSE | 20 - Pods/PromiseKit/README.md | 211 ----- Pods/PromiseKit/Sources/AnyPromise+Private.h | 32 - Pods/PromiseKit/Sources/AnyPromise.h | 308 ------- Pods/PromiseKit/Sources/AnyPromise.m | 179 ---- Pods/PromiseKit/Sources/AnyPromise.swift | 224 ----- Pods/PromiseKit/Sources/Box.swift | 101 --- Pods/PromiseKit/Sources/Catchable.swift | 256 ------ Pods/PromiseKit/Sources/Configuration.swift | 35 - .../Sources/CustomStringConvertible.swift | 44 - Pods/PromiseKit/Sources/Deprecations.swift | 93 -- Pods/PromiseKit/Sources/Error.swift | 111 --- Pods/PromiseKit/Sources/Guarantee.swift | 390 --------- Pods/PromiseKit/Sources/LogEvent.swift | 30 - .../Sources/NSMethodSignatureForBlock.m | 77 -- .../PromiseKit/Sources/PMKCallVariadicBlock.m | 120 --- Pods/PromiseKit/Sources/Promise.swift | 184 ---- Pods/PromiseKit/Sources/PromiseKit.h | 7 - Pods/PromiseKit/Sources/Resolver.swift | 111 --- Pods/PromiseKit/Sources/Thenable.swift | 533 ------------ Pods/PromiseKit/Sources/after.m | 14 - Pods/PromiseKit/Sources/after.swift | 46 - Pods/PromiseKit/Sources/dispatch_promise.m | 10 - Pods/PromiseKit/Sources/firstly.swift | 39 - Pods/PromiseKit/Sources/fwd.h | 165 ---- Pods/PromiseKit/Sources/hang.m | 29 - Pods/PromiseKit/Sources/hang.swift | 55 -- Pods/PromiseKit/Sources/join.m | 54 -- Pods/PromiseKit/Sources/race.m | 9 - Pods/PromiseKit/Sources/race.swift | 102 --- Pods/PromiseKit/Sources/when.m | 107 --- Pods/PromiseKit/Sources/when.swift | 363 -------- .../Pods-JKDesFireReader-Info.plist | 26 - ...-JKDesFireReader-acknowledgements.markdown | 27 - ...ods-JKDesFireReader-acknowledgements.plist | 59 -- .../Pods-JKDesFireReader-dummy.m | 5 - .../Pods-JKDesFireReader-umbrella.h | 16 - .../Pods-JKDesFireReader.debug.xcconfig | 13 - .../Pods-JKDesFireReader.modulemap | 6 - .../Pods-JKDesFireReader.release.xcconfig | 13 - .../PromiseKit/PromiseKit-Info.plist | 26 - .../PromiseKit/PromiseKit-dummy.m | 5 - .../PromiseKit/PromiseKit-prefix.pch | 12 - .../PromiseKit/PromiseKit-umbrella.h | 26 - .../PromiseKit/PromiseKit.debug.xcconfig | 13 - .../PromiseKit/PromiseKit.modulemap | 6 - .../PromiseKit/PromiseKit.release.xcconfig | 13 - .../PromiseKit/PromiseKit.xcconfig | 11 - 77 files changed, 46 insertions(+), 6683 deletions(-) create mode 100644 JKDesFireReader.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved delete mode 100644 JKDesFireReader.xcworkspace/contents.xcworkspacedata delete mode 100644 JKDesFireReader.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 Podfile delete mode 100644 Podfile.lock delete mode 100644 Pods/Manifest.lock delete mode 100644 Pods/Pods.xcodeproj/project.pbxproj delete mode 100644 Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h delete mode 100644 Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m delete mode 100644 Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift delete mode 100644 Pods/PromiseKit/Extensions/Foundation/Sources/NSObject+Promise.swift delete mode 100644 Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.h delete mode 100644 Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m delete mode 100644 Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.h delete mode 100644 Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.m delete mode 100644 Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift delete mode 100644 Pods/PromiseKit/Extensions/Foundation/Sources/PMKFoundation.h delete mode 100644 Pods/PromiseKit/Extensions/Foundation/Sources/Process+Promise.swift delete mode 100644 Pods/PromiseKit/Extensions/Foundation/Sources/afterlife.swift delete mode 100644 Pods/PromiseKit/Extensions/UIKit/Sources/PMKUIKit.h delete mode 100644 Pods/PromiseKit/Extensions/UIKit/Sources/UIView+AnyPromise.h delete mode 100644 Pods/PromiseKit/Extensions/UIKit/Sources/UIView+AnyPromise.m delete mode 100644 Pods/PromiseKit/Extensions/UIKit/Sources/UIView+Promise.swift delete mode 100644 Pods/PromiseKit/Extensions/UIKit/Sources/UIViewController+AnyPromise.h delete mode 100644 Pods/PromiseKit/Extensions/UIKit/Sources/UIViewController+AnyPromise.m delete mode 100644 Pods/PromiseKit/Extensions/UIKit/Sources/UIViewPropertyAnimator+Promise.swift delete mode 100644 Pods/PromiseKit/LICENSE delete mode 100644 Pods/PromiseKit/README.md delete mode 100644 Pods/PromiseKit/Sources/AnyPromise+Private.h delete mode 100644 Pods/PromiseKit/Sources/AnyPromise.h delete mode 100644 Pods/PromiseKit/Sources/AnyPromise.m delete mode 100644 Pods/PromiseKit/Sources/AnyPromise.swift delete mode 100644 Pods/PromiseKit/Sources/Box.swift delete mode 100644 Pods/PromiseKit/Sources/Catchable.swift delete mode 100644 Pods/PromiseKit/Sources/Configuration.swift delete mode 100644 Pods/PromiseKit/Sources/CustomStringConvertible.swift delete mode 100644 Pods/PromiseKit/Sources/Deprecations.swift delete mode 100644 Pods/PromiseKit/Sources/Error.swift delete mode 100644 Pods/PromiseKit/Sources/Guarantee.swift delete mode 100644 Pods/PromiseKit/Sources/LogEvent.swift delete mode 100644 Pods/PromiseKit/Sources/NSMethodSignatureForBlock.m delete mode 100644 Pods/PromiseKit/Sources/PMKCallVariadicBlock.m delete mode 100644 Pods/PromiseKit/Sources/Promise.swift delete mode 100644 Pods/PromiseKit/Sources/PromiseKit.h delete mode 100644 Pods/PromiseKit/Sources/Resolver.swift delete mode 100644 Pods/PromiseKit/Sources/Thenable.swift delete mode 100644 Pods/PromiseKit/Sources/after.m delete mode 100644 Pods/PromiseKit/Sources/after.swift delete mode 100644 Pods/PromiseKit/Sources/dispatch_promise.m delete mode 100644 Pods/PromiseKit/Sources/firstly.swift delete mode 100644 Pods/PromiseKit/Sources/fwd.h delete mode 100644 Pods/PromiseKit/Sources/hang.m delete mode 100644 Pods/PromiseKit/Sources/hang.swift delete mode 100644 Pods/PromiseKit/Sources/join.m delete mode 100644 Pods/PromiseKit/Sources/race.m delete mode 100644 Pods/PromiseKit/Sources/race.swift delete mode 100644 Pods/PromiseKit/Sources/when.m delete mode 100644 Pods/PromiseKit/Sources/when.swift delete mode 100644 Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-Info.plist delete mode 100644 Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-acknowledgements.markdown delete mode 100644 Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-acknowledgements.plist delete mode 100644 Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-dummy.m delete mode 100644 Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-umbrella.h delete mode 100644 Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader.debug.xcconfig delete mode 100644 Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader.modulemap delete mode 100644 Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader.release.xcconfig delete mode 100644 Pods/Target Support Files/PromiseKit/PromiseKit-Info.plist delete mode 100644 Pods/Target Support Files/PromiseKit/PromiseKit-dummy.m delete mode 100644 Pods/Target Support Files/PromiseKit/PromiseKit-prefix.pch delete mode 100644 Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h delete mode 100644 Pods/Target Support Files/PromiseKit/PromiseKit.debug.xcconfig delete mode 100644 Pods/Target Support Files/PromiseKit/PromiseKit.modulemap delete mode 100644 Pods/Target Support Files/PromiseKit/PromiseKit.release.xcconfig delete mode 100644 Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig diff --git a/JKDesFireReader.xcodeproj/project.pbxproj b/JKDesFireReader.xcodeproj/project.pbxproj index 6782a8d..34616c1 100644 --- a/JKDesFireReader.xcodeproj/project.pbxproj +++ b/JKDesFireReader.xcodeproj/project.pbxproj @@ -21,17 +21,15 @@ 8FBDE42422BB5EAB00143C06 /* CoreNFC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8FBDE42122BB5E9600143C06 /* CoreNFC.framework */; platformFilter = ios; }; 8FBDE69F22BD6EE200DACD9B /* JKDesFireReaderDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FBDE69E22BD6EE200DACD9B /* JKDesFireReaderDelegate.swift */; }; 8FC3764722BBE7A80089B7BD /* JKDesFireCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FC3764622BBE7A80089B7BD /* JKDesFireCommand.swift */; }; + 8FC4B7FA28E597BD00100E82 /* PromiseKit in Frameworks */ = {isa = PBXBuildFile; productRef = 8FC4B7F928E597BD00100E82 /* PromiseKit */; }; 8FD0BE0D2326D1D700A26E54 /* JKDesFireDataFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FD0BE0C2326D1D700A26E54 /* JKDesFireDataFile.swift */; }; 8FE6D47422CD351600F9DB43 /* JKEssentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FE6D47322CD351600F9DB43 /* JKEssentials.swift */; }; - 8FE6D47622CD399300F9DB43 /* Pods_JKDesFireReader.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8FE6D47522CD399300F9DB43 /* Pods_JKDesFireReader.framework */; }; 8FFD344322BBB01300886F09 /* JKDesFireError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FFD344222BBB01300886F09 /* JKDesFireError.swift */; }; 8FFD344522BBB26000886F09 /* JKDesFireFileSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FFD344422BBB26000886F09 /* JKDesFireFileSettings.swift */; }; 8FFD344822BBB4FA00886F09 /* JKDesFireFileTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FFD344722BBB4FA00886F09 /* JKDesFireFileTypes.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 2707B56B69DB29C1A7E74748 /* Pods_JKDesFireReader.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_JKDesFireReader.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8A9476B315CD74A54B80A671 /* Pods-JKDesFireReader.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JKDesFireReader.debug.xcconfig"; path = "Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader.debug.xcconfig"; sourceTree = ""; }; 8F27224122C01A4C002BBAC0 /* JKDataHexString.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JKDataHexString.swift; sourceTree = ""; }; 8F3347C92308A1A40052FDF3 /* JKDesFireFile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JKDesFireFile.swift; sourceTree = ""; }; 8F3347CB2308A1B00052FDF3 /* JKDesFireValueFile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JKDesFireValueFile.swift; sourceTree = ""; }; @@ -51,11 +49,9 @@ 8FC3764622BBE7A80089B7BD /* JKDesFireCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JKDesFireCommand.swift; sourceTree = ""; }; 8FD0BE0C2326D1D700A26E54 /* JKDesFireDataFile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JKDesFireDataFile.swift; sourceTree = ""; }; 8FE6D47322CD351600F9DB43 /* JKEssentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JKEssentials.swift; sourceTree = ""; }; - 8FE6D47522CD399300F9DB43 /* Pods_JKDesFireReader.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Pods_JKDesFireReader.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 8FFD344222BBB01300886F09 /* JKDesFireError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JKDesFireError.swift; sourceTree = ""; }; 8FFD344422BBB26000886F09 /* JKDesFireFileSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JKDesFireFileSettings.swift; sourceTree = ""; }; 8FFD344722BBB4FA00886F09 /* JKDesFireFileTypes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JKDesFireFileTypes.swift; sourceTree = ""; }; - EAA1AC0176B13E768BC9BE60 /* Pods-JKDesFireReader.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JKDesFireReader.release.xcconfig"; path = "Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -64,22 +60,13 @@ buildActionMask = 2147483647; files = ( 8FBDE42422BB5EAB00143C06 /* CoreNFC.framework in Frameworks */, - 8FE6D47622CD399300F9DB43 /* Pods_JKDesFireReader.framework in Frameworks */, + 8FC4B7FA28E597BD00100E82 /* PromiseKit in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 69D763736834BE505D8443CF /* Pods */ = { - isa = PBXGroup; - children = ( - 8A9476B315CD74A54B80A671 /* Pods-JKDesFireReader.debug.xcconfig */, - EAA1AC0176B13E768BC9BE60 /* Pods-JKDesFireReader.release.xcconfig */, - ); - path = Pods; - sourceTree = ""; - }; 8F27224022C01A35002BBAC0 /* JKExtensions */ = { isa = PBXGroup; children = ( @@ -105,7 +92,6 @@ 8F7F7F3122B9894F0048C268 /* JKDesFireReader */, 8F7F7F3022B9894F0048C268 /* Products */, 8FBDE42022BB5E9600143C06 /* Frameworks */, - 69D763736834BE505D8443CF /* Pods */, ); sourceTree = ""; }; @@ -139,9 +125,7 @@ isa = PBXGroup; children = ( 8FBDE42322BB5EA500143C06 /* libswiftCoreNFC.tbd */, - 8FE6D47522CD399300F9DB43 /* Pods_JKDesFireReader.framework */, 8FBDE42122BB5E9600143C06 /* CoreNFC.framework */, - 2707B56B69DB29C1A7E74748 /* Pods_JKDesFireReader.framework */, ); name = Frameworks; sourceTree = ""; @@ -193,7 +177,6 @@ isa = PBXNativeTarget; buildConfigurationList = 8F7F7F3722B9894F0048C268 /* Build configuration list for PBXNativeTarget "JKDesFireReader" */; buildPhases = ( - 936625FFFA658CDB8C7B7247 /* [CP] Check Pods Manifest.lock */, 8F7F7F2A22B9894F0048C268 /* Headers */, 8F7F7F2B22B9894F0048C268 /* Sources */, 8F7F7F2C22B9894F0048C268 /* Frameworks */, @@ -204,6 +187,9 @@ dependencies = ( ); name = JKDesFireReader; + packageProductDependencies = ( + 8FC4B7F928E597BD00100E82 /* PromiseKit */, + ); productName = JKDesFireReader; productReference = 8F7F7F2F22B9894F0048C268 /* JKDesFireReader.framework */; productType = "com.apple.product-type.framework"; @@ -214,7 +200,7 @@ 8F7F7F2622B9894F0048C268 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1100; + LastUpgradeCheck = 1400; ORGANIZATIONNAME = "Johannes Kreutz"; TargetAttributes = { 8F7F7F2E22B9894F0048C268 = { @@ -232,6 +218,9 @@ Base, ); mainGroup = 8F7F7F2522B9894F0048C268; + packageReferences = ( + 8FC4B7F828E597BD00100E82 /* XCRemoteSwiftPackageReference "PromiseKit" */, + ); productRefGroup = 8F7F7F3022B9894F0048C268 /* Products */; projectDirPath = ""; projectRoot = ""; @@ -251,31 +240,6 @@ }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - 936625FFFA658CDB8C7B7247 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-JKDesFireReader-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ 8F7F7F2B22B9894F0048C268 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -330,6 +294,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -393,6 +358,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -426,7 +392,6 @@ }; 8F7F7F3822B9894F0048C268 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A9476B315CD74A54B80A671 /* Pods-JKDesFireReader.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; @@ -457,7 +422,6 @@ }; 8F7F7F3922B9894F0048C268 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EAA1AC0176B13E768BC9BE60 /* Pods-JKDesFireReader.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; @@ -507,6 +471,25 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + 8FC4B7F828E597BD00100E82 /* XCRemoteSwiftPackageReference "PromiseKit" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/mxcl/PromiseKit"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 6.0.0; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 8FC4B7F928E597BD00100E82 /* PromiseKit */ = { + isa = XCSwiftPackageProductDependency; + package = 8FC4B7F828E597BD00100E82 /* XCRemoteSwiftPackageReference "PromiseKit" */; + productName = PromiseKit; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 8F7F7F2622B9894F0048C268 /* Project object */; } diff --git a/JKDesFireReader.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/JKDesFireReader.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 0a2a3f4..919434a 100644 --- a/JKDesFireReader.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/JKDesFireReader.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:"> diff --git a/JKDesFireReader.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/JKDesFireReader.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..cf55842 --- /dev/null +++ b/JKDesFireReader.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,14 @@ +{ + "pins" : [ + { + "identity" : "promisekit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/mxcl/PromiseKit", + "state" : { + "revision" : "43772616c46a44a9977e41924ae01d0e55f2f9ca", + "version" : "6.18.1" + } + } + ], + "version" : 2 +} diff --git a/JKDesFireReader.xcodeproj/xcshareddata/xcschemes/JKDesFireReader.xcscheme b/JKDesFireReader.xcodeproj/xcshareddata/xcschemes/JKDesFireReader.xcscheme index bdbafd5..00a3df5 100644 --- a/JKDesFireReader.xcodeproj/xcshareddata/xcschemes/JKDesFireReader.xcscheme +++ b/JKDesFireReader.xcodeproj/xcshareddata/xcschemes/JKDesFireReader.xcscheme @@ -1,6 +1,6 @@ - - - - - - diff --git a/JKDesFireReader.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/JKDesFireReader.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/JKDesFireReader.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/Podfile b/Podfile deleted file mode 100644 index 7b839a6..0000000 --- a/Podfile +++ /dev/null @@ -1,7 +0,0 @@ -platform :ios, '13.0' - -use_frameworks! - -target "JKDesFireReader" do - pod "PromiseKit", "~> 6.15" -end diff --git a/Podfile.lock b/Podfile.lock deleted file mode 100644 index 58e39c5..0000000 --- a/Podfile.lock +++ /dev/null @@ -1,24 +0,0 @@ -PODS: - - PromiseKit (6.15.3): - - PromiseKit/CorePromise (= 6.15.3) - - PromiseKit/Foundation (= 6.15.3) - - PromiseKit/UIKit (= 6.15.3) - - PromiseKit/CorePromise (6.15.3) - - PromiseKit/Foundation (6.15.3): - - PromiseKit/CorePromise - - PromiseKit/UIKit (6.15.3): - - PromiseKit/CorePromise - -DEPENDENCIES: - - PromiseKit (~> 6.15) - -SPEC REPOS: - trunk: - - PromiseKit - -SPEC CHECKSUMS: - PromiseKit: 3b2b6995e51a954c46dbc550ce3da44fbfb563c5 - -PODFILE CHECKSUM: bcc54296abc5f5841a59e5d1b172252e40d760d7 - -COCOAPODS: 1.10.1 diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock deleted file mode 100644 index 58e39c5..0000000 --- a/Pods/Manifest.lock +++ /dev/null @@ -1,24 +0,0 @@ -PODS: - - PromiseKit (6.15.3): - - PromiseKit/CorePromise (= 6.15.3) - - PromiseKit/Foundation (= 6.15.3) - - PromiseKit/UIKit (= 6.15.3) - - PromiseKit/CorePromise (6.15.3) - - PromiseKit/Foundation (6.15.3): - - PromiseKit/CorePromise - - PromiseKit/UIKit (6.15.3): - - PromiseKit/CorePromise - -DEPENDENCIES: - - PromiseKit (~> 6.15) - -SPEC REPOS: - trunk: - - PromiseKit - -SPEC CHECKSUMS: - PromiseKit: 3b2b6995e51a954c46dbc550ce3da44fbfb563c5 - -PODFILE CHECKSUM: bcc54296abc5f5841a59e5d1b172252e40d760d7 - -COCOAPODS: 1.10.1 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj deleted file mode 100644 index 939b14e..0000000 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ /dev/null @@ -1,812 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 52; - objects = { - -/* Begin PBXBuildFile section */ - 00542E749518733F88FD9339F521159E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D245E0514AAC1A2B9A6D5EA2F383E90F /* UIKit.framework */; }; - 025EED6A44FE486DD84DA9D38AC02AA0 /* Thenable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FA2C0F0349F88A22FE7AED320FB3344 /* Thenable.swift */; }; - 03E58CECCD643191C7E73841AC3BD6F2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */; }; - 049B1C0AA9B56C4C76C7A062332C794D /* Pods-JKDesFireReader-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 028802E47BAD369FC1C18579FCDAF05E /* Pods-JKDesFireReader-dummy.m */; }; - 15901C26A398A72C746D1369042356B6 /* join.m in Sources */ = {isa = PBXBuildFile; fileRef = C01D7AABE1A5AA63F36E392A7A652C57 /* join.m */; }; - 18DF6A317CCB7F5BEE8D7AF5D79AEB38 /* PromiseKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A63E70C514D5094D9BCACC025BAEBB3 /* PromiseKit-dummy.m */; }; - 1C5D3593B983B9369EFCFDE7D4DE0D19 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52FF8A057B651437534429880B0A0E6A /* Configuration.swift */; }; - 208EDAA1D258CAA2BD08E462359D4FFF /* when.m in Sources */ = {isa = PBXBuildFile; fileRef = F9F8A459640DEEF925C431AAA45B9EF3 /* when.m */; }; - 29643F7A000899634C9174BCB8D1A1AB /* NSNotificationCenter+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBD40936A31AA3B0ADB990333F967A9A /* NSNotificationCenter+Promise.swift */; }; - 301B5F7669D2DC7E46384FBAC71B7C19 /* hang.m in Sources */ = {isa = PBXBuildFile; fileRef = DC58026BA8EA8D43906166366A20497B /* hang.m */; }; - 3208DDEB9CAC16AC7D2C7E9A7F057DC1 /* NSURLSession+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = D61925207B8AEF1B02BA3CD8D4AA4D5A /* NSURLSession+Promise.swift */; }; - 3378C1EEFC149B899433AF30F147CE32 /* after.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34AA36CCCA1098FEDA4560610EE0768B /* after.swift */; }; - 33B79E4BFF8D25E1A705E2C469BBCA9B /* PromiseKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E55E260A8D524AEF1BE876724468FB /* PromiseKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 37018D3DC554A00E9B3E306A28296316 /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED3BC1AF155244E99B7C9E886AC7636E /* Error.swift */; }; - 3AAE347ADDFEFAC7DDECBC744D1BD6AC /* NSTask+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 591128DCA338DF9914EAE3232E788771 /* NSTask+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 42495A8941D9B42B07F032390AA2389F /* UIViewPropertyAnimator+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1198B9C5E6D3E4819D194F9F87808FA /* UIViewPropertyAnimator+Promise.swift */; }; - 4418281931C4D1176F2C541CDD770F14 /* Catchable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB31B65956B9C77B909561C21A780B01 /* Catchable.swift */; }; - 45B48F57B1039D463A2CB04349F22C5A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */; }; - 46C4120B8C66DBCBEEC55D09F043D618 /* race.m in Sources */ = {isa = PBXBuildFile; fileRef = 463A6E49BB20292760D4A3D8387DE538 /* race.m */; }; - 4981C37D541CDA8BCB7DE77E6607AC50 /* after.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA0E71D3E8D8964699CBB1C86A5AF70 /* after.m */; }; - 4D65C782220C5E27BF8A3B61EBBDAB3E /* Guarantee.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D77DFE349FE28153C45176699CF28AA /* Guarantee.swift */; }; - 4EC7BD8654B3587F1F725E812C9D828C /* race.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D14AE0435C63377DDAB697BB37CA574 /* race.swift */; }; - 52F57EB35132E86D75FE9443258EFDBF /* UIView+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = C37973B115D1CC7551DA00AE304573B5 /* UIView+AnyPromise.m */; }; - 5802BD2A7E671D3015BE4E98C13D10CB /* NSURLSession+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 65D6A91769ED42A54D1D0C2D5703F23B /* NSURLSession+AnyPromise.m */; }; - 59AA176600E91A56BC244B381305060B /* UIView+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D59E001818D479CDC262D1FED27224A /* UIView+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5D2D358E754D92564B259BBACFBA8271 /* PMKFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = C1A11AA274A1EE7D774655B1BCFF0ABF /* PMKFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 60F874ED0F6234A4417CAFDE554D088D /* PMKUIKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BBA63C058E9399E7450FCD0E404311A /* PMKUIKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 69DBAB1E3A8EEBFCC466D95509DE7125 /* UIView+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DFC2829DE71B36FD61256182FBB3689 /* UIView+Promise.swift */; }; - 6DE830042E36FDE326546970CA90F9B6 /* Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4B5A942130D0507DB91B1CB727A37AF /* Promise.swift */; }; - 73EA1C553B580637369E1D5A72A425B3 /* when.swift in Sources */ = {isa = PBXBuildFile; fileRef = B57A6DDCFB881ABB03988149BB93657D /* when.swift */; }; - 79F73BA854A7EC559E464EC446493D52 /* AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 06326734FC261BA311C33AA1EB8FF2F8 /* AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9447BD0FB408B2A7C9BFDFF99BBE1EBE /* UIViewController+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = C8FCB83BB12E2FE8522817440A89A5BA /* UIViewController+AnyPromise.m */; }; - 968B5CC9B9B0A7E92FACEEBEA3C0DA13 /* PromiseKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A0AB9FCD618F1E6695917E52DEEF0A2E /* PromiseKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 997870D5F490326F024B4D8687FF18DC /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C91731B40ED9234A90F1B8009BA58A8 /* Resolver.swift */; }; - 9B65647B927085E2366117D59DC1586D /* CustomStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = E638D6873FCFB05806EC7CD54632792D /* CustomStringConvertible.swift */; }; - 9BFE70DD7ECA3C6183B82DE691FE4491 /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA06ED7ED4A6B7B7D7F945663BE7E56D /* Box.swift */; }; - A1E6C35C5B3ECB558FE1AF9B1FAAB53B /* AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = D00A99D942FC861FB89EE6533EFAA5FE /* AnyPromise.m */; }; - A5F5D7A20264221D4A7F489FB0060D34 /* afterlife.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FAFFCA44F5386BEA2A4BABDB1E7363E /* afterlife.swift */; }; - B593B56495A204E756BAA753BA2D6E9C /* Deprecations.swift in Sources */ = {isa = PBXBuildFile; fileRef = C959B329BA651852657F7320298B1C7E /* Deprecations.swift */; }; - B758241FBF6592EFBE6283378D16F9FD /* NSObject+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 172E9FADEDDFBD2D8AA90A74F240B0A4 /* NSObject+Promise.swift */; }; - C426E30A28E2545BCA2824DBCF90816F /* NSNotificationCenter+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = A1ED46A1312E7D43D12009FCDA1EBF59 /* NSNotificationCenter+AnyPromise.m */; }; - C5EF8FBC11CA9E66100F6489B57E35A6 /* LogEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CEE9E135191A7C642DA4D1A10479F42 /* LogEvent.swift */; }; - C7ECF714064C1188A6D042C6ACFD9504 /* dispatch_promise.m in Sources */ = {isa = PBXBuildFile; fileRef = D9B94D7A714C6936A8B04A954BA4B50F /* dispatch_promise.m */; }; - D4C52546E7DEE38CEE04F2B6D61BB9E2 /* fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = 74B2FE2D3DDAC8577D27799BF1D7C221 /* fwd.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DBEF0F49E57B3321CC7067EEF33AB582 /* NSNotificationCenter+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 211A15F96237A163F4A23475B0FF82E6 /* NSNotificationCenter+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E425FBEC27FF20E38E5F71856145D72C /* UIViewController+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = E0C8B9DEDC073BD23B4AE704CE5A457C /* UIViewController+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EAC994EA457048CA6AA49B82C9F05DF4 /* NSURLSession+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DB99A94CF9D5A9C2289AEAE2AC2896C /* NSURLSession+AnyPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EF8241DFA90BCDBB97B8C504BB80D05C /* AnyPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D466BDA7EB5A5CAA1C026B62DF33E0D /* AnyPromise.swift */; }; - EF9BBCE851B820D4F5DA3163BF466A38 /* Process+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = C386A1A831D8F43625E12F8D9DAEF8B8 /* Process+Promise.swift */; }; - FB797FAA96B41ACE7474B8ADEF8107EC /* firstly.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8A4A946C70AD586FFD5BFC84A45D2F0 /* firstly.swift */; }; - FC04BBDB7FE8932403E69388CDC57131 /* Pods-JKDesFireReader-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 159B7E9DCD33587E1553D94691FA9718 /* Pods-JKDesFireReader-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FDF12428281F08B3F5F2B7DB68E3925D /* NSTask+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 31D3FD4DFCA1EB51BFC1124AAF24A374 /* NSTask+AnyPromise.m */; }; - FED8C9BB577D35DBB6E5347B750C184C /* hang.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17977C54DE8289A20A02CBE2984B4372 /* hang.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 71FCAC341219C793FA3555E101A11A19 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7C579CE66A1E7A9AA33CA5F97F9C22C5; - remoteInfo = PromiseKit; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 002B1E88BA14EBF633CD66EBFBA107E9 /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = PromiseKit.framework; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 01B053523C0CDCA08CEB03685DDA8974 /* Pods-JKDesFireReader.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-JKDesFireReader.release.xcconfig"; sourceTree = ""; }; - 028802E47BAD369FC1C18579FCDAF05E /* Pods-JKDesFireReader-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-JKDesFireReader-dummy.m"; sourceTree = ""; }; - 06326734FC261BA311C33AA1EB8FF2F8 /* AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AnyPromise.h; path = Sources/AnyPromise.h; sourceTree = ""; }; - 0D77DFE349FE28153C45176699CF28AA /* Guarantee.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Guarantee.swift; path = Sources/Guarantee.swift; sourceTree = ""; }; - 13C9FF0AC9FAC294C552649D19B17E29 /* Pods-JKDesFireReader-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-JKDesFireReader-acknowledgements.plist"; sourceTree = ""; }; - 159B7E9DCD33587E1553D94691FA9718 /* Pods-JKDesFireReader-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-JKDesFireReader-umbrella.h"; sourceTree = ""; }; - 172E9FADEDDFBD2D8AA90A74F240B0A4 /* NSObject+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSObject+Promise.swift"; path = "Extensions/Foundation/Sources/NSObject+Promise.swift"; sourceTree = ""; }; - 17977C54DE8289A20A02CBE2984B4372 /* hang.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = hang.swift; path = Sources/hang.swift; sourceTree = ""; }; - 1FA2C0F0349F88A22FE7AED320FB3344 /* Thenable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Thenable.swift; path = Sources/Thenable.swift; sourceTree = ""; }; - 211A15F96237A163F4A23475B0FF82E6 /* NSNotificationCenter+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSNotificationCenter+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h"; sourceTree = ""; }; - 22E2312F250D5DAC9BA5AE8FBF86C1BE /* Pods-JKDesFireReader-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-JKDesFireReader-acknowledgements.markdown"; sourceTree = ""; }; - 2B4E6F5F2581B5DD7E43776AFA99F73B /* Pods-JKDesFireReader.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-JKDesFireReader.debug.xcconfig"; sourceTree = ""; }; - 2BBA63C058E9399E7450FCD0E404311A /* PMKUIKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKUIKit.h; path = Extensions/UIKit/Sources/PMKUIKit.h; sourceTree = ""; }; - 2D466BDA7EB5A5CAA1C026B62DF33E0D /* AnyPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyPromise.swift; path = Sources/AnyPromise.swift; sourceTree = ""; }; - 31D3FD4DFCA1EB51BFC1124AAF24A374 /* NSTask+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSTask+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.m"; sourceTree = ""; }; - 34AA36CCCA1098FEDA4560610EE0768B /* after.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = after.swift; path = Sources/after.swift; sourceTree = ""; }; - 3D14AE0435C63377DDAB697BB37CA574 /* race.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = race.swift; path = Sources/race.swift; sourceTree = ""; }; - 463A6E49BB20292760D4A3D8387DE538 /* race.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = race.m; path = Sources/race.m; sourceTree = ""; }; - 51E55E260A8D524AEF1BE876724468FB /* PromiseKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PromiseKit.h; path = Sources/PromiseKit.h; sourceTree = ""; }; - 52FF8A057B651437534429880B0A0E6A /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Sources/Configuration.swift; sourceTree = ""; }; - 591128DCA338DF9914EAE3232E788771 /* NSTask+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSTask+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.h"; sourceTree = ""; }; - 5CEE9E135191A7C642DA4D1A10479F42 /* LogEvent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LogEvent.swift; path = Sources/LogEvent.swift; sourceTree = ""; }; - 5DFC2829DE71B36FD61256182FBB3689 /* UIView+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Promise.swift"; path = "Extensions/UIKit/Sources/UIView+Promise.swift"; sourceTree = ""; }; - 65D6A91769ED42A54D1D0C2D5703F23B /* NSURLSession+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURLSession+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.m"; sourceTree = ""; }; - 6DB99A94CF9D5A9C2289AEAE2AC2896C /* NSURLSession+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURLSession+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.h"; sourceTree = ""; }; - 6FAFFCA44F5386BEA2A4BABDB1E7363E /* afterlife.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = afterlife.swift; path = Extensions/Foundation/Sources/afterlife.swift; sourceTree = ""; }; - 74B2FE2D3DDAC8577D27799BF1D7C221 /* fwd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fwd.h; path = Sources/fwd.h; sourceTree = ""; }; - 856CCA1A6869C292FBE3BDD18AFF36DF /* Pods-JKDesFireReader.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-JKDesFireReader.modulemap"; sourceTree = ""; }; - 97507749F8289E54061C73549964BCE1 /* PromiseKit-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "PromiseKit-Info.plist"; sourceTree = ""; }; - 9A63E70C514D5094D9BCACC025BAEBB3 /* PromiseKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PromiseKit-dummy.m"; sourceTree = ""; }; - 9C91731B40ED9234A90F1B8009BA58A8 /* Resolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Resolver.swift; path = Sources/Resolver.swift; sourceTree = ""; }; - 9D59E001818D479CDC262D1FED27224A /* UIView+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.h"; sourceTree = ""; }; - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9EB61881665027F6E188F0D4198318C8 /* Pods_JKDesFireReader.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_JKDesFireReader.framework; path = "Pods-JKDesFireReader.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - A0AB9FCD618F1E6695917E52DEEF0A2E /* PromiseKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-umbrella.h"; sourceTree = ""; }; - A1ED46A1312E7D43D12009FCDA1EBF59 /* NSNotificationCenter+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSNotificationCenter+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m"; sourceTree = ""; }; - AA06ED7ED4A6B7B7D7F945663BE7E56D /* Box.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Box.swift; path = Sources/Box.swift; sourceTree = ""; }; - B57A6DDCFB881ABB03988149BB93657D /* when.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = when.swift; path = Sources/when.swift; sourceTree = ""; }; - B8C523DAA730244E7A6AF0E57839C1A6 /* Pods-JKDesFireReader-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-JKDesFireReader-Info.plist"; sourceTree = ""; }; - C01D7AABE1A5AA63F36E392A7A652C57 /* join.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = join.m; path = Sources/join.m; sourceTree = ""; }; - C1198B9C5E6D3E4819D194F9F87808FA /* UIViewPropertyAnimator+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIViewPropertyAnimator+Promise.swift"; path = "Extensions/UIKit/Sources/UIViewPropertyAnimator+Promise.swift"; sourceTree = ""; }; - C1A11AA274A1EE7D774655B1BCFF0ABF /* PMKFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKFoundation.h; path = Extensions/Foundation/Sources/PMKFoundation.h; sourceTree = ""; }; - C37973B115D1CC7551DA00AE304573B5 /* UIView+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.m"; sourceTree = ""; }; - C386A1A831D8F43625E12F8D9DAEF8B8 /* Process+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Process+Promise.swift"; path = "Extensions/Foundation/Sources/Process+Promise.swift"; sourceTree = ""; }; - C8FCB83BB12E2FE8522817440A89A5BA /* UIViewController+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.m"; sourceTree = ""; }; - C959B329BA651852657F7320298B1C7E /* Deprecations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Deprecations.swift; path = Sources/Deprecations.swift; sourceTree = ""; }; - CA48E17A7CB06C83AE15954A5EBA00A2 /* PromiseKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PromiseKit.modulemap; sourceTree = ""; }; - CEA0E71D3E8D8964699CBB1C86A5AF70 /* after.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = after.m; path = Sources/after.m; sourceTree = ""; }; - D00A99D942FC861FB89EE6533EFAA5FE /* AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AnyPromise.m; path = Sources/AnyPromise.m; sourceTree = ""; }; - D23CDF48A64986FE08237CAF98EAFB82 /* PromiseKit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PromiseKit.debug.xcconfig; sourceTree = ""; }; - D245E0514AAC1A2B9A6D5EA2F383E90F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - D4B5A942130D0507DB91B1CB727A37AF /* Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Promise.swift; path = Sources/Promise.swift; sourceTree = ""; }; - D61925207B8AEF1B02BA3CD8D4AA4D5A /* NSURLSession+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSURLSession+Promise.swift"; path = "Extensions/Foundation/Sources/NSURLSession+Promise.swift"; sourceTree = ""; }; - D9B94D7A714C6936A8B04A954BA4B50F /* dispatch_promise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = dispatch_promise.m; path = Sources/dispatch_promise.m; sourceTree = ""; }; - DC58026BA8EA8D43906166366A20497B /* hang.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = hang.m; path = Sources/hang.m; sourceTree = ""; }; - E0C8B9DEDC073BD23B4AE704CE5A457C /* UIViewController+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.h"; sourceTree = ""; }; - E61FF459CD77242705A043DB6931E51D /* PromiseKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-prefix.pch"; sourceTree = ""; }; - E638D6873FCFB05806EC7CD54632792D /* CustomStringConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomStringConvertible.swift; path = Sources/CustomStringConvertible.swift; sourceTree = ""; }; - E9689298F0AC7F92182277DEA13A5D71 /* PromiseKit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PromiseKit.release.xcconfig; sourceTree = ""; }; - EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - EB31B65956B9C77B909561C21A780B01 /* Catchable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Catchable.swift; path = Sources/Catchable.swift; sourceTree = ""; }; - EBD40936A31AA3B0ADB990333F967A9A /* NSNotificationCenter+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSNotificationCenter+Promise.swift"; path = "Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift"; sourceTree = ""; }; - ED3BC1AF155244E99B7C9E886AC7636E /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = Sources/Error.swift; sourceTree = ""; }; - F8A4A946C70AD586FFD5BFC84A45D2F0 /* firstly.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = firstly.swift; path = Sources/firstly.swift; sourceTree = ""; }; - F9F8A459640DEEF925C431AAA45B9EF3 /* when.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = when.m; path = Sources/when.m; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 46F9214900CE1F500D4E081AC05BDD61 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 45B48F57B1039D463A2CB04349F22C5A /* Foundation.framework in Frameworks */, - 00542E749518733F88FD9339F521159E /* UIKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AF6175293DAB1013B06587B700C462BC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 03E58CECCD643191C7E73841AC3BD6F2 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 59DA5C1F72E1D5BABC43EACBA672C3BA /* iOS */, - ); - name = Frameworks; - sourceTree = ""; - }; - 1DEEF4EBB90D008CDC258C88BBAC179D /* Products */ = { - isa = PBXGroup; - children = ( - 9EB61881665027F6E188F0D4198318C8 /* Pods_JKDesFireReader.framework */, - 002B1E88BA14EBF633CD66EBFBA107E9 /* PromiseKit.framework */, - ); - name = Products; - sourceTree = ""; - }; - 3543319581009170C01CD7D3A1757137 /* Support Files */ = { - isa = PBXGroup; - children = ( - CA48E17A7CB06C83AE15954A5EBA00A2 /* PromiseKit.modulemap */, - 9A63E70C514D5094D9BCACC025BAEBB3 /* PromiseKit-dummy.m */, - 97507749F8289E54061C73549964BCE1 /* PromiseKit-Info.plist */, - E61FF459CD77242705A043DB6931E51D /* PromiseKit-prefix.pch */, - A0AB9FCD618F1E6695917E52DEEF0A2E /* PromiseKit-umbrella.h */, - D23CDF48A64986FE08237CAF98EAFB82 /* PromiseKit.debug.xcconfig */, - E9689298F0AC7F92182277DEA13A5D71 /* PromiseKit.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/PromiseKit"; - sourceTree = ""; - }; - 3AFFA911DB70C6E9D49EB3E59E09BDB9 /* Foundation */ = { - isa = PBXGroup; - children = ( - 6FAFFCA44F5386BEA2A4BABDB1E7363E /* afterlife.swift */, - 211A15F96237A163F4A23475B0FF82E6 /* NSNotificationCenter+AnyPromise.h */, - A1ED46A1312E7D43D12009FCDA1EBF59 /* NSNotificationCenter+AnyPromise.m */, - EBD40936A31AA3B0ADB990333F967A9A /* NSNotificationCenter+Promise.swift */, - 172E9FADEDDFBD2D8AA90A74F240B0A4 /* NSObject+Promise.swift */, - 591128DCA338DF9914EAE3232E788771 /* NSTask+AnyPromise.h */, - 31D3FD4DFCA1EB51BFC1124AAF24A374 /* NSTask+AnyPromise.m */, - 6DB99A94CF9D5A9C2289AEAE2AC2896C /* NSURLSession+AnyPromise.h */, - 65D6A91769ED42A54D1D0C2D5703F23B /* NSURLSession+AnyPromise.m */, - D61925207B8AEF1B02BA3CD8D4AA4D5A /* NSURLSession+Promise.swift */, - C1A11AA274A1EE7D774655B1BCFF0ABF /* PMKFoundation.h */, - C386A1A831D8F43625E12F8D9DAEF8B8 /* Process+Promise.swift */, - ); - name = Foundation; - sourceTree = ""; - }; - 3E85E434A4C5FE2C2FA2D1A5564CF51A /* Targets Support Files */ = { - isa = PBXGroup; - children = ( - 5F219EE2ADFD5D62E40D485E07EB9B41 /* Pods-JKDesFireReader */, - ); - name = "Targets Support Files"; - sourceTree = ""; - }; - 3FC037AC376E55621CA8FFB55131A6A6 /* UIKit */ = { - isa = PBXGroup; - children = ( - 2BBA63C058E9399E7450FCD0E404311A /* PMKUIKit.h */, - 9D59E001818D479CDC262D1FED27224A /* UIView+AnyPromise.h */, - C37973B115D1CC7551DA00AE304573B5 /* UIView+AnyPromise.m */, - 5DFC2829DE71B36FD61256182FBB3689 /* UIView+Promise.swift */, - E0C8B9DEDC073BD23B4AE704CE5A457C /* UIViewController+AnyPromise.h */, - C8FCB83BB12E2FE8522817440A89A5BA /* UIViewController+AnyPromise.m */, - C1198B9C5E6D3E4819D194F9F87808FA /* UIViewPropertyAnimator+Promise.swift */, - ); - name = UIKit; - sourceTree = ""; - }; - 59DA5C1F72E1D5BABC43EACBA672C3BA /* iOS */ = { - isa = PBXGroup; - children = ( - EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */, - D245E0514AAC1A2B9A6D5EA2F383E90F /* UIKit.framework */, - ); - name = iOS; - sourceTree = ""; - }; - 5F219EE2ADFD5D62E40D485E07EB9B41 /* Pods-JKDesFireReader */ = { - isa = PBXGroup; - children = ( - 856CCA1A6869C292FBE3BDD18AFF36DF /* Pods-JKDesFireReader.modulemap */, - 22E2312F250D5DAC9BA5AE8FBF86C1BE /* Pods-JKDesFireReader-acknowledgements.markdown */, - 13C9FF0AC9FAC294C552649D19B17E29 /* Pods-JKDesFireReader-acknowledgements.plist */, - 028802E47BAD369FC1C18579FCDAF05E /* Pods-JKDesFireReader-dummy.m */, - B8C523DAA730244E7A6AF0E57839C1A6 /* Pods-JKDesFireReader-Info.plist */, - 159B7E9DCD33587E1553D94691FA9718 /* Pods-JKDesFireReader-umbrella.h */, - 2B4E6F5F2581B5DD7E43776AFA99F73B /* Pods-JKDesFireReader.debug.xcconfig */, - 01B053523C0CDCA08CEB03685DDA8974 /* Pods-JKDesFireReader.release.xcconfig */, - ); - name = "Pods-JKDesFireReader"; - path = "Target Support Files/Pods-JKDesFireReader"; - sourceTree = ""; - }; - 82FE3C18B52F86227DB7105B7FD644BE /* Pods */ = { - isa = PBXGroup; - children = ( - DB95DFB2FEA00D4534E3B77625D7082B /* PromiseKit */, - ); - name = Pods; - sourceTree = ""; - }; - 94D621FC3EA0FA1B2D0DEFECD2E5C07E /* CorePromise */ = { - isa = PBXGroup; - children = ( - CEA0E71D3E8D8964699CBB1C86A5AF70 /* after.m */, - 34AA36CCCA1098FEDA4560610EE0768B /* after.swift */, - 06326734FC261BA311C33AA1EB8FF2F8 /* AnyPromise.h */, - D00A99D942FC861FB89EE6533EFAA5FE /* AnyPromise.m */, - 2D466BDA7EB5A5CAA1C026B62DF33E0D /* AnyPromise.swift */, - AA06ED7ED4A6B7B7D7F945663BE7E56D /* Box.swift */, - EB31B65956B9C77B909561C21A780B01 /* Catchable.swift */, - 52FF8A057B651437534429880B0A0E6A /* Configuration.swift */, - E638D6873FCFB05806EC7CD54632792D /* CustomStringConvertible.swift */, - C959B329BA651852657F7320298B1C7E /* Deprecations.swift */, - D9B94D7A714C6936A8B04A954BA4B50F /* dispatch_promise.m */, - ED3BC1AF155244E99B7C9E886AC7636E /* Error.swift */, - F8A4A946C70AD586FFD5BFC84A45D2F0 /* firstly.swift */, - 74B2FE2D3DDAC8577D27799BF1D7C221 /* fwd.h */, - 0D77DFE349FE28153C45176699CF28AA /* Guarantee.swift */, - DC58026BA8EA8D43906166366A20497B /* hang.m */, - 17977C54DE8289A20A02CBE2984B4372 /* hang.swift */, - C01D7AABE1A5AA63F36E392A7A652C57 /* join.m */, - 5CEE9E135191A7C642DA4D1A10479F42 /* LogEvent.swift */, - D4B5A942130D0507DB91B1CB727A37AF /* Promise.swift */, - 51E55E260A8D524AEF1BE876724468FB /* PromiseKit.h */, - 463A6E49BB20292760D4A3D8387DE538 /* race.m */, - 3D14AE0435C63377DDAB697BB37CA574 /* race.swift */, - 9C91731B40ED9234A90F1B8009BA58A8 /* Resolver.swift */, - 1FA2C0F0349F88A22FE7AED320FB3344 /* Thenable.swift */, - F9F8A459640DEEF925C431AAA45B9EF3 /* when.m */, - B57A6DDCFB881ABB03988149BB93657D /* when.swift */, - ); - name = CorePromise; - sourceTree = ""; - }; - CF1408CF629C7361332E53B88F7BD30C = { - isa = PBXGroup; - children = ( - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, - 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */, - 82FE3C18B52F86227DB7105B7FD644BE /* Pods */, - 1DEEF4EBB90D008CDC258C88BBAC179D /* Products */, - 3E85E434A4C5FE2C2FA2D1A5564CF51A /* Targets Support Files */, - ); - sourceTree = ""; - }; - DB95DFB2FEA00D4534E3B77625D7082B /* PromiseKit */ = { - isa = PBXGroup; - children = ( - 94D621FC3EA0FA1B2D0DEFECD2E5C07E /* CorePromise */, - 3AFFA911DB70C6E9D49EB3E59E09BDB9 /* Foundation */, - 3543319581009170C01CD7D3A1757137 /* Support Files */, - 3FC037AC376E55621CA8FFB55131A6A6 /* UIKit */, - ); - name = PromiseKit; - path = PromiseKit; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 7CF1637A149D2A50F1846A83FFDEEC6F /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 79F73BA854A7EC559E464EC446493D52 /* AnyPromise.h in Headers */, - D4C52546E7DEE38CEE04F2B6D61BB9E2 /* fwd.h in Headers */, - DBEF0F49E57B3321CC7067EEF33AB582 /* NSNotificationCenter+AnyPromise.h in Headers */, - 3AAE347ADDFEFAC7DDECBC744D1BD6AC /* NSTask+AnyPromise.h in Headers */, - EAC994EA457048CA6AA49B82C9F05DF4 /* NSURLSession+AnyPromise.h in Headers */, - 5D2D358E754D92564B259BBACFBA8271 /* PMKFoundation.h in Headers */, - 60F874ED0F6234A4417CAFDE554D088D /* PMKUIKit.h in Headers */, - 968B5CC9B9B0A7E92FACEEBEA3C0DA13 /* PromiseKit-umbrella.h in Headers */, - 33B79E4BFF8D25E1A705E2C469BBCA9B /* PromiseKit.h in Headers */, - 59AA176600E91A56BC244B381305060B /* UIView+AnyPromise.h in Headers */, - E425FBEC27FF20E38E5F71856145D72C /* UIViewController+AnyPromise.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9F020D9B9FE8C4FC2DE9BB715CDDF508 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - FC04BBDB7FE8932403E69388CDC57131 /* Pods-JKDesFireReader-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 7C579CE66A1E7A9AA33CA5F97F9C22C5 /* PromiseKit */ = { - isa = PBXNativeTarget; - buildConfigurationList = 058DF38F5922F24842B97693B0188F2D /* Build configuration list for PBXNativeTarget "PromiseKit" */; - buildPhases = ( - 7CF1637A149D2A50F1846A83FFDEEC6F /* Headers */, - 5E5F9E7DC1D3B74E7C15141C2B3E9BD5 /* Sources */, - 46F9214900CE1F500D4E081AC05BDD61 /* Frameworks */, - 409EA903AAA7848EE17474A886579F4C /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = PromiseKit; - productName = PromiseKit; - productReference = 002B1E88BA14EBF633CD66EBFBA107E9 /* PromiseKit.framework */; - productType = "com.apple.product-type.framework"; - }; - BC71B925CC2E02E683579D50B005861C /* Pods-JKDesFireReader */ = { - isa = PBXNativeTarget; - buildConfigurationList = B98876E222F7FFFE1E73942015F3EE09 /* Build configuration list for PBXNativeTarget "Pods-JKDesFireReader" */; - buildPhases = ( - 9F020D9B9FE8C4FC2DE9BB715CDDF508 /* Headers */, - 8B7755CBD6C1FC49D369E33ABD144758 /* Sources */, - AF6175293DAB1013B06587B700C462BC /* Frameworks */, - F059F9E67E2163E3690FE9D7B72EC334 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 076BE218278A4AFF72F11E4294A73755 /* PBXTargetDependency */, - ); - name = "Pods-JKDesFireReader"; - productName = "Pods-JKDesFireReader"; - productReference = 9EB61881665027F6E188F0D4198318C8 /* Pods_JKDesFireReader.framework */; - productType = "com.apple.product-type.framework"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - BFDFE7DC352907FC980B868725387E98 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 1100; - LastUpgradeCheck = 1100; - }; - buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; - compatibilityVersion = "Xcode 11.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = 1DEEF4EBB90D008CDC258C88BBAC179D /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - BC71B925CC2E02E683579D50B005861C /* Pods-JKDesFireReader */, - 7C579CE66A1E7A9AA33CA5F97F9C22C5 /* PromiseKit */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 409EA903AAA7848EE17474A886579F4C /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F059F9E67E2163E3690FE9D7B72EC334 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 5E5F9E7DC1D3B74E7C15141C2B3E9BD5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 4981C37D541CDA8BCB7DE77E6607AC50 /* after.m in Sources */, - 3378C1EEFC149B899433AF30F147CE32 /* after.swift in Sources */, - A5F5D7A20264221D4A7F489FB0060D34 /* afterlife.swift in Sources */, - A1E6C35C5B3ECB558FE1AF9B1FAAB53B /* AnyPromise.m in Sources */, - EF8241DFA90BCDBB97B8C504BB80D05C /* AnyPromise.swift in Sources */, - 9BFE70DD7ECA3C6183B82DE691FE4491 /* Box.swift in Sources */, - 4418281931C4D1176F2C541CDD770F14 /* Catchable.swift in Sources */, - 1C5D3593B983B9369EFCFDE7D4DE0D19 /* Configuration.swift in Sources */, - 9B65647B927085E2366117D59DC1586D /* CustomStringConvertible.swift in Sources */, - B593B56495A204E756BAA753BA2D6E9C /* Deprecations.swift in Sources */, - C7ECF714064C1188A6D042C6ACFD9504 /* dispatch_promise.m in Sources */, - 37018D3DC554A00E9B3E306A28296316 /* Error.swift in Sources */, - FB797FAA96B41ACE7474B8ADEF8107EC /* firstly.swift in Sources */, - 4D65C782220C5E27BF8A3B61EBBDAB3E /* Guarantee.swift in Sources */, - 301B5F7669D2DC7E46384FBAC71B7C19 /* hang.m in Sources */, - FED8C9BB577D35DBB6E5347B750C184C /* hang.swift in Sources */, - 15901C26A398A72C746D1369042356B6 /* join.m in Sources */, - C5EF8FBC11CA9E66100F6489B57E35A6 /* LogEvent.swift in Sources */, - C426E30A28E2545BCA2824DBCF90816F /* NSNotificationCenter+AnyPromise.m in Sources */, - 29643F7A000899634C9174BCB8D1A1AB /* NSNotificationCenter+Promise.swift in Sources */, - B758241FBF6592EFBE6283378D16F9FD /* NSObject+Promise.swift in Sources */, - FDF12428281F08B3F5F2B7DB68E3925D /* NSTask+AnyPromise.m in Sources */, - 5802BD2A7E671D3015BE4E98C13D10CB /* NSURLSession+AnyPromise.m in Sources */, - 3208DDEB9CAC16AC7D2C7E9A7F057DC1 /* NSURLSession+Promise.swift in Sources */, - EF9BBCE851B820D4F5DA3163BF466A38 /* Process+Promise.swift in Sources */, - 6DE830042E36FDE326546970CA90F9B6 /* Promise.swift in Sources */, - 18DF6A317CCB7F5BEE8D7AF5D79AEB38 /* PromiseKit-dummy.m in Sources */, - 46C4120B8C66DBCBEEC55D09F043D618 /* race.m in Sources */, - 4EC7BD8654B3587F1F725E812C9D828C /* race.swift in Sources */, - 997870D5F490326F024B4D8687FF18DC /* Resolver.swift in Sources */, - 025EED6A44FE486DD84DA9D38AC02AA0 /* Thenable.swift in Sources */, - 52F57EB35132E86D75FE9443258EFDBF /* UIView+AnyPromise.m in Sources */, - 69DBAB1E3A8EEBFCC466D95509DE7125 /* UIView+Promise.swift in Sources */, - 9447BD0FB408B2A7C9BFDFF99BBE1EBE /* UIViewController+AnyPromise.m in Sources */, - 42495A8941D9B42B07F032390AA2389F /* UIViewPropertyAnimator+Promise.swift in Sources */, - 208EDAA1D258CAA2BD08E462359D4FFF /* when.m in Sources */, - 73EA1C553B580637369E1D5A72A425B3 /* when.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8B7755CBD6C1FC49D369E33ABD144758 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 049B1C0AA9B56C4C76C7A062332C794D /* Pods-JKDesFireReader-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 076BE218278A4AFF72F11E4294A73755 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = PromiseKit; - target = 7C579CE66A1E7A9AA33CA5F97F9C22C5 /* PromiseKit */; - targetProxy = 71FCAC341219C793FA3555E101A11A19 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 1B614AA9C0A7CC87BFFFC8E180348DF9 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 2B4E6F5F2581B5DD7E43776AFA99F73B /* Pods-JKDesFireReader.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 8DE5143C03248BB6CD542DE3963D6F3A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - 9E406C6AAF85E580207CD97B0044DEAB /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Release; - }; - C2D9FCCEAB957C1FF2998A33E348DC1E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D23CDF48A64986FE08237CAF98EAFB82 /* PromiseKit.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/PromiseKit/PromiseKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/PromiseKit/PromiseKit-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/PromiseKit/PromiseKit.modulemap"; - PRODUCT_MODULE_NAME = PromiseKit; - PRODUCT_NAME = PromiseKit; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.4; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - EB9E8A335A6F18DAEED53926A3E08FC2 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 01B053523C0CDCA08CEB03685DDA8974 /* Pods-JKDesFireReader.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - F6B22E4B5C1BAE77A7A422D39F390E04 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E9689298F0AC7F92182277DEA13A5D71 /* PromiseKit.release.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/PromiseKit/PromiseKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/PromiseKit/PromiseKit-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/PromiseKit/PromiseKit.modulemap"; - PRODUCT_MODULE_NAME = PromiseKit; - PRODUCT_NAME = PromiseKit; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.4; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 058DF38F5922F24842B97693B0188F2D /* Build configuration list for PBXNativeTarget "PromiseKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C2D9FCCEAB957C1FF2998A33E348DC1E /* Debug */, - F6B22E4B5C1BAE77A7A422D39F390E04 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8DE5143C03248BB6CD542DE3963D6F3A /* Debug */, - 9E406C6AAF85E580207CD97B0044DEAB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B98876E222F7FFFE1E73942015F3EE09 /* Build configuration list for PBXNativeTarget "Pods-JKDesFireReader" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1B614AA9C0A7CC87BFFFC8E180348DF9 /* Debug */, - EB9E8A335A6F18DAEED53926A3E08FC2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; -} diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h b/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h deleted file mode 100644 index 351a93b..0000000 --- a/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h +++ /dev/null @@ -1,44 +0,0 @@ -#import -#import - - -/** - To import the `NSNotificationCenter` category: - - use_frameworks! - pod "PromiseKit/Foundation" - - Or `NSNotificationCenter` is one of the categories imported by the umbrella pod: - - use_frameworks! - pod "PromiseKit" - - And then in your sources: - - #import -*/ -@interface NSNotificationCenter (PromiseKit) -/** - Observe the named notification once. - - [NSNotificationCenter once:UIKeyboardWillShowNotification].then(^(id note, id userInfo){ - UIViewAnimationCurve curve = [userInfo[UIKeyboardAnimationCurveUserInfoKey] integerValue]; - CGFloat duration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] floatValue]; - - return [UIView promiseWithDuration:duration delay:0.0 options:(curve << 16) animations:^{ - - }]; - }); - - @warning *Important* Promises only resolve once. If you need your block to execute more than once then use `-addObserverForName:object:queue:usingBlock:`. - - @param notificationName The name of the notification for which to register the observer. - - @return A promise that fulfills with two parameters: - - 1. The NSNotification object. - 2. The NSNotification’s userInfo property. -*/ -+ (AnyPromise *)once:(NSString *)notificationName NS_REFINED_FOR_SWIFT; - -@end diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m b/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m deleted file mode 100644 index f8aee71..0000000 --- a/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m +++ /dev/null @@ -1,18 +0,0 @@ -#import -#import -#import "PMKFoundation.h" - -@implementation NSNotificationCenter (PromiseKit) - -+ (AnyPromise *)once:(NSString *)name { - return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) { - __block id identifier; - identifier = [[NSNotificationCenter defaultCenter] addObserverForName:name object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) { - [[NSNotificationCenter defaultCenter] removeObserver:identifier name:name object:nil]; - identifier = nil; - resolve(PMKManifold(note, note.userInfo)); - }]; - }]; -} - -@end diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift b/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift deleted file mode 100644 index 3b7f843..0000000 --- a/Pods/PromiseKit/Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift +++ /dev/null @@ -1,33 +0,0 @@ -import Foundation -#if !PMKCocoaPods -import PromiseKit -#endif - -/** - To import the `NSNotificationCenter` category: - - use_frameworks! - pod "PromiseKit/Foundation" - - Or `NSNotificationCenter` is one of the categories imported by the umbrella pod: - - use_frameworks! - pod "PromiseKit" - - And then in your sources: - - import PromiseKit -*/ -extension NotificationCenter { - /// Observe the named notification once - public func observe(once name: Notification.Name, object: Any? = nil) -> Guarantee { - let (promise, fulfill) = Guarantee.pending() - #if os(Linux) && ((swift(>=4.0) && !swift(>=4.0.1)) || (swift(>=3.0) && !swift(>=3.2.1))) - let id = addObserver(forName: name, object: object, queue: nil, usingBlock: fulfill) - #else - let id = addObserver(forName: name, object: object, queue: nil, using: fulfill) - #endif - promise.done { _ in self.removeObserver(id) } - return promise - } -} diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSObject+Promise.swift b/Pods/PromiseKit/Extensions/Foundation/Sources/NSObject+Promise.swift deleted file mode 100644 index 135719b..0000000 --- a/Pods/PromiseKit/Extensions/Foundation/Sources/NSObject+Promise.swift +++ /dev/null @@ -1,57 +0,0 @@ -import Foundation -#if !PMKCocoaPods -import PromiseKit -#endif - -/** - To import the `NSObject` category: - - use_frameworks! - pod "PromiseKit/Foundation" - - Or `NSObject` is one of the categories imported by the umbrella pod: - - use_frameworks! - pod "PromiseKit" - - And then in your sources: - - import PromiseKit -*/ -extension NSObject { - /** - - Returns: A promise that resolves when the provided keyPath changes. - - Warning: *Important* The promise must not outlive the object under observation. - - SeeAlso: Apple’s KVO documentation. - */ - public func observe(_: PMKNamespacer, keyPath: String) -> Guarantee { - return Guarantee { KVOProxy(observee: self, keyPath: keyPath, resolve: $0) } - } -} - -private class KVOProxy: NSObject { - var retainCycle: KVOProxy? - let fulfill: (Any?) -> Void - - @discardableResult - init(observee: NSObject, keyPath: String, resolve: @escaping (Any?) -> Void) { - fulfill = resolve - super.init() - observee.addObserver(self, forKeyPath: keyPath, options: NSKeyValueObservingOptions.new, context: pointer) - retainCycle = self - } - - fileprivate override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { - if let change = change, context == pointer { - defer { retainCycle = nil } - fulfill(change[NSKeyValueChangeKey.newKey]) - if let object = object as? NSObject, let keyPath = keyPath { - object.removeObserver(self, forKeyPath: keyPath) - } - } - } - - private lazy var pointer: UnsafeMutableRawPointer = { - return Unmanaged.passUnretained(self).toOpaque() - }() -} diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.h b/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.h deleted file mode 100644 index 6036897..0000000 --- a/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.h +++ /dev/null @@ -1,53 +0,0 @@ -#if TARGET_OS_MAC && !TARGET_OS_EMBEDDED && !TARGET_OS_SIMULATOR && !TARGET_OS_UIKITFORMAC - -#import -#import - -#define PMKTaskErrorLaunchPathKey @"PMKTaskErrorLaunchPathKey" -#define PMKTaskErrorArgumentsKey @"PMKTaskErrorArgumentsKey" -#define PMKTaskErrorStandardOutputKey @"PMKTaskErrorStandardOutputKey" -#define PMKTaskErrorStandardErrorKey @"PMKTaskErrorStandardErrorKey" -#define PMKTaskErrorExitStatusKey @"PMKTaskErrorExitStatusKey" - -/** - To import the `NSTask` category: - - use_frameworks! - pod "PromiseKit/Foundation" - - Or `NSTask` is one of the categories imported by the umbrella pod: - - use_frameworks! - pod "PromiseKit" - - And then in your sources: - - #import -*/ -@interface NSTask (PromiseKit) - -/** - Launches the receiver and resolves when it exits. - - If the task fails the promise is rejected with code `PMKTaskError`, and - `userInfo` keys: `PMKTaskErrorStandardOutputKey`, - `PMKTaskErrorStandardErrorKey` and `PMKTaskErrorExitStatusKey`. - - NSTask *task = [NSTask new]; - task.launchPath = @"/usr/bin/basename"; - task.arguments = @[@"/usr/bin/sleep"]; - [task promise].then(^(NSString *stdout){ - //… - }); - - @return A promise that fulfills with three parameters: - - 1) The stdout interpreted as a UTF8 string. - 2) The stderr interpreted as a UTF8 string. - 3) The stdout as `NSData`. -*/ -- (AnyPromise *)promise NS_REFINED_FOR_SWIFT; - -@end - -#endif diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m b/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m deleted file mode 100644 index fa291d3..0000000 --- a/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m +++ /dev/null @@ -1,59 +0,0 @@ -#import -#import -#import -#import -#import - -#if TARGET_OS_MAC && !TARGET_OS_EMBEDDED && !TARGET_OS_SIMULATOR && !TARGET_OS_UIKITFORMAC - -#import "NSTask+AnyPromise.h" - -@implementation NSTask (PromiseKit) - -- (AnyPromise *)promise { - return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) { - self.standardOutput = [NSPipe pipe]; - self.standardError = [NSPipe pipe]; - self.terminationHandler = ^(NSTask *task){ - id stdoutData = [[task.standardOutput fileHandleForReading] readDataToEndOfFile]; - id stdoutString = [[NSString alloc] initWithData:stdoutData encoding:NSUTF8StringEncoding]; - id stderrData = [[task.standardError fileHandleForReading] readDataToEndOfFile]; - id stderrString = [[NSString alloc] initWithData:stderrData encoding:NSUTF8StringEncoding]; - - if (task.terminationReason == NSTaskTerminationReasonExit && self.terminationStatus == 0) { - resolve(PMKManifold(stdoutString, stderrString, stdoutData)); - } else { - id cmd = [NSMutableArray arrayWithObject:task.launchPath]; - [cmd addObjectsFromArray:task.arguments]; - cmd = [cmd componentsJoinedByString:@" "]; - - id info = @{ - NSLocalizedDescriptionKey:[NSString stringWithFormat:@"Failed executing: %@.", cmd], - PMKTaskErrorStandardOutputKey: stdoutString, - PMKTaskErrorStandardErrorKey: stderrString, - PMKTaskErrorExitStatusKey: @(task.terminationStatus), - }; - - resolve([NSError errorWithDomain:PMKErrorDomain code:PMKTaskError userInfo:info]); - } - }; - - #if __clang_major__ >= 9 - if (@available(macOS 10.13, *)) { - NSError *error = nil; - - if (![self launchAndReturnError:&error]) { - resolve(error); - } - } else { - [self launch]; - } - #else - [self launch]; // might @throw - #endif - }]; -} - -@end - -#endif diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.h b/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.h deleted file mode 100644 index 71952d4..0000000 --- a/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.h +++ /dev/null @@ -1,79 +0,0 @@ -#import -#import -#import -#import - -#define PMKURLErrorFailingURLResponseKey @"PMKURLErrorFailingURLResponseKey" -#define PMKURLErrorFailingDataKey @"PMKURLErrorFailingDataKey" -#define PMKURLErrorFailingStringKey @"PMKURLErrorFailingStringKey" -#define PMKJSONErrorJSONObjectKey @"PMKJSONErrorJSONObjectKey" - -/** - Really we shouldn’t assume JSON for (application|text)/(x-)javascript, - really we should return a String of Javascript. However in practice - for the apps we write it *will be* JSON. Thus if you actually want - a Javascript String, use the promise variant of our category functions. - */ -#define PMKHTTPURLResponseIsJSON(rsp) [@[@"application/json", @"text/json", @"text/javascript", @"application/x-javascript", @"application/javascript"] containsObject:[rsp MIMEType]] -#define PMKHTTPURLResponseIsImage(rsp) [@[@"image/tiff", @"image/jpeg", @"image/gif", @"image/png", @"image/ico", @"image/x-icon", @"image/bmp", @"image/x-bmp", @"image/x-xbitmap", @"image/x-win-bitmap"] containsObject:[rsp MIMEType]] -#define PMKHTTPURLResponseIsText(rsp) [[rsp MIMEType] hasPrefix:@"text/"] - -#define PMKJSONDeserializationOptions ((NSJSONReadingOptions)(NSJSONReadingAllowFragments | NSJSONReadingMutableContainers)) - - -/** - To import the `NSURLSession` category: - - use_frameworks! - pod "PromiseKit/Foundation" - - Or `NSURLConnection` is one of the categories imported by the umbrella pod: - - use_frameworks! - pod "PromiseKit" - - And then in your sources: - - #import -*/ -@interface NSURLSession (PromiseKit) - -/** - Creates a task that retrieves the contents of a URL based on the - specified URL request object. - - PromiseKit automatically deserializes the raw HTTP data response into the - appropriate rich data type based on the mime type the server provides. - Thus if the response is JSON you will get the deserialized JSON response. - PromiseKit supports decoding into strings, JSON and UIImages. - - However if your server does not provide a rich content-type, you will - just get `NSData`. This is rare, but a good example we came across was - downloading files from Dropbox. - - PromiseKit goes to quite some lengths to provide good `NSError` objects - for error conditions at all stages of the HTTP to rich-data type - pipeline. We provide the following additional `userInfo` keys as - appropriate: - - - `PMKURLErrorFailingDataKey` - - `PMKURLErrorFailingStringKey` - - `PMKURLErrorFailingURLResponseKey` - - [[NSURLConnection sharedSession] promiseDataTaskWithRequest:rq].then(^(id response){ - // response is probably an NSDictionary deserialized from JSON - }); - - @param request The URL request. - - @return A promise that fulfills with three parameters: - - 1) The deserialized data response. - 2) The `NSHTTPURLResponse`. - 3) The raw `NSData` response. - - @see https://github.com/mxcl/OMGHTTPURLRQ -*/ -- (AnyPromise *)promiseDataTaskWithRequest:(NSURLRequest *)request NS_REFINED_FOR_SWIFT; - -@end diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.m b/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.m deleted file mode 100644 index 901eb28..0000000 --- a/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+AnyPromise.m +++ /dev/null @@ -1,113 +0,0 @@ -#import -#import -#import -#import "NSURLSession+AnyPromise.h" -#import -#import -#import -#import -#import -#import -#import -#import - -@implementation NSURLSession (PromiseKit) - -- (AnyPromise *)promiseDataTaskWithRequest:(NSURLRequest *)rq { - return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) { - [[self dataTaskWithRequest:rq completionHandler:^(NSData *data, id rsp, NSError *urlError){ - assert(![NSThread isMainThread]); - - PMKResolver fulfiller = ^(id responseObject){ - resolve(PMKManifold(responseObject, rsp, data)); - }; - PMKResolver rejecter = ^(NSError *error){ - id userInfo = error.userInfo.mutableCopy ?: [NSMutableDictionary new]; - if (data) userInfo[PMKURLErrorFailingDataKey] = data; - if (rsp) userInfo[PMKURLErrorFailingURLResponseKey] = rsp; - error = [NSError errorWithDomain:error.domain code:error.code userInfo:userInfo]; - resolve(error); - }; - - NSStringEncoding (^stringEncoding)(void) = ^NSStringEncoding{ - id encodingName = [rsp textEncodingName]; - if (encodingName) { - CFStringEncoding encoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)encodingName); - if (encoding != kCFStringEncodingInvalidId) - return CFStringConvertEncodingToNSStringEncoding(encoding); - } - return NSUTF8StringEncoding; - }; - - if (urlError) { - rejecter(urlError); - } else if (![rsp isKindOfClass:[NSHTTPURLResponse class]]) { - fulfiller(data); - } else if ([rsp statusCode] < 200 || [rsp statusCode] >= 300) { - id info = @{ - NSLocalizedDescriptionKey: @"The server returned a bad HTTP response code", - NSURLErrorFailingURLStringErrorKey: rq.URL.absoluteString, - NSURLErrorFailingURLErrorKey: rq.URL - }; - id err = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorBadServerResponse userInfo:info]; - rejecter(err); - } else if (PMKHTTPURLResponseIsJSON(rsp)) { - // work around ever-so-common Rails workaround: https://github.com/rails/rails/issues/1742 - if ([rsp expectedContentLength] == 1 && [data isEqualToData:[NSData dataWithBytes:" " length:1]]) - return fulfiller(nil); - - NSError *err = nil; - id json = [NSJSONSerialization JSONObjectWithData:data options:PMKJSONDeserializationOptions error:&err]; - if (!err) { - fulfiller(json); - } else { - id userInfo = err.userInfo.mutableCopy; - if (data) { - NSString *string = [[NSString alloc] initWithData:data encoding:stringEncoding()]; - if (string) - userInfo[PMKURLErrorFailingStringKey] = string; - } - long long length = [rsp expectedContentLength]; - id bytes = length <= 0 ? @"" : [NSString stringWithFormat:@"%lld bytes", length]; - id fmt = @"The server claimed a %@ JSON response, but decoding failed with: %@"; - userInfo[NSLocalizedDescriptionKey] = [NSString stringWithFormat:fmt, bytes, userInfo[NSLocalizedDescriptionKey]]; - err = [NSError errorWithDomain:err.domain code:err.code userInfo:userInfo]; - rejecter(err); - } - #ifdef UIKIT_EXTERN - } else if (PMKHTTPURLResponseIsImage(rsp)) { - UIImage *image = [[UIImage alloc] initWithData:data]; - image = [[UIImage alloc] initWithCGImage:[image CGImage] scale:image.scale orientation:image.imageOrientation]; - if (image) - fulfiller(image); - else { - id info = @{ - NSLocalizedDescriptionKey: @"The server returned invalid image data", - NSURLErrorFailingURLStringErrorKey: rq.URL.absoluteString, - NSURLErrorFailingURLErrorKey: rq.URL - }; - id err = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorCannotDecodeContentData userInfo:info]; - rejecter(err); - } - #endif - } else if (PMKHTTPURLResponseIsText(rsp)) { - id str = [[NSString alloc] initWithData:data encoding:stringEncoding()]; - if (str) - fulfiller(str); - else { - id info = @{ - NSLocalizedDescriptionKey: @"The server returned invalid string data", - NSURLErrorFailingURLStringErrorKey: rq.URL.absoluteString, - NSURLErrorFailingURLErrorKey: rq.URL - }; - id err = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorCannotDecodeContentData userInfo:info]; - rejecter(err); - } - } else { - fulfiller(data); - } - }] resume]; - }]; -} - -@end diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift b/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift deleted file mode 100644 index 150654f..0000000 --- a/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift +++ /dev/null @@ -1,246 +0,0 @@ -import Foundation -#if !PMKCocoaPods -import PromiseKit -#endif -#if swift(>=4.1) -#if canImport(FoundationNetworking) -import FoundationNetworking -#endif -#endif - -/** - To import the `NSURLSession` category: - - use_frameworks! - pod "PromiseKit/Foundation" - - Or `NSURLSession` is one of the categories imported by the umbrella pod: - - use_frameworks! - pod "PromiseKit" - - And then in your sources: - - import PromiseKit -*/ -extension URLSession { - /** - Example usage: - - firstly { - URLSession.shared.dataTask(.promise, with: rq) - }.compactMap { data, _ in - try JSONSerialization.jsonObject(with: data) as? [String: Any] - }.then { json in - //… - } - - We recommend the use of [OMGHTTPURLRQ] which allows you to construct correct REST requests: - - firstly { - let rq = OMGHTTPURLRQ.POST(url, json: parameters) - URLSession.shared.dataTask(.promise, with: rq) - }.then { data, urlResponse in - //… - } - - We provide a convenience initializer for `String` specifically for this promise: - - firstly { - URLSession.shared.dataTask(.promise, with: rq) - }.compactMap(String.init).then { string in - // decoded per the string encoding specified by the server - }.then { string in - print("response: string") - } - - Other common types can be easily decoded using compactMap also: - - firstly { - URLSession.shared.dataTask(.promise, with: rq) - }.compactMap { - UIImage(data: $0) - }.then { - self.imageView.image = $0 - } - - Though if you do decode the image this way, we recommend inflating it on a background thread - first as this will improve main thread performance when rendering the image: - - firstly { - URLSession.shared.dataTask(.promise, with: rq) - }.compactMap(on: QoS.userInitiated) { data, _ in - guard let img = UIImage(data: data) else { return nil } - _ = cgImage?.dataProvider?.data - return img - }.then { - self.imageView.image = $0 - } - - - Parameter convertible: A URL or URLRequest. - - Returns: A promise that represents the URL request. - - SeeAlso: [OMGHTTPURLRQ] - - Remark: We deliberately don’t provide a `URLRequestConvertible` for `String` because in our experience, you should be explicit with this error path to make good apps. - - [OMGHTTPURLRQ]: https://github.com/mxcl/OMGHTTPURLRQ - */ - public func dataTask(_: PMKNamespacer, with convertible: URLRequestConvertible) -> Promise<(data: Data, response: URLResponse)> { - return Promise { dataTask(with: convertible.pmkRequest, completionHandler: adapter($0)).resume() } - } - - public func uploadTask(_: PMKNamespacer, with convertible: URLRequestConvertible, from data: Data) -> Promise<(data: Data, response: URLResponse)> { - return Promise { uploadTask(with: convertible.pmkRequest, from: data, completionHandler: adapter($0)).resume() } - } - - public func uploadTask(_: PMKNamespacer, with convertible: URLRequestConvertible, fromFile file: URL) -> Promise<(data: Data, response: URLResponse)> { - return Promise { uploadTask(with: convertible.pmkRequest, fromFile: file, completionHandler: adapter($0)).resume() } - } - - /// - Remark: we force a `to` parameter because Apple deletes the downloaded file immediately after the underyling completion handler returns. - /// - Note: we do not create the destination directory for you, because we move the file with FileManager.moveItem which changes it behavior depending on the directory status of the URL you provide. So create your own directory first! - public func downloadTask(_: PMKNamespacer, with convertible: URLRequestConvertible, to saveLocation: URL) -> Promise<(saveLocation: URL, response: URLResponse)> { - return Promise { seal in - downloadTask(with: convertible.pmkRequest, completionHandler: { tmp, rsp, err in - if let error = err { - seal.reject(error) - } else if let rsp = rsp, let tmp = tmp { - do { - try FileManager.default.moveItem(at: tmp, to: saveLocation) - seal.fulfill((saveLocation, rsp)) - } catch { - seal.reject(error) - } - } else { - seal.reject(PMKError.invalidCallingConvention) - } - }).resume() - } - } -} - - -public protocol URLRequestConvertible { - var pmkRequest: URLRequest { get } -} -extension URLRequest: URLRequestConvertible { - public var pmkRequest: URLRequest { return self } -} -extension URL: URLRequestConvertible { - public var pmkRequest: URLRequest { return URLRequest(url: self) } -} - - -#if !os(Linux) -public extension String { - /** - - Remark: useful when converting a `URLSession` response into a `String` - - firstly { - URLSession.shared.dataTask(.promise, with: rq) - }.map(String.init).done { - print($0) - } - */ - init?(data: Data, urlResponse: URLResponse) { - guard let str = String(bytes: data, encoding: urlResponse.stringEncoding ?? .utf8) else { - return nil - } - self.init(str) - } -} - -private extension URLResponse { - var stringEncoding: String.Encoding? { - guard let encodingName = textEncodingName else { return nil } - let encoding = CFStringConvertIANACharSetNameToEncoding(encodingName as CFString) - guard encoding != kCFStringEncodingInvalidId else { return nil } - return String.Encoding(rawValue: CFStringConvertEncodingToNSStringEncoding(encoding)) - } -} -#endif - -private func adapter(_ seal: Resolver<(data: T, response: U)>) -> (T?, U?, Error?) -> Void { - return { t, u, e in - if let t = t, let u = u { - seal.fulfill((t, u)) - } else if let e = e { - seal.reject(e) - } else { - seal.reject(PMKError.invalidCallingConvention) - } - } -} - - -#if swift(>=3.1) -public enum PMKHTTPError: Error, LocalizedError, CustomStringConvertible { - case badStatusCode(Int, Data, HTTPURLResponse) - - public var errorDescription: String? { - func url(_ rsp: URLResponse) -> String { - return rsp.url?.absoluteString ?? "nil" - } - switch self { - case .badStatusCode(401, _, let response): - return "Unauthorized (\(url(response))" - case .badStatusCode(let code, _, let response): - return "Invalid HTTP response (\(code)) for \(url(response))." - } - } - -#if swift(>=4.0) - public func decodeResponse(_ t: T.Type, decoder: JSONDecoder = JSONDecoder()) -> T? { - switch self { - case .badStatusCode(_, let data, _): - return try? decoder.decode(t, from: data) - } - } -#endif - - //TODO rename responseJSON - public var jsonDictionary: Any? { - switch self { - case .badStatusCode(_, let data, _): - return try? JSONSerialization.jsonObject(with: data) - } - } - - var responseBodyString: String? { - switch self { - case .badStatusCode(_, let data, _): - return String(data: data, encoding: .utf8) - } - } - - public var failureReason: String? { - return responseBodyString - } - - public var description: String { - switch self { - case .badStatusCode(let code, let data, let response): - var dict: [String: Any] = [ - "Status Code": code, - "Body": String(data: data, encoding: .utf8) ?? "\(data.count) bytes" - ] - dict["URL"] = response.url - dict["Headers"] = response.allHeaderFields - return " \(NSDictionary(dictionary: dict))" // as NSDictionary makes the output look like NSHTTPURLResponse looks - } - } -} - -public extension Promise where T == (data: Data, response: URLResponse) { - func validate() -> Promise { - return map { - guard let response = $0.response as? HTTPURLResponse else { return $0 } - switch response.statusCode { - case 200..<300: - return $0 - case let code: - throw PMKHTTPError.badStatusCode(code, $0.data, response) - } - } - } -} -#endif diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/PMKFoundation.h b/Pods/PromiseKit/Extensions/Foundation/Sources/PMKFoundation.h deleted file mode 100644 index 8796c0d..0000000 --- a/Pods/PromiseKit/Extensions/Foundation/Sources/PMKFoundation.h +++ /dev/null @@ -1,3 +0,0 @@ -#import "NSNotificationCenter+AnyPromise.h" -#import "NSURLSession+AnyPromise.h" -#import "NSTask+AnyPromise.h" diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/Process+Promise.swift b/Pods/PromiseKit/Extensions/Foundation/Sources/Process+Promise.swift deleted file mode 100644 index 03cab3c..0000000 --- a/Pods/PromiseKit/Extensions/Foundation/Sources/Process+Promise.swift +++ /dev/null @@ -1,190 +0,0 @@ -import Foundation -#if !PMKCocoaPods -import PromiseKit -#endif - -#if os(macOS) - -/** - To import the `Process` category: - - use_frameworks! - pod "PromiseKit/Foundation" - - Or `Process` is one of the categories imported by the umbrella pod: - - use_frameworks! - pod "PromiseKit" - - And then in your sources: - - import PromiseKit - */ -extension Process { - /** - Launches the receiver and resolves when it exits. - - let proc = Process() - proc.launchPath = "/bin/ls" - proc.arguments = ["/bin"] - proc.launch(.promise).compactMap { std in - String(data: std.out.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8) - }.then { stdout in - print(str) - } - */ - public func launch(_: PMKNamespacer) -> Promise<(out: Pipe, err: Pipe)> { - let (stdout, stderr) = (Pipe(), Pipe()) - - do { - standardOutput = stdout - standardError = stderr - - #if swift(>=4.0) - if #available(OSX 10.13, *) { - try run() - } else if let path = launchPath, FileManager.default.isExecutableFile(atPath: path) { - launch() - } else { - throw PMKError.notExecutable(launchPath) - } - #else - guard let path = launchPath, FileManager.default.isExecutableFile(atPath: path) else { - throw PMKError.notExecutable(launchPath) - } - launch() - #endif - } catch { - return Promise(error: error) - } - - - var q: DispatchQueue { - if #available(macOS 10.10, iOS 8.0, tvOS 9.0, watchOS 2.0, *) { - return DispatchQueue.global(qos: .default) - } else { - return DispatchQueue.global(priority: .default) - } - } - - return Promise { seal in - q.async { - self.waitUntilExit() - - guard self.terminationReason == .exit, self.terminationStatus == 0 else { - let stdoutData = try? self.readDataFromPipe(stdout) - let stderrData = try? self.readDataFromPipe(stderr) - - let stdoutString = stdoutData.flatMap { (data: Data) -> String? in String(data: data, encoding: .utf8) } - let stderrString = stderrData.flatMap { (data: Data) -> String? in String(data: data, encoding: .utf8) } - - return seal.reject(PMKError.execution(process: self, standardOutput: stdoutString, standardError: stderrString)) - } - seal.fulfill((stdout, stderr)) - } - } - } - - private func readDataFromPipe(_ pipe: Pipe) throws -> Data { - let handle = pipe.fileHandleForReading - defer { handle.closeFile() } - - // Someday, NSFileHandle will probably be updated with throwing equivalents to its read and write methods, - // as NSTask has, to avoid raising exceptions and crashing the app. - // Unfortunately that day has not yet come, so use the underlying BSD calls for now. - - let fd = handle.fileDescriptor - - let bufsize = 1024 * 8 - let buf = UnsafeMutablePointer.allocate(capacity: bufsize) - - #if swift(>=4.1) - defer { buf.deallocate() } - #else - defer { buf.deallocate(capacity: bufsize) } - #endif - - var data = Data() - - while true { - let bytesRead = read(fd, buf, bufsize) - - if bytesRead == 0 { - break - } - - if bytesRead < 0 { - throw POSIXError.Code(rawValue: errno).map { POSIXError($0) } ?? CocoaError(.fileReadUnknown) - } - - data.append(buf, count: bytesRead) - } - - return data - } - - /** - The error generated by PromiseKit’s `Process` extension - */ - public enum PMKError { - /// NOT AVAILABLE ON 10.13 and above because Apple provide this error handling themselves - case notExecutable(String?) - case execution(process: Process, standardOutput: String?, standardError: String?) - } -} - - -extension Process.PMKError: LocalizedError { - public var errorDescription: String? { - switch self { - case .notExecutable(let path?): - return "File not executable: \(path)" - case .notExecutable(nil): - return "No launch path specified" - case .execution(process: let task, standardOutput: _, standardError: _): - return "Failed executing: `\(task)` (\(task.terminationStatus))." - } - } -} - -public extension Promise where T == (out: Pipe, err: Pipe) { - func print() -> Promise { - return tap { result in - switch result { - case .fulfilled(let raw): - let stdout = String(data: raw.out.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8) - let stderr = String(data: raw.err.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8) - Swift.print("stdout: `\(stdout ?? "")`") - Swift.print("stderr: `\(stderr ?? "")`") - case .rejected(let err): - Swift.print(err) - } - } - } -} - -extension Process { - /// Provided because Foundation’s is USELESS - open override var description: String { - let launchPath = self.launchPath ?? "$0" - var args = [launchPath] - arguments.flatMap{ args += $0 } - return args.map { arg in - let contains: Bool - #if swift(>=3.2) - contains = arg.contains(" ") - #else - contains = arg.characters.contains(" ") - #endif - if contains { - return "\"\(arg)\"" - } else if arg == "" { - return "\"\"" - } else { - return arg - } - }.joined(separator: " ") - } -} - -#endif diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/afterlife.swift b/Pods/PromiseKit/Extensions/Foundation/Sources/afterlife.swift deleted file mode 100644 index 232c8da..0000000 --- a/Pods/PromiseKit/Extensions/Foundation/Sources/afterlife.swift +++ /dev/null @@ -1,26 +0,0 @@ -import Foundation -#if !PMKCocoaPods -import PromiseKit -#endif - -/** - - Returns: A promise that resolves when the provided object deallocates - - Important: The promise is not guarenteed to resolve immediately when the provided object is deallocated. So you cannot write code that depends on exact timing. - */ -public func after(life object: NSObject) -> Guarantee { - var reaper = objc_getAssociatedObject(object, &handle) as? GrimReaper - if reaper == nil { - reaper = GrimReaper() - objc_setAssociatedObject(object, &handle, reaper, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - return reaper!.promise -} - -private var handle: UInt8 = 0 - -private class GrimReaper: NSObject { - deinit { - fulfill(()) - } - let (promise, fulfill) = Guarantee.pending() -} diff --git a/Pods/PromiseKit/Extensions/UIKit/Sources/PMKUIKit.h b/Pods/PromiseKit/Extensions/UIKit/Sources/PMKUIKit.h deleted file mode 100644 index 75cbf90..0000000 --- a/Pods/PromiseKit/Extensions/UIKit/Sources/PMKUIKit.h +++ /dev/null @@ -1,8 +0,0 @@ -#import "UIView+AnyPromise.h" -#import "UIViewController+AnyPromise.h" - -typedef NS_OPTIONS(NSInteger, PMKAnimationOptions) { - PMKAnimationOptionsNone = 1 << 0, - PMKAnimationOptionsAppear = 1 << 1, - PMKAnimationOptionsDisappear = 1 << 2, -}; diff --git a/Pods/PromiseKit/Extensions/UIKit/Sources/UIView+AnyPromise.h b/Pods/PromiseKit/Extensions/UIKit/Sources/UIView+AnyPromise.h deleted file mode 100644 index 0a19cd6..0000000 --- a/Pods/PromiseKit/Extensions/UIKit/Sources/UIView+AnyPromise.h +++ /dev/null @@ -1,80 +0,0 @@ -#import -#import - -// Created by Masafumi Yoshida on 2014/07/11. -// Copyright (c) 2014年 DeNA. All rights reserved. - -/** - To import the `UIView` category: - - use_frameworks! - pod "PromiseKit/UIKit" - - Or `UIKit` is one of the categories imported by the umbrella pod: - - use_frameworks! - pod "PromiseKit" - - And then in your sources: - - @import PromiseKit; -*/ -@interface UIView (PromiseKit) - -/** - Animate changes to one or more views using the specified duration. - - @param duration The total duration of the animations, measured in - seconds. If you specify a negative value or 0, the changes are made - without animating them. - - @param animations A block object containing the changes to commit to the - views. - - @return A promise that fulfills with a boolean NSNumber indicating - whether or not the animations actually finished. -*/ -+ (AnyPromise *)promiseWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations NS_REFINED_FOR_SWIFT; - -/** - Animate changes to one or more views using the specified duration, delay, - options, and completion handler. - - @param duration The total duration of the animations, measured in - seconds. If you specify a negative value or 0, the changes are made - without animating them. - - @param delay The amount of time (measured in seconds) to wait before - beginning the animations. Specify a value of 0 to begin the animations - immediately. - - @param options A mask of options indicating how you want to perform the - animations. For a list of valid constants, see UIViewAnimationOptions. - - @param animations A block object containing the changes to commit to the - views. - - @return A promise that fulfills with a boolean NSNumber indicating - whether or not the animations actually finished. -*/ -+ (AnyPromise *)promiseWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations NS_REFINED_FOR_SWIFT; - -/** - Performs a view animation using a timing curve corresponding to the - motion of a physical spring. - - @return A promise that fulfills with a boolean NSNumber indicating - whether or not the animations actually finished. -*/ -+ (AnyPromise *)promiseWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay usingSpringWithDamping:(CGFloat)dampingRatio initialSpringVelocity:(CGFloat)velocity options:(UIViewAnimationOptions)options animations:(void (^)(void))animations NS_REFINED_FOR_SWIFT; - -/** - Creates an animation block object that can be used to set up - keyframe-based animations for the current view. - - @return A promise that fulfills with a boolean NSNumber indicating - whether or not the animations actually finished. -*/ -+ (AnyPromise *)promiseWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewKeyframeAnimationOptions)options keyframeAnimations:(void (^)(void))animations NS_REFINED_FOR_SWIFT; - -@end diff --git a/Pods/PromiseKit/Extensions/UIKit/Sources/UIView+AnyPromise.m b/Pods/PromiseKit/Extensions/UIKit/Sources/UIView+AnyPromise.m deleted file mode 100644 index 04ee940..0000000 --- a/Pods/PromiseKit/Extensions/UIKit/Sources/UIView+AnyPromise.m +++ /dev/null @@ -1,64 +0,0 @@ -// -// UIView+PromiseKit_UIAnimation.m -// YahooDenaStudy -// -// Created by Masafumi Yoshida on 2014/07/11. -// Copyright (c) 2014年 DeNA. All rights reserved. -// - -#import -#import "UIView+AnyPromise.h" - - -#define CopyPasta \ - NSAssert([NSThread isMainThread], @"UIKit animation must be performed on the main thread"); \ - \ - if (![NSThread isMainThread]) { \ - id error = [NSError errorWithDomain:PMKErrorDomain code:PMKInvalidUsageError userInfo:@{NSLocalizedDescriptionKey: @"Animation was attempted on a background thread"}]; \ - return [AnyPromise promiseWithValue:error]; \ - } \ - \ - PMKResolver resolve = nil; \ - AnyPromise *promise = [[AnyPromise alloc] initWithResolver:&resolve]; - - -@implementation UIView (PromiseKit) - -+ (AnyPromise *)promiseWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations { - return [self promiseWithDuration:duration delay:0 options:0 animations:animations]; -} - -+ (AnyPromise *)promiseWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void(^)(void))animations -{ - CopyPasta; - - [UIView animateWithDuration:duration delay:delay options:options animations:animations completion:^(BOOL finished) { - resolve(@(finished)); - }]; - - return promise; -} - -+ (AnyPromise *)promiseWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay usingSpringWithDamping:(CGFloat)dampingRatio initialSpringVelocity:(CGFloat)velocity options:(UIViewAnimationOptions)options animations:(void(^)(void))animations -{ - CopyPasta; - - [UIView animateWithDuration:duration delay:delay usingSpringWithDamping:dampingRatio initialSpringVelocity:velocity options:options animations:animations completion:^(BOOL finished) { - resolve(@(finished)); - }]; - - return promise; -} - -+ (AnyPromise *)promiseWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewKeyframeAnimationOptions)options keyframeAnimations:(void(^)(void))animations -{ - CopyPasta; - - [UIView animateKeyframesWithDuration:duration delay:delay options:options animations:animations completion:^(BOOL finished) { - resolve(@(finished)); - }]; - - return promise; -} - -@end diff --git a/Pods/PromiseKit/Extensions/UIKit/Sources/UIView+Promise.swift b/Pods/PromiseKit/Extensions/UIKit/Sources/UIView+Promise.swift deleted file mode 100644 index 1bbb8c6..0000000 --- a/Pods/PromiseKit/Extensions/UIKit/Sources/UIView+Promise.swift +++ /dev/null @@ -1,115 +0,0 @@ -import UIKit.UIView -#if !PMKCocoaPods -import PromiseKit -#endif - -/** - To import the `UIView` category: - - use_frameworks! - pod "PromiseKit/UIKit" - - Or `UIKit` is one of the categories imported by the umbrella pod: - - use_frameworks! - pod "PromiseKit" - - And then in your sources: - - import PromiseKit -*/ -public extension UIView { -#if swift(>=4.2) -/** - Animate changes to one or more views using the specified duration, delay, - options, and completion handler. - - - Parameter duration: The total duration of the animations, measured in - seconds. If you specify a negative value or 0, the changes are made - without animating them. - - - Parameter delay: The amount of time (measured in seconds) to wait before - beginning the animations. Specify a value of 0 to begin the animations - immediately. - - - Parameter options: A mask of options indicating how you want to perform the - animations. For a list of valid constants, see UIViewAnimationOptions. - - - Parameter animations: A block object containing the changes to commit to the - views. - - - Returns: A promise that fulfills with a boolean NSNumber indicating - whether or not the animations actually finished. - */ - @discardableResult - static func animate(_: PMKNamespacer, duration: TimeInterval, delay: TimeInterval = 0, options: UIView.AnimationOptions = [], animations: @escaping () -> Void) -> Guarantee { - return Guarantee { animate(withDuration: duration, delay: delay, options: options, animations: animations, completion: $0) } - } - - @discardableResult - static func animate(_: PMKNamespacer, duration: TimeInterval, delay: TimeInterval, usingSpringWithDamping damping: CGFloat, initialSpringVelocity: CGFloat, options: UIView.AnimationOptions = [], animations: @escaping () -> Void) -> Guarantee { - return Guarantee { animate(withDuration: duration, delay: delay, usingSpringWithDamping: damping, initialSpringVelocity: initialSpringVelocity, options: options, animations: animations, completion: $0) } - } - - @discardableResult - static func transition(_: PMKNamespacer, with view: UIView, duration: TimeInterval, options: UIView.AnimationOptions = [], animations: (() -> Void)?) -> Guarantee { - return Guarantee { transition(with: view, duration: duration, options: options, animations: animations, completion: $0) } - } - - @discardableResult - static func transition(_: PMKNamespacer, from: UIView, to: UIView, duration: TimeInterval, options: UIView.AnimationOptions = []) -> Guarantee { - return Guarantee { transition(from: from, to: to, duration: duration, options: options, completion: $0) } - } - - @discardableResult - static func perform(_: PMKNamespacer, animation: UIView.SystemAnimation, on views: [UIView], options: UIView.AnimationOptions = [], animations: (() -> Void)?) -> Guarantee { - return Guarantee { perform(animation, on: views, options: options, animations: animations, completion: $0) } - } -#else - /** - Animate changes to one or more views using the specified duration, delay, - options, and completion handler. - - - Parameter duration: The total duration of the animations, measured in - seconds. If you specify a negative value or 0, the changes are made - without animating them. - - - Parameter delay: The amount of time (measured in seconds) to wait before - beginning the animations. Specify a value of 0 to begin the animations - immediately. - - - Parameter options: A mask of options indicating how you want to perform the - animations. For a list of valid constants, see UIViewAnimationOptions. - - - Parameter animations: A block object containing the changes to commit to the - views. - - - Returns: A promise that fulfills with a boolean NSNumber indicating - whether or not the animations actually finished. - */ - @discardableResult - static func animate(_: PMKNamespacer, duration: TimeInterval, delay: TimeInterval = 0, options: UIViewAnimationOptions = [], animations: @escaping () -> Void) -> Guarantee { - return Guarantee { animate(withDuration: duration, delay: delay, options: options, animations: animations, completion: $0) } - } - - @discardableResult - static func animate(_: PMKNamespacer, duration: TimeInterval, delay: TimeInterval, usingSpringWithDamping damping: CGFloat, initialSpringVelocity: CGFloat, options: UIViewAnimationOptions = [], animations: @escaping () -> Void) -> Guarantee { - return Guarantee { animate(withDuration: duration, delay: delay, usingSpringWithDamping: damping, initialSpringVelocity: initialSpringVelocity, options: options, animations: animations, completion: $0) } - } - - @discardableResult - static func transition(_: PMKNamespacer, with view: UIView, duration: TimeInterval, options: UIViewAnimationOptions = [], animations: (() -> Void)?) -> Guarantee { - return Guarantee { transition(with: view, duration: duration, options: options, animations: animations, completion: $0) } - } - - @discardableResult - static func transition(_: PMKNamespacer, from: UIView, to: UIView, duration: TimeInterval, options: UIViewAnimationOptions = []) -> Guarantee { - return Guarantee { transition(from: from, to: to, duration: duration, options: options, completion: $0) } - } - - @discardableResult - static func perform(_: PMKNamespacer, animation: UISystemAnimation, on views: [UIView], options: UIViewAnimationOptions = [], animations: (() -> Void)?) -> Guarantee { - return Guarantee { perform(animation, on: views, options: options, animations: animations, completion: $0) } - } -#endif -} diff --git a/Pods/PromiseKit/Extensions/UIKit/Sources/UIViewController+AnyPromise.h b/Pods/PromiseKit/Extensions/UIKit/Sources/UIViewController+AnyPromise.h deleted file mode 100644 index 0e60ca9..0000000 --- a/Pods/PromiseKit/Extensions/UIKit/Sources/UIViewController+AnyPromise.h +++ /dev/null @@ -1,71 +0,0 @@ -#import -#import - -/** - To import the `UIViewController` category: - - use_frameworks! - pod "PromiseKit/UIKit" - - Or `UIKit` is one of the categories imported by the umbrella pod: - - use_frameworks! - pod "PromiseKit" - - And then in your sources: - - @import PromiseKit; -*/ -@interface UIViewController (PromiseKit) - -/** - Presents a view controller modally. - - If the view controller is one of the following: - - - MFMailComposeViewController - - MFMessageComposeViewController - - UIImagePickerController - - SLComposeViewController - - Then PromiseKit presents the view controller returning a promise that is - resolved as per the documentation for those classes. Eg. if you present a - `UIImagePickerController` the view controller will be presented for you - and the returned promise will resolve with the media the user selected. - - [self promiseViewController:[MFMailComposeViewController new] animated:YES completion:nil].then(^{ - //… - }); - - Otherwise PromiseKit expects your view controller to implement a - `promise` property. This promise will be returned from this method and - presentation and dismissal of the presented view controller will be - managed for you. - - \@interface MyViewController: UIViewController - @property (readonly) AnyPromise *promise; - @end - - @implementation MyViewController { - PMKResolver resolve; - } - - - (void)viewDidLoad { - _promise = [[AnyPromise alloc] initWithResolver:&resolve]; - } - - - (void)later { - resolve(@"some fulfilled value"); - } - - @end - - [self promiseViewController:[MyViewController new] aniamted:YES completion:nil].then(^(id value){ - // value == @"some fulfilled value" - }); - - @return A promise that can be resolved by the presented view controller. -*/ -- (AnyPromise *)promiseViewController:(UIViewController *)vc animated:(BOOL)animated completion:(void (^)(void))block NS_REFINED_FOR_SWIFT; - -@end diff --git a/Pods/PromiseKit/Extensions/UIKit/Sources/UIViewController+AnyPromise.m b/Pods/PromiseKit/Extensions/UIKit/Sources/UIViewController+AnyPromise.m deleted file mode 100644 index 5231e55..0000000 --- a/Pods/PromiseKit/Extensions/UIKit/Sources/UIViewController+AnyPromise.m +++ /dev/null @@ -1,140 +0,0 @@ -#import -#import "UIViewController+AnyPromise.h" -#import - -#if PMKImagePickerController -#import -#endif - -@interface PMKGenericDelegate : NSObject { -@public - PMKResolver resolve; -} -+ (instancetype)delegateWithPromise:(AnyPromise **)promise; -@end - -@interface UIViewController () -- (AnyPromise*) promise; -@end - -@implementation UIViewController (PromiseKit) - -- (AnyPromise *)promiseViewController:(UIViewController *)vc animated:(BOOL)animated completion:(void (^)(void))block { - __kindof UIViewController *vc2present = vc; - AnyPromise *promise = nil; - - if ([vc isKindOfClass:NSClassFromString(@"MFMailComposeViewController")]) { - PMKGenericDelegate *delegate = [PMKGenericDelegate delegateWithPromise:&promise]; - [vc setValue:delegate forKey:@"mailComposeDelegate"]; - } - else if ([vc isKindOfClass:NSClassFromString(@"MFMessageComposeViewController")]) { - PMKGenericDelegate *delegate = [PMKGenericDelegate delegateWithPromise:&promise]; - [vc setValue:delegate forKey:@"messageComposeDelegate"]; - } -#ifdef PMKImagePickerController - else if ([vc isKindOfClass:[UIImagePickerController class]]) { - PMKGenericDelegate *delegate = [PMKGenericDelegate delegateWithPromise:&promise]; - [vc setValue:delegate forKey:@"delegate"]; - } -#endif - else if ([vc isKindOfClass:NSClassFromString(@"SLComposeViewController")]) { - PMKResolver resolve; - promise = [[AnyPromise alloc] initWithResolver:&resolve]; - [vc setValue:^(NSInteger result){ - if (result == 0) { - resolve([NSError errorWithDomain:NSCocoaErrorDomain code:NSUserCancelledError userInfo:nil]); - } else { - resolve(@(result)); - } - } forKey:@"completionHandler"]; - } - else if ([vc isKindOfClass:[UINavigationController class]]) - vc = [(id)vc viewControllers].firstObject; - - if (!vc) { - id userInfo = @{NSLocalizedDescriptionKey: @"nil or effective nil passed to promiseViewController"}; - id err = [NSError errorWithDomain:PMKErrorDomain code:PMKInvalidUsageError userInfo:userInfo]; - return [AnyPromise promiseWithValue:err]; - } - - if (!promise) { - if (![vc respondsToSelector:@selector(promise)]) { - id userInfo = @{NSLocalizedDescriptionKey: @"ViewController is not promisable"}; - id err = [NSError errorWithDomain:PMKErrorDomain code:PMKInvalidUsageError userInfo:userInfo]; - return [AnyPromise promiseWithValue:err]; - } - - promise = [vc valueForKey:@"promise"]; - - if (![promise isKindOfClass:[AnyPromise class]]) { - id userInfo = @{NSLocalizedDescriptionKey: @"The promise property is nil or not of type AnyPromise"}; - id err = [NSError errorWithDomain:PMKErrorDomain code:PMKInvalidUsageError userInfo:userInfo]; - return [AnyPromise promiseWithValue:err]; - } - } - - if (!promise.pending) - return promise; - - [self presentViewController:vc2present animated:animated completion:block]; - - promise.ensure(^{ - [vc2present.presentingViewController dismissViewControllerAnimated:animated completion:nil]; - }); - - return promise; -} - -@end - - - -@implementation PMKGenericDelegate { - id retainCycle; -} - -+ (instancetype)delegateWithPromise:(AnyPromise **)promise; { - PMKGenericDelegate *d = [PMKGenericDelegate new]; - d->retainCycle = d; - *promise = [[AnyPromise alloc] initWithResolver:&d->resolve]; - return d; -} - -- (void)mailComposeController:(id)controller didFinishWithResult:(int)result error:(NSError *)error { - if (error != nil) { - resolve(error); - } else if (result == 0) { - resolve([NSError errorWithDomain:NSCocoaErrorDomain code:NSUserCancelledError userInfo:nil]); - } else { - resolve(@(result)); - } - retainCycle = nil; -} - -- (void)messageComposeViewController:(id)controller didFinishWithResult:(int)result { - if (result == 2) { - id userInfo = @{NSLocalizedDescriptionKey: @"The attempt to save or send the message was unsuccessful."}; - id error = [NSError errorWithDomain:PMKErrorDomain code:PMKOperationFailed userInfo:userInfo]; - resolve(error); - } else { - resolve(@(result)); - } - retainCycle = nil; -} - -#ifdef PMKImagePickerController - -- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { - id img = info[UIImagePickerControllerEditedImage] ?: info[UIImagePickerControllerOriginalImage]; - resolve(PMKManifold(img, info)); - retainCycle = nil; -} - -- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { - resolve([NSError errorWithDomain:NSCocoaErrorDomain code:NSUserCancelledError userInfo:nil]); - retainCycle = nil; -} - -#endif - -@end diff --git a/Pods/PromiseKit/Extensions/UIKit/Sources/UIViewPropertyAnimator+Promise.swift b/Pods/PromiseKit/Extensions/UIKit/Sources/UIViewPropertyAnimator+Promise.swift deleted file mode 100644 index 34ee140..0000000 --- a/Pods/PromiseKit/Extensions/UIKit/Sources/UIViewPropertyAnimator+Promise.swift +++ /dev/null @@ -1,14 +0,0 @@ -#if !PMKCocoaPods -import PromiseKit -#endif -import UIKit - -@available(iOS 10, tvOS 10, *) -public extension UIViewPropertyAnimator { - func startAnimation(_: PMKNamespacer) -> Guarantee { - return Guarantee { - addCompletion($0) - startAnimation() - } - } -} diff --git a/Pods/PromiseKit/LICENSE b/Pods/PromiseKit/LICENSE deleted file mode 100644 index 50f758c..0000000 --- a/Pods/PromiseKit/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright 2016-present, Max Howell; mxcl@me.com - -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: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -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. diff --git a/Pods/PromiseKit/README.md b/Pods/PromiseKit/README.md deleted file mode 100644 index d4b675d..0000000 --- a/Pods/PromiseKit/README.md +++ /dev/null @@ -1,211 +0,0 @@ -![PromiseKit](../gh-pages/public/img/logo-tight.png) - -[![badge-pod][]][cocoapods] ![badge-languages][] ![badge-pms][] ![badge-platforms][] [![badge-travis][]][travis] - ---- - -Promises simplify asynchronous programming, freeing you up to focus on the more -important things. They are easy to learn, easy to master and result in clearer, -more readable code. Your co-workers will thank you. - -```swift -UIApplication.shared.isNetworkActivityIndicatorVisible = true - -let fetchImage = URLSession.shared.dataTask(.promise, with: url).compactMap{ UIImage(data: $0.data) } -let fetchLocation = CLLocationManager.requestLocation().lastValue - -firstly { - when(fulfilled: fetchImage, fetchLocation) -}.done { image, location in - self.imageView.image = image - self.label.text = "\(location)" -}.ensure { - UIApplication.shared.isNetworkActivityIndicatorVisible = false -}.catch { error in - self.show(UIAlertController(for: error), sender: self) -} -``` - -PromiseKit is a thoughtful and complete implementation of promises for any -platform that has a `swiftc`. It has *excellent* Objective-C bridging and -*delightful* specializations for iOS, macOS, tvOS and watchOS. It is a top-100 -pod used in many of the most popular apps in the world. - -[![codecov](https://codecov.io/gh/mxcl/PromiseKit/branch/master/graph/badge.svg)](https://codecov.io/gh/mxcl/PromiseKit) - -# PromiseKit 7 Alpha - -We are testing PromiseKit 7 alpha, it is Swift 5 only. It is tagged and thus -importable in all package managers. - -# PromiseKit 6 - -[Release notes and migration guide][PMK6]. - -# Quick Start - -In your [Podfile]: - -```ruby -use_frameworks! - -target "Change Me!" do - pod "PromiseKit", "~> 6.8" -end -``` - -> The above gives an Xcode warning? See our [Installation Guide]. - -PromiseKit 6, 5 and 4 support Xcode 8.3, 9.x and 10.0; Swift 3.1, -3.2, 3.3, 3.4, 4.0, 4.1, 4.2, 4.3 and 5.0 (development snapshots); iOS, macOS, -tvOS, watchOS, Linux and Android; CocoaPods, Carthage and SwiftPM; -([CI Matrix](https://travis-ci.org/mxcl/PromiseKit)). - -For Carthage, SwiftPM, Accio, etc., or for instructions when using older Swifts or Xcodes, see our [Installation Guide]. We recommend -[Carthage](https://github.com/Carthage/Carthage) or -[Accio](https://github.com/JamitLabs/Accio). - -# Professionally Supported PromiseKit is Now Available - -TideLift gives software development teams a single source for purchasing -and maintaining their software, with professional grade assurances from -the experts who know it best, while seamlessly integrating with existing -tools. - -[Get Professional Support for PromiseKit with TideLift](https://tidelift.com/subscription/pkg/cocoapods-promisekit?utm_source=cocoapods-promisekit&utm_medium=referral&utm_campaign=readme). - -# PromiseKit is Thousands of Hours of Work - -Hey there, I’m Max Howell. I’m a prolific producer of open source software and -probably you already use some of it (I created [`brew`]). I work full-time on -open source and it’s hard; currently *I earn less than minimum wage*. Please -help me continue my work, I appreciate it 🙏🏻 - - - - - -[Other ways to say thanks](http://mxcl.dev/#donate). - -[`brew`]: https://brew.sh - -# Documentation - -* Handbook - * [Getting Started](Documentation/GettingStarted.md) - * [Promises: Common Patterns](Documentation/CommonPatterns.md) - * [Frequently Asked Questions](Documentation/FAQ.md) -* Manual - * [Installation Guide](Documentation/Installation.md) - * [Objective-C Guide](Documentation/ObjectiveC.md) - * [Troubleshooting](Documentation/Troubleshooting.md) (e.g., solutions to common compile errors) - * [Appendix](Documentation/Appendix.md) -* [API Reference](https://mxcl.dev/PromiseKit/reference/v6/Classes/Promise.html) - -# Extensions - -Promises are only as useful as the asynchronous tasks they represent. Thus, we -have converted (almost) all of Apple’s APIs to promises. The default CocoaPod -provides Promises and the extensions for Foundation and UIKit. The other -extensions are available by specifying additional subspecs in your `Podfile`, -e.g.: - -```ruby -pod "PromiseKit/MapKit" # MKDirections().calculate().then { /*…*/ } -pod "PromiseKit/CoreLocation" # CLLocationManager.requestLocation().then { /*…*/ } -``` - -All our extensions are separate repositories at the [PromiseKit organization]. - -## I don't want the extensions! - -Then don’t have them: - -```ruby -pod "PromiseKit/CorePromise", "~> 6.8" -``` - -> *Note:* Carthage installations come with no extensions by default. - -## Choose Your Networking Library - -Promise chains commonly start with a network operation. Thus, we offer -extensions for `URLSession`: - -```swift -// pod 'PromiseKit/Foundation' # https://github.com/PromiseKit/Foundation - -firstly { - URLSession.shared.dataTask(.promise, with: try makeUrlRequest()).validate() - // ^^ we provide `.validate()` so that eg. 404s get converted to errors -}.map { - try JSONDecoder().decode(Foo.self, with: $0.data) -}.done { foo in - //… -}.catch { error in - //… -} - -func makeUrlRequest() throws -> URLRequest { - var rq = URLRequest(url: url) - rq.httpMethod = "POST" - rq.addValue("application/json", forHTTPHeaderField: "Content-Type") - rq.addValue("application/json", forHTTPHeaderField: "Accept") - rq.httpBody = try JSONEncoder().encode(obj) - return rq -} -``` - -And [Alamofire]: - -```swift -// pod 'PromiseKit/Alamofire' # https://github.com/PromiseKit/Alamofire- - -firstly { - Alamofire - .request("http://example.com", method: .post, parameters: params) - .responseDecodable(Foo.self) -}.done { foo in - //… -}.catch { error in - //… -} -``` - -Nowadays, considering that: - -* We almost always POST JSON -* We now have `JSONDecoder` -* PromiseKit now has `map` and other functional primitives -* PromiseKit (like Alamofire, but not raw-`URLSession`) also defaults to having - callbacks go to the main thread - -We recommend vanilla `URLSession`. It uses fewer black boxes and sticks closer to the metal. Alamofire was essential until the three bullet points above -became true, but nowadays it isn’t really necessary. - -# Support - -Please check our [Troubleshooting Guide](Documentation/Troubleshooting.md), and -if after that you still have a question, ask at our [Gitter chat channel] or on [our bug tracker]. - -## Security & Vulnerability Reporting or Disclosure - -https://tidelift.com/security - - -[badge-pod]: https://img.shields.io/cocoapods/v/PromiseKit.svg?label=version -[badge-pms]: https://img.shields.io/badge/supports-CocoaPods%20%7C%20Carthage%20%7C%20Accio%20%7C%20SwiftPM-green.svg -[badge-languages]: https://img.shields.io/badge/languages-Swift%20%7C%20ObjC-orange.svg -[badge-platforms]: https://img.shields.io/badge/platforms-macOS%20%7C%20iOS%20%7C%20watchOS%20%7C%20tvOS%20%7C%20Linux-lightgrey.svg -[badge-mit]: https://img.shields.io/badge/license-MIT-blue.svg -[OMGHTTPURLRQ]: https://github.com/PromiseKit/OMGHTTPURLRQ -[Alamofire]: http://github.com/PromiseKit/Alamofire- -[PromiseKit organization]: https://github.com/PromiseKit -[Gitter chat channel]: https://gitter.im/mxcl/PromiseKit -[our bug tracker]: https://github.com/mxcl/PromiseKit/issues/new -[Podfile]: https://guides.cocoapods.org/syntax/podfile.html -[PMK6]: http://mxcl.dev/PromiseKit/news/2018/02/PromiseKit-6.0-Released/ -[Installation Guide]: Documentation/Installation.md -[badge-travis]: https://travis-ci.org/mxcl/PromiseKit.svg?branch=master -[travis]: https://travis-ci.org/mxcl/PromiseKit -[cocoapods]: https://cocoapods.org/pods/PromiseKit diff --git a/Pods/PromiseKit/Sources/AnyPromise+Private.h b/Pods/PromiseKit/Sources/AnyPromise+Private.h deleted file mode 100644 index cd28c41..0000000 --- a/Pods/PromiseKit/Sources/AnyPromise+Private.h +++ /dev/null @@ -1,32 +0,0 @@ -@import Foundation.NSError; -@import Foundation.NSPointerArray; - -#if TARGET_OS_IPHONE - #define NSPointerArrayMake(N) ({ \ - NSPointerArray *aa = [NSPointerArray strongObjectsPointerArray]; \ - aa.count = N; \ - aa; \ - }) -#else - static inline NSPointerArray * __nonnull NSPointerArrayMake(NSUInteger count) { - #pragma clang diagnostic push - #pragma clang diagnostic ignored "-Wdeprecated-declarations" - NSPointerArray *aa = [[NSPointerArray class] respondsToSelector:@selector(strongObjectsPointerArray)] - ? [NSPointerArray strongObjectsPointerArray] - : [NSPointerArray pointerArrayWithStrongObjects]; - #pragma clang diagnostic pop - aa.count = count; - return aa; - } -#endif - -#define IsError(o) [o isKindOfClass:[NSError class]] -#define IsPromise(o) [o isKindOfClass:[AnyPromise class]] - -#import "AnyPromise.h" - -@class PMKArray; - -@interface AnyPromise () -- (void)__pipe:(void(^ __nonnull)(__nullable id))block NS_REFINED_FOR_SWIFT; -@end diff --git a/Pods/PromiseKit/Sources/AnyPromise.h b/Pods/PromiseKit/Sources/AnyPromise.h deleted file mode 100644 index 75352d5..0000000 --- a/Pods/PromiseKit/Sources/AnyPromise.h +++ /dev/null @@ -1,308 +0,0 @@ -#import -#import -#import - -/// INTERNAL DO NOT USE -@class __AnyPromise; - -/// Provided to simplify some usage sites -typedef void (^PMKResolver)(id __nullable) NS_REFINED_FOR_SWIFT; - - -/// An Objective-C implementation of the promise pattern. -@interface AnyPromise: NSObject - -/** - Create a new promise that resolves with the provided block. - - Use this method when wrapping asynchronous code that does *not* use promises so that this code can be used in promise chains. - - If `resolve` is called with an `NSError` object, the promise is rejected, otherwise the promise is fulfilled. - - Don’t use this method if you already have promises! Instead, just return your promise. - - Should you need to fulfill a promise but have no sensical value to use: your promise is a `void` promise: fulfill with `nil`. - - The block you pass is executed immediately on the calling thread. - - - Parameter block: The provided block is immediately executed, inside the block call `resolve` to resolve this promise and cause any attached handlers to execute. If you are wrapping a delegate-based system, we recommend instead to use: initWithResolver: - - Returns: A new promise. - - Warning: Resolving a promise with `nil` fulfills it. - - SeeAlso: https://github.com/mxcl/PromiseKit/blob/master/Documentation/GettingStarted.md#making-promises - - SeeAlso: https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#wrapping-delegate-systems - */ -+ (instancetype __nonnull)promiseWithResolverBlock:(void (^ __nonnull)(__nonnull PMKResolver))resolveBlock NS_REFINED_FOR_SWIFT; - - -/// INTERNAL DO NOT USE -- (instancetype __nonnull)initWith__D:(__AnyPromise * __nonnull)d; - -/** - Creates a resolved promise. - - When developing your own promise systems, it is occasionally useful to be able to return an already resolved promise. - - - Parameter value: The value with which to resolve this promise. Passing an `NSError` will cause the promise to be rejected, passing an AnyPromise will return a new AnyPromise bound to that promise, otherwise the promise will be fulfilled with the value passed. - - Returns: A resolved promise. - */ -+ (instancetype __nonnull)promiseWithValue:(__nullable id)value NS_REFINED_FOR_SWIFT; - -/** - The value of the asynchronous task this promise represents. - - A promise has `nil` value if the asynchronous task it represents has not finished. If the value is `nil` the promise is still `pending`. - - - Warning: *Note* Our Swift variant’s value property returns nil if the promise is rejected where AnyPromise will return the error object. This fits with the pattern where AnyPromise is not strictly typed and is more dynamic, but you should be aware of the distinction. - - - Note: If the AnyPromise was fulfilled with a `PMKManifold`, returns only the first fulfillment object. - - - Returns: The value with which this promise was resolved or `nil` if this promise is pending. - */ -@property (nonatomic, readonly) __nullable id value NS_REFINED_FOR_SWIFT; - -/// - Returns: if the promise is pending resolution. -@property (nonatomic, readonly) BOOL pending NS_REFINED_FOR_SWIFT; - -/// - Returns: if the promise is resolved and fulfilled. -@property (nonatomic, readonly) BOOL fulfilled NS_REFINED_FOR_SWIFT; - -/// - Returns: if the promise is resolved and rejected. -@property (nonatomic, readonly) BOOL rejected NS_REFINED_FOR_SWIFT; - - -/** - The provided block is executed when its receiver is fulfilled. - - If you provide a block that takes a parameter, the value of the receiver will be passed as that parameter. - - [NSURLSession GET:url].then(^(NSData *data){ - // do something with data - }); - - @return A new promise that is resolved with the value returned from the provided block. For example: - - [NSURLSession GET:url].then(^(NSData *data){ - return data.length; - }).then(^(NSNumber *number){ - //… - }); - - @warning *Important* The block passed to `then` may take zero, one, two or three arguments, and return an object or return nothing. This flexibility is why the method signature for then is `id`, which means you will not get completion for the block parameter, and must type it yourself. It is safe to type any block syntax here, so to start with try just: `^{}`. - - @warning *Important* If an `NSError` or `NSString` is thrown inside your block, or you return an `NSError` object the next `Promise` will be rejected. See `catch` for documentation on error handling. - - @warning *Important* `then` is always executed on the main queue. - - @see thenOn - @see thenInBackground -*/ -- (AnyPromise * __nonnull (^ __nonnull)(id __nonnull))then NS_REFINED_FOR_SWIFT; - - -/** - The provided block is executed on the default queue when the receiver is fulfilled. - - This method is provided as a convenience for `thenOn`. - - @see then - @see thenOn -*/ -- (AnyPromise * __nonnull(^ __nonnull)(id __nonnull))thenInBackground NS_REFINED_FOR_SWIFT; - -/** - The provided block is executed on the dispatch queue of your choice when the receiver is fulfilled. - - @see then - @see thenInBackground -*/ -- (AnyPromise * __nonnull(^ __nonnull)(dispatch_queue_t __nonnull, id __nonnull))thenOn NS_REFINED_FOR_SWIFT; - -#ifndef __cplusplus -/** - The provided block is executed when the receiver is rejected. - - Provide a block of form `^(NSError *){}` or simply `^{}`. The parameter has type `id` to give you the freedom to choose either. - - The provided block always runs on the main queue. - - @warning *Note* Cancellation errors are not caught. - - @warning *Note* Since catch is a c++ keyword, this method is not available in Objective-C++ files. Instead use catchOn. - - @see catchOn - @see catchInBackground -*/ -- (AnyPromise * __nonnull(^ __nonnull)(id __nonnull))catch NS_REFINED_FOR_SWIFT; -#endif - -/** - The provided block is executed when the receiver is rejected. - - Provide a block of form `^(NSError *){}` or simply `^{}`. The parameter has type `id` to give you the freedom to choose either. - - The provided block always runs on the global background queue. - - @warning *Note* Cancellation errors are not caught. - - @warning *Note* Since catch is a c++ keyword, this method is not available in Objective-C++ files. Instead use catchWithPolicy. - - @see catch - @see catchOn - */ -- (AnyPromise * __nonnull(^ __nonnull)(id __nonnull))catchInBackground NS_REFINED_FOR_SWIFT; - - -/** - The provided block is executed when the receiver is rejected. - - Provide a block of form `^(NSError *){}` or simply `^{}`. The parameter has type `id` to give you the freedom to choose either. - - The provided block always runs on queue provided. - - @warning *Note* Cancellation errors are not caught. - - @see catch - @see catchInBackground - */ -- (AnyPromise * __nonnull(^ __nonnull)(dispatch_queue_t __nonnull, id __nonnull))catchOn NS_REFINED_FOR_SWIFT; - -/** - The provided block is executed when the receiver is resolved. - - The provided block always runs on the main queue. - - @see ensureOn -*/ -- (AnyPromise * __nonnull(^ __nonnull)(dispatch_block_t __nonnull))ensure NS_REFINED_FOR_SWIFT; - -/** - The provided block is executed on the dispatch queue of your choice when the receiver is resolved. - - @see ensure - */ -- (AnyPromise * __nonnull(^ __nonnull)(dispatch_queue_t __nonnull, dispatch_block_t __nonnull))ensureOn NS_REFINED_FOR_SWIFT; - -/** - Wait until the promise is resolved. - - @return Value if fulfilled or error if rejected. - */ -- (id __nullable)wait NS_REFINED_FOR_SWIFT; - -/** - Create a new promise with an associated resolver. - - Use this method when wrapping asynchronous code that does *not* use - promises so that this code can be used in promise chains. Generally, - prefer `promiseWithResolverBlock:` as the resulting code is more elegant. - - PMKResolver resolve; - AnyPromise *promise = [[AnyPromise alloc] initWithResolver:&resolve]; - - // later - resolve(@"foo"); - - @param resolver A reference to a block pointer of PMKResolver type. - You can then call your resolver to resolve this promise. - - @return A new promise. - - @warning *Important* The resolver strongly retains the promise. - - @see promiseWithResolverBlock: -*/ -- (instancetype __nonnull)initWithResolver:(PMKResolver __strong __nonnull * __nonnull)resolver NS_REFINED_FOR_SWIFT; - -/** - Unavailable methods - */ - -- (instancetype __nonnull)init __attribute__((unavailable("It is illegal to create an unresolvable promise."))); -+ (instancetype __nonnull)new __attribute__((unavailable("It is illegal to create an unresolvable promise."))); -- (AnyPromise * __nonnull(^ __nonnull)(dispatch_block_t __nonnull))always __attribute__((unavailable("See -ensure"))); -- (AnyPromise * __nonnull(^ __nonnull)(dispatch_block_t __nonnull))alwaysOn __attribute__((unavailable("See -ensureOn"))); -- (AnyPromise * __nonnull(^ __nonnull)(dispatch_block_t __nonnull))finally __attribute__((unavailable("See -ensure"))); -- (AnyPromise * __nonnull(^ __nonnull)(dispatch_block_t __nonnull, dispatch_block_t __nonnull))finallyOn __attribute__((unavailable("See -ensureOn"))); - -@end - - -typedef void (^PMKAdapter)(id __nullable, NSError * __nullable) NS_REFINED_FOR_SWIFT; -typedef void (^PMKIntegerAdapter)(NSInteger, NSError * __nullable) NS_REFINED_FOR_SWIFT; -typedef void (^PMKBooleanAdapter)(BOOL, NSError * __nullable) NS_REFINED_FOR_SWIFT; - - -@interface AnyPromise (Adapters) - -/** - Create a new promise by adapting an existing asynchronous system. - - The pattern of a completion block that passes two parameters, the first - the result and the second an `NSError` object is so common that we - provide this convenience adapter to make wrapping such systems more - elegant. - - return [PMKPromise promiseWithAdapterBlock:^(PMKAdapter adapter){ - PFQuery *query = [PFQuery …]; - [query findObjectsInBackgroundWithBlock:adapter]; - }]; - - @warning *Important* If both parameters are nil, the promise fulfills, - if both are non-nil the promise rejects. This is per the convention. - - @see https://github.com/mxcl/PromiseKit/blob/master/Documentation/GettingStarted.md#making-promises - */ -+ (instancetype __nonnull)promiseWithAdapterBlock:(void (^ __nonnull)(PMKAdapter __nonnull adapter))block NS_REFINED_FOR_SWIFT; - -/** - Create a new promise by adapting an existing asynchronous system. - - Adapts asynchronous systems that complete with `^(NSInteger, NSError *)`. - NSInteger will cast to enums provided the enum has been wrapped with - `NS_ENUM`. All of Apple’s enums are, so if you find one that hasn’t you - may need to make a pull-request. - - @see promiseWithAdapter - */ -+ (instancetype __nonnull)promiseWithIntegerAdapterBlock:(void (^ __nonnull)(PMKIntegerAdapter __nonnull adapter))block NS_REFINED_FOR_SWIFT; - -/** - Create a new promise by adapting an existing asynchronous system. - - Adapts asynchronous systems that complete with `^(BOOL, NSError *)`. - - @see promiseWithAdapter - */ -+ (instancetype __nonnull)promiseWithBooleanAdapterBlock:(void (^ __nonnull)(PMKBooleanAdapter __nonnull adapter))block NS_REFINED_FOR_SWIFT; - -@end - - -#ifdef __cplusplus -extern "C" { -#endif - -/** - Whenever resolving a promise you may resolve with a tuple, eg. - returning from a `then` or `catch` handler or resolving a new promise. - - Consumers of your Promise are not compelled to consume any arguments and - in fact will often only consume the first parameter. Thus ensure the - order of parameters is: from most-important to least-important. - - Currently PromiseKit limits you to THREE parameters to the manifold. -*/ -#define PMKManifold(...) __PMKManifold(__VA_ARGS__, 3, 2, 1) -#define __PMKManifold(_1, _2, _3, N, ...) __PMKArrayWithCount(N, _1, _2, _3) -extern id __nonnull __PMKArrayWithCount(NSUInteger, ...); - -#ifdef __cplusplus -} // Extern C -#endif - - - - -__attribute__((unavailable("See AnyPromise"))) -@interface PMKPromise -@end diff --git a/Pods/PromiseKit/Sources/AnyPromise.m b/Pods/PromiseKit/Sources/AnyPromise.m deleted file mode 100644 index 3725bea..0000000 --- a/Pods/PromiseKit/Sources/AnyPromise.m +++ /dev/null @@ -1,179 +0,0 @@ -#if __has_include("PromiseKit-Swift.h") - #import "PromiseKit-Swift.h" -#else - #import -#endif -#import "PMKCallVariadicBlock.m" -#import "AnyPromise+Private.h" -#import "AnyPromise.h" - -NSString *const PMKErrorDomain = @"PMKErrorDomain"; - - -@implementation AnyPromise { - __AnyPromise *d; -} - -- (instancetype)initWith__D:(__AnyPromise *)dd { - self = [super init]; - if (self) self->d = dd; - return self; -} - -- (instancetype)initWithResolver:(PMKResolver __strong *)resolver { - self = [super init]; - if (self) - d = [[__AnyPromise alloc] initWithResolver:^(void (^resolve)(id)) { - *resolver = resolve; - }]; - return self; -} - -+ (instancetype)promiseWithResolverBlock:(void (^)(PMKResolver _Nonnull))resolveBlock { - id d = [[__AnyPromise alloc] initWithResolver:resolveBlock]; - return [[self alloc] initWith__D:d]; -} - -+ (instancetype)promiseWithValue:(id)value { - //TODO provide a more efficient route for sealed promises - id d = [[__AnyPromise alloc] initWithResolver:^(void (^resolve)(id)) { - resolve(value); - }]; - return [[self alloc] initWith__D:d]; -} - -//TODO remove if possible, but used by when.m -- (void)__pipe:(void (^)(id _Nullable))block { - [d __pipe:block]; -} - -//NOTE used by AnyPromise.swift -- (id)__d { - return d; -} - -- (AnyPromise *(^)(id))then { - return ^(id block) { - return [self->d __thenOn:dispatch_get_main_queue() execute:^(id obj) { - return PMKCallVariadicBlock(block, obj); - }]; - }; -} - -- (AnyPromise *(^)(dispatch_queue_t, id))thenOn { - return ^(dispatch_queue_t queue, id block) { - return [self->d __thenOn:queue execute:^(id obj) { - return PMKCallVariadicBlock(block, obj); - }]; - }; -} - -- (AnyPromise *(^)(id))thenInBackground { - return ^(id block) { - return [self->d __thenOn:dispatch_get_global_queue(0, 0) execute:^(id obj) { - return PMKCallVariadicBlock(block, obj); - }]; - }; -} - -- (AnyPromise *(^)(dispatch_queue_t, id))catchOn { - return ^(dispatch_queue_t q, id block) { - return [self->d __catchOn:q execute:^(id obj) { - return PMKCallVariadicBlock(block, obj); - }]; - }; -} - -- (AnyPromise *(^)(id))catch { - return ^(id block) { - return [self->d __catchOn:dispatch_get_main_queue() execute:^(id obj) { - return PMKCallVariadicBlock(block, obj); - }]; - }; -} - -- (AnyPromise *(^)(id))catchInBackground { - return ^(id block) { - return [self->d __catchOn:dispatch_get_global_queue(0, 0) execute:^(id obj) { - return PMKCallVariadicBlock(block, obj); - }]; - }; -} - -- (AnyPromise *(^)(dispatch_block_t))ensure { - return ^(dispatch_block_t block) { - return [self->d __ensureOn:dispatch_get_main_queue() execute:block]; - }; -} - -- (AnyPromise *(^)(dispatch_queue_t, dispatch_block_t))ensureOn { - return ^(dispatch_queue_t queue, dispatch_block_t block) { - return [self->d __ensureOn:queue execute:block]; - }; -} - -- (id)wait { - return [d __wait]; -} - -- (BOOL)pending { - return [[d valueForKey:@"__pending"] boolValue]; -} - -- (BOOL)rejected { - return IsError([d __value]); -} - -- (BOOL)fulfilled { - return !self.rejected; -} - -- (id)value { - id obj = [d __value]; - - if ([obj isKindOfClass:[PMKArray class]]) { - return obj[0]; - } else { - return obj; - } -} - -@end - - - -@implementation AnyPromise (Adapters) - -+ (instancetype)promiseWithAdapterBlock:(void (^)(PMKAdapter))block { - return [self promiseWithResolverBlock:^(PMKResolver resolve) { - block(^(id value, id error){ - resolve(error ?: value); - }); - }]; -} - -+ (instancetype)promiseWithIntegerAdapterBlock:(void (^)(PMKIntegerAdapter))block { - return [self promiseWithResolverBlock:^(PMKResolver resolve) { - block(^(NSInteger value, id error){ - if (error) { - resolve(error); - } else { - resolve(@(value)); - } - }); - }]; -} - -+ (instancetype)promiseWithBooleanAdapterBlock:(void (^)(PMKBooleanAdapter adapter))block { - return [self promiseWithResolverBlock:^(PMKResolver resolve) { - block(^(BOOL value, id error){ - if (error) { - resolve(error); - } else { - resolve(@(value)); - } - }); - }]; -} - -@end diff --git a/Pods/PromiseKit/Sources/AnyPromise.swift b/Pods/PromiseKit/Sources/AnyPromise.swift deleted file mode 100644 index d7e575d..0000000 --- a/Pods/PromiseKit/Sources/AnyPromise.swift +++ /dev/null @@ -1,224 +0,0 @@ -import Foundation - -/** - __AnyPromise is an implementation detail. - - Because of how ObjC/Swift compatibility work we have to compose our AnyPromise - with this internal object, however this is still part of the public interface. - Sadly. Please don’t use it. -*/ -@objc(__AnyPromise) public class __AnyPromise: NSObject { - fileprivate let box: Box - - @objc public init(resolver body: (@escaping (Any?) -> Void) -> Void) { - box = EmptyBox() - super.init() - body { - if let p = $0 as? AnyPromise { - p.d.__pipe(self.box.seal) - } else { - self.box.seal($0) - } - } - } - - @objc public func __thenOn(_ q: DispatchQueue, execute: @escaping (Any?) -> Any?) -> AnyPromise { - return AnyPromise(__D: __AnyPromise(resolver: { resolve in - self.__pipe { obj in - if !(obj is NSError) { - q.async { - resolve(execute(obj)) - } - } else { - resolve(obj) - } - } - })) - } - - @objc public func __catchOn(_ q: DispatchQueue, execute: @escaping (Any?) -> Any?) -> AnyPromise { - return AnyPromise(__D: __AnyPromise(resolver: { resolve in - self.__pipe { obj in - if obj is NSError { - q.async { - resolve(execute(obj)) - } - } else { - resolve(obj) - } - } - })) - } - - @objc public func __ensureOn(_ q: DispatchQueue, execute: @escaping () -> Void) -> AnyPromise { - return AnyPromise(__D: __AnyPromise(resolver: { resolve in - self.__pipe { obj in - q.async { - execute() - resolve(obj) - } - } - })) - } - - @objc public func __wait() -> Any? { - if Thread.isMainThread { - conf.logHandler(.waitOnMainThread) - } - - var result = __value - - if result == nil { - let group = DispatchGroup() - group.enter() - self.__pipe { obj in - result = obj - group.leave() - } - group.wait() - } - - return result - } - - /// Internal, do not use! Some behaviors undefined. - @objc public func __pipe(_ to: @escaping (Any?) -> Void) { - let to = { (obj: Any?) -> Void in - if obj is NSError { - to(obj) // or we cannot determine if objects are errors in objc land - } else { - to(obj) - } - } - switch box.inspect() { - case .pending: - box.inspect { - switch $0 { - case .pending(let handlers): - handlers.append { obj in - to(obj) - } - case .resolved(let obj): - to(obj) - } - } - case .resolved(let obj): - to(obj) - } - } - - @objc public var __value: Any? { - switch box.inspect() { - case .resolved(let obj): - return obj - default: - return nil - } - } - - @objc public var __pending: Bool { - switch box.inspect() { - case .pending: - return true - case .resolved: - return false - } - } -} - -extension AnyPromise: Thenable, CatchMixin { - - /// - Returns: A new `AnyPromise` bound to a `Promise`. - public convenience init(_ bridge: U) { - self.init(__D: __AnyPromise(resolver: { resolve in - bridge.pipe { - switch $0 { - case .rejected(let error): - resolve(error as NSError) - case .fulfilled(let value): - resolve(value) - } - } - })) - } - - public func pipe(to body: @escaping (Result) -> Void) { - - func fulfill() { - // calling through to the ObjC `value` property unwraps (any) PMKManifold - // and considering this is the Swift pipe; we want that. - body(.fulfilled(self.value(forKey: "value"))) - } - - switch box.inspect() { - case .pending: - box.inspect { - switch $0 { - case .pending(let handlers): - handlers.append { - if let error = $0 as? Error { - body(.rejected(error)) - } else { - fulfill() - } - } - case .resolved(let error as Error): - body(.rejected(error)) - case .resolved: - fulfill() - } - } - case .resolved(let error as Error): - body(.rejected(error)) - case .resolved: - fulfill() - } - } - - fileprivate var d: __AnyPromise { - return value(forKey: "__d") as! __AnyPromise - } - - var box: Box { - return d.box - } - - public var result: Result? { - guard let value = __value else { - return nil - } - if let error = value as? Error { - return .rejected(error) - } else { - return .fulfilled(value) - } - } - - public typealias T = Any? -} - - -#if swift(>=3.1) -public extension Promise where T == Any? { - convenience init(_ anyPromise: AnyPromise) { - self.init { - anyPromise.pipe(to: $0.resolve) - } - } -} -#else -extension AnyPromise { - public func asPromise() -> Promise { - return Promise(.pending, resolver: { resolve in - pipe { result in - switch result { - case .rejected(let error): - resolve.reject(error) - case .fulfilled(let obj): - resolve.fulfill(obj) - } - } - }) - } -} -#endif diff --git a/Pods/PromiseKit/Sources/Box.swift b/Pods/PromiseKit/Sources/Box.swift deleted file mode 100644 index 43cd3d1..0000000 --- a/Pods/PromiseKit/Sources/Box.swift +++ /dev/null @@ -1,101 +0,0 @@ -import Dispatch - -enum Sealant { - case pending(Handlers) - case resolved(R) -} - -final class Handlers { - var bodies: [(R) -> Void] = [] - func append(_ item: @escaping(R) -> Void) { bodies.append(item) } -} - -/// - Remark: not protocol ∵ http://www.russbishop.net/swift-associated-types-cont -class Box { - func inspect() -> Sealant { fatalError() } - func inspect(_: (Sealant) -> Void) { fatalError() } - func seal(_: T) {} -} - -final class SealedBox: Box { - let value: T - - init(value: T) { - self.value = value - } - - override func inspect() -> Sealant { - return .resolved(value) - } -} - -class EmptyBox: Box { - private var sealant = Sealant.pending(.init()) - private let barrier = DispatchQueue(label: "org.promisekit.barrier", attributes: .concurrent) - - override func seal(_ value: T) { - var handlers: Handlers! - barrier.sync(flags: .barrier) { - guard case .pending(let _handlers) = self.sealant else { - return // already fulfilled! - } - handlers = _handlers - self.sealant = .resolved(value) - } - - //FIXME we are resolved so should `pipe(to:)` be called at this instant, “thens are called in order” would be invalid - //NOTE we don’t do this in the above `sync` because that could potentially deadlock - //THOUGH since `then` etc. typically invoke after a run-loop cycle, this issue is somewhat less severe - - if let handlers = handlers { - handlers.bodies.forEach{ $0(value) } - } - - //TODO solution is an unfortunate third state “sealed” where then's get added - // to a separate handler pool for that state - // any other solution has potential races - } - - override func inspect() -> Sealant { - var rv: Sealant! - barrier.sync { - rv = self.sealant - } - return rv - } - - override func inspect(_ body: (Sealant) -> Void) { - var sealed = false - barrier.sync(flags: .barrier) { - switch sealant { - case .pending: - // body will append to handlers, so we must stay barrier’d - body(sealant) - case .resolved: - sealed = true - } - } - if sealed { - // we do this outside the barrier to prevent potential deadlocks - // it's safe because we never transition away from this state - body(sealant) - } - } -} - - -extension Optional where Wrapped: DispatchQueue { - @inline(__always) - func async(flags: DispatchWorkItemFlags?, _ body: @escaping() -> Void) { - switch self { - case .none: - body() - case .some(let q): - if let flags = flags { - q.async(flags: flags, execute: body) - } else { - q.async(execute: body) - } - } - } -} diff --git a/Pods/PromiseKit/Sources/Catchable.swift b/Pods/PromiseKit/Sources/Catchable.swift deleted file mode 100644 index 596abdc..0000000 --- a/Pods/PromiseKit/Sources/Catchable.swift +++ /dev/null @@ -1,256 +0,0 @@ -import Dispatch - -/// Provides `catch` and `recover` to your object that conforms to `Thenable` -public protocol CatchMixin: Thenable -{} - -public extension CatchMixin { - - /** - The provided closure executes when this promise rejects. - - Rejecting a promise cascades: rejecting all subsequent promises (unless - recover is invoked) thus you will typically place your catch at the end - of a chain. Often utility promises will not have a catch, instead - delegating the error handling to the caller. - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter policy: The default policy does not execute your handler for cancellation errors. - - Parameter execute: The handler to execute if this promise is rejected. - - Returns: A promise finalizer. - - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) - */ - @discardableResult - func `catch`(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping(Error) -> Void) -> PMKFinalizer { - let finalizer = PMKFinalizer() - pipe { - switch $0 { - case .rejected(let error): - guard policy == .allErrors || !error.isCancelled else { - fallthrough - } - on.async(flags: flags) { - body(error) - finalizer.pending.resolve(()) - } - case .fulfilled: - finalizer.pending.resolve(()) - } - } - return finalizer - } -} - -public class PMKFinalizer { - let pending = Guarantee.pending() - - /// `finally` is the same as `ensure`, but it is not chainable - public func finally(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping () -> Void) { - pending.guarantee.done(on: on, flags: flags) { - body() - } - } -} - - -public extension CatchMixin { - - /** - The provided closure executes when this promise rejects. - - Unlike `catch`, `recover` continues the chain. - Use `recover` in circumstances where recovering the chain from certain errors is a possibility. For example: - - firstly { - CLLocationManager.requestLocation() - }.recover { error in - guard error == CLError.unknownLocation else { throw error } - return .value(CLLocation.chicago) - } - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The handler to execute if this promise is rejected. - - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) - */ - func recover(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping(Error) throws -> U) -> Promise where U.T == T { - let rp = Promise(.pending) - pipe { - switch $0 { - case .fulfilled(let value): - rp.box.seal(.fulfilled(value)) - case .rejected(let error): - if policy == .allErrors || !error.isCancelled { - on.async(flags: flags) { - do { - let rv = try body(error) - guard rv !== rp else { throw PMKError.returnedSelf } - rv.pipe(to: rp.box.seal) - } catch { - rp.box.seal(.rejected(error)) - } - } - } else { - rp.box.seal(.rejected(error)) - } - } - } - return rp - } - - /** - The provided closure executes when this promise rejects. - This variant of `recover` requires the handler to return a Guarantee, thus it returns a Guarantee itself and your closure cannot `throw`. - - Note it is logically impossible for this to take a `catchPolicy`, thus `allErrors` are handled. - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The handler to execute if this promise is rejected. - - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) - */ - @discardableResult - func recover(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(Error) -> Guarantee) -> Guarantee { - let rg = Guarantee(.pending) - pipe { - switch $0 { - case .fulfilled(let value): - rg.box.seal(value) - case .rejected(let error): - on.async(flags: flags) { - body(error).pipe(to: rg.box.seal) - } - } - } - return rg - } - - /** - The provided closure executes when this promise resolves, whether it rejects or not. - - firstly { - UIApplication.shared.networkActivityIndicatorVisible = true - }.done { - //… - }.ensure { - UIApplication.shared.networkActivityIndicatorVisible = false - }.catch { - //… - } - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The closure that executes when this promise resolves. - - Returns: A new promise, resolved with this promise’s resolution. - */ - func ensure(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping () -> Void) -> Promise { - let rp = Promise(.pending) - pipe { result in - on.async(flags: flags) { - body() - rp.box.seal(result) - } - } - return rp - } - - /** - The provided closure executes when this promise resolves, whether it rejects or not. - The chain waits on the returned `Guarantee`. - - firstly { - setup() - }.done { - //… - }.ensureThen { - teardown() // -> Guarante - }.catch { - //… - } - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The closure that executes when this promise resolves. - - Returns: A new promise, resolved with this promise’s resolution. - */ - func ensureThen(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping () -> Guarantee) -> Promise { - let rp = Promise(.pending) - pipe { result in - on.async(flags: flags) { - body().done { - rp.box.seal(result) - } - } - } - return rp - } - - - - /** - Consumes the Swift unused-result warning. - - Note: You should `catch`, but in situations where you know you don’t need a `catch`, `cauterize` makes your intentions clear. - */ - @discardableResult - func cauterize() -> PMKFinalizer { - return self.catch { - conf.logHandler(.cauterized($0)) - } - } -} - - -public extension CatchMixin where T == Void { - - /** - The provided closure executes when this promise rejects. - - This variant of `recover` is specialized for `Void` promises and de-errors your chain returning a `Guarantee`, thus you cannot `throw` and you must handle all errors including cancellation. - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The handler to execute if this promise is rejected. - - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) - */ - @discardableResult - func recover(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(Error) -> Void) -> Guarantee { - let rg = Guarantee(.pending) - pipe { - switch $0 { - case .fulfilled: - rg.box.seal(()) - case .rejected(let error): - on.async(flags: flags) { - body(error) - rg.box.seal(()) - } - } - } - return rg - } - - /** - The provided closure executes when this promise rejects. - - This variant of `recover` ensures that no error is thrown from the handler and allows specifying a catch policy. - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The handler to execute if this promise is rejected. - - SeeAlso: [Cancellation](https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md#cancellation) - */ - func recover(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, policy: CatchPolicy = conf.catchPolicy, _ body: @escaping(Error) throws -> Void) -> Promise { - let rg = Promise(.pending) - pipe { - switch $0 { - case .fulfilled: - rg.box.seal(.fulfilled(())) - case .rejected(let error): - if policy == .allErrors || !error.isCancelled { - on.async(flags: flags) { - do { - rg.box.seal(.fulfilled(try body(error))) - } catch { - rg.box.seal(.rejected(error)) - } - } - } else { - rg.box.seal(.rejected(error)) - } - } - } - return rg - } -} diff --git a/Pods/PromiseKit/Sources/Configuration.swift b/Pods/PromiseKit/Sources/Configuration.swift deleted file mode 100644 index 4db5232..0000000 --- a/Pods/PromiseKit/Sources/Configuration.swift +++ /dev/null @@ -1,35 +0,0 @@ -import Dispatch - -/** - PromiseKit’s configurable parameters. - - Do not change these after any Promise machinery executes as the configuration object is not thread-safe. - - We would like it to be, but sadly `Swift` does not expose `dispatch_once` et al. which is what we used to use in order to make the configuration immutable once first used. -*/ -public struct PMKConfiguration { - /// The default queues that promises handlers dispatch to - public var Q: (map: DispatchQueue?, return: DispatchQueue?) = (map: DispatchQueue.main, return: DispatchQueue.main) - - /// The default catch-policy for all `catch` and `resolve` - public var catchPolicy = CatchPolicy.allErrorsExceptCancellation - - /// The closure used to log PromiseKit events. - /// Not thread safe; change before processing any promises. - /// - Note: The default handler calls `print()` - public var logHandler: (LogEvent) -> Void = { event in - switch event { - case .waitOnMainThread: - print("PromiseKit: warning: `wait()` called on main thread!") - case .pendingPromiseDeallocated: - print("PromiseKit: warning: pending promise deallocated") - case .pendingGuaranteeDeallocated: - print("PromiseKit: warning: pending guarantee deallocated") - case .cauterized (let error): - print("PromiseKit:cauterized-error: \(error)") - } - } -} - -/// Modify this as soon as possible in your application’s lifetime -public var conf = PMKConfiguration() diff --git a/Pods/PromiseKit/Sources/CustomStringConvertible.swift b/Pods/PromiseKit/Sources/CustomStringConvertible.swift deleted file mode 100644 index eee0b02..0000000 --- a/Pods/PromiseKit/Sources/CustomStringConvertible.swift +++ /dev/null @@ -1,44 +0,0 @@ - -extension Promise: CustomStringConvertible { - /// - Returns: A description of the state of this promise. - public var description: String { - switch result { - case nil: - return "Promise(…\(T.self))" - case .rejected(let error)?: - return "Promise(\(error))" - case .fulfilled(let value)?: - return "Promise(\(value))" - } - } -} - -extension Promise: CustomDebugStringConvertible { - /// - Returns: A debug-friendly description of the state of this promise. - public var debugDescription: String { - switch box.inspect() { - case .pending(let handlers): - return "Promise<\(T.self)>.pending(handlers: \(handlers.bodies.count))" - case .resolved(.rejected(let error)): - return "Promise<\(T.self)>.rejected(\(type(of: error)).\(error))" - case .resolved(.fulfilled(let value)): - return "Promise<\(T.self)>.fulfilled(\(value))" - } - } -} - -#if !SWIFT_PACKAGE -extension AnyPromise { - /// - Returns: A description of the state of this promise. - override open var description: String { - switch box.inspect() { - case .pending: - return "AnyPromise(…)" - case .resolved(let obj?): - return "AnyPromise(\(obj))" - case .resolved(nil): - return "AnyPromise(nil)" - } - } -} -#endif diff --git a/Pods/PromiseKit/Sources/Deprecations.swift b/Pods/PromiseKit/Sources/Deprecations.swift deleted file mode 100644 index a837dcb..0000000 --- a/Pods/PromiseKit/Sources/Deprecations.swift +++ /dev/null @@ -1,93 +0,0 @@ -import Dispatch - -@available(*, deprecated, message: "See `init(resolver:)`") -public func wrap(_ body: (@escaping (T?, Error?) -> Void) throws -> Void) -> Promise { - return Promise { seal in - try body(seal.resolve) - } -} - -@available(*, deprecated, message: "See `init(resolver:)`") -public func wrap(_ body: (@escaping (T, Error?) -> Void) throws -> Void) -> Promise { - return Promise { seal in - try body(seal.resolve) - } -} - -@available(*, deprecated, message: "See `init(resolver:)`") -public func wrap(_ body: (@escaping (Error?, T?) -> Void) throws -> Void) -> Promise { - return Promise { seal in - try body(seal.resolve) - } -} - -@available(*, deprecated, message: "See `init(resolver:)`") -public func wrap(_ body: (@escaping (Error?) -> Void) throws -> Void) -> Promise { - return Promise { seal in - try body(seal.resolve) - } -} - -@available(*, deprecated, message: "See `init(resolver:)`") -public func wrap(_ body: (@escaping (T) -> Void) throws -> Void) -> Promise { - return Promise { seal in - try body(seal.fulfill) - } -} - -public extension Promise { - @available(*, deprecated, message: "See `ensure`") - func always(on q: DispatchQueue = .main, execute body: @escaping () -> Void) -> Promise { - return ensure(on: q, body) - } -} - -public extension Thenable { -#if PMKFullDeprecations - /// disabled due to ambiguity with the other `.flatMap` - @available(*, deprecated, message: "See: `compactMap`") - func flatMap(on: DispatchQueue? = conf.Q.map, _ transform: @escaping(T) throws -> U?) -> Promise { - return compactMap(on: on, transform) - } -#endif -} - -public extension Thenable where T: Sequence { -#if PMKFullDeprecations - /// disabled due to ambiguity with the other `.map` - @available(*, deprecated, message: "See: `mapValues`") - func map(on: DispatchQueue? = conf.Q.map, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U]> { - return mapValues(on: on, transform) - } - - /// disabled due to ambiguity with the other `.flatMap` - @available(*, deprecated, message: "See: `flatMapValues`") - func flatMap(on: DispatchQueue? = conf.Q.map, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U.Iterator.Element]> { - return flatMapValues(on: on, transform) - } -#endif - - @available(*, deprecated, message: "See: `filterValues`") - func filter(on: DispatchQueue? = conf.Q.map, test: @escaping (T.Iterator.Element) -> Bool) -> Promise<[T.Iterator.Element]> { - return filterValues(on: on, test) - } -} - -public extension Thenable where T: Collection { - @available(*, deprecated, message: "See: `firstValue`") - var first: Promise { - return firstValue - } - - @available(*, deprecated, message: "See: `lastValue`") - var last: Promise { - return lastValue - } -} - -public extension Thenable where T: Sequence, T.Iterator.Element: Comparable { - @available(*, deprecated, message: "See: `sortedValues`") - func sorted(on: DispatchQueue? = conf.Q.map) -> Promise<[T.Iterator.Element]> { - return sortedValues(on: on) - } -} diff --git a/Pods/PromiseKit/Sources/Error.swift b/Pods/PromiseKit/Sources/Error.swift deleted file mode 100644 index be22f6b..0000000 --- a/Pods/PromiseKit/Sources/Error.swift +++ /dev/null @@ -1,111 +0,0 @@ -import Foundation - -public enum PMKError: Error { - /** - The completionHandler with form `(T?, Error?)` was called with `(nil, nil)`. - This is invalid as per Cocoa/Apple calling conventions. - */ - case invalidCallingConvention - - /** - A handler returned its own promise. 99% of the time, this is likely a - programming error. It is also invalid per Promises/A+. - */ - case returnedSelf - - /** `when()`, `race()` etc. were called with invalid parameters, eg. an empty array. */ - case badInput - - /// The operation was cancelled - case cancelled - - /// `nil` was returned from `flatMap` - @available(*, deprecated, message: "See: `compactMap`") - case flatMap(Any, Any.Type) - - /// `nil` was returned from `compactMap` - case compactMap(Any, Any.Type) - - /** - The lastValue or firstValue of a sequence was requested but the sequence was empty. - - Also used if all values of this collection failed the test passed to `firstValue(where:)`. - */ - case emptySequence - - /// no winner in `race(fulfilled:)` - case noWinner -} - -extension PMKError: CustomDebugStringConvertible { - public var debugDescription: String { - switch self { - case .flatMap(let obj, let type): - return "Could not `flatMap<\(type)>`: \(obj)" - case .compactMap(let obj, let type): - return "Could not `compactMap<\(type)>`: \(obj)" - case .invalidCallingConvention: - return "A closure was called with an invalid calling convention, probably (nil, nil)" - case .returnedSelf: - return "A promise handler returned itself" - case .badInput: - return "Bad input was provided to a PromiseKit function" - case .cancelled: - return "The asynchronous sequence was cancelled" - case .emptySequence: - return "The first or last element was requested for an empty sequence" - case .noWinner: - return "All thenables passed to race(fulfilled:) were rejected" - } - } -} - -extension PMKError: LocalizedError { - public var errorDescription: String? { - return debugDescription - } -} - - -//////////////////////////////////////////////////////////// Cancellation - -/// An error that may represent the cancelled condition -public protocol CancellableError: Error { - /// returns true if this Error represents a cancelled condition - var isCancelled: Bool { get } -} - -extension Error { - public var isCancelled: Bool { - do { - throw self - } catch PMKError.cancelled { - return true - } catch let error as CancellableError { - return error.isCancelled - } catch URLError.cancelled { - return true - } catch CocoaError.userCancelled { - return true - } catch let error as NSError { - #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) - let domain = error.domain - let code = error.code - return ("SKErrorDomain", 2) == (domain, code) - #else - return false - #endif - } catch { - return false - } - } -} - -/// Used by `catch` and `recover` -public enum CatchPolicy { - /// Indicates that `catch` or `recover` handle all error types including cancellable-errors. - case allErrors - - /// Indicates that `catch` or `recover` handle all error except cancellable-errors. - case allErrorsExceptCancellation -} diff --git a/Pods/PromiseKit/Sources/Guarantee.swift b/Pods/PromiseKit/Sources/Guarantee.swift deleted file mode 100644 index ce887cd..0000000 --- a/Pods/PromiseKit/Sources/Guarantee.swift +++ /dev/null @@ -1,390 +0,0 @@ -import class Foundation.Thread -import Dispatch - -/** - A `Guarantee` is a functional abstraction around an asynchronous operation that cannot error. - - See: `Thenable` -*/ -public final class Guarantee: Thenable { - let box: PromiseKit.Box - - fileprivate init(box: SealedBox) { - self.box = box - } - - /// Returns a `Guarantee` sealed with the provided value. - public static func value(_ value: T) -> Guarantee { - return .init(box: SealedBox(value: value)) - } - - /// Returns a pending `Guarantee` that can be resolved with the provided closure’s parameter. - public init(resolver body: (@escaping(T) -> Void) -> Void) { - box = Box() - body(box.seal) - } - - /// - See: `Thenable.pipe` - public func pipe(to: @escaping(Result) -> Void) { - pipe{ to(.fulfilled($0)) } - } - - func pipe(to: @escaping(T) -> Void) { - switch box.inspect() { - case .pending: - box.inspect { - switch $0 { - case .pending(let handlers): - handlers.append(to) - case .resolved(let value): - to(value) - } - } - case .resolved(let value): - to(value) - } - } - - /// - See: `Thenable.result` - public var result: Result? { - switch box.inspect() { - case .pending: - return nil - case .resolved(let value): - return .fulfilled(value) - } - } - - final private class Box: EmptyBox { - deinit { - switch inspect() { - case .pending: - PromiseKit.conf.logHandler(.pendingGuaranteeDeallocated) - case .resolved: - break - } - } - } - - init(_: PMKUnambiguousInitializer) { - box = Box() - } - - /// Returns a tuple of a pending `Guarantee` and a function that resolves it. - public class func pending() -> (guarantee: Guarantee, resolve: (T) -> Void) { - return { ($0, $0.box.seal) }(Guarantee(.pending)) - } -} - -public extension Guarantee { - @discardableResult - func done(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(T) -> Void) -> Guarantee { - let rg = Guarantee(.pending) - pipe { (value: T) in - on.async(flags: flags) { - body(value) - rg.box.seal(()) - } - } - return rg - } - - func get(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping (T) -> Void) -> Guarantee { - return map(on: on, flags: flags) { - body($0) - return $0 - } - } - - func map(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(T) -> U) -> Guarantee { - let rg = Guarantee(.pending) - pipe { value in - on.async(flags: flags) { - rg.box.seal(body(value)) - } - } - return rg - } - - #if swift(>=4) && !swift(>=5.2) - func map(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ keyPath: KeyPath) -> Guarantee { - let rg = Guarantee(.pending) - pipe { value in - on.async(flags: flags) { - rg.box.seal(value[keyPath: keyPath]) - } - } - return rg - } - #endif - - @discardableResult - func then(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(T) -> Guarantee) -> Guarantee { - let rg = Guarantee(.pending) - pipe { value in - on.async(flags: flags) { - body(value).pipe(to: rg.box.seal) - } - } - return rg - } - - func asVoid() -> Guarantee { - return map(on: nil) { _ in } - } - - /** - Blocks this thread, so you know, don’t call this on a serial thread that - any part of your chain may use. Like the main thread for example. - */ - func wait() -> T { - - if Thread.isMainThread { - conf.logHandler(.waitOnMainThread) - } - - var result = value - - if result == nil { - let group = DispatchGroup() - group.enter() - pipe { (foo: T) in result = foo; group.leave() } - group.wait() - } - - return result! - } -} - -public extension Guarantee where T: Sequence { - /** - `Guarantee<[T]>` => `T` -> `U` => `Guarantee<[U]>` - - Guarantee.value([1,2,3]) - .mapValues { integer in integer * 2 } - .done { - // $0 => [2,4,6] - } - */ - func mapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) -> U) -> Guarantee<[U]> { - return map(on: on, flags: flags) { $0.map(transform) } - } - - #if swift(>=4) && !swift(>=5.2) - /** - `Guarantee<[T]>` => `KeyPath` => `Guarantee<[U]>` - - Guarantee.value([Person(name: "Max"), Person(name: "Roman"), Person(name: "John")]) - .mapValues(\.name) - .done { - // $0 => ["Max", "Roman", "John"] - } - */ - func mapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ keyPath: KeyPath) -> Guarantee<[U]> { - return map(on: on, flags: flags) { $0.map { $0[keyPath: keyPath] } } - } - #endif - - /** - `Guarantee<[T]>` => `T` -> `[U]` => `Guarantee<[U]>` - - Guarantee.value([1,2,3]) - .flatMapValues { integer in [integer, integer] } - .done { - // $0 => [1,1,2,2,3,3] - } - */ - func flatMapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) -> U) -> Guarantee<[U.Iterator.Element]> { - return map(on: on, flags: flags) { (foo: T) in - foo.flatMap { transform($0) } - } - } - - /** - `Guarantee<[T]>` => `T` -> `U?` => `Guarantee<[U]>` - - Guarantee.value(["1","2","a","3"]) - .compactMapValues { Int($0) } - .done { - // $0 => [1,2,3] - } - */ - func compactMapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) -> U?) -> Guarantee<[U]> { - return map(on: on, flags: flags) { foo -> [U] in - #if !swift(>=3.3) || (swift(>=4) && !swift(>=4.1)) - return foo.flatMap(transform) - #else - return foo.compactMap(transform) - #endif - } - } - - #if swift(>=4) && !swift(>=5.2) - /** - `Guarantee<[T]>` => `KeyPath` => `Guarantee<[U]>` - - Guarantee.value([Person(name: "Max"), Person(name: "Roman", age: 26), Person(name: "John", age: 23)]) - .compactMapValues(\.age) - .done { - // $0 => [26, 23] - } - */ - func compactMapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ keyPath: KeyPath) -> Guarantee<[U]> { - return map(on: on, flags: flags) { foo -> [U] in - #if !swift(>=4.1) - return foo.flatMap { $0[keyPath: keyPath] } - #else - return foo.compactMap { $0[keyPath: keyPath] } - #endif - } - } - #endif - - /** - `Guarantee<[T]>` => `T` -> `Guarantee` => `Guaranetee<[U]>` - - Guarantee.value([1,2,3]) - .thenMap { .value($0 * 2) } - .done { - // $0 => [2,4,6] - } - */ - func thenMap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) -> Guarantee) -> Guarantee<[U]> { - return then(on: on, flags: flags) { - when(fulfilled: $0.map(transform)) - }.recover { - // if happens then is bug inside PromiseKit - fatalError(String(describing: $0)) - } - } - - /** - `Guarantee<[T]>` => `T` -> `Guarantee<[U]>` => `Guarantee<[U]>` - - Guarantee.value([1,2,3]) - .thenFlatMap { integer in .value([integer, integer]) } - .done { - // $0 => [1,1,2,2,3,3] - } - */ - func thenFlatMap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) -> U) -> Guarantee<[U.T.Iterator.Element]> where U.T: Sequence { - return then(on: on, flags: flags) { - when(fulfilled: $0.map(transform)) - }.map(on: nil) { - $0.flatMap { $0 } - }.recover { - // if happens then is bug inside PromiseKit - fatalError(String(describing: $0)) - } - } - - /** - `Guarantee<[T]>` => `T` -> Bool => `Guarantee<[T]>` - - Guarantee.value([1,2,3]) - .filterValues { $0 > 1 } - .done { - // $0 => [2,3] - } - */ - func filterValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ isIncluded: @escaping(T.Iterator.Element) -> Bool) -> Guarantee<[T.Iterator.Element]> { - return map(on: on, flags: flags) { - $0.filter(isIncluded) - } - } - - #if swift(>=4) && !swift(>=5.2) - /** - `Guarantee<[T]>` => `KeyPath` => `Guarantee<[T]>` - - Guarantee.value([Person(name: "Max"), Person(name: "Roman", age: 26, isStudent: false), Person(name: "John", age: 23, isStudent: true)]) - .filterValues(\.isStudent) - .done { - // $0 => [Person(name: "John", age: 23, isStudent: true)] - } - */ - func filterValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ keyPath: KeyPath) -> Guarantee<[T.Iterator.Element]> { - return map(on: on, flags: flags) { - $0.filter { $0[keyPath: keyPath] } - } - } - #endif - - /** - `Guarantee<[T]>` => (`T`, `T`) -> Bool => `Guarantee<[T]>` - - Guarantee.value([5,2,3,4,1]) - .sortedValues { $0 > $1 } - .done { - // $0 => [5,4,3,2,1] - } - */ - func sortedValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ areInIncreasingOrder: @escaping(T.Iterator.Element, T.Iterator.Element) -> Bool) -> Guarantee<[T.Iterator.Element]> { - return map(on: on, flags: flags) { - $0.sorted(by: areInIncreasingOrder) - } - } -} - -public extension Guarantee where T: Sequence, T.Iterator.Element: Comparable { - /** - `Guarantee<[T]>` => `Guarantee<[T]>` - - Guarantee.value([5,2,3,4,1]) - .sortedValues() - .done { - // $0 => [1,2,3,4,5] - } - */ - func sortedValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil) -> Guarantee<[T.Iterator.Element]> { - return map(on: on, flags: flags) { $0.sorted() } - } -} - -#if swift(>=3.1) -public extension Guarantee where T == Void { - convenience init() { - self.init(box: SealedBox(value: Void())) - } - - static var value: Guarantee { - return .value(Void()) - } -} -#endif - - -public extension DispatchQueue { - /** - Asynchronously executes the provided closure on a dispatch queue. - - DispatchQueue.global().async(.promise) { - md5(input) - }.done { md5 in - //… - } - - - Parameter body: The closure that resolves this promise. - - Returns: A new `Guarantee` resolved by the result of the provided closure. - - Note: There is no Promise/Thenable version of this due to Swift compiler ambiguity issues. - */ - @available(macOS 10.10, iOS 2.0, tvOS 10.0, watchOS 2.0, *) - final func async(_: PMKNamespacer, group: DispatchGroup? = nil, qos: DispatchQoS = .default, flags: DispatchWorkItemFlags = [], execute body: @escaping () -> T) -> Guarantee { - let rg = Guarantee(.pending) - async(group: group, qos: qos, flags: flags) { - rg.box.seal(body()) - } - return rg - } -} - - -#if os(Linux) -import func CoreFoundation._CFIsMainThread - -extension Thread { - // `isMainThread` is not implemented yet in swift-corelibs-foundation. - static var isMainThread: Bool { - return _CFIsMainThread() - } -} -#endif diff --git a/Pods/PromiseKit/Sources/LogEvent.swift b/Pods/PromiseKit/Sources/LogEvent.swift deleted file mode 100644 index 99683bd..0000000 --- a/Pods/PromiseKit/Sources/LogEvent.swift +++ /dev/null @@ -1,30 +0,0 @@ -/** - The PromiseKit events which may be logged. - - ```` - /// A promise or guarantee has blocked the main thread - case waitOnMainThread - - /// A promise has been deallocated without being resolved - case pendingPromiseDeallocated - - /// An error which occurred while fulfilling a promise was swallowed - case cauterized(Error) - - /// Errors which give a string error message - case misc (String) - ```` -*/ -public enum LogEvent { - /// A promise or guarantee has blocked the main thread - case waitOnMainThread - - /// A promise has been deallocated without being resolved - case pendingPromiseDeallocated - - /// A guarantee has been deallocated without being resolved - case pendingGuaranteeDeallocated - - /// An error which occurred while resolving a promise was swallowed - case cauterized(Error) -} diff --git a/Pods/PromiseKit/Sources/NSMethodSignatureForBlock.m b/Pods/PromiseKit/Sources/NSMethodSignatureForBlock.m deleted file mode 100644 index 700c1b3..0000000 --- a/Pods/PromiseKit/Sources/NSMethodSignatureForBlock.m +++ /dev/null @@ -1,77 +0,0 @@ -#import - -struct PMKBlockLiteral { - void *isa; // initialized to &_NSConcreteStackBlock or &_NSConcreteGlobalBlock - int flags; - int reserved; - void (*invoke)(void *, ...); - struct block_descriptor { - unsigned long int reserved; // NULL - unsigned long int size; // sizeof(struct Block_literal_1) - // optional helper functions - void (*copy_helper)(void *dst, void *src); // IFF (1<<25) - void (*dispose_helper)(void *src); // IFF (1<<25) - // required ABI.2010.3.16 - const char *signature; // IFF (1<<30) - } *descriptor; - // imported variables -}; - -typedef NS_OPTIONS(NSUInteger, PMKBlockDescriptionFlags) { - PMKBlockDescriptionFlagsHasCopyDispose = (1 << 25), - PMKBlockDescriptionFlagsHasCtor = (1 << 26), // helpers have C++ code - PMKBlockDescriptionFlagsIsGlobal = (1 << 28), - PMKBlockDescriptionFlagsHasStret = (1 << 29), // IFF BLOCK_HAS_SIGNATURE - PMKBlockDescriptionFlagsHasSignature = (1 << 30) -}; - -// It appears 10.7 doesn't support quotes in method signatures. Remove them -// via @rabovik's method. See https://github.com/OliverLetterer/SLObjectiveCRuntimeAdditions/pull/2 -#if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_8 -NS_INLINE static const char * pmk_removeQuotesFromMethodSignature(const char *str){ - char *result = malloc(strlen(str) + 1); - BOOL skip = NO; - char *to = result; - char c; - while ((c = *str++)) { - if ('"' == c) { - skip = !skip; - continue; - } - if (skip) continue; - *to++ = c; - } - *to = '\0'; - return result; -} -#endif - -static NSMethodSignature *NSMethodSignatureForBlock(id block) { - if (!block) - return nil; - - struct PMKBlockLiteral *blockRef = (__bridge struct PMKBlockLiteral *)block; - PMKBlockDescriptionFlags flags = (PMKBlockDescriptionFlags)blockRef->flags; - - if (flags & PMKBlockDescriptionFlagsHasSignature) { - void *signatureLocation = blockRef->descriptor; - signatureLocation += sizeof(unsigned long int); - signatureLocation += sizeof(unsigned long int); - - if (flags & PMKBlockDescriptionFlagsHasCopyDispose) { - signatureLocation += sizeof(void(*)(void *dst, void *src)); - signatureLocation += sizeof(void (*)(void *src)); - } - - const char *signature = (*(const char **)signatureLocation); -#if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_8 - signature = pmk_removeQuotesFromMethodSignature(signature); - NSMethodSignature *nsSignature = [NSMethodSignature signatureWithObjCTypes:signature]; - free((void *)signature); - - return nsSignature; -#endif - return [NSMethodSignature signatureWithObjCTypes:signature]; - } - return 0; -} diff --git a/Pods/PromiseKit/Sources/PMKCallVariadicBlock.m b/Pods/PromiseKit/Sources/PMKCallVariadicBlock.m deleted file mode 100644 index 1453a7d..0000000 --- a/Pods/PromiseKit/Sources/PMKCallVariadicBlock.m +++ /dev/null @@ -1,120 +0,0 @@ -#import "NSMethodSignatureForBlock.m" -#import -#import -#import "AnyPromise+Private.h" -#import -#import -#import - -#ifndef PMKLog -#define PMKLog NSLog -#endif - -@interface PMKArray : NSObject { -@public - id objs[3]; - NSUInteger count; -} @end - -@implementation PMKArray - -- (id)objectAtIndexedSubscript:(NSUInteger)idx { - if (count <= idx) { - // this check is necessary due to lack of checks in `pmk_safely_call_block` - return nil; - } - return objs[idx]; -} - -@end - -id __PMKArrayWithCount(NSUInteger count, ...) { - PMKArray *this = [PMKArray new]; - this->count = count; - va_list args; - va_start(args, count); - for (NSUInteger x = 0; x < count; ++x) - this->objs[x] = va_arg(args, id); - va_end(args); - return this; -} - - -static inline id _PMKCallVariadicBlock(id frock, id result) { - NSCAssert(frock, @""); - - NSMethodSignature *sig = NSMethodSignatureForBlock(frock); - const NSUInteger nargs = sig.numberOfArguments; - const char rtype = sig.methodReturnType[0]; - - #define call_block_with_rtype(type) ({^type{ \ - switch (nargs) { \ - case 1: \ - return ((type(^)(void))frock)(); \ - case 2: { \ - const id arg = [result class] == [PMKArray class] ? result[0] : result; \ - return ((type(^)(id))frock)(arg); \ - } \ - case 3: { \ - type (^block)(id, id) = frock; \ - return [result class] == [PMKArray class] \ - ? block(result[0], result[1]) \ - : block(result, nil); \ - } \ - case 4: { \ - type (^block)(id, id, id) = frock; \ - return [result class] == [PMKArray class] \ - ? block(result[0], result[1], result[2]) \ - : block(result, nil, nil); \ - } \ - default: \ - @throw [NSException exceptionWithName:NSInvalidArgumentException reason:@"PromiseKit: The provided block’s argument count is unsupported." userInfo:nil]; \ - }}();}) - - switch (rtype) { - case 'v': - call_block_with_rtype(void); - return nil; - case '@': - return call_block_with_rtype(id) ?: nil; - case '*': { - char *str = call_block_with_rtype(char *); - return str ? @(str) : nil; - } - case 'c': return @(call_block_with_rtype(char)); - case 'i': return @(call_block_with_rtype(int)); - case 's': return @(call_block_with_rtype(short)); - case 'l': return @(call_block_with_rtype(long)); - case 'q': return @(call_block_with_rtype(long long)); - case 'C': return @(call_block_with_rtype(unsigned char)); - case 'I': return @(call_block_with_rtype(unsigned int)); - case 'S': return @(call_block_with_rtype(unsigned short)); - case 'L': return @(call_block_with_rtype(unsigned long)); - case 'Q': return @(call_block_with_rtype(unsigned long long)); - case 'f': return @(call_block_with_rtype(float)); - case 'd': return @(call_block_with_rtype(double)); - case 'B': return @(call_block_with_rtype(_Bool)); - case '^': - if (strcmp(sig.methodReturnType, "^v") == 0) { - call_block_with_rtype(void); - return nil; - } - // else fall through! - default: - @throw [NSException exceptionWithName:@"PromiseKit" reason:@"PromiseKit: Unsupported method signature." userInfo:nil]; - } -} - -static id PMKCallVariadicBlock(id frock, id result) { - @try { - return _PMKCallVariadicBlock(frock, result); - } @catch (id thrown) { - if ([thrown isKindOfClass:[NSString class]]) - return thrown; - if ([thrown isKindOfClass:[NSError class]]) - return thrown; - - // we don’t catch objc exceptions: they are meant to crash your app - @throw thrown; - } -} diff --git a/Pods/PromiseKit/Sources/Promise.swift b/Pods/PromiseKit/Sources/Promise.swift deleted file mode 100644 index ef57352..0000000 --- a/Pods/PromiseKit/Sources/Promise.swift +++ /dev/null @@ -1,184 +0,0 @@ -import class Foundation.Thread -import Dispatch - -/** - A `Promise` is a functional abstraction around a failable asynchronous operation. - - See: `Thenable` - */ -public final class Promise: Thenable, CatchMixin { - let box: Box> - - fileprivate init(box: SealedBox>) { - self.box = box - } - - /** - Initialize a new fulfilled promise. - - We do not provide `init(value:)` because Swift is “greedy” - and would pick that initializer in cases where it should pick - one of the other more specific options leading to Promises with - `T` that is eg: `Error` or worse `(T->Void,Error->Void)` for - uses of our PMK < 4 pending initializer due to Swift trailing - closure syntax (nothing good comes without pain!). - - Though often easy to detect, sometimes these issues would be - hidden by other type inference leading to some nasty bugs in - production. - - In PMK5 we tried to work around this by making the pending - initializer take the form `Promise(.pending)` but this led to - bad migration errors for PMK4 users. Hence instead we quickly - released PMK6 and now only provide this initializer for making - sealed & fulfilled promises. - - Usage is still (usually) good: - - guard foo else { - return .value(bar) - } - */ - public static func value(_ value: T) -> Promise { - return Promise(box: SealedBox(value: .fulfilled(value))) - } - - /// Initialize a new rejected promise. - public init(error: Error) { - box = SealedBox(value: .rejected(error)) - } - - /// Initialize a new promise bound to the provided `Thenable`. - public init(_ bridge: U) where U.T == T { - box = EmptyBox() - bridge.pipe(to: box.seal) - } - - /// Initialize a new promise that can be resolved with the provided `Resolver`. - public init(resolver body: (Resolver) throws -> Void) { - box = EmptyBox() - let resolver = Resolver(box) - do { - try body(resolver) - } catch { - resolver.reject(error) - } - } - - /// - Returns: a tuple of a new pending promise and its `Resolver`. - public class func pending() -> (promise: Promise, resolver: Resolver) { - return { ($0, Resolver($0.box)) }(Promise(.pending)) - } - - /// - See: `Thenable.pipe` - public func pipe(to: @escaping(Result) -> Void) { - switch box.inspect() { - case .pending: - box.inspect { - switch $0 { - case .pending(let handlers): - handlers.append(to) - case .resolved(let value): - to(value) - } - } - case .resolved(let value): - to(value) - } - } - - /// - See: `Thenable.result` - public var result: Result? { - switch box.inspect() { - case .pending: - return nil - case .resolved(let result): - return result - } - } - - init(_: PMKUnambiguousInitializer) { - box = EmptyBox() - } -} - -public extension Promise { - /** - Blocks this thread, so—you know—don’t call this on a serial thread that - any part of your chain may use. Like the main thread for example. - */ - func wait() throws -> T { - - if Thread.isMainThread { - conf.logHandler(LogEvent.waitOnMainThread) - } - - var result = self.result - - if result == nil { - let group = DispatchGroup() - group.enter() - pipe { result = $0; group.leave() } - group.wait() - } - - switch result! { - case .rejected(let error): - throw error - case .fulfilled(let value): - return value - } - } -} - -#if swift(>=3.1) -extension Promise where T == Void { - /// Initializes a new promise fulfilled with `Void` - public convenience init() { - self.init(box: SealedBox(value: .fulfilled(Void()))) - } - - /// Returns a new promise fulfilled with `Void` - public static var value: Promise { - return .value(Void()) - } -} -#endif - - -public extension DispatchQueue { - /** - Asynchronously executes the provided closure on a dispatch queue. - - DispatchQueue.global().async(.promise) { - try md5(input) - }.done { md5 in - //… - } - - - Parameter body: The closure that resolves this promise. - - Returns: A new `Promise` resolved by the result of the provided closure. - - Note: There is no Promise/Thenable version of this due to Swift compiler ambiguity issues. - */ - @available(macOS 10.10, iOS 8.0, tvOS 9.0, watchOS 2.0, *) - final func async(_: PMKNamespacer, group: DispatchGroup? = nil, qos: DispatchQoS = .default, flags: DispatchWorkItemFlags = [], execute body: @escaping () throws -> T) -> Promise { - let promise = Promise(.pending) - async(group: group, qos: qos, flags: flags) { - do { - promise.box.seal(.fulfilled(try body())) - } catch { - promise.box.seal(.rejected(error)) - } - } - return promise - } -} - - -/// used by our extensions to provide unambiguous functions with the same name as the original function -public enum PMKNamespacer { - case promise -} - -enum PMKUnambiguousInitializer { - case pending -} diff --git a/Pods/PromiseKit/Sources/PromiseKit.h b/Pods/PromiseKit/Sources/PromiseKit.h deleted file mode 100644 index c30d937..0000000 --- a/Pods/PromiseKit/Sources/PromiseKit.h +++ /dev/null @@ -1,7 +0,0 @@ -#import -#import - -#import // `FOUNDATION_EXPORT` - -FOUNDATION_EXPORT double PromiseKitVersionNumber; -FOUNDATION_EXPORT const unsigned char PromiseKitVersionString[]; diff --git a/Pods/PromiseKit/Sources/Resolver.swift b/Pods/PromiseKit/Sources/Resolver.swift deleted file mode 100644 index c6b339f..0000000 --- a/Pods/PromiseKit/Sources/Resolver.swift +++ /dev/null @@ -1,111 +0,0 @@ -/// An object for resolving promises -public final class Resolver { - let box: Box> - - init(_ box: Box>) { - self.box = box - } - - deinit { - if case .pending = box.inspect() { - conf.logHandler(.pendingPromiseDeallocated) - } - } -} - -public extension Resolver { - /// Fulfills the promise with the provided value - func fulfill(_ value: T) { - box.seal(.fulfilled(value)) - } - - /// Rejects the promise with the provided error - func reject(_ error: Error) { - box.seal(.rejected(error)) - } - - /// Resolves the promise with the provided result - func resolve(_ result: Result) { - box.seal(result) - } - - /// Resolves the promise with the provided value or error - func resolve(_ obj: T?, _ error: Error?) { - if let error = error { - reject(error) - } else if let obj = obj { - fulfill(obj) - } else { - reject(PMKError.invalidCallingConvention) - } - } - - /// Fulfills the promise with the provided value unless the provided error is non-nil - func resolve(_ obj: T, _ error: Error?) { - if let error = error { - reject(error) - } else { - fulfill(obj) - } - } - - /// Resolves the promise, provided for non-conventional value-error ordered completion handlers. - func resolve(_ error: Error?, _ obj: T?) { - resolve(obj, error) - } -} - -#if swift(>=3.1) -extension Resolver where T == Void { - /// Fulfills the promise unless error is non-nil - public func resolve(_ error: Error?) { - if let error = error { - reject(error) - } else { - fulfill(()) - } - } -#if false - // disabled ∵ https://github.com/mxcl/PromiseKit/issues/990 - - /// Fulfills the promise - public func fulfill() { - self.fulfill(()) - } -#else - /// Fulfills the promise - /// - Note: underscore is present due to: https://github.com/mxcl/PromiseKit/issues/990 - public func fulfill_() { - self.fulfill(()) - } -#endif -} -#endif - -#if swift(>=5.0) -extension Resolver { - /// Resolves the promise with the provided result - public func resolve(_ result: Swift.Result) { - switch result { - case .failure(let error): self.reject(error) - case .success(let value): self.fulfill(value) - } - } -} -#endif - -public enum Result { - case fulfilled(T) - case rejected(Error) -} - -public extension PromiseKit.Result { - var isFulfilled: Bool { - switch self { - case .fulfilled: - return true - case .rejected: - return false - } - } -} diff --git a/Pods/PromiseKit/Sources/Thenable.swift b/Pods/PromiseKit/Sources/Thenable.swift deleted file mode 100644 index 7d88ea6..0000000 --- a/Pods/PromiseKit/Sources/Thenable.swift +++ /dev/null @@ -1,533 +0,0 @@ -import Dispatch - -/// Thenable represents an asynchronous operation that can be chained. -public protocol Thenable: AnyObject { - /// The type of the wrapped value - associatedtype T - - /// `pipe` is immediately executed when this `Thenable` is resolved - func pipe(to: @escaping(Result) -> Void) - - /// The resolved result or nil if pending. - var result: Result? { get } -} - -public extension Thenable { - /** - The provided closure executes when this promise is fulfilled. - - This allows chaining promises. The promise returned by the provided closure is resolved before the promise returned by this closure resolves. - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The closure that executes when this promise is fulfilled. It must return a promise. - - Returns: A new promise that resolves when the promise returned from the provided closure resolves. For example: - - firstly { - URLSession.shared.dataTask(.promise, with: url1) - }.then { response in - transform(data: response.data) - }.done { transformation in - //… - } - */ - func then(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(T) throws -> U) -> Promise { - let rp = Promise(.pending) - pipe { - switch $0 { - case .fulfilled(let value): - on.async(flags: flags) { - do { - let rv = try body(value) - guard rv !== rp else { throw PMKError.returnedSelf } - rv.pipe(to: rp.box.seal) - } catch { - rp.box.seal(.rejected(error)) - } - } - case .rejected(let error): - rp.box.seal(.rejected(error)) - } - } - return rp - } - - /** - The provided closure is executed when this promise is fulfilled. - - This is like `then` but it requires the closure to return a non-promise. - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter transform: The closure that is executed when this Promise is fulfilled. It must return a non-promise. - - Returns: A new promise that is fulfilled with the value returned from the provided closure or rejected if the provided closure throws. For example: - - firstly { - URLSession.shared.dataTask(.promise, with: url1) - }.map { response in - response.data.length - }.done { length in - //… - } - */ - func map(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T) throws -> U) -> Promise { - let rp = Promise(.pending) - pipe { - switch $0 { - case .fulfilled(let value): - on.async(flags: flags) { - do { - rp.box.seal(.fulfilled(try transform(value))) - } catch { - rp.box.seal(.rejected(error)) - } - } - case .rejected(let error): - rp.box.seal(.rejected(error)) - } - } - return rp - } - - #if swift(>=4) && !swift(>=5.2) - /** - Similar to func `map(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T) throws -> U) -> Promise`, but accepts a key path instead of a closure. - - - Parameter on: The queue to which the provided key path for value dispatches. - - Parameter keyPath: The key path to the value that is using when this Promise is fulfilled. - - Returns: A new promise that is fulfilled with the value for the provided key path. - */ - func map(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ keyPath: KeyPath) -> Promise { - let rp = Promise(.pending) - pipe { - switch $0 { - case .fulfilled(let value): - on.async(flags: flags) { - rp.box.seal(.fulfilled(value[keyPath: keyPath])) - } - case .rejected(let error): - rp.box.seal(.rejected(error)) - } - } - return rp - } - #endif - - /** - The provided closure is executed when this promise is fulfilled. - - In your closure return an `Optional`, if you return `nil` the resulting promise is rejected with `PMKError.compactMap`, otherwise the promise is fulfilled with the unwrapped value. - - firstly { - URLSession.shared.dataTask(.promise, with: url) - }.compactMap { - try JSONSerialization.jsonObject(with: $0.data) as? [String: String] - }.done { dictionary in - //… - }.catch { - // either `PMKError.compactMap` or a `JSONError` - } - */ - func compactMap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T) throws -> U?) -> Promise { - let rp = Promise(.pending) - pipe { - switch $0 { - case .fulfilled(let value): - on.async(flags: flags) { - do { - if let rv = try transform(value) { - rp.box.seal(.fulfilled(rv)) - } else { - throw PMKError.compactMap(value, U.self) - } - } catch { - rp.box.seal(.rejected(error)) - } - } - case .rejected(let error): - rp.box.seal(.rejected(error)) - } - } - return rp - } - - #if swift(>=4) && !swift(>=5.2) - /** - Similar to func `compactMap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T) throws -> U?) -> Promise`, but accepts a key path instead of a closure. - - - Parameter on: The queue to which the provided key path for value dispatches. - - Parameter keyPath: The key path to the value that is using when this Promise is fulfilled. If the value for `keyPath` is `nil` the resulting promise is rejected with `PMKError.compactMap`. - - Returns: A new promise that is fulfilled with the value for the provided key path. - */ - func compactMap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ keyPath: KeyPath) -> Promise { - let rp = Promise(.pending) - pipe { - switch $0 { - case .fulfilled(let value): - on.async(flags: flags) { - do { - if let rv = value[keyPath: keyPath] { - rp.box.seal(.fulfilled(rv)) - } else { - throw PMKError.compactMap(value, U.self) - } - } catch { - rp.box.seal(.rejected(error)) - } - } - case .rejected(let error): - rp.box.seal(.rejected(error)) - } - } - return rp - } - #endif - - /** - The provided closure is executed when this promise is fulfilled. - - Equivalent to `map { x -> Void in`, but since we force the `Void` return Swift - is happier and gives you less hassle about your closure’s qualification. - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The closure that is executed when this Promise is fulfilled. - - Returns: A new promise fulfilled as `Void` or rejected if the provided closure throws. - - firstly { - URLSession.shared.dataTask(.promise, with: url) - }.done { response in - print(response.data) - } - */ - func done(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(T) throws -> Void) -> Promise { - let rp = Promise(.pending) - pipe { - switch $0 { - case .fulfilled(let value): - on.async(flags: flags) { - do { - try body(value) - rp.box.seal(.fulfilled(())) - } catch { - rp.box.seal(.rejected(error)) - } - } - case .rejected(let error): - rp.box.seal(.rejected(error)) - } - } - return rp - } - - /** - The provided closure is executed when this promise is fulfilled. - - This is like `done` but it returns the same value that the handler is fed. - `get` immutably accesses the fulfilled value; the returned Promise maintains that value. - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The closure that is executed when this Promise is fulfilled. - - Returns: A new promise that is fulfilled with the value that the handler is fed or rejected if the provided closure throws. For example: - - firstly { - .value(1) - }.get { foo in - print(foo, " is 1") - }.done { foo in - print(foo, " is 1") - }.done { foo in - print(foo, " is Void") - } - */ - func get(on: DispatchQueue? = conf.Q.return, flags: DispatchWorkItemFlags? = nil, _ body: @escaping (T) throws -> Void) -> Promise { - return map(on: on, flags: flags) { - try body($0) - return $0 - } - } - - /** - The provided closure is executed with promise result. - - This is like `get` but provides the Result of the Promise so you can inspect the value of the chain at this point without causing any side effects. - - - Parameter on: The queue to which the provided closure dispatches. - - Parameter body: The closure that is executed with Result of Promise. - - Returns: A new promise that is resolved with the result that the handler is fed. For example: - - promise.tap{ print($0) }.then{ /*…*/ } - */ - func tap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ body: @escaping(Result) -> Void) -> Promise { - return Promise { seal in - pipe { result in - on.async(flags: flags) { - body(result) - seal.resolve(result) - } - } - } - } - - /// - Returns: a new promise chained off this promise but with its value discarded. - func asVoid() -> Promise { - return map(on: nil) { _ in } - } -} - -public extension Thenable { - /** - - Returns: The error with which this promise was rejected; `nil` if this promise is not rejected. - */ - var error: Error? { - switch result { - case .none: - return nil - case .some(.fulfilled): - return nil - case .some(.rejected(let error)): - return error - } - } - - /** - - Returns: `true` if the promise has not yet resolved. - */ - var isPending: Bool { - return result == nil - } - - /** - - Returns: `true` if the promise has resolved. - */ - var isResolved: Bool { - return !isPending - } - - /** - - Returns: `true` if the promise was fulfilled. - */ - var isFulfilled: Bool { - return value != nil - } - - /** - - Returns: `true` if the promise was rejected. - */ - var isRejected: Bool { - return error != nil - } - - /** - - Returns: The value with which this promise was fulfilled or `nil` if this promise is pending or rejected. - */ - var value: T? { - switch result { - case .none: - return nil - case .some(.fulfilled(let value)): - return value - case .some(.rejected): - return nil - } - } -} - -public extension Thenable where T: Sequence { - /** - `Promise<[T]>` => `T` -> `U` => `Promise<[U]>` - - firstly { - .value([1,2,3]) - }.mapValues { integer in - integer * 2 - }.done { - // $0 => [2,4,6] - } - */ - func mapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U]> { - return map(on: on, flags: flags){ try $0.map(transform) } - } - - #if swift(>=4) && !swift(>=5.2) - /** - `Promise<[T]>` => `KeyPath` => `Promise<[U]>` - - firstly { - .value([Person(name: "Max"), Person(name: "Roman"), Person(name: "John")]) - }.mapValues(\.name).done { - // $0 => ["Max", "Roman", "John"] - } - */ - func mapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ keyPath: KeyPath) -> Promise<[U]> { - return map(on: on, flags: flags){ $0.map { $0[keyPath: keyPath] } } - } - #endif - - /** - `Promise<[T]>` => `T` -> `[U]` => `Promise<[U]>` - - firstly { - .value([1,2,3]) - }.flatMapValues { integer in - [integer, integer] - }.done { - // $0 => [1,1,2,2,3,3] - } - */ - func flatMapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U.Iterator.Element]> { - return map(on: on, flags: flags){ (foo: T) in - try foo.flatMap{ try transform($0) } - } - } - - /** - `Promise<[T]>` => `T` -> `U?` => `Promise<[U]>` - - firstly { - .value(["1","2","a","3"]) - }.compactMapValues { - Int($0) - }.done { - // $0 => [1,2,3] - } - */ - func compactMapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) throws -> U?) -> Promise<[U]> { - return map(on: on, flags: flags) { foo -> [U] in - #if !swift(>=3.3) || (swift(>=4) && !swift(>=4.1)) - return try foo.flatMap(transform) - #else - return try foo.compactMap(transform) - #endif - } - } - - #if swift(>=4) && !swift(>=5.2) - /** - `Promise<[T]>` => `KeyPath` => `Promise<[U]>` - - firstly { - .value([Person(name: "Max"), Person(name: "Roman", age: 26), Person(name: "John", age: 23)]) - }.compactMapValues(\.age).done { - // $0 => [26, 23] - } - */ - func compactMapValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ keyPath: KeyPath) -> Promise<[U]> { - return map(on: on, flags: flags) { foo -> [U] in - #if !swift(>=4.1) - return foo.flatMap { $0[keyPath: keyPath] } - #else - return foo.compactMap { $0[keyPath: keyPath] } - #endif - } - } - #endif - - /** - `Promise<[T]>` => `T` -> `Promise` => `Promise<[U]>` - - firstly { - .value([1,2,3]) - }.thenMap { integer in - .value(integer * 2) - }.done { - // $0 => [2,4,6] - } - */ - func thenMap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U.T]> { - return then(on: on, flags: flags) { - when(fulfilled: try $0.map(transform)) - } - } - - /** - `Promise<[T]>` => `T` -> `Promise<[U]>` => `Promise<[U]>` - - firstly { - .value([1,2,3]) - }.thenFlatMap { integer in - .value([integer, integer]) - }.done { - // $0 => [1,1,2,2,3,3] - } - */ - func thenFlatMap(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ transform: @escaping(T.Iterator.Element) throws -> U) -> Promise<[U.T.Iterator.Element]> where U.T: Sequence { - return then(on: on, flags: flags) { - when(fulfilled: try $0.map(transform)) - }.map(on: nil) { - $0.flatMap{ $0 } - } - } - - /** - `Promise<[T]>` => `T` -> Bool => `Promise<[T]>` - - firstly { - .value([1,2,3]) - }.filterValues { - $0 > 1 - }.done { - // $0 => [2,3] - } - */ - func filterValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ isIncluded: @escaping (T.Iterator.Element) -> Bool) -> Promise<[T.Iterator.Element]> { - return map(on: on, flags: flags) { - $0.filter(isIncluded) - } - } - - #if swift(>=4) && !swift(>=5.2) - /** - `Promise<[T]>` => `KeyPath` => `Promise<[T]>` - - firstly { - .value([Person(name: "Max"), Person(name: "Roman", age: 26, isStudent: false), Person(name: "John", age: 23, isStudent: true)]) - }.filterValues(\.isStudent).done { - // $0 => [Person(name: "John", age: 23, isStudent: true)] - } - */ - func filterValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, _ keyPath: KeyPath) -> Promise<[T.Iterator.Element]> { - return map(on: on, flags: flags) { - $0.filter { $0[keyPath: keyPath] } - } - } - #endif -} - -public extension Thenable where T: Collection { - /// - Returns: a promise fulfilled with the first value of this `Collection` or, if empty, a promise rejected with PMKError.emptySequence. - var firstValue: Promise { - return map(on: nil) { aa in - if let a1 = aa.first { - return a1 - } else { - throw PMKError.emptySequence - } - } - } - - func firstValue(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil, where test: @escaping (T.Iterator.Element) -> Bool) -> Promise { - return map(on: on, flags: flags) { - for x in $0 where test(x) { - return x - } - throw PMKError.emptySequence - } - } - - /// - Returns: a promise fulfilled with the last value of this `Collection` or, if empty, a promise rejected with PMKError.emptySequence. - var lastValue: Promise { - return map(on: nil) { aa in - if aa.isEmpty { - throw PMKError.emptySequence - } else { - let i = aa.index(aa.endIndex, offsetBy: -1) - return aa[i] - } - } - } -} - -public extension Thenable where T: Sequence, T.Iterator.Element: Comparable { - /// - Returns: a promise fulfilled with the sorted values of this `Sequence`. - func sortedValues(on: DispatchQueue? = conf.Q.map, flags: DispatchWorkItemFlags? = nil) -> Promise<[T.Iterator.Element]> { - return map(on: on, flags: flags){ $0.sorted() } - } -} diff --git a/Pods/PromiseKit/Sources/after.m b/Pods/PromiseKit/Sources/after.m deleted file mode 100644 index 25f9966..0000000 --- a/Pods/PromiseKit/Sources/after.m +++ /dev/null @@ -1,14 +0,0 @@ -#import "AnyPromise.h" -@import Dispatch; -@import Foundation.NSDate; -@import Foundation.NSValue; - -/// @return A promise that fulfills after the specified duration. -AnyPromise *PMKAfter(NSTimeInterval duration) { - return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) { - dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(duration * NSEC_PER_SEC)); - dispatch_after(time, dispatch_get_global_queue(0, 0), ^{ - resolve(@(duration)); - }); - }]; -} diff --git a/Pods/PromiseKit/Sources/after.swift b/Pods/PromiseKit/Sources/after.swift deleted file mode 100644 index cdaeccd..0000000 --- a/Pods/PromiseKit/Sources/after.swift +++ /dev/null @@ -1,46 +0,0 @@ -import struct Foundation.TimeInterval -import Dispatch - -/** - after(seconds: 1.5).then { - //… - } - -- Returns: A guarantee that resolves after the specified duration. -*/ -public func after(seconds: TimeInterval) -> Guarantee { - let (rg, seal) = Guarantee.pending() - let when = DispatchTime.now() + seconds -#if swift(>=4.0) - q.asyncAfter(deadline: when) { seal(()) } -#else - q.asyncAfter(deadline: when, execute: seal) -#endif - return rg -} - -/** - after(.seconds(2)).then { - //… - } - - - Returns: A guarantee that resolves after the specified duration. -*/ -public func after(_ interval: DispatchTimeInterval) -> Guarantee { - let (rg, seal) = Guarantee.pending() - let when = DispatchTime.now() + interval -#if swift(>=4.0) - q.asyncAfter(deadline: when) { seal(()) } -#else - q.asyncAfter(deadline: when, execute: seal) -#endif - return rg -} - -private var q: DispatchQueue { - if #available(macOS 10.10, iOS 8.0, tvOS 9.0, watchOS 2.0, *) { - return DispatchQueue.global(qos: .default) - } else { - return DispatchQueue.global(priority: .default) - } -} diff --git a/Pods/PromiseKit/Sources/dispatch_promise.m b/Pods/PromiseKit/Sources/dispatch_promise.m deleted file mode 100644 index ecb89f7..0000000 --- a/Pods/PromiseKit/Sources/dispatch_promise.m +++ /dev/null @@ -1,10 +0,0 @@ -#import "AnyPromise.h" -@import Dispatch; - -AnyPromise *dispatch_promise_on(dispatch_queue_t queue, id block) { - return [AnyPromise promiseWithValue:nil].thenOn(queue, block); -} - -AnyPromise *dispatch_promise(id block) { - return dispatch_promise_on(dispatch_get_global_queue(0, 0), block); -} diff --git a/Pods/PromiseKit/Sources/firstly.swift b/Pods/PromiseKit/Sources/firstly.swift deleted file mode 100644 index 4bfc038..0000000 --- a/Pods/PromiseKit/Sources/firstly.swift +++ /dev/null @@ -1,39 +0,0 @@ -import Dispatch - -/** - Judicious use of `firstly` *may* make chains more readable. - - Compare: - - URLSession.shared.dataTask(url: url1).then { - URLSession.shared.dataTask(url: url2) - }.then { - URLSession.shared.dataTask(url: url3) - } - - With: - - firstly { - URLSession.shared.dataTask(url: url1) - }.then { - URLSession.shared.dataTask(url: url2) - }.then { - URLSession.shared.dataTask(url: url3) - } - - - Note: the block you pass executes immediately on the current thread/queue. - */ -public func firstly(execute body: () throws -> U) -> Promise { - do { - let rp = Promise(.pending) - try body().pipe(to: rp.box.seal) - return rp - } catch { - return Promise(error: error) - } -} - -/// - See: firstly() -public func firstly(execute body: () -> Guarantee) -> Guarantee { - return body() -} diff --git a/Pods/PromiseKit/Sources/fwd.h b/Pods/PromiseKit/Sources/fwd.h deleted file mode 100644 index 480d148..0000000 --- a/Pods/PromiseKit/Sources/fwd.h +++ /dev/null @@ -1,165 +0,0 @@ -#import -#import - -@class AnyPromise; -extern NSString * __nonnull const PMKErrorDomain; - -#define PMKFailingPromiseIndexKey @"PMKFailingPromiseIndexKey" -#define PMKJoinPromisesKey @"PMKJoinPromisesKey" - -#define PMKUnexpectedError 1l -#define PMKInvalidUsageError 3l -#define PMKAccessDeniedError 4l -#define PMKOperationFailed 8l -#define PMKTaskError 9l -#define PMKJoinError 10l - - -#ifdef __cplusplus -extern "C" { -#endif - -/** - @return A new promise that resolves after the specified duration. - - @parameter duration The duration in seconds to wait before this promise is resolve. - - For example: - - PMKAfter(1).then(^{ - //… - }); -*/ -extern AnyPromise * __nonnull PMKAfter(NSTimeInterval duration) NS_REFINED_FOR_SWIFT; - - - -/** - `when` is a mechanism for waiting more than one asynchronous task and responding when they are all complete. - - `PMKWhen` accepts varied input. If an array is passed then when those promises fulfill, when’s promise fulfills with an array of fulfillment values. If a dictionary is passed then the same occurs, but when’s promise fulfills with a dictionary of fulfillments keyed as per the input. - - Interestingly, if a single promise is passed then when waits on that single promise, and if a single non-promise object is passed then when fulfills immediately with that object. If the array or dictionary that is passed contains objects that are not promises, then these objects are considered fulfilled promises. The reason we do this is to allow a pattern know as "abstracting away asynchronicity". - - If *any* of the provided promises reject, the returned promise is immediately rejected with that promise’s rejection. The error’s `userInfo` object is supplemented with `PMKFailingPromiseIndexKey`. - - For example: - - PMKWhen(@[promise1, promise2]).then(^(NSArray *results){ - //… - }); - - @warning *Important* In the event of rejection the other promises will continue to resolve and as per any other promise will either fulfill or reject. This is the right pattern for `getter` style asynchronous tasks, but often for `setter` tasks (eg. storing data on a server), you most likely will need to wait on all tasks and then act based on which have succeeded and which have failed. In such situations use `PMKJoin`. - - @param input The input upon which to wait before resolving this promise. - - @return A promise that is resolved with either: - - 1. An array of values from the provided array of promises. - 2. The value from the provided promise. - 3. The provided non-promise object. - - @see PMKJoin - -*/ -extern AnyPromise * __nonnull PMKWhen(id __nonnull input) NS_REFINED_FOR_SWIFT; - - - -/** - Creates a new promise that resolves only when all provided promises have resolved. - - Typically, you should use `PMKWhen`. - - For example: - - PMKJoin(@[promise1, promise2]).then(^(NSArray *resultingValues){ - //… - }).catch(^(NSError *error){ - assert(error.domain == PMKErrorDomain); - assert(error.code == PMKJoinError); - - NSArray *promises = error.userInfo[PMKJoinPromisesKey]; - for (AnyPromise *promise in promises) { - if (promise.rejected) { - //… - } - } - }); - - @param promises An array of promises. - - @return A promise that thens three parameters: - - 1) An array of mixed values and errors from the resolved input. - 2) An array of values from the promises that fulfilled. - 3) An array of errors from the promises that rejected or nil if all promises fulfilled. - - @see when -*/ -AnyPromise *__nonnull PMKJoin(NSArray * __nonnull promises) NS_REFINED_FOR_SWIFT; - - - -/** - Literally hangs this thread until the promise has resolved. - - Do not use hang… unless you are testing, playing or debugging. - - If you use it in production code I will literally and honestly cry like a child. - - @return The resolved value of the promise. - - @warning T SAFE. IT IS NOT SAFE. IT IS NOT SAFE. IT IS NOT SAFE. IT IS NO -*/ -extern id __nullable PMKHang(AnyPromise * __nonnull promise); - - - -/** - Executes the provided block on a background queue. - - dispatch_promise is a convenient way to start a promise chain where the - first step needs to run synchronously on a background queue. - - dispatch_promise(^{ - return md5(input); - }).then(^(NSString *md5){ - NSLog(@"md5: %@", md5); - }); - - @param block The block to be executed in the background. Returning an `NSError` will reject the promise, everything else (including void) fulfills the promise. - - @return A promise resolved with the return value of the provided block. - - @see dispatch_async -*/ -extern AnyPromise * __nonnull dispatch_promise(id __nonnull block) NS_SWIFT_UNAVAILABLE("Use our `DispatchQueue.async` override instead"); - - - -/** - Executes the provided block on the specified background queue. - - dispatch_promise_on(myDispatchQueue, ^{ - return md5(input); - }).then(^(NSString *md5){ - NSLog(@"md5: %@", md5); - }); - - @param block The block to be executed in the background. Returning an `NSError` will reject the promise, everything else (including void) fulfills the promise. - - @return A promise resolved with the return value of the provided block. - - @see dispatch_promise -*/ -extern AnyPromise * __nonnull dispatch_promise_on(dispatch_queue_t __nonnull queue, id __nonnull block) NS_SWIFT_UNAVAILABLE("Use our `DispatchQueue.async` override instead"); - -/** - Returns a new promise that resolves when the value of the first resolved promise in the provided array of promises. -*/ -extern AnyPromise * __nonnull PMKRace(NSArray * __nonnull promises) NS_REFINED_FOR_SWIFT; - -#ifdef __cplusplus -} // Extern C -#endif diff --git a/Pods/PromiseKit/Sources/hang.m b/Pods/PromiseKit/Sources/hang.m deleted file mode 100644 index 913339e..0000000 --- a/Pods/PromiseKit/Sources/hang.m +++ /dev/null @@ -1,29 +0,0 @@ -#import "AnyPromise.h" -#import "AnyPromise+Private.h" -@import CoreFoundation.CFRunLoop; - -/** - Suspends the active thread waiting on the provided promise. - - @return The value of the provided promise once resolved. - */ -id PMKHang(AnyPromise *promise) { - if (promise.pending) { - static CFRunLoopSourceContext context; - - CFRunLoopRef runLoop = CFRunLoopGetCurrent(); - CFRunLoopSourceRef runLoopSource = CFRunLoopSourceCreate(NULL, 0, &context); - CFRunLoopAddSource(runLoop, runLoopSource, kCFRunLoopDefaultMode); - - promise.ensure(^{ - CFRunLoopStop(runLoop); - }); - while (promise.pending) { - CFRunLoopRun(); - } - CFRunLoopRemoveSource(runLoop, runLoopSource, kCFRunLoopDefaultMode); - CFRelease(runLoopSource); - } - - return promise.value; -} diff --git a/Pods/PromiseKit/Sources/hang.swift b/Pods/PromiseKit/Sources/hang.swift deleted file mode 100644 index 1022dca..0000000 --- a/Pods/PromiseKit/Sources/hang.swift +++ /dev/null @@ -1,55 +0,0 @@ -import Foundation -import CoreFoundation - -/** - Runs the active run-loop until the provided promise resolves. - - This is for debug and is not a generally safe function to use in your applications. We mostly provide it for use in testing environments. - - Still if you like, study how it works (by reading the sources!) and use at your own risk. - - - Returns: The value of the resolved promise - - Throws: An error, should the promise be rejected - - See: `wait()` -*/ -public func hang(_ promise: Promise) throws -> T { -#if os(Linux) || os(Android) -#if swift(>=4) - let runLoopMode: CFRunLoopMode = kCFRunLoopDefaultMode -#else - // isMainThread is not yet implemented on Linux. - let runLoopModeRaw = RunLoopMode.defaultRunLoopMode.rawValue._bridgeToObjectiveC() - let runLoopMode: CFString = unsafeBitCast(runLoopModeRaw, to: CFString.self) -#endif -#else - guard Thread.isMainThread else { - // hang doesn't make sense on threads that aren't the main thread. - // use `.wait()` on those threads. - fatalError("Only call hang() on the main thread.") - } - let runLoopMode: CFRunLoopMode = CFRunLoopMode.defaultMode -#endif - - if promise.isPending { - var context = CFRunLoopSourceContext() - let runLoop = CFRunLoopGetCurrent() - let runLoopSource = CFRunLoopSourceCreate(nil, 0, &context) - CFRunLoopAddSource(runLoop, runLoopSource, runLoopMode) - - _ = promise.ensure { - CFRunLoopStop(runLoop) - } - - while promise.isPending { - CFRunLoopRun() - } - CFRunLoopRemoveSource(runLoop, runLoopSource, runLoopMode) - } - - switch promise.result! { - case .rejected(let error): - throw error - case .fulfilled(let value): - return value - } -} diff --git a/Pods/PromiseKit/Sources/join.m b/Pods/PromiseKit/Sources/join.m deleted file mode 100644 index 979f092..0000000 --- a/Pods/PromiseKit/Sources/join.m +++ /dev/null @@ -1,54 +0,0 @@ -@import Foundation.NSDictionary; -#import "AnyPromise+Private.h" -#import -@import Foundation.NSError; -@import Foundation.NSNull; -#import "PromiseKit.h" -#import - -/** - Waits on all provided promises. - - `PMKWhen` rejects as soon as one of the provided promises rejects. `PMKJoin` waits on all provided promises, then rejects if any of those promises rejects, otherwise it fulfills with values from the provided promises. - - - Returns: A new promise that resolves once all the provided promises resolve. -*/ -AnyPromise *PMKJoin(NSArray *promises) { - if (promises == nil) - return [AnyPromise promiseWithValue:[NSError errorWithDomain:PMKErrorDomain code:PMKInvalidUsageError userInfo:@{NSLocalizedDescriptionKey: @"PMKJoin(nil)"}]]; - - if (promises.count == 0) - return [AnyPromise promiseWithValue:promises]; - - return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) { - NSPointerArray *results = NSPointerArrayMake(promises.count); - __block atomic_int countdown = promises.count; - __block BOOL rejected = NO; - - [promises enumerateObjectsUsingBlock:^(AnyPromise *promise, NSUInteger ii, BOOL *stop) { - [promise __pipe:^(id value) { - - if (IsError(value)) { - rejected = YES; - } - - //FIXME surely this isn't thread safe on multiple cores? - [results replacePointerAtIndex:ii withPointer:(__bridge void *)(value ?: [NSNull null])]; - - atomic_fetch_sub_explicit(&countdown, 1, memory_order_relaxed); - - if (countdown == 0) { - if (!rejected) { - resolve(results.allObjects); - } else { - id userInfo = @{PMKJoinPromisesKey: promises}; - id err = [NSError errorWithDomain:PMKErrorDomain code:PMKJoinError userInfo:userInfo]; - resolve(err); - } - } - }]; - - (void) stop; - }]; - }]; -} diff --git a/Pods/PromiseKit/Sources/race.m b/Pods/PromiseKit/Sources/race.m deleted file mode 100644 index cab38ec..0000000 --- a/Pods/PromiseKit/Sources/race.m +++ /dev/null @@ -1,9 +0,0 @@ -#import "AnyPromise+Private.h" - -AnyPromise *PMKRace(NSArray *promises) { - return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) { - for (AnyPromise *promise in promises) { - [promise __pipe:resolve]; - } - }]; -} diff --git a/Pods/PromiseKit/Sources/race.swift b/Pods/PromiseKit/Sources/race.swift deleted file mode 100644 index 76ae96d..0000000 --- a/Pods/PromiseKit/Sources/race.swift +++ /dev/null @@ -1,102 +0,0 @@ -import Dispatch - -@inline(__always) -private func _race(_ thenables: [U]) -> Promise { - let rp = Promise(.pending) - for thenable in thenables { - thenable.pipe(to: rp.box.seal) - } - return rp -} - -/** - Waits for one promise to resolve - - race(promise1, promise2, promise3).then { winner in - //… - } - - - Returns: The promise that resolves first - - Warning: If the first resolution is a rejection, the returned promise is rejected -*/ -public func race(_ thenables: U...) -> Promise { - return _race(thenables) -} - -/** - Waits for one promise to resolve - - race(promise1, promise2, promise3).then { winner in - //… - } - - - Returns: The promise that resolves first - - Warning: If the first resolution is a rejection, the returned promise is rejected - - Remark: If the provided array is empty the returned promise is rejected with PMKError.badInput -*/ -public func race(_ thenables: [U]) -> Promise { - guard !thenables.isEmpty else { - return Promise(error: PMKError.badInput) - } - return _race(thenables) -} - -/** - Waits for one guarantee to resolve - - race(promise1, promise2, promise3).then { winner in - //… - } - - - Returns: The guarantee that resolves first -*/ -public func race(_ guarantees: Guarantee...) -> Guarantee { - let rg = Guarantee(.pending) - for guarantee in guarantees { - guarantee.pipe(to: rg.box.seal) - } - return rg -} - -/** - Waits for one promise to fulfill - - race(fulfilled: [promise1, promise2, promise3]).then { winner in - //… - } - - - Returns: The promise that was fulfilled first. - - Warning: Skips all rejected promises. - - Remark: If the provided array is empty, the returned promise is rejected with `PMKError.badInput`. If there are no fulfilled promises, the returned promise is rejected with `PMKError.noWinner`. -*/ -public func race(fulfilled thenables: [U]) -> Promise { - var countdown = thenables.count - guard countdown > 0 else { - return Promise(error: PMKError.badInput) - } - - let rp = Promise(.pending) - - let barrier = DispatchQueue(label: "org.promisekit.barrier.race", attributes: .concurrent) - - for promise in thenables { - promise.pipe { result in - barrier.sync(flags: .barrier) { - switch result { - case .rejected: - guard rp.isPending else { return } - countdown -= 1 - if countdown == 0 { - rp.box.seal(.rejected(PMKError.noWinner)) - } - case .fulfilled(let value): - guard rp.isPending else { return } - countdown = 0 - rp.box.seal(.fulfilled(value)) - } - } - } - } - - return rp -} diff --git a/Pods/PromiseKit/Sources/when.m b/Pods/PromiseKit/Sources/when.m deleted file mode 100644 index 43e5fed..0000000 --- a/Pods/PromiseKit/Sources/when.m +++ /dev/null @@ -1,107 +0,0 @@ -@import Foundation.NSDictionary; -#import "AnyPromise+Private.h" -@import Foundation.NSProgress; -#import -@import Foundation.NSError; -@import Foundation.NSNull; -#import "PromiseKit.h" - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" -// ^^ OSAtomicDecrement32 is deprecated on watchOS - - -// NSProgress resources: -// * https://robots.thoughtbot.com/asynchronous-nsprogress -// * http://oleb.net/blog/2014/03/nsprogress/ -// NSProgress! Beware! -// * https://github.com/AFNetworking/AFNetworking/issues/2261 - -/** - Wait for all promises in a set to resolve. - - @note If *any* of the provided promises reject, the returned promise is immediately rejected with that error. - @warning In the event of rejection the other promises will continue to resolve and, as per any other promise, will either fulfill or reject. This is the right pattern for `getter` style asynchronous tasks, but often for `setter` tasks (eg. storing data on a server), you most likely will need to wait on all tasks and then act based on which have succeeded and which have failed, in such situations use `when(resolved:)`. - @param promises The promises upon which to wait before the returned promise resolves. - @note PMKWhen provides NSProgress. - @return A new promise that resolves when all the provided promises fulfill or one of the provided promises rejects. -*/ -AnyPromise *PMKWhen(id promises) { - if (promises == nil) - return [AnyPromise promiseWithValue:[NSError errorWithDomain:PMKErrorDomain code:PMKInvalidUsageError userInfo:@{NSLocalizedDescriptionKey: @"PMKWhen(nil)"}]]; - - if ([promises isKindOfClass:[NSArray class]] || [promises isKindOfClass:[NSDictionary class]]) { - if ([promises count] == 0) - return [AnyPromise promiseWithValue:promises]; - } else if ([promises isKindOfClass:[AnyPromise class]]) { - promises = @[promises]; - } else { - return [AnyPromise promiseWithValue:promises]; - } - -#ifndef PMKDisableProgress - NSProgress *progress = [NSProgress progressWithTotalUnitCount:(int64_t)[promises count]]; - progress.pausable = NO; - progress.cancellable = NO; -#else - struct PMKProgress { - int completedUnitCount; - int totalUnitCount; - double fractionCompleted; - }; - __block struct PMKProgress progress; -#endif - - __block int32_t countdown = (int32_t)[promises count]; - BOOL const isdict = [promises isKindOfClass:[NSDictionary class]]; - - return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) { - NSInteger index = 0; - - for (__strong id key in promises) { - AnyPromise *promise = isdict ? promises[key] : key; - if (!isdict) key = @(index); - - if (![promise isKindOfClass:[AnyPromise class]]) - promise = [AnyPromise promiseWithValue:promise]; - - [promise __pipe:^(id value){ - if (progress.fractionCompleted >= 1) - return; - - if (IsError(value)) { - progress.completedUnitCount = progress.totalUnitCount; - - NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithDictionary:[(NSError *)value userInfo] ?: @{}]; - userInfo[PMKFailingPromiseIndexKey] = key; - [userInfo setObject:value forKey:NSUnderlyingErrorKey]; - id err = [[NSError alloc] initWithDomain:[value domain] code:[value code] userInfo:userInfo]; - resolve(err); - } - else if (OSAtomicDecrement32(&countdown) == 0) { - progress.completedUnitCount = progress.totalUnitCount; - - id results; - if (isdict) { - results = [NSMutableDictionary new]; - for (id key in promises) { - id promise = promises[key]; - results[key] = IsPromise(promise) ? ((AnyPromise *)promise).value : promise; - } - } else { - results = [NSMutableArray new]; - for (AnyPromise *promise in promises) { - id value = IsPromise(promise) ? (promise.value ?: [NSNull null]) : promise; - [results addObject:value]; - } - } - resolve(results); - } else { - progress.completedUnitCount++; - } - }]; - } - }]; -} - -#pragma GCC diagnostic pop diff --git a/Pods/PromiseKit/Sources/when.swift b/Pods/PromiseKit/Sources/when.swift deleted file mode 100644 index 44335b8..0000000 --- a/Pods/PromiseKit/Sources/when.swift +++ /dev/null @@ -1,363 +0,0 @@ -import Foundation -import Dispatch - -private func _when(_ thenables: [U]) -> Promise { - var countdown = thenables.count - guard countdown > 0 else { - return .value(Void()) - } - - let rp = Promise(.pending) - -#if PMKDisableProgress || os(Linux) - var progress: (completedUnitCount: Int, totalUnitCount: Int) = (0, 0) -#else - let progress = Progress(totalUnitCount: Int64(thenables.count)) - progress.isCancellable = false - progress.isPausable = false -#endif - - let barrier = DispatchQueue(label: "org.promisekit.barrier.when", attributes: .concurrent) - - for promise in thenables { - promise.pipe { result in - barrier.sync(flags: .barrier) { - switch result { - case .rejected(let error): - if rp.isPending { - progress.completedUnitCount = progress.totalUnitCount - rp.box.seal(.rejected(error)) - } - case .fulfilled: - guard rp.isPending else { return } - progress.completedUnitCount += 1 - countdown -= 1 - if countdown == 0 { - rp.box.seal(.fulfilled(())) - } - } - } - } - } - - return rp -} - -/** - Wait for all promises in a set to fulfill. - - For example: - - when(fulfilled: promise1, promise2).then { results in - //… - }.catch { error in - switch error { - case URLError.notConnectedToInternet: - //… - case CLError.denied: - //… - } - } - - - Note: If *any* of the provided promises reject, the returned promise is immediately rejected with that error. - - Warning: In the event of rejection the other promises will continue to resolve and, as per any other promise, will either fulfill or reject. This is the right pattern for `getter` style asynchronous tasks, but often for `setter` tasks (eg. storing data on a server), you most likely will need to wait on all tasks and then act based on which have succeeded and which have failed, in such situations use `when(resolved:)`. - - Parameter promises: The promises upon which to wait before the returned promise resolves. - - Returns: A new promise that resolves when all the provided promises fulfill or one of the provided promises rejects. - - Note: `when` provides `NSProgress`. - - SeeAlso: `when(resolved:)` -*/ -public func when(fulfilled thenables: [U]) -> Promise<[U.T]> { - return _when(thenables).map(on: nil) { thenables.map{ $0.value! } } -} - -/// Wait for all promises in a set to fulfill. -public func when(fulfilled promises: U...) -> Promise where U.T == Void { - return _when(promises) -} - -/// Wait for all promises in a set to fulfill. -public func when(fulfilled promises: [U]) -> Promise where U.T == Void { - return _when(promises) -} - -/// Wait for all promises in a set to fulfill. -public func when(fulfilled pu: U, _ pv: V) -> Promise<(U.T, V.T)> { - return _when([pu.asVoid(), pv.asVoid()]).map(on: nil) { (pu.value!, pv.value!) } -} - -/// Wait for all promises in a set to fulfill. -public func when(fulfilled pu: U, _ pv: V, _ pw: W) -> Promise<(U.T, V.T, W.T)> { - return _when([pu.asVoid(), pv.asVoid(), pw.asVoid()]).map(on: nil) { (pu.value!, pv.value!, pw.value!) } -} - -/// Wait for all promises in a set to fulfill. -public func when(fulfilled pu: U, _ pv: V, _ pw: W, _ px: X) -> Promise<(U.T, V.T, W.T, X.T)> { - return _when([pu.asVoid(), pv.asVoid(), pw.asVoid(), px.asVoid()]).map(on: nil) { (pu.value!, pv.value!, pw.value!, px.value!) } -} - -/// Wait for all promises in a set to fulfill. -public func when(fulfilled pu: U, _ pv: V, _ pw: W, _ px: X, _ py: Y) -> Promise<(U.T, V.T, W.T, X.T, Y.T)> { - return _when([pu.asVoid(), pv.asVoid(), pw.asVoid(), px.asVoid(), py.asVoid()]).map(on: nil) { (pu.value!, pv.value!, pw.value!, px.value!, py.value!) } -} - -/** - Generate promises at a limited rate and wait for all to fulfill. - - For example: - - func downloadFile(url: URL) -> Promise { - // ... - } - - let urls: [URL] = /*…*/ - let urlGenerator = urls.makeIterator() - - let generator = AnyIterator> { - guard url = urlGenerator.next() else { - return nil - } - return downloadFile(url) - } - - when(generator, concurrently: 3).done { datas in - // ... - } - - No more than three downloads will occur simultaneously. - - - Note: The generator is called *serially* on a *background* queue. - - Warning: Refer to the warnings on `when(fulfilled:)` - - Parameter promiseGenerator: Generator of promises. - - Returns: A new promise that resolves when all the provided promises fulfill or one of the provided promises rejects. - - SeeAlso: `when(resolved:)` - */ - -public func when(fulfilled promiseIterator: It, concurrently: Int) -> Promise<[It.Element.T]> where It.Element: Thenable { - - guard concurrently > 0 else { - return Promise(error: PMKError.badInput) - } - - var generator = promiseIterator - let root = Promise<[It.Element.T]>.pending() - var pendingPromises = 0 - var promises: [It.Element] = [] - - let barrier = DispatchQueue(label: "org.promisekit.barrier.when", attributes: [.concurrent]) - - func dequeue() { - guard root.promise.isPending else { return } // don’t continue dequeueing if root has been rejected - - var shouldDequeue = false - barrier.sync { - shouldDequeue = pendingPromises < concurrently - } - guard shouldDequeue else { return } - - var promise: It.Element! - - barrier.sync(flags: .barrier) { - guard let next = generator.next() else { return } - promise = next - pendingPromises += 1 - promises.append(next) - } - - func testDone() { - barrier.sync { - if pendingPromises == 0 { - #if !swift(>=3.3) || (swift(>=4) && !swift(>=4.1)) - root.resolver.fulfill(promises.flatMap{ $0.value }) - #else - root.resolver.fulfill(promises.compactMap{ $0.value }) - #endif - } - } - } - - guard promise != nil else { - return testDone() - } - - promise.pipe { resolution in - barrier.sync(flags: .barrier) { - pendingPromises -= 1 - } - - switch resolution { - case .fulfilled: - dequeue() - testDone() - case .rejected(let error): - root.resolver.reject(error) - } - } - - dequeue() - } - - dequeue() - - return root.promise -} - -/** - Waits on all provided promises. - - `when(fulfilled:)` rejects as soon as one of the provided promises rejects. `when(resolved:)` waits on all provided promises whatever their result, and then provides an array of `Result` so you can individually inspect the results. As a consequence this function returns a `Guarantee`, ie. errors are lifted from the individual promises into the results array of the returned `Guarantee`. - - when(resolved: promise1, promise2, promise3).then { results in - for result in results where case .fulfilled(let value) { - //… - } - }.catch { error in - // invalid! Never rejects - } - - - Returns: A new promise that resolves once all the provided promises resolve. The array is ordered the same as the input, ie. the result order is *not* resolution order. - - Note: we do not provide tuple variants for `when(resolved:)` but will accept a pull-request - - Remark: Doesn't take Thenable due to protocol `associatedtype` paradox -*/ -public func when(resolved promises: Promise...) -> Guarantee<[Result]> { - return when(resolved: promises) -} - -/// - See: `when(resolved: Promise...)` -public func when(resolved promises: [Promise]) -> Guarantee<[Result]> { - guard !promises.isEmpty else { - return .value([]) - } - - var countdown = promises.count - let barrier = DispatchQueue(label: "org.promisekit.barrier.join", attributes: .concurrent) - - let rg = Guarantee<[Result]>(.pending) - for promise in promises { - promise.pipe { result in - barrier.sync(flags: .barrier) { - countdown -= 1 - } - barrier.sync { - if countdown == 0 { - rg.box.seal(promises.map{ $0.result! }) - } - } - } - } - return rg -} - -/** -Generate promises at a limited rate and wait for all to resolve. - -For example: - - func downloadFile(url: URL) -> Promise { - // ... - } - - let urls: [URL] = /*…*/ - let urlGenerator = urls.makeIterator() - - let generator = AnyIterator> { - guard url = urlGenerator.next() else { - return nil - } - return downloadFile(url) - } - - when(resolved: generator, concurrently: 3).done { results in - // ... - } - -No more than three downloads will occur simultaneously. Downloads will continue if one of them fails - -- Note: The generator is called *serially* on a *background* queue. -- Warning: Refer to the warnings on `when(resolved:)` -- Parameter promiseGenerator: Generator of promises. -- Returns: A new promise that resolves once all the provided promises resolve. The array is ordered the same as the input, ie. the result order is *not* resolution order. -- SeeAlso: `when(resolved:)` -*/ -#if swift(>=5.3) -public func when(resolved promiseIterator: It, concurrently: Int) - -> Guarantee<[Result]> where It.Element: Thenable { - guard concurrently > 0 else { - return Guarantee.value([Result.rejected(PMKError.badInput)]) - } - - var generator = promiseIterator - let root = Guarantee<[Result]>.pending() - var pendingPromises = 0 - var promises: [It.Element] = [] - - let barrier = DispatchQueue(label: "org.promisekit.barrier.when", attributes: [.concurrent]) - - func dequeue() { - guard root.guarantee.isPending else { - return - } // don’t continue dequeueing if root has been rejected - - var shouldDequeue = false - barrier.sync { - shouldDequeue = pendingPromises < concurrently - } - guard shouldDequeue else { - return - } - - var promise: It.Element! - - barrier.sync(flags: .barrier) { - guard let next = generator.next() else { - return - } - - promise = next - - pendingPromises += 1 - promises.append(next) - } - - func testDone() { - barrier.sync { - if pendingPromises == 0 { - #if !swift(>=3.3) || (swift(>=4) && !swift(>=4.1)) - root.resolve(promises.flatMap { $0.result }) - #else - root.resolve(promises.compactMap { $0.result }) - #endif - } - } - } - - guard promise != nil else { - return testDone() - } - - promise.pipe { _ in - barrier.sync(flags: .barrier) { - pendingPromises -= 1 - } - - dequeue() - testDone() - } - - dequeue() - } - - dequeue() - - return root.guarantee -} -#endif - -/// Waits on all provided Guarantees. -public func when(_ guarantees: Guarantee...) -> Guarantee { - return when(guarantees: guarantees) -} - -// Waits on all provided Guarantees. -public func when(guarantees: [Guarantee]) -> Guarantee { - return when(fulfilled: guarantees).recover{ _ in }.asVoid() -} diff --git a/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-Info.plist b/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-Info.plist deleted file mode 100644 index 2243fe6..0000000 --- a/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-acknowledgements.markdown b/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-acknowledgements.markdown deleted file mode 100644 index a19c6aa..0000000 --- a/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-acknowledgements.markdown +++ /dev/null @@ -1,27 +0,0 @@ -# Acknowledgements -This application makes use of the following third party libraries: - -## PromiseKit - -Copyright 2016-present, Max Howell; mxcl@me.com - -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: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -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. - -Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-acknowledgements.plist b/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-acknowledgements.plist deleted file mode 100644 index 95b8fc2..0000000 --- a/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-acknowledgements.plist +++ /dev/null @@ -1,59 +0,0 @@ - - - - - PreferenceSpecifiers - - - FooterText - This application makes use of the following third party libraries: - Title - Acknowledgements - Type - PSGroupSpecifier - - - FooterText - Copyright 2016-present, Max Howell; mxcl@me.com - -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: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -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. - - License - MIT - Title - PromiseKit - Type - PSGroupSpecifier - - - FooterText - Generated by CocoaPods - https://cocoapods.org - Title - - Type - PSGroupSpecifier - - - StringsTable - Acknowledgements - Title - Acknowledgements - - diff --git a/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-dummy.m b/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-dummy.m deleted file mode 100644 index e26df6e..0000000 --- a/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_JKDesFireReader : NSObject -@end -@implementation PodsDummy_Pods_JKDesFireReader -@end diff --git a/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-umbrella.h b/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-umbrella.h deleted file mode 100644 index a7c82f3..0000000 --- a/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double Pods_JKDesFireReaderVersionNumber; -FOUNDATION_EXPORT const unsigned char Pods_JKDesFireReaderVersionString[]; - diff --git a/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader.debug.xcconfig b/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader.debug.xcconfig deleted file mode 100644 index a942b47..0000000 --- a/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader.debug.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "PromiseKit" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader.modulemap b/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader.modulemap deleted file mode 100644 index f163efb..0000000 --- a/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_JKDesFireReader { - umbrella header "Pods-JKDesFireReader-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader.release.xcconfig b/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader.release.xcconfig deleted file mode 100644 index a942b47..0000000 --- a/Pods/Target Support Files/Pods-JKDesFireReader/Pods-JKDesFireReader.release.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "PromiseKit" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/PromiseKit/PromiseKit-Info.plist b/Pods/Target Support Files/PromiseKit/PromiseKit-Info.plist deleted file mode 100644 index 5ba7961..0000000 --- a/Pods/Target Support Files/PromiseKit/PromiseKit-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 6.15.3 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/PromiseKit/PromiseKit-dummy.m b/Pods/Target Support Files/PromiseKit/PromiseKit-dummy.m deleted file mode 100644 index ce92451..0000000 --- a/Pods/Target Support Files/PromiseKit/PromiseKit-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_PromiseKit : NSObject -@end -@implementation PodsDummy_PromiseKit -@end diff --git a/Pods/Target Support Files/PromiseKit/PromiseKit-prefix.pch b/Pods/Target Support Files/PromiseKit/PromiseKit-prefix.pch deleted file mode 100644 index beb2a24..0000000 --- a/Pods/Target Support Files/PromiseKit/PromiseKit-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h b/Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h deleted file mode 100644 index 4a0b02d..0000000 --- a/Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "fwd.h" -#import "AnyPromise.h" -#import "PromiseKit.h" -#import "NSURLSession+AnyPromise.h" -#import "NSTask+AnyPromise.h" -#import "NSNotificationCenter+AnyPromise.h" -#import "PMKFoundation.h" -#import "PMKUIKit.h" -#import "UIView+AnyPromise.h" -#import "UIViewController+AnyPromise.h" - -FOUNDATION_EXPORT double PromiseKitVersionNumber; -FOUNDATION_EXPORT const unsigned char PromiseKitVersionString[]; - diff --git a/Pods/Target Support Files/PromiseKit/PromiseKit.debug.xcconfig b/Pods/Target Support Files/PromiseKit/PromiseKit.debug.xcconfig deleted file mode 100644 index 3dfb3d9..0000000 --- a/Pods/Target Support Files/PromiseKit/PromiseKit.debug.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -DPMKCocoaPods -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/PromiseKit -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/PromiseKit/PromiseKit.modulemap b/Pods/Target Support Files/PromiseKit/PromiseKit.modulemap deleted file mode 100644 index 2b26033..0000000 --- a/Pods/Target Support Files/PromiseKit/PromiseKit.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module PromiseKit { - umbrella header "PromiseKit-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/PromiseKit/PromiseKit.release.xcconfig b/Pods/Target Support Files/PromiseKit/PromiseKit.release.xcconfig deleted file mode 100644 index 3dfb3d9..0000000 --- a/Pods/Target Support Files/PromiseKit/PromiseKit.release.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -DPMKCocoaPods -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/PromiseKit -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig b/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig deleted file mode 100644 index 6042132..0000000 --- a/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig +++ /dev/null @@ -1,11 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -DPMKCocoaPods -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/PromiseKit -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES