
Opinionated architecture library enables concurrent, reactive state management, platform-independent routing, and file handling. Includes typed result type for railway-oriented programming and helpful extensions.
An opinionated architecture/library for Kotlin Multiplatform development with an implementation of the VISCE architecture
OSKit is primarily a tool for us here at Outside Source. That being said, feel free to use this library in your own code. We strive to adhere to semantic versioning.
Contributions are appreciated and welcome, but we are a small team and make no guarantees that your changes will be implemented.
https://outsidesource.github.io/OSKit-KMP/
Interactor An easy-to-use, concurrent, and reactive state management systemRouter Platform independent routing with backstack management, deep link, and transition supportKmpFs Platform independent library for sandboxed and non-sandboxed file system interactionsKmpCapabilities Platform independent permissions and service enablement for common capabilities (Bluetooth, Location)Outcome A result type with helpers for better railway oriented programmingCurrently supported platforms include:
implementation("com.outsidesource:oskit-kmp:5.0.0")
https://github.com/outsidesource/OSKit-Example-App-KMP
Promise helpersJsInterop helpersKmpCapabilities for testing for permissions and enablement of some common platform services (Bluetooth, Location)KmpFs Supports internal (sandboxed) and external (non-sandboxed) filesystem interactionsIKmpIoSource and IKmpIoSink interfaces and implementations for cross-platform asynchronous file interactions.KmpScreenWakeLock Allows preventing a user's screen from sleepingKmpDispatchers for a common IO dispatcherDeferred<t>.awaitOutcome()Queue for creating a queue of sequentially executing coroutinesBytesExt Allows converting common data types to and from byte arraysLocalDateTime.kmpFormat() For a cross-platform date-time formatterKmpUrl A multiplatform URL parserAny?.printed() and printAll helpersPlatform to add WebBrowser
Router has been reworked and added a new transactional API for more flexibility and to clean up a lot of rarely used API surface
IWebRoute for handling path changes in the browserKMP changed to Kmp)KMPStorage to KmpKvStore
Coordinator has been reworked to fit the new Transaction API implemented in Router.KmpDeepLink was deemed unnecessary and was removedKMPFileHandler was renamed/repurposed into KmpFs
KMPFileRef was renamed/repurposed into KmpFsRef
LazyComputed was changed to use the invoke operator instead of value() functionOutcome.unwrapOrReturn() was changed to pass a parameter instead of this for the errorRouter APIKMPStorage was renamed/reworked into KmpKvStore
FileUtil was renamed to FsUtil
Outcome.unwrapOrElse to Outcome.unwrapOrReturn
createInteractor()An opinionated architecture/library for Kotlin Multiplatform development with an implementation of the VISCE architecture
OSKit is primarily a tool for us here at Outside Source. That being said, feel free to use this library in your own code. We strive to adhere to semantic versioning.
Contributions are appreciated and welcome, but we are a small team and make no guarantees that your changes will be implemented.
https://outsidesource.github.io/OSKit-KMP/
Interactor An easy-to-use, concurrent, and reactive state management systemRouter Platform independent routing with backstack management, deep link, and transition supportKmpFs Platform independent library for sandboxed and non-sandboxed file system interactionsKmpCapabilities Platform independent permissions and service enablement for common capabilities (Bluetooth, Location)Outcome A result type with helpers for better railway oriented programmingCurrently supported platforms include:
implementation("com.outsidesource:oskit-kmp:5.0.0")
https://github.com/outsidesource/OSKit-Example-App-KMP
Promise helpersJsInterop helpersKmpCapabilities for testing for permissions and enablement of some common platform services (Bluetooth, Location)KmpFs Supports internal (sandboxed) and external (non-sandboxed) filesystem interactionsIKmpIoSource and IKmpIoSink interfaces and implementations for cross-platform asynchronous file interactions.KmpScreenWakeLock Allows preventing a user's screen from sleepingKmpDispatchers for a common IO dispatcherDeferred<t>.awaitOutcome()Queue for creating a queue of sequentially executing coroutinesBytesExt Allows converting common data types to and from byte arraysLocalDateTime.kmpFormat() For a cross-platform date-time formatterKmpUrl A multiplatform URL parserAny?.printed() and printAll helpersPlatform to add WebBrowser
Router has been reworked and added a new transactional API for more flexibility and to clean up a lot of rarely used API surface
IWebRoute for handling path changes in the browserKMP changed to Kmp)KMPStorage to KmpKvStore
Coordinator has been reworked to fit the new Transaction API implemented in Router.KmpDeepLink was deemed unnecessary and was removedKMPFileHandler was renamed/repurposed into KmpFs
KMPFileRef was renamed/repurposed into KmpFsRef
LazyComputed was changed to use the invoke operator instead of value() functionOutcome.unwrapOrReturn() was changed to pass a parameter instead of this for the errorRouter APIKMPStorage was renamed/reworked into KmpKvStore
FileUtil was renamed to FsUtil
Outcome.unwrapOrElse to Outcome.unwrapOrReturn
createInteractor()