From a6f9814cd6540c256d4c687dc5d7ae1adefb04bf Mon Sep 17 00:00:00 2001 From: Vatsal Manot Date: Mon, 28 Oct 2024 22:39:54 +0530 Subject: [PATCH] Update package --- .../Combine/ObservableObject++.swift | 4 +-- .../Helpers/Foundation/TaskOperation.swift | 2 +- .../Helpers/Swift/Process.Task.swift | 4 +-- .../Collections/ObservableArray.swift | 2 +- .../Observable Tasks/AnyTask.swift | 2 +- .../EmptyObservableTask.swift | 6 ++-- .../Foundation/ObservableTaskBase.swift | 2 +- .../ObservableTasks.HandleEvents.swift | 2 +- .../Foundation/ObservableTasks.Map.swift | 4 +-- .../Foundation/PassthroughTask.swift | 2 +- .../Observable Tasks/ObservableTask.swift | 4 +-- .../OpaqueObservableTask.swift | 8 ++--- ...tatus.swift => ObservableTaskStatus.swift} | 33 +++++++++++-------- .../Observable Tasks/Status/TaskFailure.swift | 2 +- .../Observable Tasks/Status/TaskOutput.swift | 2 +- .../Observable Tasks/Status/TaskResult.swift | 4 +-- .../Status/TaskStatusDescription.swift | 4 +-- .../SwiftUI/TaskButton-Initializers.swift | 22 ++++++------- .../Observable Tasks/SwiftUI/TaskButton.swift | 2 +- .../ObjectDidChangeObservableObject.swift} | 12 ++++--- .../Intramodular/Process/SystemShell.swift | 12 ++++--- .../Property Wrappers/PublishedObject.swift | 2 +- 22 files changed, 75 insertions(+), 62 deletions(-) rename Sources/Merge/Intramodular/Observable Tasks/Status/{TaskStatus.swift => ObservableTaskStatus.swift} (88%) rename Sources/Merge/Intramodular/{ObservableObjectX.swift => Observation/ObjectDidChangeObservableObject.swift} (87%) diff --git a/Sources/Merge/Intermodular/Extensions/Combine/ObservableObject++.swift b/Sources/Merge/Intermodular/Extensions/Combine/ObservableObject++.swift index 55760ae..f89b2bd 100644 --- a/Sources/Merge/Intermodular/Extensions/Combine/ObservableObject++.swift +++ b/Sources/Merge/Intermodular/Extensions/Combine/ObservableObject++.swift @@ -88,7 +88,7 @@ extension ObservableObject { } } - public func _onReceiveOfValueEmittedBy( + public func _onReceiveOfValueEmittedBy( _ object: T, perform action: @escaping () -> Void ) { @@ -97,7 +97,7 @@ extension ObservableObject { } } - public func _onReceiveOfValueEmittedBy( + public func _onReceiveOfValueEmittedBy( _ object: T, perform action: @escaping () async throws -> Void ) { diff --git a/Sources/Merge/Intermodular/Helpers/Foundation/TaskOperation.swift b/Sources/Merge/Intermodular/Helpers/Foundation/TaskOperation.swift index b12ed2c..867caca 100644 --- a/Sources/Merge/Intermodular/Helpers/Foundation/TaskOperation.swift +++ b/Sources/Merge/Intermodular/Helpers/Foundation/TaskOperation.swift @@ -64,7 +64,7 @@ open class TaskOperation: Operation, @unchecked Sendable { .outputPublisher .toResultPublisher() .sink { status in - switch TaskStatus(status) { + switch ObservableTaskStatus(status) { case .idle: self._executing = false self._finished = false diff --git a/Sources/Merge/Intermodular/Helpers/Swift/Process.Task.swift b/Sources/Merge/Intermodular/Helpers/Swift/Process.Task.swift index 919e0cd..bff8c74 100644 --- a/Sources/Merge/Intermodular/Helpers/Swift/Process.Task.swift +++ b/Sources/Merge/Intermodular/Helpers/Swift/Process.Task.swift @@ -32,7 +32,7 @@ extension Process { process.processIdentifier } - public var status: TaskStatus { + public var status: ObservableTaskStatus { base.status } @@ -40,7 +40,7 @@ extension Process { .init(from: base) } - public var objectDidChange: AnyPublisher, Never> { + public var objectDidChange: AnyPublisher, Never> { base.objectDidChange } diff --git a/Sources/Merge/Intramodular/Collections/ObservableArray.swift b/Sources/Merge/Intramodular/Collections/ObservableArray.swift index 11ddef7..b8ab82f 100644 --- a/Sources/Merge/Intramodular/Collections/ObservableArray.swift +++ b/Sources/Merge/Intramodular/Collections/ObservableArray.swift @@ -10,7 +10,7 @@ import Swallow /// /// `ObservableObject` subscribes to the `objectWillChange` publishers of all elements contained within it and forwards them to its own `objectWillChange` publisher. @propertyWrapper -public final class ObservableArray: MutablePropertyWrapper, Sequence, _ObservableObjectX { +public final class ObservableArray: MutablePropertyWrapper, Sequence, ObjectDidChangeObservableObject { public let objectWillChange = ObservableObjectPublisher() private var cancellables: [ObjectIdentifier: AnyCancellable] = [:] diff --git a/Sources/Merge/Intramodular/Observable Tasks/AnyTask.swift b/Sources/Merge/Intramodular/Observable Tasks/AnyTask.swift index 468c55d..c6fed26 100644 --- a/Sources/Merge/Intramodular/Observable Tasks/AnyTask.swift +++ b/Sources/Merge/Intramodular/Observable Tasks/AnyTask.swift @@ -9,7 +9,7 @@ import Swallow /// A task that performs type erasure by wrapping another task. public final class AnyTask: ObservableObject, ObservableTask, @unchecked Sendable { public typealias ID = AnyHashable - public typealias Status = TaskStatus + public typealias Status = ObservableTaskStatus public let base: any ObservableTask public let objectDidChange: AnyPublisher diff --git a/Sources/Merge/Intramodular/Observable Tasks/EmptyObservableTask.swift b/Sources/Merge/Intramodular/Observable Tasks/EmptyObservableTask.swift index 5fb262a..72699a6 100644 --- a/Sources/Merge/Intramodular/Observable Tasks/EmptyObservableTask.swift +++ b/Sources/Merge/Intramodular/Observable Tasks/EmptyObservableTask.swift @@ -6,15 +6,15 @@ import Combine import Foundation public final class EmptyObservableTask: ObservableTask { - public var status: TaskStatus { + public var status: ObservableTaskStatus { .idle } - public var objectWillChange: AnyPublisher, Never> { + public var objectWillChange: AnyPublisher, Never> { Empty().eraseToAnyPublisher() } - public var objectDidChange: AnyPublisher, Never> { + public var objectDidChange: AnyPublisher, Never> { Empty().eraseToAnyPublisher() } diff --git a/Sources/Merge/Intramodular/Observable Tasks/Foundation/ObservableTaskBase.swift b/Sources/Merge/Intramodular/Observable Tasks/Foundation/ObservableTaskBase.swift index 2c833a9..d6a2cc8 100644 --- a/Sources/Merge/Intramodular/Observable Tasks/Foundation/ObservableTaskBase.swift +++ b/Sources/Merge/Intramodular/Observable Tasks/Foundation/ObservableTaskBase.swift @@ -8,7 +8,7 @@ import Swift /// A base class to subclass when building observable tasks. open class ObservableTaskBase: ObservableTask { - public typealias Status = TaskStatus + public typealias Status = ObservableTaskStatus let statusValueSubject = CurrentValueSubject(.idle) diff --git a/Sources/Merge/Intramodular/Observable Tasks/Foundation/ObservableTasks.HandleEvents.swift b/Sources/Merge/Intramodular/Observable Tasks/Foundation/ObservableTasks.HandleEvents.swift index 7668c2c..524f42f 100644 --- a/Sources/Merge/Intramodular/Observable Tasks/Foundation/ObservableTasks.HandleEvents.swift +++ b/Sources/Merge/Intramodular/Observable Tasks/Foundation/ObservableTasks.HandleEvents.swift @@ -14,7 +14,7 @@ extension ObservableTasks { private let receiveStart: (() -> Void)? private let receiveCancel: (() -> Void)? - public var status: TaskStatus { + public var status: ObservableTaskStatus { base.status } diff --git a/Sources/Merge/Intramodular/Observable Tasks/Foundation/ObservableTasks.Map.swift b/Sources/Merge/Intramodular/Observable Tasks/Foundation/ObservableTasks.Map.swift index 7c1cbc4..b86da2d 100644 --- a/Sources/Merge/Intramodular/Observable Tasks/Foundation/ObservableTasks.Map.swift +++ b/Sources/Merge/Intramodular/Observable Tasks/Foundation/ObservableTasks.Map.swift @@ -10,7 +10,7 @@ extension ObservableTasks { public final class Map: ObservableTask { public typealias Success = Success public typealias Error = Upstream.Error - public typealias Status = TaskStatus + public typealias Status = ObservableTaskStatus private let upstream: Upstream private let transform: (Upstream.Success) -> Success @@ -33,7 +33,7 @@ extension ObservableTasks { self.transform = transform } - public var status: TaskStatus { + public var status: ObservableTaskStatus { upstream.status.map(transform) } diff --git a/Sources/Merge/Intramodular/Observable Tasks/Foundation/PassthroughTask.swift b/Sources/Merge/Intramodular/Observable Tasks/Foundation/PassthroughTask.swift index d261360..a2003e1 100644 --- a/Sources/Merge/Intramodular/Observable Tasks/Foundation/PassthroughTask.swift +++ b/Sources/Merge/Intramodular/Observable Tasks/Foundation/PassthroughTask.swift @@ -11,7 +11,7 @@ import Swift /// A mutable task. open class PassthroughTask: ObservableTask { public typealias Body = (PassthroughTask) -> AnyCancellable - public typealias Status = TaskStatus + public typealias Status = ObservableTaskStatus private let lock = NSRecursiveLock() diff --git a/Sources/Merge/Intramodular/Observable Tasks/ObservableTask.swift b/Sources/Merge/Intramodular/Observable Tasks/ObservableTask.swift index 969638a..209b10e 100644 --- a/Sources/Merge/Intramodular/Observable Tasks/ObservableTask.swift +++ b/Sources/Merge/Intramodular/Observable Tasks/ObservableTask.swift @@ -8,12 +8,12 @@ import Foundation import Swallow /// An observable task is a token of activity with status-reporting. -public protocol ObservableTask: Cancellable, Identifiable, _ObservableObjectX where ObjectDidChangePublisher.Output == TaskStatus { +public protocol ObservableTask: Cancellable, Identifiable, ObjectDidChangeObservableObject where ObjectDidChangePublisher.Output == ObservableTaskStatus { associatedtype Success associatedtype Error: Swift.Error /// The status of this task. - var status: TaskStatus { get } + var status: ObservableTaskStatus { get } /// Start the task. func start() diff --git a/Sources/Merge/Intramodular/Observable Tasks/OpaqueObservableTask.swift b/Sources/Merge/Intramodular/Observable Tasks/OpaqueObservableTask.swift index 4212695..27b0be5 100644 --- a/Sources/Merge/Intramodular/Observable Tasks/OpaqueObservableTask.swift +++ b/Sources/Merge/Intramodular/Observable Tasks/OpaqueObservableTask.swift @@ -17,7 +17,7 @@ public final class OpaqueObservableTask: CustomStringConvertible, ObjCObject, Ob (base as? CustomStringConvertible)?.description ?? "(Task)" } - public var status: TaskStatus { + public var status: ObservableTaskStatus { base._opaque_status } @@ -25,7 +25,7 @@ public final class OpaqueObservableTask: CustomStringConvertible, ObjCObject, Ob .init(from: base) } - public var objectDidChange: AnyPublisher, Never> { + public var objectDidChange: AnyPublisher, Never> { base._opaque_objectDidChange } @@ -98,11 +98,11 @@ extension OpaqueObservableTask: Equatable { // MARK: - Auxiliary extension ObservableTask { - fileprivate var _opaque_status: TaskStatus { + fileprivate var _opaque_status: ObservableTaskStatus { status.map({ $0 as Any }).mapError({ $0 as Swift.Error }) } - fileprivate var _opaque_objectDidChange: AnyPublisher, Never> { + fileprivate var _opaque_objectDidChange: AnyPublisher, Never> { objectDidChange .map({ $0.map({ $0 as Any }).mapError({ $0 as Swift.Error }) }) .eraseToAnyPublisher() diff --git a/Sources/Merge/Intramodular/Observable Tasks/Status/TaskStatus.swift b/Sources/Merge/Intramodular/Observable Tasks/Status/ObservableTaskStatus.swift similarity index 88% rename from Sources/Merge/Intramodular/Observable Tasks/Status/TaskStatus.swift rename to Sources/Merge/Intramodular/Observable Tasks/Status/ObservableTaskStatus.swift index a66a4d5..1d9e799 100644 --- a/Sources/Merge/Intramodular/Observable Tasks/Status/TaskStatus.swift +++ b/Sources/Merge/Intramodular/Observable Tasks/Status/ObservableTaskStatus.swift @@ -5,14 +5,14 @@ import Combine import Swallow -public protocol TaskStatusType { +public protocol ObservableTaskStatusType { associatedtype Success associatedtype Error } /// The status of a task. @frozen -public enum TaskStatus: TaskStatusType { +public enum ObservableTaskStatus: ObservableTaskStatusType { case idle case active case paused @@ -23,7 +23,7 @@ public enum TaskStatus: TaskStatusType { // MARK: - Extensions -extension TaskStatus { +extension ObservableTaskStatus { public var isTerminal: Bool { switch self { case .success, .canceled, .error: @@ -46,7 +46,7 @@ extension TaskStatus { } } -extension TaskStatus { +extension ObservableTaskStatus { public var successValue: Success? { if case let .success(success) = self { return success @@ -64,7 +64,7 @@ extension TaskStatus { } } -extension TaskStatus { +extension ObservableTaskStatus { public var output: TaskOutput? { switch self { case .active: @@ -106,8 +106,8 @@ extension TaskStatus { } } -extension TaskStatus { - public func map(_ transform: (Success) -> T) -> TaskStatus { +extension ObservableTaskStatus { + public func map(_ transform: (Success) -> T) -> ObservableTaskStatus { switch self { case .idle: return .idle @@ -124,7 +124,7 @@ extension TaskStatus { } } - public func mapError(_ transform: (Error) -> T) -> TaskStatus { + public func mapError(_ transform: (Error) -> T) -> ObservableTaskStatus { switch self { case .idle: return .idle @@ -144,15 +144,15 @@ extension TaskStatus { // MARK: - Conformances -extension TaskStatus: Equatable where Success: Equatable, Error: Equatable { +extension ObservableTaskStatus: Equatable where Success: Equatable, Error: Equatable { } -extension TaskStatus: Hashable where Success: Hashable, Error: Hashable { +extension ObservableTaskStatus: Hashable where Success: Hashable, Error: Hashable { } -extension TaskStatus: Sendable where Success: Sendable { +extension ObservableTaskStatus: Sendable where Success: Sendable { } @@ -287,7 +287,7 @@ extension ObservableTask { } } -extension TaskStatus { +extension ObservableTaskStatus { public init(_ status: Result) { switch status { case .success(let value): @@ -320,7 +320,7 @@ extension TaskStatus { } extension Result { - public init?(_ status: TaskStatus) { + public init?(_ status: ObservableTaskStatus) { switch status { case .success(let success): self = .success(success) @@ -331,3 +331,10 @@ extension Result { } } } + +// MARK: - Deprecated + +@available(*, deprecated, renamed: "ObservableTaskStatusType") +public typealias TaskStatusType = ObservableTaskStatusType +@available(*, deprecated, renamed: "ObservableTaskStatus") +public typealias TaskStatus = ObservableTaskStatus diff --git a/Sources/Merge/Intramodular/Observable Tasks/Status/TaskFailure.swift b/Sources/Merge/Intramodular/Observable Tasks/Status/TaskFailure.swift index ba9abf1..92dbecc 100644 --- a/Sources/Merge/Intramodular/Observable Tasks/Status/TaskFailure.swift +++ b/Sources/Merge/Intramodular/Observable Tasks/Status/TaskFailure.swift @@ -44,7 +44,7 @@ public enum TaskFailure: _ErrorX, HashEquatable { // MARK: - Initializers extension TaskFailure { - public init?(_ status: TaskStatus) { + public init?(_ status: ObservableTaskStatus) { if let failure = status.failure { self = failure } else { diff --git a/Sources/Merge/Intramodular/Observable Tasks/Status/TaskOutput.swift b/Sources/Merge/Intramodular/Observable Tasks/Status/TaskOutput.swift index 527840e..da484d9 100644 --- a/Sources/Merge/Intramodular/Observable Tasks/Status/TaskOutput.swift +++ b/Sources/Merge/Intramodular/Observable Tasks/Status/TaskOutput.swift @@ -13,7 +13,7 @@ public enum TaskOutput { extension TaskOutput { public var value: Success? { - TaskStatus(self).successValue + ObservableTaskStatus(self).successValue } public var isTerminal: Bool { diff --git a/Sources/Merge/Intramodular/Observable Tasks/Status/TaskResult.swift b/Sources/Merge/Intramodular/Observable Tasks/Status/TaskResult.swift index 40e5b55..33ec77d 100644 --- a/Sources/Merge/Intramodular/Observable Tasks/Status/TaskResult.swift +++ b/Sources/Merge/Intramodular/Observable Tasks/Status/TaskResult.swift @@ -18,7 +18,7 @@ public enum TaskResult { } } - public init?(_ status: TaskStatus) { + public init?(_ status: ObservableTaskStatus) { switch status { case .idle: return nil @@ -91,7 +91,7 @@ extension TaskResult: Sendable where Success: Sendable { // MARK: - Supplementary -extension TaskStatus { +extension ObservableTaskStatus { public init(_ result: TaskResult) { switch result { case .canceled: diff --git a/Sources/Merge/Intramodular/Observable Tasks/Status/TaskStatusDescription.swift b/Sources/Merge/Intramodular/Observable Tasks/Status/TaskStatusDescription.swift index 0eca3a7..f541c44 100644 --- a/Sources/Merge/Intramodular/Observable Tasks/Status/TaskStatusDescription.swift +++ b/Sources/Merge/Intramodular/Observable Tasks/Status/TaskStatusDescription.swift @@ -88,7 +88,7 @@ extension TaskStatusDescription { } public init( - _ status: TaskStatus + _ status: ObservableTaskStatus ) { switch status { case .idle: @@ -173,7 +173,7 @@ extension TaskStatusDescription { } } -extension TaskStatus { +extension ObservableTaskStatus { @_disfavoredOverload public static func == (lhs: Self, rhs: TaskStatusDescription.Comparison) -> Bool { TaskStatusDescription(lhs) == rhs diff --git a/Sources/Merge/Intramodular/Observable Tasks/SwiftUI/TaskButton-Initializers.swift b/Sources/Merge/Intramodular/Observable Tasks/SwiftUI/TaskButton-Initializers.swift index 5cfe520..6014ed2 100644 --- a/Sources/Merge/Intramodular/Observable Tasks/SwiftUI/TaskButton-Initializers.swift +++ b/Sources/Merge/Intramodular/Observable Tasks/SwiftUI/TaskButton-Initializers.swift @@ -9,7 +9,7 @@ import SwiftUI extension TaskButton { public init( action: @escaping () -> AnyTask, - @ViewBuilder label: @escaping (TaskStatus) -> Label + @ViewBuilder label: @escaping (ObservableTaskStatus) -> Label ) { self.action = { action() } self.label = label @@ -17,7 +17,7 @@ extension TaskButton { public init( action: @escaping () -> Task, - @ViewBuilder label: @escaping (TaskStatus) -> Label + @ViewBuilder label: @escaping (ObservableTaskStatus) -> Label ) where Error == Swift.Error { self.init( action: { () -> AnyTask in @@ -55,7 +55,7 @@ extension TaskButton { public init( action: @escaping @MainActor @Sendable () async -> Success, priority: TaskPriority? = .userInitiated, - @ViewBuilder label: @escaping (TaskStatus) -> Label + @ViewBuilder label: @escaping (ObservableTaskStatus) -> Label ) where Error == Never { self.init { Task(priority: priority) { @MainActor in @@ -85,7 +85,7 @@ extension TaskButton { public init( action: @escaping @MainActor @Sendable () async throws -> Success, priority: TaskPriority? = .userInitiated, - @ViewBuilder label: @escaping (TaskStatus) -> Label + @ViewBuilder label: @escaping (ObservableTaskStatus) -> Label ) where Error == Swift.Error { self.init { Task(priority: priority) { @MainActor in @@ -115,7 +115,7 @@ extension TaskButton { public init( priority: TaskPriority?, action: @escaping @MainActor @Sendable () async throws -> Success, - @ViewBuilder label: @escaping (TaskStatus) -> Label + @ViewBuilder label: @escaping (ObservableTaskStatus) -> Label ) where Error == Swift.Error { self.init { Task(priority: priority) { @MainActor in @@ -130,7 +130,7 @@ extension TaskButton { public init( priority: TaskPriority?, action: @escaping @MainActor @Sendable () async throws -> Success, - @ViewBuilder label: @escaping (TaskStatus) -> Label + @ViewBuilder label: @escaping (ObservableTaskStatus) -> Label ) where Success == Void, Error == Swift.Error { self.init { Task(priority: priority) { @MainActor in @@ -138,7 +138,7 @@ extension TaskButton { } .convertToObservableTask() } label: { status in - let status: TaskStatus = status + let status: ObservableTaskStatus = status .map({ _ in Swallow.EmptyValue() }) .mapError({ AnyError(erasing: $0) }) @@ -166,7 +166,7 @@ extension TaskButton { extension TaskButton { public init( action: @escaping () -> P, - @ViewBuilder label: @escaping (TaskStatus) -> Label + @ViewBuilder label: @escaping (ObservableTaskStatus) -> Label ) where P.Output == Success, P.Failure == Error { self.init(action: { action().convertToTask() }, label: label) } @@ -198,7 +198,7 @@ extension TaskButton { extension TaskButton where Success == Void { public init( action: @escaping () -> P, - @ViewBuilder label: @escaping (TaskStatus) -> Label + @ViewBuilder label: @escaping (ObservableTaskStatus) -> Label ) where P.Output == Success, P.Failure == Error { self.init(action: { action().reduceAndMapTo(()).convertToTask() }, label: label) } @@ -212,7 +212,7 @@ extension TaskButton where Success == Void { public init( action: @escaping () -> P, - @ViewBuilder label: @escaping (TaskStatus) -> Label + @ViewBuilder label: @escaping (ObservableTaskStatus) -> Label ) where P.Output == Success, P.Failure == Error { self.init(action: { action().reduceAndMapTo(()).convertToTask() }, label: label) } @@ -277,7 +277,7 @@ extension TaskButton where Label == Text { extension TaskButton where Success == Void, Error == Swift.Error { public init( action: @escaping () throws -> Void, - @ViewBuilder label: @escaping (TaskStatus) -> Label + @ViewBuilder label: @escaping (ObservableTaskStatus) -> Label ) { self.init( action: { () -> AnySingleOutputPublisher in diff --git a/Sources/Merge/Intramodular/Observable Tasks/SwiftUI/TaskButton.swift b/Sources/Merge/Intramodular/Observable Tasks/SwiftUI/TaskButton.swift index d21eba5..fa6e595 100644 --- a/Sources/Merge/Intramodular/Observable Tasks/SwiftUI/TaskButton.swift +++ b/Sources/Merge/Intramodular/Observable Tasks/SwiftUI/TaskButton.swift @@ -16,7 +16,7 @@ public struct TaskButton: View { @Environment(\.taskRestartable) package var taskRestartable package let action: () -> AnyTask - package let label: (TaskStatus) -> Label + package let label: (ObservableTaskStatus) -> Label package var existingTask: (any ObservableTask)? @State package var lastTask: AnyTask? diff --git a/Sources/Merge/Intramodular/ObservableObjectX.swift b/Sources/Merge/Intramodular/Observation/ObjectDidChangeObservableObject.swift similarity index 87% rename from Sources/Merge/Intramodular/ObservableObjectX.swift rename to Sources/Merge/Intramodular/Observation/ObjectDidChangeObservableObject.swift index 4cccac6..04b5d91 100644 --- a/Sources/Merge/Intramodular/ObservableObjectX.swift +++ b/Sources/Merge/Intramodular/Observation/ObjectDidChangeObservableObject.swift @@ -7,7 +7,7 @@ import Combine import Swallow /// A type of object with a publisher that emits after the object has changed. -public protocol _ObservableObjectX: ObservableObject { +public protocol ObjectDidChangeObservableObject: ObservableObject { associatedtype ObjectDidChangePublisher: Publisher = _ObjectDidChangePublisher where ObjectDidChangePublisher.Failure == Never /// A publisher that emits _after_ the object has changed. @@ -18,7 +18,7 @@ public protocol _ObservableObjectX: ObservableObject { private var _objectDidChange_objcAssociationKey: UInt = 0 -extension _ObservableObjectX where ObjectDidChangePublisher == _ObjectDidChangePublisher { +extension ObjectDidChangeObservableObject where ObjectDidChangePublisher == _ObjectDidChangePublisher { public var objectDidChange: ObjectDidChangePublisher { objc_sync_enter(self) @@ -90,7 +90,7 @@ public final class _ObjectDidChangePublisher: Publisher, Subject, @unchecked Sen extension ObservableObject { public func _makeObjectDidChangePublisher() -> AnyPublisher { - if let _self = self as? (any _ObservableObjectX) { + if let _self = self as? (any ObjectDidChangeObservableObject) { return _self._opaque_objectDidChange } else { return objectWillChange @@ -101,8 +101,12 @@ extension ObservableObject { } } -extension _ObservableObjectX { +extension ObjectDidChangeObservableObject { public var _opaque_objectDidChange: AnyPublisher { objectDidChange.mapTo(()).eraseToAnyPublisher() } } + +// MARK: - Deprecated + +public typealias _ObservableObjectX = ObjectDidChangeObservableObject diff --git a/Sources/Merge/Intramodular/Process/SystemShell.swift b/Sources/Merge/Intramodular/Process/SystemShell.swift index 744752d..c981a15 100644 --- a/Sources/Merge/Intramodular/Process/SystemShell.swift +++ b/Sources/Merge/Intramodular/Process/SystemShell.swift @@ -5,11 +5,6 @@ import Foundation import Swallow -@available(macOS 11.0, iOS 14.0, watchOS 7.0, tvOS 14.0, *) -@available(macCatalyst, unavailable) -@available(*, deprecated, renamed: "SystemShell") -public typealias Shell = SystemShell - @available(macOS 11.0, iOS 14.0, watchOS 7.0, tvOS 14.0, *) @available(macCatalyst, unavailable) public final class SystemShell { @@ -110,3 +105,10 @@ public actor _ShellActor { public static let shared: ActorType = ActorType() } + +// MARK: - Deprecated + +@available(macOS 11.0, iOS 14.0, watchOS 7.0, tvOS 14.0, *) +@available(macCatalyst, unavailable) +@available(*, deprecated, renamed: "SystemShell") +public typealias Shell = SystemShell diff --git a/Sources/Merge/Intramodular/Property Wrappers/PublishedObject.swift b/Sources/Merge/Intramodular/Property Wrappers/PublishedObject.swift index 0a6d3f8..bda2786 100644 --- a/Sources/Merge/Intramodular/Property Wrappers/PublishedObject.swift +++ b/Sources/Merge/Intramodular/Property Wrappers/PublishedObject.swift @@ -164,7 +164,7 @@ extension PublishedObject: Publisher { subscriber: S ) { _assignmentPublisher.flatMap { (value: Value) -> AnyPublisher in - if let _value = value as? (any _ObservableObjectX) { + if let _value = value as? (any ObjectDidChangeObservableObject) { return Publishers.MergeMany(Just(value).eraseToAnyPublisher(), _value._opaque_objectDidChange.mapTo(value).eraseToAnyPublisher()).eraseToAnyPublisher() } else { return Just(value).eraseToAnyPublisher()