The AsyncExtensions target is a growing collection of useful functions and classes that take advantage of Swift's new Concurrency features.
The AsyncExtensions package also inlcudes the AsyncTestExtensions target, which contains async-friendly wrappers around XCTest assertions.
AsyncInputStream: A convenient wrapper around
InputStreamallowing for simple, type-safe access to stream data.
AsyncOutputStream: A convenient wrapper around
OutputStreamallowing for simple, type-safe streaming of data.
Publisher.allValues: Creates an
AsyncStreamfrom a Combine Publisher. It buffers all of the publisher's output, ensuring the
AsyncStreamwill produce everything the publisher publishes.
Future: A thread-safe implemention of a future that is useful when briding traditional Swift code with code employing Swift Concurrency.
Sequence.concurrentMap(): Extensions allowing for applying async transformations to
TaskStore: A thread-safe store for
Task, which can help when migrating from Combine publishers to Swift Concurrency.
TimeoutError: A simple error intending to represent a timeout. Modelled after
To use AsyncExtensions, add a dependency to your Package.swift file:
let package = Package( dependencies: [ .package( url: "https://github.com/shareup/async-extensions.git", from: "4.3.0" ) ] )
To use AsyncTestExtensions in a test target, add it as a dependency:
.testTarget( name: "MyTests", dependencies: [ .product(name: "AsyncTestExtensions", package: "async-extensions") ] )
The license for AsyncExtensions is the standard MIT licence. You can find it in the LICENSE file.
SequenceExtensions were heavily inspired by CollectionConcurrencyKit by John Sundell at https://github.com/JohnSundell/CollectionConcurrencyKit.
The main serial executor XCTestCase extensions were taken from swift-concurrency-extras by Point-Free at https://github.com/pointfreeco/swift-concurrency-extras.
|Last commit: 1 week ago|
XCTestCase.yield()for easy and reliable async tests
Publisher.asyncValuesto create an
AsyncStreamthat only holds onto the most recent value