Skip to content

Commit

Permalink
project: add RxSwift implementation to the package
Browse files Browse the repository at this point in the history
  • Loading branch information
twittemb committed Jan 1, 2020
1 parent e53ffab commit 311df28
Show file tree
Hide file tree
Showing 18 changed files with 1,351 additions and 5 deletions.
24 changes: 24 additions & 0 deletions .swiftpm/xcode/xcshareddata/xcschemes/Spin.Combine.xcscheme
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,20 @@
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Spin.CombineTests"
BuildableName = "Spin.CombineTests"
BlueprintName = "Spin.CombineTests"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
Expand All @@ -28,6 +42,16 @@
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Spin.CombineTests"
BuildableName = "Spin.CombineTests"
BlueprintName = "Spin.CombineTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
Expand Down
92 changes: 92 additions & 0 deletions .swiftpm/xcode/xcshareddata/xcschemes/Spin.ReactiveSwift.xcscheme
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1120"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Spin.ReactiveSwift"
BuildableName = "Spin.ReactiveSwift"
BlueprintName = "Spin.ReactiveSwift"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Spin.ReactiveSwiftTests"
BuildableName = "Spin.ReactiveSwiftTests"
BlueprintName = "Spin.ReactiveSwiftTests"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
codeCoverageEnabled = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Spin.ReactiveSwiftTests"
BuildableName = "Spin.ReactiveSwiftTests"
BlueprintName = "Spin.ReactiveSwiftTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Spin.ReactiveSwift"
BuildableName = "Spin.ReactiveSwift"
BlueprintName = "Spin.ReactiveSwift"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
92 changes: 92 additions & 0 deletions .swiftpm/xcode/xcshareddata/xcschemes/Spin.RxSwift.xcscheme
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1120"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Spin.RxSwift"
BuildableName = "Spin.RxSwift"
BlueprintName = "Spin.RxSwift"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Spin.RxSwiftTests"
BuildableName = "Spin.RxSwiftTests"
BlueprintName = "Spin.RxSwiftTests"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
codeCoverageEnabled = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Spin.RxSwiftTests"
BuildableName = "Spin.RxSwiftTests"
BlueprintName = "Spin.RxSwiftTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Spin.RxSwift"
BuildableName = "Spin.RxSwift"
BlueprintName = "Spin.RxSwift"
ReferencedContainer = "container:">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
62 changes: 57 additions & 5 deletions .swiftpm/xcode/xcshareddata/xcschemes/Spin.Swift-Package.xcscheme
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,34 @@
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Spin.ReactiveSwift"
BuildableName = "Spin.ReactiveSwift"
BlueprintName = "Spin.ReactiveSwift"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Spin.RxSwift"
BuildableName = "Spin.RxSwift"
BlueprintName = "Spin.RxSwift"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
Expand Down Expand Up @@ -65,14 +93,28 @@
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Spin.ReactiveSwift"
BuildableName = "Spin.ReactiveSwift"
BlueprintName = "Spin.ReactiveSwift"
BlueprintIdentifier = "Spin.ReactiveSwiftTests"
BuildableName = "Spin.ReactiveSwiftTests"
BlueprintName = "Spin.ReactiveSwiftTests"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Spin.RxSwiftTests"
BuildableName = "Spin.RxSwiftTests"
BlueprintName = "Spin.RxSwiftTests"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
Expand Down Expand Up @@ -115,6 +157,16 @@
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "Spin.RxSwiftTests"
BuildableName = "Spin.RxSwiftTests"
BlueprintName = "Spin.RxSwiftTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
Expand Down
9 changes: 9 additions & 0 deletions Package.resolved
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,15 @@
"revision": "b772fa0b624926e6e2f21acbb79297736a05c585",
"version": "6.1.0"
}
},
{
"package": "RxSwift",
"repositoryURL": "https://github.com/ReactiveX/RxSwift",
"state": {
"branch": null,
"revision": "b3e888b4972d9bc76495dd74d30a8c7fad4b9395",
"version": "5.0.1"
}
}
]
},
Expand Down
12 changes: 12 additions & 0 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,13 @@ let package = Package(
.library(
name: "Spin.ReactiveSwift",
targets: ["Spin.ReactiveSwift"]),
.library(
name: "Spin.RxSwift",
targets: ["Spin.RxSwift"]),
],
dependencies: [
.package(url: "https://github.com/ReactiveCocoa/ReactiveSwift", from: "6.1.0"),
.package(url: "https://github.com/ReactiveX/RxSwift", from: "5.0.1"),
// Dependencies declare other packages that this package depends on.
// .package(url: /* package url */, from: "1.0.0"),
],
Expand All @@ -43,6 +47,10 @@ let package = Package(
name: "Spin.ReactiveSwift",
dependencies: ["Spin.Swift", "ReactiveSwift"],
path: "Sources/Spin.ReactiveSwift"),
.target(
name: "Spin.RxSwift",
dependencies: ["Spin.Swift", "RxSwift", "RxRelay"],
path: "Sources/Spin.RxSwift"),
.testTarget(
name: "Spin.SwiftTests",
dependencies: ["Spin.Swift"]),
Expand All @@ -52,5 +60,9 @@ let package = Package(
.testTarget(
name: "Spin.ReactiveSwiftTests",
dependencies: ["Spin.ReactiveSwift"]),
.testTarget(
name: "Spin.RxSwiftTests",
dependencies: ["Spin.RxSwift", "RxRelay", "RxBlocking"],
swiftSettings: [.]),
]
)
33 changes: 33 additions & 0 deletions Sources/Spin.RxSwift/Observable+ReactiveStream.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
//
// Observable+ReactiveStream.swift
//
//
// Created by Thibault Wittemberg on 2019-12-31.
//

import RxSwift
import Spin_Swift

extension Observable: ReactiveStream {
public typealias Value = Element
public typealias Executer = ImmediateSchedulerType
public typealias LifeCycle = Disposable

public func spin() -> LifeCycle {
return self.subscribe()
}

public func spin<ObsType: ObservableType>(after trigger: ObsType) -> LifeCycle {
return trigger.flatMap { _ in
return self
}.spin()
}

public static func emptyStream() -> Self {
guard let emptyStream = Observable<Value>.empty() as? Self else {
fatalError("Observable cannot be subclassed to be able to use the framework")
}

return emptyStream
}
}
Loading

0 comments on commit 311df28

Please sign in to comment.