Contents

xcessentials/xcepipeline

Custom pipeline operators for easy chaining in Swift

Custom Operators

| Operator | Description | |----------|-------------| | ./ | Pass through — transform value and continue the chain | | .? | Pass through unwrapped — unwrap optional, then transform | | .+ | Mutate — modify value in place via inout | | .- | Inspect — observe value without modifying it | | . | End chain — transform and return final result | | .? | End chain unwrapped — unwrap optional, transform, and return | | .! | Ensure condition — assert a condition or throw | | ?! | Unwrap or throw — unwrap optional or throw an error |

Async/Await Support

All operators have async and async throws variants, making them compatible with actors and structured concurrency.

SimpleWrapper & `take()`

Use take() as an entry point to wrap any value in a SimpleWrapper, which provides:

  • map — transform the wrapped value (sync + async)
  • inspect — observe the value without changing it (sync + async)
  • mutate — modify the value in place (sync + async)

Combine Helpers

Convenience extensions for working with Combine publishers:

  • waitForFirstResult() — await the first published value
  • observe() — subscribe with simplified callbacks
  • executeNow() — immediately execute and observe
  • ensureMainThread() — receive values on the main thread
  • mutate() — apply mutations via publisher output

Error Types

  • Pipeline.FailedConditionCheck — thrown when a .! condition fails
  • Pipeline.CompletedWithoutValue — thrown when a publisher completes without emitting a value

How to install

Install using SwiftPM.

.package(url: "https://github.com/XCEssentials/XCEPipeline.git", from: "4.0.0")

Package Metadata

Repository: xcessentials/xcepipeline

Default branch: master

README: README.md