https://github.com/przemek-jablonski/casimir
Complex extension suite for Multiplatform Stack (SwiftUI, Combine, SPM, Async/Await)
https://github.com/przemek-jablonski/casimir
combine-framework extensions swift swiftui
Last synced: about 1 month ago
JSON representation
Complex extension suite for Multiplatform Stack (SwiftUI, Combine, SPM, Async/Await)
- Host: GitHub
- URL: https://github.com/przemek-jablonski/casimir
- Owner: przemek-jablonski
- License: mit
- Created: 2019-11-25T17:04:05.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-08-03T15:45:15.000Z (almost 3 years ago)
- Last Synced: 2025-01-24T22:12:00.694Z (over 1 year ago)
- Topics: combine-framework, extensions, swift, swiftui
- Language: Swift
- Homepage:
- Size: 373 KB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Casimir
> "Met it wooden 🪵 and made it brickwalled 🧱" (Casimir the Great)
Prebuilt and prepackaged code suite for rapid development using the multiplatform Apple Stack (SwiftUI, Combine, Concurrency)
## Usage
Some of the features:
- Easy architectural elements, like `ModelProtocol`, `Randomable`, `Selectable` and `LocalizedString`.
- Out-of-the-box custom loggers, such as logger for sending diagnostic data to Firebase as non-fatals.
- Custom Combine operators closing the gap with `Rx*`, such as `WithPrevious`, `PreventCompletion`, `Single`, `On` or `Retry`.
- Streamlining API for testing `Publisher` streams using `TestScheduler` and `TestSequence`.
- Hundreds of extensions to Apple's `Foundation`, including custom `Math` operations like `lerp` and also `LoremIpsum`s, `CURL` or `Errors`.
- Expanding core Apple APIs with reactive Combine support
- and more...
## Installation
Add dependency to the project:
```swift
dependencies: [
...
.package(url: "https://github.com/przemek-jablonski/Casimir.git", exact: "6.0.0")
]
```
Enable core library (`Casimir`):
```swift
.target(
name: "YourLibrary",
dependencies: [
.product(name: "Casimir", package: "Casimir"),
]
),
```
Enable testing library (`Testimir`):
```swift
.testTarget(
name: "YourLibraryTests",
dependencies: [
.product(name: "Testimir", package: "Casimir"),
]
),
```
## Platform Availability
iOS 15.0
iPadOS 15.0
tvOS 15.0
macOS 12.0
watchOS 8.0
also compliant with Mac Catalyst