diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..a2f755b2 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,31 @@ +name: CI +on: [push, pull_request] +jobs: + xcode: + runs-on: macos-10.15 + strategy: + matrix: + swift: [5.0, 4.2] + fail-fast: false + name: Action Tests (Swift ${{ matrix.swift }}) + env: + DEVELOPER_DIR: /Applications/Xcode_11.7.app/Contents/Developer + steps: + - uses: actions/checkout@v2 + - name: Cache Carthage + uses: actions/cache@v2 + with: + path: Carthage + key: ${{ runner.os }}-carthage-${{ hashFiles('**/Cartfile.resolved') }} + restore-keys: | + ${{ runner.os }}-carthage- + - name: Bootstrap Carthage + run: carthage bootstrap --no-use-binaries --cache-builds + - name: Tests + run: | + set -o pipefail && xcodebuild test SWIFT_VERSION=${{ matrix.swift }} -workspace Action.xcworkspace -scheme Action -destination "platform=iOS Simulator,name=iPhone 11" | xcpretty -c --test + set -o pipefail && xcodebuild test SWIFT_VERSION=${{ matrix.swift }} -workspace Action.xcworkspace -scheme Action-macOS -destination "arch=x86_64" | xcpretty -c --test + - name: Builds + run: | + set -o pipefail && xcodebuild build SWIFT_VERSION=${{ matrix.swift }} -workspace Action.xcworkspace -scheme Action-watchOS -destination "platform=watchOS Simulator,name=Apple Watch Series 5 - 44mm" | xcpretty -c + set -o pipefail && xcodebuild build SWIFT_VERSION=${{ matrix.swift }} -workspace Action.xcworkspace -scheme Action-tvOS -destination "platform=tvOS Simulator,name=Apple TV 4K (at 1080p)" | xcpretty -c \ No newline at end of file diff --git a/.swift-version b/.swift-version deleted file mode 100644 index bf77d549..00000000 --- a/.swift-version +++ /dev/null @@ -1 +0,0 @@ -4.2 diff --git a/Action.podspec b/Action.podspec index 7e21b46d..624a5cab 100644 --- a/Action.podspec +++ b/Action.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "Action" - s.version = "3.11.0" + s.version = "5.0.0" s.summary = "Abstracts actions to be performed in RxSwift." s.description = <<-DESC Encapsulates an action to be performed, usually by a button press, but also useful to pass actions to execute later @@ -8,10 +8,10 @@ Pod::Spec.new do |s| DESC s.homepage = "https://github.com/RxSwiftCommunity/Action" s.license = { :type => "MIT", :file => "License.md" } - s.author = { "Ash Furrow" => "ash@ashfurrow.com" } + s.author = { "RxSwift Community" => "community@rxswift.org" } s.social_media_url = "http://twitter.com/ashfurrow" - s.ios.deployment_target = '8.0' + s.ios.deployment_target = '9.0' s.osx.deployment_target = '10.10' s.watchos.deployment_target = '3.0' s.tvos.deployment_target = '9.0' @@ -19,9 +19,11 @@ Pod::Spec.new do |s| s.source = { :git => "https://github.com/RxSwiftCommunity/Action.git", :tag => s.version.to_s } s.source_files = "Sources/**/*.{swift}" + s.swift_version = '5.0' + s.frameworks = "Foundation" - s.dependency "RxSwift", "~> 4.0" - s.dependency "RxCocoa", "~> 4.0" + s.dependency "RxSwift", '~> 6.0' + s.dependency "RxCocoa", '~> 6.0' s.watchos.exclude_files = "Control+Action.swift", "Button+Action.swift", "UIBarButtonItem+Action.swift", "UIAlertAction+Action.swift" s.osx.exclude_files = "UIBarButtonItem+Action.swift", "UIAlertAction+Action.swift" diff --git a/Action.xcodeproj/project.pbxproj b/Action.xcodeproj/project.pbxproj index b5d135eb..8332161f 100644 --- a/Action.xcodeproj/project.pbxproj +++ b/Action.xcodeproj/project.pbxproj @@ -23,8 +23,6 @@ 3D730DEA1F674043008534D3 /* Button+Action.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D730DE81F673FD9008534D3 /* Button+Action.swift */; }; 3D730DEB1F674044008534D3 /* Button+Action.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D730DE81F673FD9008534D3 /* Button+Action.swift */; }; 3DD965C01F5DC0E400C180FE /* Action.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FCDDA821EAC3295006EB95B /* Action.framework */; }; - 3DD965C61F5DC2E100C180FE /* ActionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F0569F01DE288EB007E1D0D /* ActionTests.swift */; }; - 3DD965C81F5DC2E700C180FE /* InputSubjectTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA2861C91ED6A41700BB327A /* InputSubjectTests.swift */; }; 3DD965DE1F5DF8C500C180FE /* BindToTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DD965DD1F5DF86B00C180FE /* BindToTests.swift */; }; 3DD965DF1F5DF8C900C180FE /* NSButtonTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DD965DA1F5DF79800C180FE /* NSButtonTests.swift */; }; 5ED520241E1EA199007621B9 /* BindToTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5ED520231E1EA199007621B9 /* BindToTests.swift */; }; @@ -36,7 +34,6 @@ 7F0569EA1DE28587007E1D0D /* Action.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F0569E21DE28587007E1D0D /* Action.swift */; }; 7F0569EC1DE28587007E1D0D /* UIAlertAction+Action.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F0569E51DE28587007E1D0D /* UIAlertAction+Action.swift */; }; 7F0569ED1DE28587007E1D0D /* UIBarButtonItem+Action.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F0569E61DE28587007E1D0D /* UIBarButtonItem+Action.swift */; }; - 7F0569F51DE288EB007E1D0D /* ActionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F0569F01DE288EB007E1D0D /* ActionTests.swift */; }; 7F0569F61DE288EB007E1D0D /* AlertActionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F0569F11DE288EB007E1D0D /* AlertActionTests.swift */; }; 7F0569F71DE288EB007E1D0D /* BarButtonTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F0569F21DE288EB007E1D0D /* BarButtonTests.swift */; }; 7F0569F81DE288EB007E1D0D /* ButtonTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F0569F31DE288EB007E1D0D /* ButtonTests.swift */; }; @@ -48,37 +45,30 @@ 7F612AD91D7F13B800B93BC5 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7F612AD71D7F13B800B93BC5 /* LaunchScreen.storyboard */; }; 7FB791EC1D7F1BB600789D53 /* Action.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE73AD201CDCD101006F8B98 /* Action.framework */; }; C41CE71F22283BBA0006E722 /* Nimble.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE71A22283BB90006E722 /* Nimble.framework */; }; - C41CE72022283BBA0006E722 /* RxBlocking.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE71B22283BB90006E722 /* RxBlocking.framework */; }; C41CE72122283BBA0006E722 /* Quick.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE71C22283BB90006E722 /* Quick.framework */; }; - C41CE72222283BBA0006E722 /* RxAtomic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE71D22283BBA0006E722 /* RxAtomic.framework */; }; - C41CE72322283BBA0006E722 /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE71E22283BBA0006E722 /* RxSwift.framework */; }; - C41CE72C22283BEE0006E722 /* iOS in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE72422283BEE0006E722 /* iOS */; }; - C41CE72D22283BEE0006E722 /* RxAtomic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE72522283BEE0006E722 /* RxAtomic.framework */; }; C41CE72E22283BEE0006E722 /* Quick.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE72622283BEE0006E722 /* Quick.framework */; }; - C41CE72F22283BEE0006E722 /* RxCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE72722283BEE0006E722 /* RxCocoa.framework */; }; - C41CE73022283BEE0006E722 /* RxBlocking.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE72822283BEE0006E722 /* RxBlocking.framework */; }; C41CE73122283BEE0006E722 /* Nimble.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE72922283BEE0006E722 /* Nimble.framework */; }; - C41CE73222283BEE0006E722 /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE72A22283BEE0006E722 /* RxSwift.framework */; }; C41CE73322283BEE0006E722 /* RxTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE72B22283BEE0006E722 /* RxTest.framework */; }; - C41CE73622283CAD0006E722 /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE71E22283BBA0006E722 /* RxSwift.framework */; }; - C41CE73722283CAD0006E722 /* RxAtomic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE71D22283BBA0006E722 /* RxAtomic.framework */; }; - C41CE73A22283CD00006E722 /* RxAtomic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE73822283CD00006E722 /* RxAtomic.framework */; }; - C41CE73B22283CD00006E722 /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE73922283CD00006E722 /* RxSwift.framework */; }; - C41CE73C22283CF90006E722 /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE72A22283BEE0006E722 /* RxSwift.framework */; }; - C41CE73D22283CF90006E722 /* RxAtomic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE72522283BEE0006E722 /* RxAtomic.framework */; }; - C41CE74022283D220006E722 /* RxAtomic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE73E22283D220006E722 /* RxAtomic.framework */; }; - C41CE74122283D220006E722 /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C41CE73F22283D220006E722 /* RxSwift.framework */; }; C41E08EE2237D26D0039D213 /* Action+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4DE00042229758700FB50AB /* Action+Extensions.swift */; }; C41E08EF2237D2700039D213 /* Action+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4DE00042229758700FB50AB /* Action+Extensions.swift */; }; C41E08F02237D2740039D213 /* Action+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4DE00042229758700FB50AB /* Action+Extensions.swift */; }; + C4BFF33D2281D6E100D1AA27 /* Nimble+RxTest+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4BFF33C2281D6E100D1AA27 /* Nimble+RxTest+Ext.swift */; }; + C4BFF33E2281D6E100D1AA27 /* Nimble+RxTest+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4BFF33C2281D6E100D1AA27 /* Nimble+RxTest+Ext.swift */; }; + C4BFF3402282B79F00D1AA27 /* TestEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4BFF33F2282B79F00D1AA27 /* TestEvents.swift */; }; + C4BFF3412282B79F00D1AA27 /* TestEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4BFF33F2282B79F00D1AA27 /* TestEvents.swift */; }; + C4D3237E2285ADF7004B05A5 /* ActionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D3237D2285ADF7004B05A5 /* ActionTests.swift */; }; + C4D3237F2285AEAD004B05A5 /* ActionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D3237D2285ADF7004B05A5 /* ActionTests.swift */; }; C4DE00052229758700FB50AB /* Action+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4DE00042229758700FB50AB /* Action+Extensions.swift */; }; - CA2861C81ED6979400BB327A /* InputSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA2861C71ED6979400BB327A /* InputSubject.swift */; }; - CA2861CA1ED6A41700BB327A /* InputSubjectTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA2861C91ED6A41700BB327A /* InputSubjectTests.swift */; }; - CA2861CB1ED6B08300BB327A /* InputSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA2861C71ED6979400BB327A /* InputSubject.swift */; }; - CA2861CC1ED6B08400BB327A /* InputSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA2861C71ED6979400BB327A /* InputSubject.swift */; }; + FA35FEE4249732450072FBEA /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA35FEE2249732450072FBEA /* RxSwift.framework */; }; + FA35FEE6249732450072FBEA /* RxCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA35FEE3249732450072FBEA /* RxCocoa.framework */; }; + FA35FEED249732900072FBEA /* RxCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA35FEEB249732900072FBEA /* RxCocoa.framework */; }; + FA35FEEF249732900072FBEA /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA35FEEC249732900072FBEA /* RxSwift.framework */; }; + FA35FEF4249732AA0072FBEA /* RxCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA35FEF2249732AA0072FBEA /* RxCocoa.framework */; }; + FA35FEF6249732AA0072FBEA /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA35FEF3249732AA0072FBEA /* RxSwift.framework */; }; + FA35FEFB249732B90072FBEA /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA35FEF9249732B90072FBEA /* RxSwift.framework */; }; + FA35FEFD249732B90072FBEA /* RxCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA35FEFA249732B90072FBEA /* RxCocoa.framework */; }; FA3F973C1EDAF46F00A84787 /* Action.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F0569E21DE28587007E1D0D /* Action.swift */; }; FA3F973D1EDAF46F00A84787 /* Action+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F0569E01DE28587007E1D0D /* Action+Internal.swift */; }; - FA3F973E1EDAF46F00A84787 /* InputSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA2861C71ED6979400BB327A /* InputSubject.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -128,7 +118,6 @@ 7F0569E31DE28587007E1D0D /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 7F0569E51DE28587007E1D0D /* UIAlertAction+Action.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIAlertAction+Action.swift"; sourceTree = ""; }; 7F0569E61DE28587007E1D0D /* UIBarButtonItem+Action.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIBarButtonItem+Action.swift"; sourceTree = ""; }; - 7F0569F01DE288EB007E1D0D /* ActionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ActionTests.swift; path = ActionTests/ActionTests.swift; sourceTree = ""; }; 7F0569F11DE288EB007E1D0D /* AlertActionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AlertActionTests.swift; sourceTree = ""; }; 7F0569F21DE288EB007E1D0D /* BarButtonTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BarButtonTests.swift; sourceTree = ""; }; 7F0569F31DE288EB007E1D0D /* ButtonTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ButtonTests.swift; sourceTree = ""; }; @@ -143,22 +132,13 @@ 7F612ADA1D7F13B800B93BC5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; BE73AD201CDCD101006F8B98 /* Action.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Action.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C41CE71A22283BB90006E722 /* Nimble.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Nimble.framework; path = Carthage/Build/iOS/Nimble.framework; sourceTree = ""; }; - C41CE71B22283BB90006E722 /* RxBlocking.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxBlocking.framework; path = Carthage/Build/iOS/RxBlocking.framework; sourceTree = ""; }; C41CE71C22283BB90006E722 /* Quick.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quick.framework; path = Carthage/Build/iOS/Quick.framework; sourceTree = ""; }; - C41CE71D22283BBA0006E722 /* RxAtomic.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxAtomic.framework; path = Carthage/Build/iOS/RxAtomic.framework; sourceTree = ""; }; - C41CE71E22283BBA0006E722 /* RxSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxSwift.framework; path = Carthage/Build/iOS/RxSwift.framework; sourceTree = ""; }; - C41CE72422283BEE0006E722 /* iOS */ = {isa = PBXFileReference; lastKnownFileType = folder; name = iOS; path = Carthage/Build/iOS; sourceTree = ""; }; - C41CE72522283BEE0006E722 /* RxAtomic.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxAtomic.framework; path = Carthage/Build/Mac/RxAtomic.framework; sourceTree = ""; }; C41CE72622283BEE0006E722 /* Quick.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quick.framework; path = Carthage/Build/Mac/Quick.framework; sourceTree = ""; }; - C41CE72722283BEE0006E722 /* RxCocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxCocoa.framework; path = Carthage/Build/Mac/RxCocoa.framework; sourceTree = ""; }; - C41CE72822283BEE0006E722 /* RxBlocking.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxBlocking.framework; path = Carthage/Build/Mac/RxBlocking.framework; sourceTree = ""; }; C41CE72922283BEE0006E722 /* Nimble.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Nimble.framework; path = Carthage/Build/Mac/Nimble.framework; sourceTree = ""; }; - C41CE72A22283BEE0006E722 /* RxSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxSwift.framework; path = Carthage/Build/Mac/RxSwift.framework; sourceTree = ""; }; C41CE72B22283BEE0006E722 /* RxTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxTest.framework; path = Carthage/Build/Mac/RxTest.framework; sourceTree = ""; }; - C41CE73822283CD00006E722 /* RxAtomic.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxAtomic.framework; path = Carthage/Build/tvOS/RxAtomic.framework; sourceTree = ""; }; - C41CE73922283CD00006E722 /* RxSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxSwift.framework; path = Carthage/Build/tvOS/RxSwift.framework; sourceTree = ""; }; - C41CE73E22283D220006E722 /* RxAtomic.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxAtomic.framework; path = Carthage/Build/watchOS/RxAtomic.framework; sourceTree = ""; }; - C41CE73F22283D220006E722 /* RxSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxSwift.framework; path = Carthage/Build/watchOS/RxSwift.framework; sourceTree = ""; }; + C4BFF33C2281D6E100D1AA27 /* Nimble+RxTest+Ext.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Nimble+RxTest+Ext.swift"; sourceTree = ""; }; + C4BFF33F2282B79F00D1AA27 /* TestEvents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestEvents.swift; sourceTree = ""; }; + C4D3237D2285ADF7004B05A5 /* ActionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionTests.swift; sourceTree = ""; }; C4DE00042229758700FB50AB /* Action+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Action+Extensions.swift"; sourceTree = ""; }; C4E0263F20D119EE00C8164C /* Action.podspec */ = {isa = PBXFileReference; lastKnownFileType = text; path = Action.podspec; sourceTree = ""; }; C4E0264020D11A0F00C8164C /* Cartfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = Cartfile; sourceTree = ""; }; @@ -166,8 +146,14 @@ C4E0264220D11A3B00C8164C /* Readme.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = Readme.md; sourceTree = ""; }; C4E0264320D11CDD00C8164C /* circle.yml */ = {isa = PBXFileReference; lastKnownFileType = text; path = circle.yml; sourceTree = ""; }; C4E0264420D1244900C8164C /* Changelog.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = Changelog.md; sourceTree = ""; }; - CA2861C71ED6979400BB327A /* InputSubject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InputSubject.swift; sourceTree = ""; }; - CA2861C91ED6A41700BB327A /* InputSubjectTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InputSubjectTests.swift; sourceTree = ""; }; + FA35FEE2249732450072FBEA /* RxSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxSwift.framework; path = Carthage/Build/iOS/RxSwift.framework; sourceTree = ""; }; + FA35FEE3249732450072FBEA /* RxCocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxCocoa.framework; path = Carthage/Build/iOS/RxCocoa.framework; sourceTree = ""; }; + FA35FEEB249732900072FBEA /* RxCocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxCocoa.framework; path = Carthage/Build/tvOS/RxCocoa.framework; sourceTree = ""; }; + FA35FEEC249732900072FBEA /* RxSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxSwift.framework; path = Carthage/Build/tvOS/RxSwift.framework; sourceTree = ""; }; + FA35FEF2249732AA0072FBEA /* RxCocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxCocoa.framework; path = Carthage/Build/Mac/RxCocoa.framework; sourceTree = ""; }; + FA35FEF3249732AA0072FBEA /* RxSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxSwift.framework; path = Carthage/Build/Mac/RxSwift.framework; sourceTree = ""; }; + FA35FEF9249732B90072FBEA /* RxSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxSwift.framework; path = Carthage/Build/watchOS/RxSwift.framework; sourceTree = ""; }; + FA35FEFA249732B90072FBEA /* RxCocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxCocoa.framework; path = Carthage/Build/watchOS/RxCocoa.framework; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -175,8 +161,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C41CE73A22283CD00006E722 /* RxAtomic.framework in Frameworks */, - C41CE73B22283CD00006E722 /* RxSwift.framework in Frameworks */, + FA35FEEF249732900072FBEA /* RxSwift.framework in Frameworks */, + FA35FEED249732900072FBEA /* RxCocoa.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -184,8 +170,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C41CE73C22283CF90006E722 /* RxSwift.framework in Frameworks */, - C41CE73D22283CF90006E722 /* RxAtomic.framework in Frameworks */, + FA35FEF6249732AA0072FBEA /* RxSwift.framework in Frameworks */, + FA35FEF4249732AA0072FBEA /* RxCocoa.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -193,8 +179,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C41CE74022283D220006E722 /* RxAtomic.framework in Frameworks */, - C41CE74122283D220006E722 /* RxSwift.framework in Frameworks */, + FA35FEFD249732B90072FBEA /* RxCocoa.framework in Frameworks */, + FA35FEFB249732B90072FBEA /* RxSwift.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -202,13 +188,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C41CE72C22283BEE0006E722 /* iOS in Frameworks */, - C41CE72D22283BEE0006E722 /* RxAtomic.framework in Frameworks */, C41CE72E22283BEE0006E722 /* Quick.framework in Frameworks */, - C41CE72F22283BEE0006E722 /* RxCocoa.framework in Frameworks */, - C41CE73022283BEE0006E722 /* RxBlocking.framework in Frameworks */, C41CE73122283BEE0006E722 /* Nimble.framework in Frameworks */, - C41CE73222283BEE0006E722 /* RxSwift.framework in Frameworks */, C41CE73322283BEE0006E722 /* RxTest.framework in Frameworks */, 3DD965C01F5DC0E400C180FE /* Action.framework in Frameworks */, ); @@ -219,10 +200,7 @@ buildActionMask = 2147483647; files = ( C41CE71F22283BBA0006E722 /* Nimble.framework in Frameworks */, - C41CE72022283BBA0006E722 /* RxBlocking.framework in Frameworks */, C41CE72122283BBA0006E722 /* Quick.framework in Frameworks */, - C41CE72222283BBA0006E722 /* RxAtomic.framework in Frameworks */, - C41CE72322283BBA0006E722 /* RxSwift.framework in Frameworks */, 7F612AA01D7F103A00B93BC5 /* Action.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -239,8 +217,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C41CE73622283CAD0006E722 /* RxSwift.framework in Frameworks */, - C41CE73722283CAD0006E722 /* RxAtomic.framework in Frameworks */, + FA35FEE6249732450072FBEA /* RxCocoa.framework in Frameworks */, + FA35FEE4249732450072FBEA /* RxSwift.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -291,7 +269,6 @@ 7F0569E21DE28587007E1D0D /* Action.swift */, C4DE00042229758700FB50AB /* Action+Extensions.swift */, 7F0569E01DE28587007E1D0D /* Action+Internal.swift */, - CA2861C71ED6979400BB327A /* InputSubject.swift */, 3D730DE11F673BCB008534D3 /* CommonUI */, 7F0569E41DE28587007E1D0D /* UIKitExtensions */, 7F0569EF1DE28598007E1D0D /* Supporting Files */, @@ -321,23 +298,19 @@ 7F5E6A5C1D7F06C4000B6076 /* Frameworks */ = { isa = PBXGroup; children = ( - C41CE73822283CD00006E722 /* RxAtomic.framework */, - C41CE73922283CD00006E722 /* RxSwift.framework */, - C41CE73E22283D220006E722 /* RxAtomic.framework */, - C41CE73F22283D220006E722 /* RxSwift.framework */, - C41CE72422283BEE0006E722 /* iOS */, + FA35FEEB249732900072FBEA /* RxCocoa.framework */, + FA35FEFA249732B90072FBEA /* RxCocoa.framework */, + FA35FEEC249732900072FBEA /* RxSwift.framework */, + FA35FEE3249732450072FBEA /* RxCocoa.framework */, + FA35FEE2249732450072FBEA /* RxSwift.framework */, + FA35FEF2249732AA0072FBEA /* RxCocoa.framework */, + FA35FEF3249732AA0072FBEA /* RxSwift.framework */, + FA35FEF9249732B90072FBEA /* RxSwift.framework */, C41CE72922283BEE0006E722 /* Nimble.framework */, C41CE72622283BEE0006E722 /* Quick.framework */, - C41CE72522283BEE0006E722 /* RxAtomic.framework */, - C41CE72822283BEE0006E722 /* RxBlocking.framework */, - C41CE72722283BEE0006E722 /* RxCocoa.framework */, - C41CE72A22283BEE0006E722 /* RxSwift.framework */, C41CE72B22283BEE0006E722 /* RxTest.framework */, C41CE71A22283BB90006E722 /* Nimble.framework */, C41CE71C22283BB90006E722 /* Quick.framework */, - C41CE71D22283BBA0006E722 /* RxAtomic.framework */, - C41CE71B22283BB90006E722 /* RxBlocking.framework */, - C41CE71E22283BBA0006E722 /* RxSwift.framework */, ); name = Frameworks; sourceTree = ""; @@ -347,8 +320,9 @@ children = ( 3DD965DC1F5DF84800C180FE /* macOS-Tests */, 3DD965DB1F5DF83700C180FE /* iOS-Tests */, - 7F0569F01DE288EB007E1D0D /* ActionTests.swift */, - CA2861C91ED6A41700BB327A /* InputSubjectTests.swift */, + C4D3237D2285ADF7004B05A5 /* ActionTests.swift */, + C4BFF33C2281D6E100D1AA27 /* Nimble+RxTest+Ext.swift */, + C4BFF33F2282B79F00D1AA27 /* TestEvents.swift */, 7F0569F41DE288EB007E1D0D /* Info.plist */, ); path = Tests; @@ -593,7 +567,7 @@ }; 7F5E6A661D7F08D2000B6076 = { CreatedOnToolsVersion = 8.0; - LastSwiftMigration = 1000; + LastSwiftMigration = 1020; ProvisioningStyle = Automatic; }; 7F612ACB1D7F13B800B93BC5 = { @@ -602,7 +576,7 @@ }; BE73AD1F1CDCD101006F8B98 = { CreatedOnToolsVersion = 7.3; - LastSwiftMigration = 1000; + LastSwiftMigration = 1020; }; }; }; @@ -719,7 +693,6 @@ C41E08EE2237D26D0039D213 /* Action+Extensions.swift in Sources */, 3D730DEA1F674043008534D3 /* Button+Action.swift in Sources */, 1FCDDA671EAC31EF006EB95B /* UIBarButtonItem+Action.swift in Sources */, - CA2861CB1ED6B08300BB327A /* InputSubject.swift in Sources */, 3D730DE41F673C64008534D3 /* Control+Action.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -728,7 +701,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - CA2861CC1ED6B08400BB327A /* InputSubject.swift in Sources */, C41E08EF2237D2700039D213 /* Action+Extensions.swift in Sources */, 3D730DE51F673C65008534D3 /* Control+Action.swift in Sources */, 1FCDDA8A1EAC329E006EB95B /* Action.swift in Sources */, @@ -743,7 +715,6 @@ files = ( FA3F973C1EDAF46F00A84787 /* Action.swift in Sources */, FA3F973D1EDAF46F00A84787 /* Action+Internal.swift in Sources */, - FA3F973E1EDAF46F00A84787 /* InputSubject.swift in Sources */, C41E08F02237D2740039D213 /* Action+Extensions.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -753,9 +724,10 @@ buildActionMask = 2147483647; files = ( 3DD965DE1F5DF8C500C180FE /* BindToTests.swift in Sources */, - 3DD965C61F5DC2E100C180FE /* ActionTests.swift in Sources */, + C4BFF3412282B79F00D1AA27 /* TestEvents.swift in Sources */, + C4BFF33E2281D6E100D1AA27 /* Nimble+RxTest+Ext.swift in Sources */, 3DD965DF1F5DF8C900C180FE /* NSButtonTests.swift in Sources */, - 3DD965C81F5DC2E700C180FE /* InputSubjectTests.swift in Sources */, + C4D3237F2285AEAD004B05A5 /* ActionTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -763,13 +735,14 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + C4BFF3402282B79F00D1AA27 /* TestEvents.swift in Sources */, 7F0569F71DE288EB007E1D0D /* BarButtonTests.swift in Sources */, 5ED520241E1EA199007621B9 /* BindToTests.swift in Sources */, 7F0569F61DE288EB007E1D0D /* AlertActionTests.swift in Sources */, - 7F0569F51DE288EB007E1D0D /* ActionTests.swift in Sources */, + C4D3237E2285ADF7004B05A5 /* ActionTests.swift in Sources */, 7B4BFE6320C290BF00D72FB0 /* RefreshControlTests.swift in Sources */, + C4BFF33D2281D6E100D1AA27 /* Nimble+RxTest+Ext.swift in Sources */, 7F0569F81DE288EB007E1D0D /* ButtonTests.swift in Sources */, - CA2861CA1ED6A41700BB327A /* InputSubjectTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -792,7 +765,6 @@ 7F0569ED1DE28587007E1D0D /* UIBarButtonItem+Action.swift in Sources */, C4DE00052229758700FB50AB /* Action+Extensions.swift in Sources */, 3D730DE91F673FD9008534D3 /* Button+Action.swift in Sources */, - CA2861C81ED6979400BB327A /* InputSubject.swift in Sources */, 3D730DE31F673BE4008534D3 /* Control+Action.swift in Sources */, 7F0569EA1DE28587007E1D0D /* Action.swift in Sources */, ); @@ -1021,10 +993,7 @@ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "Mac Developer"; - CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - DEVELOPMENT_TEAM = ""; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Carthage/Build/Mac", @@ -1055,10 +1024,7 @@ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "Mac Developer"; - CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - DEVELOPMENT_TEAM = ""; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Carthage/Build/Mac", @@ -1093,7 +1059,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -1113,7 +1079,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks $(PROJECT_DIR)/Carthage/Build/iOS"; PRODUCT_BUNDLE_IDENTIFIER = "-.Tests"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; }; name = Release; }; @@ -1204,7 +1170,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; INFOPLIST_FILE = Sources/Action/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -1260,7 +1226,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; INFOPLIST_FILE = Sources/Action/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; @@ -1293,7 +1259,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -1317,7 +1283,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.ashfurrow.Action; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/Cartfile b/Cartfile index 0fb6d5b8..b96a6ddc 100644 --- a/Cartfile +++ b/Cartfile @@ -1 +1 @@ -github "ReactiveX/RxSwift" ~> 4.4.2 +github "ReactiveX/RxSwift" >= 6.0 diff --git a/Cartfile.resolved b/Cartfile.resolved index e4195453..f8760ef9 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,3 +1,3 @@ -github "Quick/Nimble" "v8.0.1" -github "Quick/Quick" "v2.0.0" -github "ReactiveX/RxSwift" "4.4.2" +github "Quick/Nimble" "v9.0.0" +github "Quick/Quick" "v3.1.2" +github "ReactiveX/RxSwift" "6.1.0" diff --git a/Changelog.md b/Changelog.md index c64903af..b1d20155 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,187 +1 @@ -Changelog -========= - - -Current master --------------- -3.11.0 -------- -- Introduction of `underlyingError` observable which returns a `Swift.Error` element type. -- Updated specs that were breaking in `Circle CI` pipeline - -3.10.2 -------- -- Update the project and xcworkspace and make it compatible with Version 10.1 (10B61) -- Update the Unit test target and make it compatible with Version 10.1 (10B61) -- Moved CI to circle CI 2.0 -- Fix issue [#155](https://github.com/RxSwiftCommunity/Action/issues/155) -- Fix issue [#179](https://github.com/RxSwiftCommunity/Action/issues/179) - -3.10.0 -------- -- Adding syntax sugar `execute()` method on `Action` when `Input` is `Void`. [#171](https://github.com/RxSwiftCommunity/Action/pull/171) -- Raises minimum watchOS deployment target to 3.0, to match RxSwift. - -3.9.1 ------ - -- Less restrictive RxSwift/RxCocoa dependencies in podspec, now supporting RxSwift/RxCocoa 4.x starting with version 4.3 - -3.9.0 ------ -- Fix Action Demo build failure -- Added missing support for Swift 4.2 after 3.7.0 - - -3.8.0 ------ - -- Fix build failure on New Build System (default on Xcode 10) [#151](https://github.com/RxSwiftCommunity/Action/pull/151) - -3.7.0 ------ -- Added full support for Swift 4.2 -- Added full support for RxSwift 4.3 - -3.6.0 ------ -- Updated `Semantic Versioning` to reflect what is actaully released both on `Pod` and `Carthage` -- Added full support for Swift 4.1 -- Added full support for RxSwift 4.2.0 -- UIRefreshControl support: binding to an action (or CocoaAction) starts the action itself and updates the control's refreshing status - -3.5.0 ------ - -- Add convenience initializer with work factories returning `PrimitiveSequence` or any other `ObservableConvertibleType` [#125](https://github.com/RxSwiftCommunity/Action/pull/125) -- Introduce `CompletableAction`, a typealias for action that only completes without emitting any elements [#125](https://github.com/RxSwiftCommunity/Action/pull/125) - -3.4.0 ------ -- Added full support for Swift 4.0 -- Added full support for RxSwift 4.0.0 -- Preserved old behavior for `shareReplay(1)` api changes from `RxSwift`. [#110](https://github.com/RxSwiftCommunity/Action/pull/110) - - -Version table -------------- - -| Swift version | RxSwift version | Action version | -| ------------- | --------------- | -------------- | -| Swift 3.0 | v3.2.* | v2.2.0 | -| Swift 3.2 | v3.6.* | v3.2.0 | -| **Swift 4** | **v4.0.0** | **v3.4.0** | -| Swift 4.1 | **v4.2.0** | **v3.6.0** | - -3.2.0 ------ -- Add macOS bindings for NSControl and NSButton - -3.1.1 ------ - -- Loosens dependency on RxSwift. - -3.1.0 ------ - -- Replace `PublishSubject` with `InputSubject` [#92](https://github.com/RxSwiftCommunity/Action/pull/92) -- Added missing sources for watchOS target [#95](https://github.com/RxSwiftCommunity/Action/pull/95) - -3.0.0 ------ - -- Change `bindTo([...])` methods to `bind(to: [...])` to better align with the revised Rx API -- Update Rx invocations to resolve deprecation warnings related to same - -2.2.2 ------ - -- Remove `RxBlocking` from Linked Libraries in `Action` target - -2.2.1 ------ - -- Loosens dependency on RxSwift. - -2.2.0 ------ - -- Fixes [#63](https://github.com/RxSwiftCommunity/Action/issues/63), related to the default enabled state. -- Adds `bindTo(action:)` for non-CocoaAction. - -2.1.1 ------ - -- Not replay `executionObservables` to fix `execute(_:)`. See [#64](https://github.com/RxSwiftCommunity/Action/pull/56). - -2.1.0 ------ - -- Refactors internal implementation. See [#56](https://github.com/RxSwiftCommunity/Action/pull/56) and [#59](https://github.com/RxSwiftCommunity/Action/pull/59). -- Adds SwiftPM support. See [#58](https://github.com/RxSwiftCommunity/Action/pull/58). - -2.0.0-beta.1 ------------- - -- Adds Swift 3 support. See [#46](https://github.com/RxSwiftCommunity/Action/pull/46). - -1.2.2 ------ - -- Added inputs subject to trigger actins by observables. See [#37](https://github.com/RxSwiftCommunity/Action/pull/37). -- Fixes a problem with observable deallocation related to `rx_action` button property. See [#33](https://github.com/RxSwiftCommunity/Action/pull/33). -- Improved Carthage compatibility. See [#34](https://github.com/RxSwiftCommunity/Action/pull/34). -- Swift 2.3 support. - -1.2.1 ------ - -- Relaxes dependency requirements. - -1.2.0 ------ - -- Updates to RxSwift 2.1.0. - -1.1.0 ------ - -- Transitioned podspec to new remote URL (see [#15](https://github.com/RxSwiftCommunity/Action/issues/15)). -- Moved to RxSwift 2.0 🎉 - -1.2.2 ------ - -- Fixes memory leak when used on buttons. See [#21](https://github.com/RxSwiftCommunity/Action/issues/21). - -1.2.1 ------ - -- Relaxes dependency requirements. - -1.0.0 ------ - -- Unbounded replaying of event values (see [#3](https://github.com/ashfurrow/Action/issues/3)). - -0.3.0 ------ - -Added `UIAlertAction` support. - -0.2.1 ------ - -- Fixes `enabledIf:` parameter to be `Observable`, `where B: BooleanType`. - -0.2.0 ------ - -- Added tvOS support to UIButton extension. -- Changes `enabledIf` to accept `Observable` instead of `Bool`. - -0.1.0 ------ - -- Initial release. +# diff --git a/Demo/Base.lproj/Main.storyboard b/Demo/Base.lproj/Main.storyboard index 08fa0bd8..10ba31f7 100644 --- a/Demo/Base.lproj/Main.storyboard +++ b/Demo/Base.lproj/Main.storyboard @@ -1,11 +1,11 @@ - + - + @@ -48,8 +48,8 @@ -