AsyncExtensions

0.9.2

AsyncExtensions aims to mimic Swift Combine operators for async sequences.
lhoward/AsyncExtensions

What's New

2025-01-03T21:04:34Z
  • don't import Foundation if FoundationEssentials/Dispatch
  • remove Package.resolved

NB: 0.9.1 was incorrectly tagged

AsyncExtensions

Build Status AsyncExtensions supports Swift Package Manager (SPM)

AsyncExtensions provides a collection of operators that intends to ease the creation and combination of AsyncSequences.

AsyncExtensions can be seen as a companion to Apple swift-async-algorithms, which provides operators that the community needs and are not provided by Apple.

Adding AsyncExtensions as a Dependency

To use the AsyncExtensions library in a SwiftPM project, add the following line to the dependencies in your Package.swift file:

.package(url: "https://github.com/sideeffect-io/AsyncExtensions"),

Include "AsyncExtensions" as a dependency for your executable target:

.target(name: "<target>", dependencies: ["AsyncExtensions"]),

Finally, add import AsyncExtensions to your source code.

Features

Channels

Subjects

Combiners

  • merge(_:): Merges any AsyncSequence into an AsyncSequence of elements
  • withLatest(_:): Combines elements from self with the last known element from an other AsyncSequence
  • withLatest(_:_:): Combines elements from self with the last known elements from two other async sequences

Creators

Operators

  • handleEvents(): Executes closures during the lifecycle of the self
  • mapToResult(): Maps elements and failure from self to a Result type
  • prepend(_:): Prepends an element to self
  • scan(_:_:): Transforms elements from self by providing the current element to a closure along with the last value returned by the closure
  • assign(_:): Assigns elements from self to a property
  • collect(_:): Iterate over elements from self and execute a closure
  • eraseToAnyAsyncSequence(): Erases to AnyAsyncSequence
  • flatMapLatest(_:): Transforms elements from self into a AsyncSequence and republishes elements sent by the most recently received AsyncSequence when self is an AsyncSequence of AsyncSequence
  • multicast(_:): Shares values from self to several consumers thanks to a provided Subject
  • share(): Shares values from self to several consumers
  • switchToLatest(): Republishes elements sent by the most recently received AsyncSequence when self is an AsyncSequence of AsyncSequence

More operators and extensions are to come. Pull requests are of course welcome.

Description

  • Swift Tools 6.0.0
View More Packages from this Author

Dependencies

Last updated: Wed May 28 2025 03:12:09 GMT-0900 (Hawaii-Aleutian Daylight Time)