Skip to content

Latest commit

 

History

History
72 lines (55 loc) · 5.75 KB

File metadata and controls

72 lines (55 loc) · 5.75 KB

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.