From 7121b9e188537d0d4340d2f82dd91ce190ff9675 Mon Sep 17 00:00:00 2001 From: Johannes Kreutz Date: Wed, 5 Feb 2020 00:17:35 +0100 Subject: [PATCH] Update dependencies --- .../Headers/JKDesFireReader-Swift.h | 2 +- .../JKDesFireReader.framework/Info.plist | Bin 773 -> 773 bytes .../JKDesFireReader.framework/JKDesFireReader | Bin 667728 -> 667728 bytes .../arm64-apple-ios.swiftdoc | Bin 380 -> 384 bytes .../arm64-apple-ios.swiftmodule | Bin 82164 -> 82168 bytes .../arm64.swiftdoc | Bin 380 -> 384 bytes .../arm64.swiftmodule | Bin 82164 -> 82168 bytes .../_CodeSignature/CodeResources | 22 +-- Podfile | 4 +- Podfile.lock | 34 ++--- Pods/Charts/LICENSE | 2 +- Pods/Charts/README.md | 8 +- .../Source/Charts/Animation/Animator.swift | 1 + .../Charts/Charts/BarLineChartViewBase.swift | 8 ++ .../Source/Charts/Charts/ChartViewBase.swift | 8 ++ .../Source/Charts/Charts/PieChartView.swift | 8 ++ .../Charts/Charts/PieRadarChartViewBase.swift | 6 + .../Charts/Components/Description.swift | 8 ++ .../Source/Charts/Components/MarkerView.swift | 5 + .../Source/Charts/Components/YAxis.swift | 8 ++ .../Standard/ChartDataSet.swift | 6 +- .../Standard/RadarChartDataEntry.swift | 2 +- .../Charts/Filters/DataApproximator+N.swift | 1 + .../Charts/Jobs/AnimatedViewPortJob.swift | 1 + .../Charts/Renderers/BarChartRenderer.swift | 17 ++- .../BarLineScatterCandleBubbleRenderer.swift | 10 +- .../Renderers/CandleStickChartRenderer.swift | 2 +- .../Renderers/ChartDataRendererBase.swift | 8 ++ .../HorizontalBarChartRenderer.swift | 10 +- .../Charts/Renderers/LegendRenderer.swift | 12 +- .../Charts/Renderers/LineChartRenderer.swift | 40 +++--- .../Charts/Renderers/PieChartRenderer.swift | 25 ++-- .../Charts/Renderers/XAxisRenderer.swift | 8 ++ .../Charts/Renderers/YAxisRenderer.swift | 8 ++ .../Renderers/YAxisRendererRadarChart.swift | 10 +- .../Source/Charts/Utils/ChartUtils.swift | 8 ++ .../Charts/Utils/Platform+Accessibility.swift | 7 + .../Charts/Source/Charts/Utils/Platform.swift | 4 +- .../Source/Charts/Utils/ViewPortHandler.swift | 57 ++++++++ Pods/Manifest.lock | 34 ++--- Pods/Pods.xcodeproj/project.pbxproj | 70 +++++----- .../Foundation/Sources/NSTask+AnyPromise.h | 2 +- .../Foundation/Sources/NSTask+AnyPromise.m | 2 +- .../Sources/NSURLSession+Promise.swift | 5 + Pods/PromiseKit/README.md | 4 + Pods/PromiseKit/Sources/AnyPromise.h | 2 +- Pods/PromiseKit/Sources/Configuration.swift | 2 +- Pods/PromiseKit/Sources/Guarantee.swift | 71 +++++++++- Pods/PromiseKit/Sources/Promise.swift | 7 +- Pods/PromiseKit/Sources/Thenable.swift | 127 ++++++++++++++++-- .../Charts/Charts-Info.plist | 2 +- .../Charts/Charts.xcconfig | 1 + ...ds-MensaGuthaben-acknowledgements.markdown | 2 +- .../Pods-MensaGuthaben-acknowledgements.plist | 2 +- .../Pods-MensaGuthaben.debug.xcconfig | 1 + .../Pods-MensaGuthaben.release.xcconfig | 1 + .../PromiseKit/PromiseKit-Info.plist | 2 +- .../PromiseKit/PromiseKit.xcconfig | 1 + 58 files changed, 545 insertions(+), 153 deletions(-) diff --git a/MensaGuthaben/Frameworks/JKDesFireReader.framework/Headers/JKDesFireReader-Swift.h b/MensaGuthaben/Frameworks/JKDesFireReader.framework/Headers/JKDesFireReader-Swift.h index 666225b..c06861d 100644 --- a/MensaGuthaben/Frameworks/JKDesFireReader.framework/Headers/JKDesFireReader-Swift.h +++ b/MensaGuthaben/Frameworks/JKDesFireReader.framework/Headers/JKDesFireReader-Swift.h @@ -1,4 +1,4 @@ -// Generated by Apple Swift version 5.1.2 (swiftlang-1100.0.278 clang-1100.0.33.9) +// Generated by Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15) #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wgcc-compat" diff --git a/MensaGuthaben/Frameworks/JKDesFireReader.framework/Info.plist b/MensaGuthaben/Frameworks/JKDesFireReader.framework/Info.plist index 1570dc9856c7e2e2cd994eef066290e58dd5727b..fc012ca7fb02242295690da89a64e161c8672e91 100644 GIT binary patch delta 35 qcmZo=Yh~MTj*;2L+-&ki#&AZ1$(l@FoW=%WhKA0j1}2khm^uNthY8sL delta 35 qcmZo=Yh~MTj*;2P!ea78#&AZ%$(l@FoJIy=hK5e21_qOBm^uNthY8gH diff --git a/MensaGuthaben/Frameworks/JKDesFireReader.framework/JKDesFireReader b/MensaGuthaben/Frameworks/JKDesFireReader.framework/JKDesFireReader index 54e43443b65d3376a7a73564a3a9086909e33c94..a5508bac9b4f92d6fac36dcabdd1df259fc656d5 100755 GIT binary patch delta 7271 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 KY%#@N<^De-^4J~# delta 7304 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 delta 6887 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 delta 6887 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 c-`!qMMeQlnqd4`p55`i177u?nmU$@u2R* Headers/JKDesFireReader-Swift.h - 3zUaCMovNdIEMn12szc5aHMy7IA= + 48QtpBcGuacpqJHdd6GNHo/3UA8= Headers/JKDesFireReader.h @@ -14,23 +14,23 @@ Info.plist - /Ai5OrwpqE6LFzUE0juqHYqokaE= + /YijlHyvWSKDn64C9z4pMRB5f9Q= Modules/JKDesFireReader.swiftmodule/arm64-apple-ios.swiftdoc - v4TZdLXvOOJwUYdrmkyLC8bHAbE= + JN36/7XZkwwZ+Ac61+ZCPba5gY4= Modules/JKDesFireReader.swiftmodule/arm64-apple-ios.swiftmodule - K5AEg3zh1+2IDlHjfW3hvjOAgIk= + eAXZ3Q/X6FywhkaMIpAzroyUvFs= Modules/JKDesFireReader.swiftmodule/arm64.swiftdoc - v4TZdLXvOOJwUYdrmkyLC8bHAbE= + JN36/7XZkwwZ+Ac61+ZCPba5gY4= Modules/JKDesFireReader.swiftmodule/arm64.swiftmodule - K5AEg3zh1+2IDlHjfW3hvjOAgIk= + eAXZ3Q/X6FywhkaMIpAzroyUvFs= Modules/module.modulemap @@ -43,7 +43,7 @@ hash2 - EyaKnOteIGJFbpR7d4qD2V/zVhqNyLuMa4PziThzy8Q= + bX3U9wIdzaSJu/kky3glO/Tk0FP4Ec5u0S5G//pfXU0= Headers/JKDesFireReader.h @@ -57,28 +57,28 @@ hash2 - IGUZ5WoPlP8FcW3dpW3G7mIMgNbFOfrZFfJWOZ+GEq0= + kOGbj++2xq2O98cgRp5NBiZKLWY0CyeXjEYz7wJTHzw= Modules/JKDesFireReader.swiftmodule/arm64-apple-ios.swiftmodule hash2 - SQnYMnPsPVPV9GVOCOgBt6unBvde0sLzo6CvcY9wRIM= + WsjIWiltdDu3OR7r+zTAu/AJvvVNo3Lo+K7dxZrEAgM= Modules/JKDesFireReader.swiftmodule/arm64.swiftdoc hash2 - IGUZ5WoPlP8FcW3dpW3G7mIMgNbFOfrZFfJWOZ+GEq0= + kOGbj++2xq2O98cgRp5NBiZKLWY0CyeXjEYz7wJTHzw= Modules/JKDesFireReader.swiftmodule/arm64.swiftmodule hash2 - SQnYMnPsPVPV9GVOCOgBt6unBvde0sLzo6CvcY9wRIM= + WsjIWiltdDu3OR7r+zTAu/AJvvVNo3Lo+K7dxZrEAgM= Modules/module.modulemap diff --git a/Podfile b/Podfile index a7e104a..c6a4547 100644 --- a/Podfile +++ b/Podfile @@ -2,6 +2,6 @@ platform :ios, '13.0' use_frameworks! target "MensaGuthaben" do - pod "PromiseKit", "~> 6.10" - pod "Charts", "~> 3.3" + pod "PromiseKit", "~> 6.13" + pod "Charts", "~> 3.4" end diff --git a/Podfile.lock b/Podfile.lock index 5e05b0e..e9e162e 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,30 +1,30 @@ PODS: - - Charts (3.3.0): - - Charts/Core (= 3.3.0) - - Charts/Core (3.3.0) - - PromiseKit (6.10.0): - - PromiseKit/CorePromise (= 6.10.0) - - PromiseKit/Foundation (= 6.10.0) - - PromiseKit/UIKit (= 6.10.0) - - PromiseKit/CorePromise (6.10.0) - - PromiseKit/Foundation (6.10.0): + - Charts (3.4.0): + - Charts/Core (= 3.4.0) + - Charts/Core (3.4.0) + - PromiseKit (6.13.1): + - PromiseKit/CorePromise (= 6.13.1) + - PromiseKit/Foundation (= 6.13.1) + - PromiseKit/UIKit (= 6.13.1) + - PromiseKit/CorePromise (6.13.1) + - PromiseKit/Foundation (6.13.1): - PromiseKit/CorePromise - - PromiseKit/UIKit (6.10.0): + - PromiseKit/UIKit (6.13.1): - PromiseKit/CorePromise DEPENDENCIES: - - Charts (~> 3.3) - - PromiseKit (~> 6.10) + - Charts (~> 3.4) + - PromiseKit (~> 6.13) SPEC REPOS: - https://github.com/cocoapods/specs.git: + trunk: - Charts - PromiseKit SPEC CHECKSUMS: - Charts: e0dd4cd8f257bccf98407b58183ddca8e8d5b578 - PromiseKit: 1fdaeb6c0a94a5114fcb814ff3d772b86886ad4e + Charts: 74c9f256eaf0460c0c416522d1cf8c634ea6b286 + PromiseKit: 28fda91c973cc377875d8c0ea4f973013c05b6db -PODFILE CHECKSUM: eb13ea566fdc45dd82ceb480b091622404a2d234 +PODFILE CHECKSUM: 038e2faced7f293c7be3424abc3ef48e7afb4075 -COCOAPODS: 1.7.5 +COCOAPODS: 1.8.4 diff --git a/Pods/Charts/LICENSE b/Pods/Charts/LICENSE index 17c2ed4..8198c7a 100644 --- a/Pods/Charts/LICENSE +++ b/Pods/Charts/LICENSE @@ -186,7 +186,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2016 Daniel Cohen Gindi & Philipp Jahoda + Copyright 2016-2019 Daniel Cohen Gindi & Philipp Jahoda Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/Pods/Charts/README.md b/Pods/Charts/README.md index 89d92c8..871857c 100644 --- a/Pods/Charts/README.md +++ b/Pods/Charts/README.md @@ -1,4 +1,4 @@ -**Version 3.3.0**, synced to [MPAndroidChart #f6a398b](https://github.com/PhilJay/MPAndroidChart/commit/f6a398b) +**Version 3.4.0**, synced to [MPAndroidChart #f6a398b](https://github.com/PhilJay/MPAndroidChart/commit/f6a398b) ![alt tag](https://raw.github.com/danielgindi/Charts/master/Assets/feature_graphic.png) ![Supported Platforms](https://img.shields.io/cocoapods/p/Charts.svg) [![Releases](https://img.shields.io/github/release/danielgindi/Charts.svg)](https://github.com/danielgindi/Charts/releases) [![Latest pod release](https://img.shields.io/cocoapods/v/Charts.svg)](http://cocoapods.org/pods/charts) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![Build Status](https://travis-ci.org/danielgindi/Charts.svg?branch=master)](https://travis-ci.org/danielgindi/Charts) [![codecov](https://codecov.io/gh/danielgindi/Charts/branch/master/graph/badge.svg)](https://codecov.io/gh/danielgindi/Charts) @@ -8,7 +8,7 @@ ### Another heads up: ChartsRealm is now in a [separate repo](https://github.com/danielgindi/ChartsRealm). Pods is also now `Charts` and `ChartsRealm`, instead of ~`Charts/Core`~ and ~`Charts/Realm`~ ### One more heads up: As Swift evolves, if you are not using the latest Swift compiler, you shouldn't check out the master branch. Instead, you should go to the release page and pick up whatever suits you. -* Xcode 10.2 / Swift 5.0 (master branch) +* Xcode 11 / Swift 5 (master branch) * iOS >= 8.0 (Use as an **Embedded** Framework) * tvOS >= 9.0 * macOS >= 10.11 @@ -79,8 +79,8 @@ For [Realm](https://realm.io/) support, please add `pod 'ChartsRealm'` too. Charts now include Carthage prebuilt binaries. ```carthage -github "danielgindi/Charts" == 3.3.0 -github "danielgindi/Charts" ~> 3.3.0 +github "danielgindi/Charts" == 3.4.0 +github "danielgindi/Charts" ~> 3.4.0 ``` In order to build the binaries for a new release, use `carthage build --no-skip-current && carthage archive Charts`. diff --git a/Pods/Charts/Source/Charts/Animation/Animator.swift b/Pods/Charts/Source/Charts/Animation/Animator.swift index b94b21f..7d0afa1 100644 --- a/Pods/Charts/Source/Charts/Animation/Animator.swift +++ b/Pods/Charts/Source/Charts/Animation/Animator.swift @@ -11,6 +11,7 @@ import Foundation import CoreGraphics +import QuartzCore @objc(ChartAnimatorDelegate) public protocol AnimatorDelegate diff --git a/Pods/Charts/Source/Charts/Charts/BarLineChartViewBase.swift b/Pods/Charts/Source/Charts/Charts/BarLineChartViewBase.swift index 2ae8256..a4f3857 100644 --- a/Pods/Charts/Source/Charts/Charts/BarLineChartViewBase.swift +++ b/Pods/Charts/Source/Charts/Charts/BarLineChartViewBase.swift @@ -12,6 +12,14 @@ import Foundation import CoreGraphics +#if canImport(UIKit) + import UIKit +#endif + +#if canImport(Cocoa) +import Cocoa +#endif + /// Base-class of LineChart, BarChart, ScatterChart and CandleStickChart. open class BarLineChartViewBase: ChartViewBase, BarLineScatterCandleBubbleChartDataProvider, NSUIGestureRecognizerDelegate { diff --git a/Pods/Charts/Source/Charts/Charts/ChartViewBase.swift b/Pods/Charts/Source/Charts/Charts/ChartViewBase.swift index 0b58b26..285e055 100644 --- a/Pods/Charts/Source/Charts/Charts/ChartViewBase.swift +++ b/Pods/Charts/Source/Charts/Charts/ChartViewBase.swift @@ -13,6 +13,14 @@ import Foundation import CoreGraphics +#if canImport(UIKit) + import UIKit +#endif + +#if canImport(Cocoa) +import Cocoa +#endif + @objc public protocol ChartViewDelegate { diff --git a/Pods/Charts/Source/Charts/Charts/PieChartView.swift b/Pods/Charts/Source/Charts/Charts/PieChartView.swift index 1010434..bc6dc41 100644 --- a/Pods/Charts/Source/Charts/Charts/PieChartView.swift +++ b/Pods/Charts/Source/Charts/Charts/PieChartView.swift @@ -12,6 +12,14 @@ import Foundation import CoreGraphics +#if canImport(UIKit) + import UIKit +#endif + +#if canImport(Cocoa) +import Cocoa +#endif + /// View that represents a pie chart. Draws cake like slices. open class PieChartView: PieRadarChartViewBase { diff --git a/Pods/Charts/Source/Charts/Charts/PieRadarChartViewBase.swift b/Pods/Charts/Source/Charts/Charts/PieRadarChartViewBase.swift index bbdc8d8..61ea101 100644 --- a/Pods/Charts/Source/Charts/Charts/PieRadarChartViewBase.swift +++ b/Pods/Charts/Source/Charts/Charts/PieRadarChartViewBase.swift @@ -11,6 +11,12 @@ import Foundation import CoreGraphics +import QuartzCore + +#if canImport(AppKit) +import AppKit +#endif + /// Base class of PieChartView and RadarChartView. open class PieRadarChartViewBase: ChartViewBase diff --git a/Pods/Charts/Source/Charts/Components/Description.swift b/Pods/Charts/Source/Charts/Components/Description.swift index 8499088..ac0246e 100644 --- a/Pods/Charts/Source/Charts/Components/Description.swift +++ b/Pods/Charts/Source/Charts/Components/Description.swift @@ -12,6 +12,14 @@ import Foundation import CoreGraphics +#if canImport(UIKit) + import UIKit +#endif + +#if canImport(Cocoa) +import Cocoa +#endif + @objc(ChartDescription) open class Description: ComponentBase { diff --git a/Pods/Charts/Source/Charts/Components/MarkerView.swift b/Pods/Charts/Source/Charts/Components/MarkerView.swift index e4d682c..bf65e67 100644 --- a/Pods/Charts/Source/Charts/Components/MarkerView.swift +++ b/Pods/Charts/Source/Charts/Components/MarkerView.swift @@ -12,6 +12,10 @@ import Foundation import CoreGraphics +#if canImport(AppKit) +import AppKit +#endif + @objc(ChartMarkerView) open class MarkerView: NSUIView, IMarker { @@ -71,6 +75,7 @@ open class MarkerView: NSUIView, IMarker open class func viewFromXib(in bundle: Bundle = .main) -> MarkerView? { #if !os(OSX) + return bundle.loadNibNamed( String(describing: self), owner: nil, diff --git a/Pods/Charts/Source/Charts/Components/YAxis.swift b/Pods/Charts/Source/Charts/Components/YAxis.swift index 01e41b5..f427810 100644 --- a/Pods/Charts/Source/Charts/Components/YAxis.swift +++ b/Pods/Charts/Source/Charts/Components/YAxis.swift @@ -12,6 +12,14 @@ import Foundation import CoreGraphics +#if canImport(UIKit) + import UIKit +#endif + +#if canImport(Cocoa) +import Cocoa +#endif + /// Class representing the y-axis labels settings and its entries. /// Be aware that not all features the YLabels class provides are suitable for the RadarChart. diff --git a/Pods/Charts/Source/Charts/Data/Implementations/Standard/ChartDataSet.swift b/Pods/Charts/Source/Charts/Data/Implementations/Standard/ChartDataSet.swift index 1a9d235..9922878 100644 --- a/Pods/Charts/Source/Charts/Data/Implementations/Standard/ChartDataSet.swift +++ b/Pods/Charts/Source/Charts/Data/Implementations/Standard/ChartDataSet.swift @@ -31,11 +31,9 @@ open class ChartDataSet: ChartBaseDataSet super.init() } - public override init(label: String?) + public override convenience init(label: String?) { - entries = [] - - super.init(label: label) + self.init(entries: nil, label: label) } @objc public init(entries: [ChartDataEntry]?, label: String?) diff --git a/Pods/Charts/Source/Charts/Data/Implementations/Standard/RadarChartDataEntry.swift b/Pods/Charts/Source/Charts/Data/Implementations/Standard/RadarChartDataEntry.swift index e557ba9..576ad24 100644 --- a/Pods/Charts/Source/Charts/Data/Implementations/Standard/RadarChartDataEntry.swift +++ b/Pods/Charts/Source/Charts/Data/Implementations/Standard/RadarChartDataEntry.swift @@ -40,7 +40,7 @@ open class RadarChartDataEntry: ChartDataEntry @objc open var value: Double { get { return y } - set { y = value } + set { y = newValue } } // MARK: NSCopying diff --git a/Pods/Charts/Source/Charts/Filters/DataApproximator+N.swift b/Pods/Charts/Source/Charts/Filters/DataApproximator+N.swift index 36bbeec..b194955 100644 --- a/Pods/Charts/Source/Charts/Filters/DataApproximator+N.swift +++ b/Pods/Charts/Source/Charts/Filters/DataApproximator+N.swift @@ -9,6 +9,7 @@ // import Foundation +import CoreGraphics extension CGPoint { fileprivate func distanceToLine(from linePoint1: CGPoint, to linePoint2: CGPoint) -> CGFloat { diff --git a/Pods/Charts/Source/Charts/Jobs/AnimatedViewPortJob.swift b/Pods/Charts/Source/Charts/Jobs/AnimatedViewPortJob.swift index 7375456..1bdfedf 100644 --- a/Pods/Charts/Source/Charts/Jobs/AnimatedViewPortJob.swift +++ b/Pods/Charts/Source/Charts/Jobs/AnimatedViewPortJob.swift @@ -11,6 +11,7 @@ import Foundation import CoreGraphics +import QuartzCore open class AnimatedViewPortJob: ViewPortJob { diff --git a/Pods/Charts/Source/Charts/Renderers/BarChartRenderer.swift b/Pods/Charts/Source/Charts/Renderers/BarChartRenderer.swift index 6b19205..c2ff0b1 100644 --- a/Pods/Charts/Source/Charts/Renderers/BarChartRenderer.swift +++ b/Pods/Charts/Source/Charts/Renderers/BarChartRenderer.swift @@ -12,6 +12,14 @@ import Foundation import CoreGraphics +#if canImport(UIKit) + import UIKit +#endif + +#if canImport(Cocoa) +import Cocoa +#endif + open class BarChartRenderer: BarLineScatterCandleBubbleRenderer { /// A nested array of elements ordered logically (i.e not in visual/drawing order) for use with VoiceOver @@ -482,7 +490,7 @@ open class BarChartRenderer: BarLineScatterCandleBubbleRenderer let barData = dataProvider.barData else { return } - var dataSets = barData.dataSets + let dataSets = barData.dataSets let valueOffsetPlus: CGFloat = 4.5 var posOffset: CGFloat @@ -867,9 +875,12 @@ open class BarChartRenderer: BarLineScatterCandleBubbleRenderer } else { stackLabel = nil } - + + //Handles empty array of yValues + let yValue = vals.isEmpty ? 0.0 : vals[idx % vals.count] + elementValueText = dataSet.valueFormatter?.stringForValue( - vals[idx % stackSize], + yValue, entry: e, dataSetIndex: dataSetIndex, viewPortHandler: viewPortHandler) ?? "\(e.y)" diff --git a/Pods/Charts/Source/Charts/Renderers/BarLineScatterCandleBubbleRenderer.swift b/Pods/Charts/Source/Charts/Renderers/BarLineScatterCandleBubbleRenderer.swift index 7c258b1..82e6df9 100644 --- a/Pods/Charts/Source/Charts/Renderers/BarLineScatterCandleBubbleRenderer.swift +++ b/Pods/Charts/Source/Charts/Renderers/BarLineScatterCandleBubbleRenderer.swift @@ -114,6 +114,14 @@ extension BarLineScatterCandleBubbleRenderer.XBounds: Sequence { } public func makeIterator() -> Iterator { - return Iterator(min: self.min, max: self.max) + return Iterator(min: self.min, max: self.min + self.range) + } +} + +extension BarLineScatterCandleBubbleRenderer.XBounds: CustomDebugStringConvertible +{ + public var debugDescription: String + { + return "min:\(self.min), max:\(self.max), range:\(self.range)" } } diff --git a/Pods/Charts/Source/Charts/Renderers/CandleStickChartRenderer.swift b/Pods/Charts/Source/Charts/Renderers/CandleStickChartRenderer.swift index 2e8cda3..2cdaadf 100644 --- a/Pods/Charts/Source/Charts/Renderers/CandleStickChartRenderer.swift +++ b/Pods/Charts/Source/Charts/Renderers/CandleStickChartRenderer.swift @@ -275,7 +275,7 @@ open class CandleStickChartRenderer: LineScatterCandleRadarRenderer // if values are drawn if isDrawingValuesAllowed(dataProvider: dataProvider) { - var dataSets = candleData.dataSets + let dataSets = candleData.dataSets let phaseY = animator.phaseY diff --git a/Pods/Charts/Source/Charts/Renderers/ChartDataRendererBase.swift b/Pods/Charts/Source/Charts/Renderers/ChartDataRendererBase.swift index 68905ff..abbbcb0 100644 --- a/Pods/Charts/Source/Charts/Renderers/ChartDataRendererBase.swift +++ b/Pods/Charts/Source/Charts/Renderers/ChartDataRendererBase.swift @@ -12,6 +12,14 @@ import Foundation import CoreGraphics +#if canImport(UIKit) + import UIKit +#endif + +#if canImport(Cocoa) +import Cocoa +#endif + @objc(ChartDataRendererBase) open class DataRenderer: Renderer { diff --git a/Pods/Charts/Source/Charts/Renderers/HorizontalBarChartRenderer.swift b/Pods/Charts/Source/Charts/Renderers/HorizontalBarChartRenderer.swift index 309de7c..36f4a6c 100644 --- a/Pods/Charts/Source/Charts/Renderers/HorizontalBarChartRenderer.swift +++ b/Pods/Charts/Source/Charts/Renderers/HorizontalBarChartRenderer.swift @@ -12,6 +12,14 @@ import Foundation import CoreGraphics +#if canImport(UIKit) + import UIKit +#endif + +#if canImport(Cocoa) +import Cocoa +#endif + open class HorizontalBarChartRenderer: BarChartRenderer { private class Buffer @@ -319,7 +327,7 @@ open class HorizontalBarChartRenderer: BarChartRenderer let barData = dataProvider.barData else { return } - var dataSets = barData.dataSets + let dataSets = barData.dataSets let textAlign = NSTextAlignment.left diff --git a/Pods/Charts/Source/Charts/Renderers/LegendRenderer.swift b/Pods/Charts/Source/Charts/Renderers/LegendRenderer.swift index f0b01d0..039f119 100755 --- a/Pods/Charts/Source/Charts/Renderers/LegendRenderer.swift +++ b/Pods/Charts/Source/Charts/Renderers/LegendRenderer.swift @@ -39,7 +39,7 @@ open class LegendRenderer: Renderer { guard let dataSet = data.getDataSetByIndex(i) else { continue } - var clrs: [NSUIColor] = dataSet.colors + let clrs: [NSUIColor] = dataSet.colors let entryCount = dataSet.entryCount // if we have a barchart with stacked bars @@ -47,7 +47,7 @@ open class LegendRenderer: Renderer (dataSet as! IBarChartDataSet).isStacked { let bds = dataSet as! IBarChartDataSet - var sLabels = bds.stackLabels + let sLabels = bds.stackLabels let minEntries = min(clrs.count, bds.stackSize) for j in 0.. chartXMax * animator.phaseX { diff --git a/Pods/Charts/Source/Charts/Renderers/PieChartRenderer.swift b/Pods/Charts/Source/Charts/Renderers/PieChartRenderer.swift index c971611..db59cb1 100644 --- a/Pods/Charts/Source/Charts/Renderers/PieChartRenderer.swift +++ b/Pods/Charts/Source/Charts/Renderers/PieChartRenderer.swift @@ -12,6 +12,14 @@ import Foundation import CoreGraphics +#if canImport(UIKit) + import UIKit +#endif + +#if canImport(Cocoa) +import Cocoa +#endif + open class PieChartRenderer: DataRenderer { @objc open weak var chart: PieChartView? @@ -112,7 +120,7 @@ open class PieChartRenderer: DataRenderer let phaseY = animator.phaseY let entryCount = dataSet.entryCount - var drawAngles = chart.drawAngles + let drawAngles = chart.drawAngles let center = chart.centerCircleBox let radius = chart.radius let drawInnerArc = chart.drawHoleEnabled && !chart.drawSlicesUnderHoleEnabled @@ -707,8 +715,8 @@ open class PieChartRenderer: DataRenderer var angle: CGFloat = 0.0 let rotationAngle = chart.rotationAngle - var drawAngles = chart.drawAngles - var absoluteAngles = chart.absoluteAngles + let drawAngles = chart.drawAngles + let absoluteAngles = chart.absoluteAngles let center = chart.centerCircleBox let radius = chart.radius let drawInnerArc = chart.drawHoleEnabled && !chart.drawSlicesUnderHoleEnabled @@ -728,11 +736,6 @@ open class PieChartRenderer: DataRenderer guard let set = data.getDataSetByIndex(indices[i].dataSetIndex) as? IPieChartDataSet else { continue } - if !set.isHighlightEnabled - { - continue - } - let entryCount = set.entryCount var visibleAngleCount = 0 for j in 0 ..< entryCount @@ -758,7 +761,7 @@ open class PieChartRenderer: DataRenderer let sliceAngle = drawAngles[index] var innerRadius = userInnerRadius - let shift = set.selectionShift + let shift = set.isHighlightEnabled ? set.selectionShift : 0.0 let highlightedRadius = radius + shift let accountForSliceSpacing = sliceSpace > 0.0 && sliceAngle <= 180.0 @@ -880,7 +883,9 @@ open class PieChartRenderer: DataRenderer // Prepend selected slices before the already rendered unselected ones. // NOTE: - This relies on drawDataSet() being called before drawHighlighted in PieChartView. - accessibleChartElements.insert(contentsOf: highlightedAccessibleElements, at: 1) + if !accessibleChartElements.isEmpty { + accessibleChartElements.insert(contentsOf: highlightedAccessibleElements, at: 1) + } context.restoreGState() } diff --git a/Pods/Charts/Source/Charts/Renderers/XAxisRenderer.swift b/Pods/Charts/Source/Charts/Renderers/XAxisRenderer.swift index 6ea1ba7..2cb80bc 100644 --- a/Pods/Charts/Source/Charts/Renderers/XAxisRenderer.swift +++ b/Pods/Charts/Source/Charts/Renderers/XAxisRenderer.swift @@ -12,6 +12,14 @@ import Foundation import CoreGraphics +#if canImport(UIKit) + import UIKit +#endif + +#if canImport(Cocoa) +import Cocoa +#endif + @objc(ChartXAxisRenderer) open class XAxisRenderer: AxisRendererBase { diff --git a/Pods/Charts/Source/Charts/Renderers/YAxisRenderer.swift b/Pods/Charts/Source/Charts/Renderers/YAxisRenderer.swift index 4fb3dd2..77791ae 100644 --- a/Pods/Charts/Source/Charts/Renderers/YAxisRenderer.swift +++ b/Pods/Charts/Source/Charts/Renderers/YAxisRenderer.swift @@ -12,6 +12,14 @@ import Foundation import CoreGraphics +#if canImport(UIKit) + import UIKit +#endif + +#if canImport(Cocoa) +import Cocoa +#endif + @objc(ChartYAxisRenderer) open class YAxisRenderer: AxisRendererBase { diff --git a/Pods/Charts/Source/Charts/Renderers/YAxisRendererRadarChart.swift b/Pods/Charts/Source/Charts/Renderers/YAxisRendererRadarChart.swift index c98971e..fe28b6d 100644 --- a/Pods/Charts/Source/Charts/Renderers/YAxisRendererRadarChart.swift +++ b/Pods/Charts/Source/Charts/Renderers/YAxisRendererRadarChart.swift @@ -12,6 +12,14 @@ import Foundation import CoreGraphics +#if canImport(UIKit) + import UIKit +#endif + +#if canImport(Cocoa) +import Cocoa +#endif + open class YAxisRendererRadarChart: YAxisRenderer { private weak var chart: RadarChartView? @@ -209,7 +217,7 @@ open class YAxisRendererRadarChart: YAxisRenderer let data = chart.data else { return } - var limitLines = yAxis.limitLines + let limitLines = yAxis.limitLines if limitLines.count == 0 { diff --git a/Pods/Charts/Source/Charts/Utils/ChartUtils.swift b/Pods/Charts/Source/Charts/Utils/ChartUtils.swift index 25ccfde..2a41bb4 100644 --- a/Pods/Charts/Source/Charts/Utils/ChartUtils.swift +++ b/Pods/Charts/Source/Charts/Utils/ChartUtils.swift @@ -12,6 +12,14 @@ import Foundation import CoreGraphics +#if canImport(UIKit) + import UIKit +#endif + +#if canImport(Cocoa) +import Cocoa +#endif + extension Comparable { func clamped(to range: ClosedRange) -> Self { if self > range.upperBound { diff --git a/Pods/Charts/Source/Charts/Utils/Platform+Accessibility.swift b/Pods/Charts/Source/Charts/Utils/Platform+Accessibility.swift index 35f4ee3..47cd5e5 100644 --- a/Pods/Charts/Source/Charts/Utils/Platform+Accessibility.swift +++ b/Pods/Charts/Source/Charts/Utils/Platform+Accessibility.swift @@ -1,6 +1,9 @@ import Foundation #if os(iOS) || os(tvOS) +#if canImport(UIKit) + import UIKit +#endif internal func accessibilityPostLayoutChangedNotification(withElement element: Any? = nil) { @@ -92,6 +95,10 @@ extension NSUIView #if os(OSX) +#if canImport(AppKit) +import AppKit +#endif + internal func accessibilityPostLayoutChangedNotification(withElement element: Any? = nil) { guard let validElement = element else { return } diff --git a/Pods/Charts/Source/Charts/Utils/Platform.swift b/Pods/Charts/Source/Charts/Utils/Platform.swift index 3c11b32..2eb4efd 100644 --- a/Pods/Charts/Source/Charts/Utils/Platform.swift +++ b/Pods/Charts/Source/Charts/Utils/Platform.swift @@ -4,7 +4,9 @@ import Foundation alike, and for the chart library's usage of the APIs it is often sufficient to typealias one to the other. The NSUI* types are aliased to either their UI* implementation (on iOS) or their NS* implementation (on OS X). */ #if os(iOS) || os(tvOS) -import UIKit +#if canImport(UIKit) + import UIKit +#endif public typealias NSUIFont = UIFont public typealias NSUIColor = UIColor diff --git a/Pods/Charts/Source/Charts/Utils/ViewPortHandler.swift b/Pods/Charts/Source/Charts/Utils/ViewPortHandler.swift index 56e034b..8916d06 100755 --- a/Pods/Charts/Source/Charts/Utils/ViewPortHandler.swift +++ b/Pods/Charts/Source/Charts/Utils/ViewPortHandler.swift @@ -416,6 +416,17 @@ open class ViewPortHandler: NSObject return isInBoundsTop(y) && isInBoundsBottom(y) } + /** + A method to check whether coordinate lies within the viewport. + + - Parameters: + - point: a coordinate. + */ + @objc open func isInBounds(point: CGPoint) -> Bool + { + return isInBounds(x: point.x, y: point.y) + } + @objc open func isInBounds(x: CGFloat, y: CGFloat) -> Bool { return isInBoundsX(x) && isInBoundsY(y) @@ -443,6 +454,52 @@ open class ViewPortHandler: NSObject return (_contentRect.origin.y + _contentRect.size.height) >= normalizedY } + /** + A method to check whether a line between two coordinates intersects with the view port by using a linear function. + + Linear function (calculus): `y = ax + b` + + Note: this method will not check for collision with the right edge of the view port, as we assume lines run from left + to right (e.g. `startPoint < endPoint`). + + - Parameters: + - startPoint: the start coordinate of the line. + - endPoint: the end coordinate of the line. + */ + @objc open func isIntersectingLine(from startPoint: CGPoint, to endPoint: CGPoint) -> Bool + { + // If start- and/or endpoint fall within the viewport, bail out early. + if isInBounds(point: startPoint) || isInBounds(point: endPoint) { return true } + // check if x in bound when it's a vertical line + if startPoint.x == endPoint.x { return isInBoundsX(startPoint.x) } + + // Calculate the slope (`a`) of the line (e.g. `a = (y2 - y1) / (x2 - x1)`). + let a = (endPoint.y - startPoint.y) / (endPoint.x - startPoint.x) + // Calculate the y-correction (`b`) of the line (e.g. `b = y1 - (a * x1)`). + let b = startPoint.y - (a * startPoint.x) + + // Check for colission with the left edge of the view port (e.g. `y = (a * minX) + b`). + // if a is 0, it's a horizontal line; checking b here is still valid, as b is `point.y` all the time + if isInBoundsY((a * contentRect.minX) + b) { return true } + + // Skip unnecessary check for collision with the right edge of the view port + // (e.g. `y = (a * maxX) + b`), as such a line will either begin inside the view port, + // or intersect the left, top or bottom edges of the view port. Leaving this logic here for clarity's sake: + // if isInBoundsY((a * contentRect.maxX) + b) { return true } + + // While slope `a` can theoretically never be `0`, we should protect against division by zero. + guard a != 0 else { return false } + + // Check for collision with the bottom edge of the view port (e.g. `x = (maxY - b) / a`). + if isInBoundsX((contentRect.maxY - b) / a) { return true } + + // Check for collision with the top edge of the view port (e.g. `x = (minY - b) / a`). + if isInBoundsX((contentRect.minY - b) / a) { return true } + + // This line does not intersect the view port. + return false + } + /// The current x-scale factor @objc open var scaleX: CGFloat { diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 5e05b0e..e9e162e 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,30 +1,30 @@ PODS: - - Charts (3.3.0): - - Charts/Core (= 3.3.0) - - Charts/Core (3.3.0) - - PromiseKit (6.10.0): - - PromiseKit/CorePromise (= 6.10.0) - - PromiseKit/Foundation (= 6.10.0) - - PromiseKit/UIKit (= 6.10.0) - - PromiseKit/CorePromise (6.10.0) - - PromiseKit/Foundation (6.10.0): + - Charts (3.4.0): + - Charts/Core (= 3.4.0) + - Charts/Core (3.4.0) + - PromiseKit (6.13.1): + - PromiseKit/CorePromise (= 6.13.1) + - PromiseKit/Foundation (= 6.13.1) + - PromiseKit/UIKit (= 6.13.1) + - PromiseKit/CorePromise (6.13.1) + - PromiseKit/Foundation (6.13.1): - PromiseKit/CorePromise - - PromiseKit/UIKit (6.10.0): + - PromiseKit/UIKit (6.13.1): - PromiseKit/CorePromise DEPENDENCIES: - - Charts (~> 3.3) - - PromiseKit (~> 6.10) + - Charts (~> 3.4) + - PromiseKit (~> 6.13) SPEC REPOS: - https://github.com/cocoapods/specs.git: + trunk: - Charts - PromiseKit SPEC CHECKSUMS: - Charts: e0dd4cd8f257bccf98407b58183ddca8e8d5b578 - PromiseKit: 1fdaeb6c0a94a5114fcb814ff3d772b86886ad4e + Charts: 74c9f256eaf0460c0c416522d1cf8c634ea6b286 + PromiseKit: 28fda91c973cc377875d8c0ea4f973013c05b6db -PODFILE CHECKSUM: eb13ea566fdc45dd82ceb480b091622404a2d234 +PODFILE CHECKSUM: 038e2faced7f293c7be3424abc3ef48e7afb4075 -COCOAPODS: 1.7.5 +COCOAPODS: 1.8.4 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index feacc18..1d310cd 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -219,7 +219,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 002B1E88BA14EBF633CD66EBFBA107E9 /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 002B1E88BA14EBF633CD66EBFBA107E9 /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = PromiseKit.framework; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 013ACEF98D7E92DC8CA15C1634C069EB /* Animator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Animator.swift; path = Source/Charts/Animation/Animator.swift; sourceTree = ""; }; 02046F127AD6F6790B67E2D30A682A94 /* Pods-MensaGuthaben-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-MensaGuthaben-dummy.m"; sourceTree = ""; }; 026DDE861F70277D43E5521D2A70D28B /* IAxisValueFormatter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IAxisValueFormatter.swift; path = Source/Charts/Formatters/IAxisValueFormatter.swift; sourceTree = ""; }; @@ -350,10 +350,10 @@ 9AC0E24350687090927D756616A3ED7F /* after.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = after.swift; path = Sources/after.swift; sourceTree = ""; }; 9C9FD60CB8973855DCE0A33DDA7DCA17 /* CrossShapeRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CrossShapeRenderer.swift; path = Source/Charts/Renderers/Scatter/CrossShapeRenderer.swift; sourceTree = ""; }; 9D7A3B82B92D94DDB1306A3E965D0937 /* when.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = when.m; path = Sources/when.m; sourceTree = ""; }; - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 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; }; 9F0218F3F83790671343DEB58BA67F50 /* RadarChartDataEntry.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RadarChartDataEntry.swift; path = Source/Charts/Data/Implementations/Standard/RadarChartDataEntry.swift; sourceTree = ""; }; A0305B885CF2E4D12567F58EFDC8B9BA /* UIViewController+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.h"; sourceTree = ""; }; - A1C1B977ED8804E8AEEC884E7359EE58 /* Charts.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Charts.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A1C1B977ED8804E8AEEC884E7359EE58 /* Charts.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Charts.framework; path = Charts.framework; sourceTree = BUILT_PRODUCTS_DIR; }; A29FEBB7C5B514BB3AD67DC8694C3FCA /* IValueFormatter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IValueFormatter.swift; path = Source/Charts/Formatters/IValueFormatter.swift; sourceTree = ""; }; A3BEA93EF795F303904F7D306B1E78CB /* DataApproximator+N.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DataApproximator+N.swift"; path = "Source/Charts/Filters/DataApproximator+N.swift"; sourceTree = ""; }; AA3843E35C38F1C5CE0A945BDBF02116 /* BubbleChartDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BubbleChartDataProvider.swift; path = Source/Charts/Interfaces/BubbleChartDataProvider.swift; sourceTree = ""; }; @@ -364,7 +364,7 @@ B358E9979F68C31FB44B1BC2ABFB61E7 /* ChartLimitLine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChartLimitLine.swift; path = Source/Charts/Components/ChartLimitLine.swift; sourceTree = ""; }; B375CA4F7D6CDAF45C2F30570DDD5CB3 /* ILineRadarChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ILineRadarChartDataSet.swift; path = Source/Charts/Data/Interfaces/ILineRadarChartDataSet.swift; sourceTree = ""; }; B3B12A9CCA8A3F84EA20EA41519CB529 /* IBarChartDataSet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IBarChartDataSet.swift; path = Source/Charts/Data/Interfaces/IBarChartDataSet.swift; sourceTree = ""; }; - B3B8F714E1675C3B2820D10D21FF3270 /* Pods_MensaGuthaben.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MensaGuthaben.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3B8F714E1675C3B2820D10D21FF3270 /* Pods_MensaGuthaben.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_MensaGuthaben.framework; path = "Pods-MensaGuthaben.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; B4628AD2202C6A8535E6C2BB42511ACD /* ScatterChartDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ScatterChartDataProvider.swift; path = Source/Charts/Interfaces/ScatterChartDataProvider.swift; sourceTree = ""; }; B51513EED9C111202F1DC0BF41DF00B7 /* afterlife.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = afterlife.swift; path = Extensions/Foundation/Sources/afterlife.swift; sourceTree = ""; }; B87597EE394009929D515B62F7275D28 /* SquareShapeRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SquareShapeRenderer.swift; path = Source/Charts/Renderers/Scatter/SquareShapeRenderer.swift; sourceTree = ""; }; @@ -473,6 +473,7 @@ 53CFF01741EC86A6072BBA48A77B867F /* Core */, 66B4D27E9806858623EF018FDF9D0D08 /* Support Files */, ); + name = Charts; path = Charts; sourceTree = ""; }; @@ -511,6 +512,7 @@ D8A105FE2A6EDDD1CD8ED9D83B643613 /* Support Files */, 8C231D7C51F9A86D556B7BD135D5EE00 /* UIKit */, ); + name = PromiseKit; path = PromiseKit; sourceTree = ""; }; @@ -1213,12 +1215,10 @@ }; name = Release; }; - 5F209D3E40FD1255200A3C096D44D762 /* Debug */ = { + 3A85AECD9396E86D3A52A1149F3506CE /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C94D1295DA2C9A95B5BDF0066496DE78 /* Pods-MensaGuthaben.debug.xcconfig */; + baseConfigurationReference = 492610614202E466775A49BFEF30D195 /* PromiseKit.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1228,33 +1228,35 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-MensaGuthaben/Pods-MensaGuthaben-Info.plist"; + 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 = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-MensaGuthaben/Pods-MensaGuthaben.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + 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.1; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 810751377D09B9E1EC0DF4C59D0080A1 /* Debug */ = { + 5F209D3E40FD1255200A3C096D44D762 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 492610614202E466775A49BFEF30D195 /* PromiseKit.xcconfig */; + baseConfigurationReference = C94D1295DA2C9A95B5BDF0066496DE78 /* Pods-MensaGuthaben.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1264,22 +1266,23 @@ 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"; + INFOPLIST_FILE = "Target Support Files/Pods-MensaGuthaben/Pods-MensaGuthaben-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.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; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-MensaGuthaben/Pods-MensaGuthaben.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; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -1396,7 +1399,7 @@ }; name = Release; }; - E4B377AE77F1821330F7166C808972CB /* Release */ = { + EC7631E590879FBBF9BA4D66D2E01868 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 492610614202E466775A49BFEF30D195 /* PromiseKit.xcconfig */; buildSettings = { @@ -1424,13 +1427,12 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 5.1; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; ED7888FA6713EABBF66D26A8003AD1CA /* Debug */ = { isa = XCBuildConfiguration; @@ -1502,8 +1504,8 @@ 058DF38F5922F24842B97693B0188F2D /* Build configuration list for PBXNativeTarget "PromiseKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 810751377D09B9E1EC0DF4C59D0080A1 /* Debug */, - E4B377AE77F1821330F7166C808972CB /* Release */, + EC7631E590879FBBF9BA4D66D2E01868 /* Debug */, + 3A85AECD9396E86D3A52A1149F3506CE /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.h b/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.h index 29c2c03..6036897 100644 --- a/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.h +++ b/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.h @@ -1,4 +1,4 @@ -#if TARGET_OS_MAC && !TARGET_OS_EMBEDDED && !TARGET_OS_SIMULATOR +#if TARGET_OS_MAC && !TARGET_OS_EMBEDDED && !TARGET_OS_SIMULATOR && !TARGET_OS_UIKITFORMAC #import #import diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m b/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m index beae277..fa291d3 100644 --- a/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m +++ b/Pods/PromiseKit/Extensions/Foundation/Sources/NSTask+AnyPromise.m @@ -4,7 +4,7 @@ #import #import -#if TARGET_OS_MAC && !TARGET_OS_EMBEDDED && !TARGET_OS_SIMULATOR +#if TARGET_OS_MAC && !TARGET_OS_EMBEDDED && !TARGET_OS_SIMULATOR && !TARGET_OS_UIKITFORMAC #import "NSTask+AnyPromise.h" diff --git a/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift b/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift index 13259a0..150654f 100644 --- a/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift +++ b/Pods/PromiseKit/Extensions/Foundation/Sources/NSURLSession+Promise.swift @@ -2,6 +2,11 @@ import Foundation #if !PMKCocoaPods import PromiseKit #endif +#if swift(>=4.1) +#if canImport(FoundationNetworking) +import FoundationNetworking +#endif +#endif /** To import the `NSURLSession` category: diff --git a/Pods/PromiseKit/README.md b/Pods/PromiseKit/README.md index c06b464..d4b675d 100644 --- a/Pods/PromiseKit/README.md +++ b/Pods/PromiseKit/README.md @@ -188,6 +188,10 @@ became true, but nowadays it isn’t really necessary. 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 diff --git a/Pods/PromiseKit/Sources/AnyPromise.h b/Pods/PromiseKit/Sources/AnyPromise.h index cf0d76b..aabd1de 100644 --- a/Pods/PromiseKit/Sources/AnyPromise.h +++ b/Pods/PromiseKit/Sources/AnyPromise.h @@ -71,7 +71,7 @@ typedef void (^PMKResolver)(id __nullable) NS_REFINED_FOR_SWIFT; /** - The provided block is executed when its receiver is resolved. + 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. diff --git a/Pods/PromiseKit/Sources/Configuration.swift b/Pods/PromiseKit/Sources/Configuration.swift index 9d4fc22..4db5232 100644 --- a/Pods/PromiseKit/Sources/Configuration.swift +++ b/Pods/PromiseKit/Sources/Configuration.swift @@ -17,7 +17,7 @@ public struct PMKConfiguration { /// 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) -> () = { event in + public var logHandler: (LogEvent) -> Void = { event in switch event { case .waitOnMainThread: print("PromiseKit: warning: `wait()` called on main thread!") diff --git a/Pods/PromiseKit/Sources/Guarantee.swift b/Pods/PromiseKit/Sources/Guarantee.swift index 0e801b3..ce887cd 100644 --- a/Pods/PromiseKit/Sources/Guarantee.swift +++ b/Pods/PromiseKit/Sources/Guarantee.swift @@ -105,7 +105,19 @@ public extension Guarantee { return rg } - @discardableResult + #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 @@ -157,6 +169,21 @@ public extension Guarantee where T: Sequence { 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]>` @@ -191,6 +218,27 @@ public extension Guarantee where T: Sequence { } } + #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]>` @@ -244,6 +292,23 @@ public extension Guarantee where T: Sequence { } } + #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]>` @@ -280,6 +345,10 @@ public extension Guarantee where T == Void { convenience init() { self.init(box: SealedBox(value: Void())) } + + static var value: Guarantee { + return .value(Void()) + } } #endif diff --git a/Pods/PromiseKit/Sources/Promise.swift b/Pods/PromiseKit/Sources/Promise.swift index da9f6aa..ef57352 100644 --- a/Pods/PromiseKit/Sources/Promise.swift +++ b/Pods/PromiseKit/Sources/Promise.swift @@ -38,7 +38,7 @@ public final class Promise: Thenable, CatchMixin { return .value(bar) } */ - public class func value(_ value: T) -> Promise { + public static func value(_ value: T) -> Promise { return Promise(box: SealedBox(value: .fulfilled(value))) } @@ -136,6 +136,11 @@ extension Promise where T == 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 diff --git a/Pods/PromiseKit/Sources/Thenable.swift b/Pods/PromiseKit/Sources/Thenable.swift index 76e40fe..a44e606 100644 --- a/Pods/PromiseKit/Sources/Thenable.swift +++ b/Pods/PromiseKit/Sources/Thenable.swift @@ -14,12 +14,12 @@ public protocol Thenable: class { public extension Thenable { /** - The provided closure executes when this promise resolves. + 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 fulfills. It must return a promise. + - 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 { @@ -52,13 +52,13 @@ public extension Thenable { } /** - The provided closure is executed when this promise is resolved. + 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 resolved with the value returned from the provided closure. For example: + - 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) @@ -87,8 +87,32 @@ public extension Thenable { return rp } + #if swift(>=4) && !swift(>=5.2) /** - The provided closure is executed when this promise is resolved. + 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. @@ -125,15 +149,47 @@ public extension Thenable { return rp } + #if swift(>=4) && !swift(>=5.2) /** - The provided closure is executed when this promise is resolved. + 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`. + - Returns: A new promise fulfilled as `Void` or rejected if the provided closure throws. firstly { URLSession.shared.dataTask(.promise, with: url) @@ -162,14 +218,14 @@ public extension Thenable { } /** - The provided closure is executed when this promise is resolved. + 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 resolved with the value that the handler is fed. For example: + - 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) @@ -290,6 +346,21 @@ public extension Thenable where T: Sequence { 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]>` @@ -328,6 +399,27 @@ public extension Thenable where T: Sequence { } } + #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]>` @@ -380,6 +472,23 @@ public extension Thenable where T: Sequence { $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 { diff --git a/Pods/Target Support Files/Charts/Charts-Info.plist b/Pods/Target Support Files/Charts/Charts-Info.plist index 3ac477e..ebdce25 100644 --- a/Pods/Target Support Files/Charts/Charts-Info.plist +++ b/Pods/Target Support Files/Charts/Charts-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 3.3.0 + 3.4.0 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/Target Support Files/Charts/Charts.xcconfig b/Pods/Target Support Files/Charts/Charts.xcconfig index cdfcfe4..89f4286 100644 --- a/Pods/Target Support Files/Charts/Charts.xcconfig +++ b/Pods/Target Support Files/Charts/Charts.xcconfig @@ -7,3 +7,4 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/Charts 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/Pods-MensaGuthaben/Pods-MensaGuthaben-acknowledgements.markdown b/Pods/Target Support Files/Pods-MensaGuthaben/Pods-MensaGuthaben-acknowledgements.markdown index bd7a8bc..f256cf1 100644 --- a/Pods/Target Support Files/Pods-MensaGuthaben/Pods-MensaGuthaben-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-MensaGuthaben/Pods-MensaGuthaben-acknowledgements.markdown @@ -191,7 +191,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2016 Daniel Cohen Gindi & Philipp Jahoda + Copyright 2016-2019 Daniel Cohen Gindi & Philipp Jahoda Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/Pods/Target Support Files/Pods-MensaGuthaben/Pods-MensaGuthaben-acknowledgements.plist b/Pods/Target Support Files/Pods-MensaGuthaben/Pods-MensaGuthaben-acknowledgements.plist index 56e98d7..07aec94 100644 --- a/Pods/Target Support Files/Pods-MensaGuthaben/Pods-MensaGuthaben-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-MensaGuthaben/Pods-MensaGuthaben-acknowledgements.plist @@ -202,7 +202,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2016 Daniel Cohen Gindi & Philipp Jahoda + Copyright 2016-2019 Daniel Cohen Gindi & Philipp Jahoda Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/Pods/Target Support Files/Pods-MensaGuthaben/Pods-MensaGuthaben.debug.xcconfig b/Pods/Target Support Files/Pods-MensaGuthaben/Pods-MensaGuthaben.debug.xcconfig index c17e027..c5b49fa 100644 --- a/Pods/Target Support Files/Pods-MensaGuthaben/Pods-MensaGuthaben.debug.xcconfig +++ b/Pods/Target Support Files/Pods-MensaGuthaben/Pods-MensaGuthaben.debug.xcconfig @@ -9,3 +9,4 @@ 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 +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-MensaGuthaben/Pods-MensaGuthaben.release.xcconfig b/Pods/Target Support Files/Pods-MensaGuthaben/Pods-MensaGuthaben.release.xcconfig index c17e027..c5b49fa 100644 --- a/Pods/Target Support Files/Pods-MensaGuthaben/Pods-MensaGuthaben.release.xcconfig +++ b/Pods/Target Support Files/Pods-MensaGuthaben/Pods-MensaGuthaben.release.xcconfig @@ -9,3 +9,4 @@ 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 +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 index e02f936..44004b2 100644 --- a/Pods/Target Support Files/PromiseKit/PromiseKit-Info.plist +++ b/Pods/Target Support Files/PromiseKit/PromiseKit-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 6.10.0 + 6.13.1 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig b/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig index 1e50754..6042132 100644 --- a/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig +++ b/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig @@ -8,3 +8,4 @@ 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