diff --git a/Capture/Info.plist b/Capture/Info.plist index 064fd17..74ccf6d 100755 --- a/Capture/Info.plist +++ b/Capture/Info.plist @@ -32,7 +32,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 2.0.0 + 2.0.1 CFBundleVersion 2 LSMinimumSystemVersion diff --git a/Cartfile b/Cartfile index 5c0e682..ff4c9dd 100644 --- a/Cartfile +++ b/Cartfile @@ -1,6 +1,6 @@ github "Clipy/KeyHolder" github "Clipy/Magnet" -github "dehlen/Regift" ~> 1.5.1 +github "dehlen/Regift" ~> 1.5.3 github "mxcl/PromiseKit" github "PromiseKit/Foundation" ~> 3.0 github "dehlen/AboutWindowController" ~> 1.5.7 \ No newline at end of file diff --git a/Cartfile.resolved b/Cartfile.resolved index 7b7e7f3..06c1cf3 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,6 +1,6 @@ github "Clipy/KeyHolder" "v3.0.1" github "Clipy/Magnet" "v2.3.1" -github "PromiseKit/Foundation" "3.3.1" +github "PromiseKit/Foundation" "3.3.2" github "dehlen/AboutWindowController" "1.5.7" -github "dehlen/Regift" "1.5.1" -github "mxcl/PromiseKit" "6.8.3" +github "dehlen/Regift" "1.5.3" +github "mxcl/PromiseKit" "6.8.4" diff --git a/Carthage/Checkouts/Foundation/.travis.yml b/Carthage/Checkouts/Foundation/.travis.yml index 35b5cc9..2492e04 100644 --- a/Carthage/Checkouts/Foundation/.travis.yml +++ b/Carthage/Checkouts/Foundation/.travis.yml @@ -48,6 +48,10 @@ jobs: osx_image: xcode10 env: SWIFT=4.2 name: pod lib lint --swift-version=4.2 + - <<: *pod + osx_image: xcode10.2 + env: SWIFT=5.0 + name: pod lib lint --swift-version=5.0 - &linux stage: compile @@ -85,8 +89,8 @@ jobs: env: SWIFT_BUILD_VERSION=4 SWIFT_VERSION=4.2 name: Linux / Swift 4.2 - <<: *linux - env: SWIFT_BUILD_VERSION=5 SWIFT_VERSION=5.0-DEVELOPMENT-SNAPSHOT-2019-01-22-a - name: Linux / Swift 5.0 (2019-01-22) + env: SWIFT_BUILD_VERSION=5 SWIFT_VERSION=5.0 + name: Linux / Swift 5.0 - &swiftpm stage: compile diff --git a/Carthage/Checkouts/Foundation/Cartfile.resolved b/Carthage/Checkouts/Foundation/Cartfile.resolved index f55bd34..6113513 100644 --- a/Carthage/Checkouts/Foundation/Cartfile.resolved +++ b/Carthage/Checkouts/Foundation/Cartfile.resolved @@ -1,2 +1,2 @@ -github "AliSoftware/OHHTTPStubs" "6.1.0" -github "mxcl/PromiseKit" "6.5.0" +github "AliSoftware/OHHTTPStubs" "6.2.0" +github "mxcl/PromiseKit" "6.8.3" diff --git a/Carthage/Checkouts/Foundation/PMKFoundation.xcodeproj/project.pbxproj b/Carthage/Checkouts/Foundation/PMKFoundation.xcodeproj/project.pbxproj index de63cc2..04839a8 100644 --- a/Carthage/Checkouts/Foundation/PMKFoundation.xcodeproj/project.pbxproj +++ b/Carthage/Checkouts/Foundation/PMKFoundation.xcodeproj/project.pbxproj @@ -194,7 +194,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0800; - LastUpgradeCheck = 0930; + LastUpgradeCheck = 1020; ORGANIZATIONNAME = "Max Howell"; TargetAttributes = { 63C7FFA61D5BEE09003BAE60 = { @@ -204,17 +204,18 @@ }; 63C7FFF11D5C020D003BAE60 = { CreatedOnToolsVersion = 8.0; - LastSwiftMigration = 0900; + LastSwiftMigration = 1020; ProvisioningStyle = Automatic; }; }; }; buildConfigurationList = 63C7FFA11D5BEE09003BAE60 /* Build configuration list for PBXProject "PMKFoundation" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = 63C7FF9D1D5BEE09003BAE60; productRefGroup = 63C7FFA81D5BEE09003BAE60 /* Products */; @@ -344,7 +345,7 @@ SUPPORTED_PLATFORMS = "iphonesimulator iphoneos watchsimulator watchos macosx appletvsimulator appletvos"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2,3,4"; TVOS_DEPLOYMENT_TARGET = 9.0; WATCHOS_DEPLOYMENT_TARGET = 2.0; @@ -402,7 +403,7 @@ PRODUCT_BUNDLE_IDENTIFIER = org.promisekit.Foundation; SUPPORTED_PLATFORMS = "iphonesimulator iphoneos watchsimulator watchos macosx appletvsimulator appletvos"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2,3,4"; TVOS_DEPLOYMENT_TARGET = 9.0; VALIDATE_PRODUCT = YES; diff --git a/Carthage/Checkouts/Foundation/PMKFoundation.xcodeproj/xcshareddata/xcschemes/PMKFoundation.xcscheme b/Carthage/Checkouts/Foundation/PMKFoundation.xcodeproj/xcshareddata/xcschemes/PMKFoundation.xcscheme index 660f49f..741434b 100644 --- a/Carthage/Checkouts/Foundation/PMKFoundation.xcodeproj/xcshareddata/xcschemes/PMKFoundation.xcscheme +++ b/Carthage/Checkouts/Foundation/PMKFoundation.xcodeproj/xcshareddata/xcschemes/PMKFoundation.xcscheme @@ -1,6 +1,6 @@ 6.0" ``` -The extensions are built into `PromiseKit.framework` thus nothing else is needed. +The extensions are built into `PromiseKit.framework` thus nothing else is +needed. ## Carthage +> Note we can no longer support Swift 3 with Carthage due to Xcode 10.2 dropping +it and our only being able to provide a single `.xcodeproj`. + ```ruby github "PromiseKit/Foundation" ~> 3.0 ``` @@ -35,11 +40,7 @@ import PMKFoundation ## SwiftPM ```swift -let package = Package( - dependencies: [ - .Package(url: "https://github.com/PromiseKit/Foundation.git", majorVersion: 3) - ] -) +package.dependencies.append(.package(url: "https://github.com/PromiseKit/Foundation.git", from: "3.0.0")) ``` diff --git a/Carthage/Checkouts/PromiseKit/.github/.jazzy.yaml b/Carthage/Checkouts/PromiseKit/.github/.jazzy.yaml deleted file mode 100644 index d990792..0000000 --- a/Carthage/Checkouts/PromiseKit/.github/.jazzy.yaml +++ /dev/null @@ -1,8 +0,0 @@ -root_url: - https://promisekit.org/reference/ -readme: - foo.md -exclude: - - Sources/Deprecations.swift - - Sources/AnyPromise.swift - \ No newline at end of file diff --git a/Carthage/Checkouts/PromiseKit/.github/PromiseKit.podspec b/Carthage/Checkouts/PromiseKit/.github/PromiseKit.podspec index ae5b63b..616825f 100644 --- a/Carthage/Checkouts/PromiseKit/.github/PromiseKit.podspec +++ b/Carthage/Checkouts/PromiseKit/.github/PromiseKit.podspec @@ -1,9 +1,7 @@ Pod::Spec.new do |s| s.name = "PromiseKit" - `xcodebuild -project PromiseKit.xcodeproj -showBuildSettings` =~ /CURRENT_PROJECT_VERSION = ((\d\.)+\d)/ - abort("No version detected") if $1.nil? - s.version = $1 + s.version = '0.0.1' s.source = { :git => "https://github.com/mxcl/#{s.name}.git", @@ -13,17 +11,15 @@ Pod::Spec.new do |s| s.license = 'MIT' s.summary = 'Promises for Swift & ObjC.' - s.homepage = 'http://promisekit.org' + s.homepage = 'http://mxcl.dev/PromiseKit/' s.description = 'A thoughtful and complete implementation of promises for iOS, macOS, watchOS and tvOS with first-class support for both Objective-C and Swift.' s.social_media_url = 'https://twitter.com/mxcl' s.authors = { 'Max Howell' => 'mxcl@me.com' } - s.documentation_url = 'http://promisekit.org/docs/' + s.documentation_url = 'http://mxcl.dev/PromiseKit/reference/v6/Classes/Promise.html' s.default_subspecs = 'CorePromise', 'UIKit', 'Foundation' s.requires_arc = true - # CocoaPods documentation (like usual) is unclear about the - # consequences of setting this; we support 3.2 THROUGH 4.2 - # s.swift_version = '4.0' + s.swift_versions = ['3.1', '3.2', '3.3', '3.4', '4.0', '4.1', '4.2', '5.0'] # CocoaPods requires us to specify the root deployment targets # even though for us it is nonsense. Our root spec has no diff --git a/Carthage/Checkouts/PromiseKit/.github/jazzy.yml b/Carthage/Checkouts/PromiseKit/.github/jazzy.yml new file mode 100644 index 0000000..9e8d71f --- /dev/null +++ b/Carthage/Checkouts/PromiseKit/.github/jazzy.yml @@ -0,0 +1,18 @@ +module: PromiseKit +custom_categories: + - name: Core Components + children: + - Promise + - Guarantee + - Thenable + - CatchMixin + - Resolver +xcodebuild_arguments: + - UseModernBuildSystem=NO +output: + ../output + # output directory is relative to config file… ugh +readme: + Documentation/README.md +theme: + fullwidth diff --git a/Carthage/Checkouts/PromiseKit/.github/ranger.yml b/Carthage/Checkouts/PromiseKit/.github/ranger.yml index 380c58e..c9169dc 100644 --- a/Carthage/Checkouts/PromiseKit/.github/ranger.yml +++ b/Carthage/Checkouts/PromiseKit/.github/ranger.yml @@ -1,3 +1,2 @@ merges: - action: delete_branch - - action: tag diff --git a/Carthage/Checkouts/PromiseKit/.travis.yml b/Carthage/Checkouts/PromiseKit/.travis.yml index 7e98f1c..c6864cc 100644 --- a/Carthage/Checkouts/PromiseKit/.travis.yml +++ b/Carthage/Checkouts/PromiseKit/.travis.yml @@ -38,7 +38,7 @@ jobs: name: Carthage / Xcode 9.4 - <<: *carthage osx_image: xcode10.1 - name: Carthage / Xcode 10.0 + name: Carthage / Xcode 10.1 - &pod stage: lint @@ -49,7 +49,7 @@ jobs: cache: cocoapods language: objective-c before_install: mv .github/PromiseKit.podspec . - install: gem install cocoapods --prerelease --version 1.6.0.rc.2 + install: gem install cocoapods --pre -v 1.7.0.beta.2 script: pod lib lint --subspec=PromiseKit/CorePromise --fail-fast --swift-version=$SWIFT - <<: *pod osx_image: xcode9.2 @@ -75,6 +75,10 @@ jobs: osx_image: xcode10.1 env: SWIFT=4.2 name: pod lib lint --swift-version=4.2 + - <<: *pod + osx_image: xcode10.2 + env: SWIFT=4.2 + name: pod lib lint --swift-version=5.0 - &linux stage: compile @@ -102,13 +106,13 @@ jobs: env: SWIFT_BUILD_VERSION=4 SWIFT_VERSION=4.1.2 name: Linux / Swift 4.1 - <<: *linux - env: SWIFT_BUILD_VERSION=4 SWIFT_VERSION=4.2.1 + env: SWIFT_BUILD_VERSION=4 SWIFT_VERSION=4.2.2 name: Linux / Swift 4.2 stage: test script: swift test -Xswiftc -swift-version -Xswiftc 4 - <<: *linux - env: SWIFT_BUILD_VERSION=5 SWIFT_VERSION=5.0-DEVELOPMENT-SNAPSHOT-2019-01-22-a - name: Linux / Swift 5.0 (2019-01-22) + env: SWIFT_BUILD_VERSION=5 SWIFT_VERSION=5.0 + name: Linux / Swift 5.0 stage: test script: swift test -Xswiftc -swift-version -Xswiftc 5 @@ -180,42 +184,41 @@ jobs: name: SwiftPM / macOS / Xcode 10.1 / Swift 4.2 - stage: deploy + install: gem install cocoapods --pre -v 1.7.0.beta.2 + before_script: | + mv .github/PromiseKit.podspec . + sed -i '' "s/s.version = '0.0.1'/s.version = '$TRAVIS_TAG'/g" PromiseKit.podspec script: | set -exo pipefail - gem install cocoapods --prerelease --version 1.6.0.rc.2 - mv .github/PromiseKit.podspec . - pod trunk push --verbose --allow-warnings --swift-version=4.2 | ruby -e 'ARGF.each{ print "." }' + pod trunk push --verbose --allow-warnings | tee pod.log | ruby -e 'ARGF.each{ print "." }' # ^^ pipe because Travis times us out if there is no output # AND `pod` defaults to hardly any output # BUT `--verbose` generates so much output that Travis kills our script due to *too much* output! # --allow-warnings because Bolts generates warnings and CocoaPods fails you even if your deps emit warnings os: osx osx_image: xcode10.1 - language: objective-c + language: swift + after_failure: cat pod.log | grep error - - stage: deploy - name: Generate Documentation + - name: Generate Documentation os: osx + git.depth: false osx_image: xcode10.1 language: swift install: gem install jazzy script: | set -exo pipefail - jazzy \ - --theme fullwidth \ - --output foo \ - --documentation=Documentation/*.md \ - --readme Documentation/README.md \ - --github_url https://github.com/mxcl/PromiseKit \ - --xcodebuild-arguments UseModernBuildSystem=NO \ - --module PromiseKit \ - --module-version "$TRAVIS_TAG" + jazzy --config .github/jazzy.yml \ + --github_url "https://github.com/$TRAVIS_REPO_SLUG" \ + --module-version "$TRAVIS_TAG" + git remote update + git fetch origin gh-pages:gh-pages --depth 1 git checkout gh-pages - rm -rf reference - mv foo reference - git add reference + rm -rf reference/v6 + mv output reference/v6 + git add reference/v6 git config user.name "Travis" - git config user.email "bot@travis-ci.com" + git config user.email "jazzy@travis-ci.com" git commit -m "Updated docs for v$TRAVIS_TAG" - git remote add secure-origin https://${GITHUB_TOKEN}@github.com/mxcl/PromiseKit.git + git remote add secure-origin https://${GITHUB_TOKEN}@github.com/$TRAVIS_REPO_SLUG.git git push secure-origin gh-pages diff --git a/Carthage/Checkouts/PromiseKit/Documentation/CommonPatterns.md b/Carthage/Checkouts/PromiseKit/Documentation/CommonPatterns.md index a8674ba..0768cf8 100644 --- a/Carthage/Checkouts/PromiseKit/Documentation/CommonPatterns.md +++ b/Carthage/Checkouts/PromiseKit/Documentation/CommonPatterns.md @@ -129,7 +129,7 @@ avoiding throwing an error because you couldn't be bothered to define a good glo `Error` `enum`. -## Abstracting Away Asychronicity +## Abstracting Away Asynchronicity ```swift var fetch = API.fetch() diff --git a/Carthage/Checkouts/PromiseKit/Documentation/FAQ.md b/Carthage/Checkouts/PromiseKit/Documentation/FAQ.md index ae1feb8..0c91162 100644 --- a/Carthage/Checkouts/PromiseKit/Documentation/FAQ.md +++ b/Carthage/Checkouts/PromiseKit/Documentation/FAQ.md @@ -54,11 +54,11 @@ use `weak self` (and check for `self == nil`) to prevent any such side effects. should be protected against are in fact *not* side effects. Side effects include changes to global application state. They *do not* include -changing the display state of a viewController. So, protect against setting UserDefaults or +changing the display state of a view-controller. So, protect against setting `UserDefaults` or modifying the application database, and don't bother protecting against changing the text in a `UILabel`. -[This stackoverflow question](https://stackoverflow.com/questions/39281214/should-i-use-weak-self-in-promisekit-blocks) +[This StackOverflow question](https://stackoverflow.com/questions/39281214/should-i-use-weak-self-in-promisekit-blocks) has some good discussion on this topic. ## Do I need to retain my promises? @@ -211,12 +211,12 @@ to a suitable problem, RxSwift can yield great benefits in robustness and simpli But not all applications are suitable for RxSwift. By contrast, PromiseKit selectively applies the best parts of reactive programming -to the hardest part of pure Swift development, the management of asynchrony. It's a broadly +to the hardest part of pure Swift development, the management of asynchronicity. It's a broadly applicable tool. Most asynchronous code can be clarified, simplified and made more robust just by converting it to use promises. (And the conversion process is easy.) Promises make for code that is clear to most developers. RxSwift, perhaps not. Take a look at this -[signup panel](https://github.com/ReactiveX/RxSwift/tree/master/RxExample/RxExample/Examples/GitHubSignup) +[sign-up panel](https://github.com/ReactiveX/RxSwift/tree/master/RxExample/RxExample/Examples/GitHubSignup) implemented in RxSwift and see what you think. (Note that this is one of RxSwift's own examples.) Even where PromiseKit and RxSwift are broadly similar, there are many differences in implementation: @@ -244,7 +244,7 @@ deallocated. All promises yield a single value, terminate and then automatically You can find some additional discussion in [this ticket](https://github.com/mxcl/PromiseKit/issues/484). -## Why can’t I return from a catch like I can in Javascript? +## Why can’t I return from a catch like I can in JavaScript? Swift demands that functions have one purpose. Thus, we have two error handlers: @@ -377,7 +377,7 @@ By default PromiseKit emits console messages when certain events occur. These e - A promise has been deallocated without being fulfilled - An error which occurred while fulfilling a promise was swallowed using cauterize -You may turn off or redirect this output by setting a thread safe closure in [PMKCOnfiguration](https://github.com/mxcl/PromiseKit/blob/master/Sources/Configuration.swift) **before** processing any promises. For example, to turn off console output: +You may turn off or redirect this output by setting a thread safe closure in [PMKConfiguration](https://github.com/mxcl/PromiseKit/blob/master/Sources/Configuration.swift) **before** processing any promises. For example, to turn off console output: ```swift conf.logHandler = { event in } diff --git a/Carthage/Checkouts/PromiseKit/Documentation/GettingStarted.md b/Carthage/Checkouts/PromiseKit/Documentation/GettingStarted.md index a3cfa2e..8f6af48 100644 --- a/Carthage/Checkouts/PromiseKit/Documentation/GettingStarted.md +++ b/Carthage/Checkouts/PromiseKit/Documentation/GettingStarted.md @@ -532,4 +532,4 @@ different API (sorry about that, but Swift has changed a lot over the years and we had to too). -[API Reference]: https://promisekit.org/reference/ +[API Reference]: https://mxcl.dev/PromiseKit/reference/v6/Classes/Promise.html diff --git a/Carthage/Checkouts/PromiseKit/Documentation/Installation.md b/Carthage/Checkouts/PromiseKit/Documentation/Installation.md index 12ac8f7..4009a2f 100644 --- a/Carthage/Checkouts/PromiseKit/Documentation/Installation.md +++ b/Carthage/Checkouts/PromiseKit/Documentation/Installation.md @@ -63,16 +63,14 @@ PromiseKit contains Swift, so there have been rev-lock issues with Xcode: | PromiseKit | Swift | Xcode | CI Status | Release Notes | | ---------- | ----------------------- | -------- | ------------ | ----------------- | -| 6 | 3.1, 3.2, 3.3, 4.x | 8.3, 9.x, 10.x | ![ci-master] | [2018/02][news-6] | -| 5 | 3.1, 3.2, 3.3, 4.x | 8.3, 9.x, 10.x | *Deprecated* | *n/a* | -| 4† | 3.0, 3.1, 3.2, 3.3, 4.x | 8.x, 9.x, 10.x | ![ci-master] | [2016/09][news-4] | +| 6 | 3.1, 3.2, 3.3, 4.x, 5.x | 8.3, 9.x, 10.x | ![ci-master] | [2018/02][news-6] | +| 5 | 3.1, 3.2, 3.3, 4.x | 8.3, 9.x, 10.1 | *Deprecated* | *n/a* | +| 4 | 3.0, 3.1, 3.2, 3.3, 4.x | 8.x, 9.x, 10.1 | ![ci-master] | [2016/09][news-4] | | 3 | 2.x | 7.x, 8.0 | ![ci-swift2] | [2015/10][news-3] | | 2 | 1.x | 7.x | *Deprecated* | [2015/10][news-3] | -| 1‡ | *N/A* | * | ![ci-legacy] | – | +| 1† | *N/A* | * | ![ci-legacy] | – | -† Probably supports Xcode 10 and Swift 4.2, if not, PR welcome. - -‡ PromiseKit 1 is pure Objective-C and thus can be used with any Xcode, it is +† PromiseKit 1 is pure Objective-C and thus can be used with any Xcode, it is also your only choice if you need to support iOS 7 or below. --- @@ -109,10 +107,10 @@ github "mxcl/PromiseKit" ~> 3.5 [ci-23]: https://travis-ci.org/mxcl/PromiseKit.svg?branch=swift-2.3-minimal-changes [ci-22]: https://travis-ci.org/mxcl/PromiseKit.svg?branch=swift-2.2-minimal-changes [ci-20]: https://travis-ci.org/mxcl/PromiseKit.svg?branch=swift-2.0-minimal-changes -[news-2]: http://promisekit.org/news/2015/05/PromiseKit-2.0-Released/ -[news-3]: https://github.com/mxcl/PromiseKit/blob/master/CHANGELOG.markdown#300-oct-1st-2015 -[news-4]: http://promisekit.org/news/2016/09/PromiseKit-4.0-Released/ -[news-6]: http://promisekit.org/news/2018/02/PromiseKit-6.0-Released/ +[news-2]: http://mxcl.dev/PromiseKit/news/2015/05/PromiseKit-2.0-Released/ +[news-3]: https://github.com/mxcl/PromiseKit/blob/212f31f41864d1e3ec54f5dd529bd8e1e5697024/CHANGELOG.markdown#300-oct-1st-2015 +[news-4]: http://mxcl.dev/PromiseKit/news/2016/09/PromiseKit-4.0-Released/ +[news-6]: http://mxcl.dev/PromiseKit/news/2018/02/PromiseKit-6.0-Released/ [swift-2.3-minimal-changes]: https://github.com/mxcl/PromiseKit/tree/swift-2.3-minimal-changes [swift-2.2-minimal-changes]: https://github.com/mxcl/PromiseKit/tree/swift-2.2-minimal-changes [swift-2.0-minimal-changes]: https://github.com/mxcl/PromiseKit/tree/swift-2.0-minimal-changes @@ -192,7 +190,7 @@ If you still are using Xcode 6 and Swift 1.2 then use PromiseKit 2. ## [2.0](https://github.com/mxcl/PromiseKit/releases/tag/2.0.0) May 14th, 2015 -[PromiseKit 2 announcement post](http://promisekit.org/news/2015/05/PromiseKit-2.0-Released/). +[PromiseKit 2 announcement post](http://mxcl.dev/PromiseKit/news/2015/05/PromiseKit-2.0-Released/). ## [1.5](https://github.com/mxcl/PromiseKit/releases/tag/1.5.0) diff --git a/Carthage/Checkouts/PromiseKit/Documentation/ObjectiveC.md b/Carthage/Checkouts/PromiseKit/Documentation/ObjectiveC.md index 2e5f6e8..5d8c682 100644 --- a/Carthage/Checkouts/PromiseKit/Documentation/ObjectiveC.md +++ b/Carthage/Checkouts/PromiseKit/Documentation/ObjectiveC.md @@ -50,7 +50,7 @@ myPromise.then(^{ }); ``` -One important feature is the syntactic flexability of your handlers: +One important feature is the syntactic flexibility of your handlers: ```objc myPromise.then(^{ @@ -192,7 +192,7 @@ that contains the throw statement. This pattern will consequently result in memory leaks if you're not careful. > *Note:* Only having a strong reference to the closure would result in memory leaks. -> In our case, PromisKit automatically keeps a strong reference to the closure until it's released. +> In our case, PromiseKit automatically keeps a strong reference to the closure until it's released. __Workarounds:__ @@ -210,7 +210,7 @@ myPromise.then(^{ //… }); ``` -2. Enable ARC for exceptions in Objective-C (not recomended)\ +2. Enable ARC for exceptions in Objective-C (not recommended)\ You can add this ```-fobjc-arc-exceptions to your``` to your compiler flags to enable ARC for exceptions. This is not recommended unless you've read the Apple documentation and are comfortable with the caveats. diff --git a/Carthage/Checkouts/PromiseKit/Documentation/README.md b/Carthage/Checkouts/PromiseKit/Documentation/README.md index 7749d40..a03f4aa 100644 --- a/Carthage/Checkouts/PromiseKit/Documentation/README.md +++ b/Carthage/Checkouts/PromiseKit/Documentation/README.md @@ -1,6 +1,6 @@ # Contents -* [README](/README.md) +* [README](../README.md) * Handbook * [Getting Started](GettingStarted.md) * [Promises: Common Patterns](CommonPatterns.md) @@ -11,4 +11,4 @@ * [Troubleshooting](Troubleshooting.md) * [Appendix](Appendix.md) * [Examples](Examples) -* [API Reference](https://promisekit.org/reference/) +* [API Reference](https://mxcl.dev/PromiseKit/reference/v6/Classes/Promise.html) diff --git a/Carthage/Checkouts/PromiseKit/Documentation/Troubleshooting.md b/Carthage/Checkouts/PromiseKit/Documentation/Troubleshooting.md index 444bcac..1e38b26 100644 --- a/Carthage/Checkouts/PromiseKit/Documentation/Troubleshooting.md +++ b/Carthage/Checkouts/PromiseKit/Documentation/Troubleshooting.md @@ -122,7 +122,7 @@ closure entirely and giving you an error message that makes no sense at all. When faced with this kind of enigmatic complaint, a good rule of thumb is to double-check your argument and return types carefully. If everything looks OK, temporarily add explicit type information as shown above, just to rule -out mis-inference as a possible cause. +out misinference as a possible cause. ### Try moving code to a temporary inline function @@ -189,7 +189,7 @@ Yes: we hope they revert this change in Swift 5 too. ## "Ambiguous reference to 'firstly(execute:)'" -Remove the firstly, eg: +Remove the firstly, e.g.: ```swift firstly { diff --git a/Carthage/Checkouts/PromiseKit/PromiseKit.xcodeproj/project.pbxproj b/Carthage/Checkouts/PromiseKit/PromiseKit.xcodeproj/project.pbxproj index 57bc001..c26963e 100644 --- a/Carthage/Checkouts/PromiseKit/PromiseKit.xcodeproj/project.pbxproj +++ b/Carthage/Checkouts/PromiseKit/PromiseKit.xcodeproj/project.pbxproj @@ -930,7 +930,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 6.8.3; + CURRENT_PROJECT_VERSION = 6.8.4; DEBUG_INFORMATION_FORMAT = dwarf; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -991,7 +991,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 6.8.3; + CURRENT_PROJECT_VERSION = 6.8.4; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; diff --git a/Carthage/Checkouts/PromiseKit/README.md b/Carthage/Checkouts/PromiseKit/README.md index be47284..084c7f3 100644 --- a/Carthage/Checkouts/PromiseKit/README.md +++ b/Carthage/Checkouts/PromiseKit/README.md @@ -1,6 +1,6 @@ -![PromiseKit](http://promisekit.org/public/img/logo-tight.png) +![PromiseKit](../gh-pages/public/img/logo-tight.png) -![badge-pod] ![badge-languages] ![badge-pms] ![badge-platforms] [![Build Status](https://travis-ci.org/mxcl/PromiseKit.svg?branch=master)](https://travis-ci.org/mxcl/PromiseKit) +[![badge-pod][]][cocoapods] ![badge-languages][] ![badge-pms][] ![badge-platforms][] [![badge-travis][]][travis] --- @@ -62,7 +62,7 @@ recommend [Carthage](https://github.com/Carthage/Carthage). # Professionally Supported PromiseKit is Now Available -Tidelift gives software development teams a single source for purchasing +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. @@ -71,15 +71,18 @@ tools. # PromiseKit is Thousands of Hours of Work -Hi, I’m Max Howell and I have written a lot of open source software, and -probably you already use some of it (Homebrew anyone?). Please help me so I -can continue to make tools and software you need and love. I appreciate it x. +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 donation/tipping options](http://mxcl.github.io/donate/) +[Other ways to say thanks](http://mxcl.dev/#donate). + +[`brew`]: https://brew.sh # Documentation @@ -92,7 +95,7 @@ can continue to make tools and software you need and love. I appreciate it x. * [Objective-C Guide](Documentation/ObjectiveC.md) * [Troubleshooting](Documentation/Troubleshooting.md) (e.g., solutions to common compile errors) * [Appendix](Documentation/Appendix.md) -* [API Reference](https://promisekit.org/reference/) +* [API Reference](https://mxcl.dev/PromiseKit/reference/v6/Classes/Promise.html) # Extensions @@ -169,10 +172,10 @@ 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 +* 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 bulletpoints above became true, +metal. Alamofire was essential until the three bullet points above became true, but nowadays it isn’t really necessary. # Support @@ -192,5 +195,8 @@ if after that you still have a question, ask at our [Gitter chat channel] or on [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://promisekit.org/news/2018/02/PromiseKit-6.0-Released/ +[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/Carthage/Checkouts/PromiseKit/Sources/AnyPromise.h b/Carthage/Checkouts/PromiseKit/Sources/AnyPromise.h index cd625d9..fd1ad3a 100644 --- a/Carthage/Checkouts/PromiseKit/Sources/AnyPromise.h +++ b/Carthage/Checkouts/PromiseKit/Sources/AnyPromise.h @@ -28,8 +28,8 @@ typedef void (^PMKResolver)(id __nullable) NS_REFINED_FOR_SWIFT; - 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: http://promisekit.org/sealing-your-own-promises/ - - SeeAlso: http://promisekit.org/wrapping-delegation/ + - 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; @@ -232,7 +232,7 @@ typedef void (^PMKBooleanAdapter)(BOOL, NSError * __nullable) NS_REFINED_FOR_SWI @warning *Important* If both parameters are nil, the promise fulfills, if both are non-nil the promise rejects. This is per the convention. - @see http://promisekit.org/sealing-your-own-promises/ + @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; diff --git a/Carthage/Checkouts/PromiseKit/Sources/Catchable.swift b/Carthage/Checkouts/PromiseKit/Sources/Catchable.swift index 1b640ff..596abdc 100644 --- a/Carthage/Checkouts/PromiseKit/Sources/Catchable.swift +++ b/Carthage/Checkouts/PromiseKit/Sources/Catchable.swift @@ -18,7 +18,7 @@ public extension CatchMixin { - 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](http://promisekit.org/docs/) + - 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 { @@ -70,7 +70,7 @@ public extension CatchMixin { - Parameter on: The queue to which the provided closure dispatches. - Parameter body: The handler to execute if this promise is rejected. - - SeeAlso: [Cancellation](http://promisekit.org/docs/) + - 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) @@ -103,7 +103,7 @@ public extension CatchMixin { - 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](http://promisekit.org/docs/) + - 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 { @@ -203,7 +203,7 @@ public extension CatchMixin where T == Void { - Parameter on: The queue to which the provided closure dispatches. - Parameter body: The handler to execute if this promise is rejected. - - SeeAlso: [Cancellation](http://promisekit.org/docs/) + - 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 { @@ -229,7 +229,7 @@ public extension CatchMixin where T == Void { - Parameter on: The queue to which the provided closure dispatches. - Parameter body: The handler to execute if this promise is rejected. - - SeeAlso: [Cancellation](http://promisekit.org/docs/) + - 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) diff --git a/Carthage/Checkouts/PromiseKit/Sources/LogEvent.swift b/Carthage/Checkouts/PromiseKit/Sources/LogEvent.swift index 075b1b5..99683bd 100644 --- a/Carthage/Checkouts/PromiseKit/Sources/LogEvent.swift +++ b/Carthage/Checkouts/PromiseKit/Sources/LogEvent.swift @@ -5,7 +5,7 @@ /// A promise or guarantee has blocked the main thread case waitOnMainThread - /// A promise has been deallocated without being fulfilled + /// A promise has been deallocated without being resolved case pendingPromiseDeallocated /// An error which occurred while fulfilling a promise was swallowed @@ -19,12 +19,12 @@ public enum LogEvent { /// A promise or guarantee has blocked the main thread case waitOnMainThread - /// A promise has been deallocated without being fulfilled + /// A promise has been deallocated without being resolved case pendingPromiseDeallocated - /// A guarantee has been deallocated without being fulfilled + /// A guarantee has been deallocated without being resolved case pendingGuaranteeDeallocated - /// An error which occurred while fulfilling a promise was swallowed + /// An error which occurred while resolving a promise was swallowed case cauterized(Error) } diff --git a/Carthage/Checkouts/PromiseKit/Sources/hang.swift b/Carthage/Checkouts/PromiseKit/Sources/hang.swift index f974c2f..e944abb 100644 --- a/Carthage/Checkouts/PromiseKit/Sources/hang.swift +++ b/Carthage/Checkouts/PromiseKit/Sources/hang.swift @@ -14,9 +14,13 @@ import CoreFoundation */ public func hang(_ promise: Promise) throws -> T { #if os(Linux) || os(Android) +#if swift(>=5) + 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. diff --git a/Carthage/Checkouts/Regift/Regift/Regift.swift b/Carthage/Checkouts/Regift/Regift/Regift.swift index 9421f89..27edeaf 100644 --- a/Carthage/Checkouts/Regift/Regift/Regift.swift +++ b/Carthage/Checkouts/Regift/Regift/Regift.swift @@ -322,7 +322,6 @@ public struct Regift { // Create a dispatch group to force synchronous behavior on an asynchronous method. let gifGroup = Group() - var dispatchError: Bool = false gifGroup.enter() var handledTimes: Double = 0 @@ -330,8 +329,9 @@ public struct Regift { handledTimes += 1 guard let imageRef = image , error == nil else { print("An error occurred: \(String(describing: error)), image is \(String(describing: image))") - dispatchError = true - gifGroup.leave() + if requestedTime == times.last?.timeValue { + gifGroup.leave() + } return } @@ -344,11 +344,6 @@ public struct Regift { // Wait for the asynchronous generator to finish. gifGroup.wait() - - // If there was an error in the generator, throw the error. - if dispatchError { - throw RegiftError.AddFrameToDestination - } CGImageDestinationSetProperties(destination, fileProperties as CFDictionary)