From b28db6158f0cc351cfea8de0cf7325dca71ce241 Mon Sep 17 00:00:00 2001 From: Hiroyuki Kusu Date: Thu, 7 Nov 2024 17:18:39 +0900 Subject: [PATCH 1/4] Update README --- README.md | 382 +------------------------- images/create_release_and_tag.png | Bin 27866 -> 0 bytes images/draft_release.png | Bin 6825 -> 0 bytes images/github_releases.png | Bin 6137 -> 0 bytes images/github_secrets.png | Bin 27678 -> 0 bytes images/published_on_maven_central.png | Bin 123511 -> 0 bytes images/release_settings.png | Bin 19827 -> 0 bytes 7 files changed, 1 insertion(+), 381 deletions(-) delete mode 100644 images/create_release_and_tag.png delete mode 100644 images/draft_release.png delete mode 100644 images/github_releases.png delete mode 100644 images/github_secrets.png delete mode 100644 images/published_on_maven_central.png delete mode 100644 images/release_settings.png diff --git a/README.md b/README.md index 3a35725..c6a123b 100644 --- a/README.md +++ b/README.md @@ -1,381 +1 @@ -[![official project](http://jb.gg/badges/official.svg)](https://github.com/JetBrains#jetbrains-on-github) - -# Multiplatform library template - -## What is it? - -This repository contains a simple library project, intended to demonstrate a [Kotlin Multiplatform](https://kotlinlang.org/docs/multiplatform.html) library that is deployable to [Maven Central](https://central.sonatype.com/). - -The library has only one function: generate the [Fibonacci sequence](https://en.wikipedia.org/wiki/Fibonacci_sequence) starting from platform-provided numbers. Also, it has a test for each platform just to be sure that tests run. - -Note that no other actions or tools usually required for the library development are set up, such as [tracking of backwards compatibility](https://kotlinlang.org/docs/jvm-api-guidelines-backward-compatibility.html#tools-designed-to-enforce-backward-compatibility), explicit API mode, licensing, contribution guideline, code of conduct and others. You can find a guide for best practices for designing Kotlin libraries [here](https://kotlinlang.org/docs/api-guidelines-introduction.html). - -## How to publish? - -This guide describes the steps of publishing a library built with Kotlin Multiplatform to the [Maven Central repository](https://central.sonatype.com/). To publish your library, you’ll need to: - -* Set up credentials, including an account on Maven Central and a PGP key to use for signing. -* Configure the publishing plugin in your library’s project. -* Provide your credentials to the publishing plugin so it can sign and upload your artifacts. -* Run the publication task, either locally or using continuous integration. - -This guide assumes that you are: - -- Creating an open-source library. -- Using macOS or Linux. If you are a Windows user, use [GnuPG or Gpg4win](https://gnupg.org/download) to generate a key pair. -- Either not registered on Maven Central yet, or have an existing account that’s suitable for [publishing to the Central Portal](https://central.sonatype.org/publish-ea/publish-ea-guide/) (created after March 12th, 2024, or migrated to the Central Portal by their support). -- Publishing your library in a GitHub repository. -- Using GitHub Actions for continuous integration. - -Most of the steps here are still applicable if you’re using a different setup, but there might be some differences you need to account for. An [important limitation](https://kotlinlang.org/docs/multiplatform-publish-lib.html#host-requirements) is that Apple targets must be built on a machine with macOS. - -Throughout this guide, we’ll use the [https://github.com/kotlin-hands-on/fibonacci](https://github.com/kotlin-hands-on/fibonacci) repository as an example. You can refer to the code of this repository to see how the publishing setup works. You **must replace all example values with your own** as you’re configuring your project. - -### Prepare accounts and credentials - -#### Register a namespace - -Artifacts published to Maven repositories are identified by their coordinates, for example `com.example:library:1.0.0`. These coordinates are made up of three parts, separated by colons: the `groupId`, `artifactId`, and `version`. - -As a first step for publishing to Maven Central, you’ll need to have a verified namespace. The `groupId` of the artifacts you publish will have to start with the name of your verified namespace. For example, if you register the `com.example` namespace, you’ll be able to publish artifacts with the `groupId` set to `com.example` or `com.example.libraryname`. - -To get started with publishing to Maven Central, sign in (or create a new account) on the [Maven Central](https://central.sonatype.com/) portal. Once signed in, navigate to [Namespaces](https://central.sonatype.com/publishing/namespaces) under your profile, and click the Add Namespace button. Here, you can register a namespace for your artifacts, either based on your GitHub account or a domain name that you own. - -**For a GitHub repository** -Using your GitHub account to create a namespace is a good option if you don’t own a domain name to use for publication. To create a namespace based on your GitHub account: - -1. Enter `io.github.` as your namespace. For example, `io.github.kotlin-hands-on`. -2. Copy the Verification Key displayed. -3. On GitHub, create a new repository with your GitHub account with the verification key as the repository’s name. For example, `http://github.com/kotlin-hands-on/ex4mpl3c0d`. -4. Navigate back to Maven Central, and click on the Verify Namespace button. After verification succeeds you can delete the repository you’ve created. - -**For a domain name** -To use a domain name that you own as your namespace: - -1. Enter your domain as the namespace using a reverse-DNS form. If your domain is `example.com`, enter `com.example`. -2. Copy the Verification Key displayed. -3. Create a new DNS TXT record with the verification key as its contents. See [Maven Central’s FAQ](https://central.sonatype.org/faq/how-to-set-txt-record/) for more information on how to do this with various domain registrars. -4. Navigate back to Maven Central, and click on the Verify Namespace button. After verification succeeds you can delete the TXT record you’ve created. - -#### Generate a Key Pair - -Artifacts published to Maven Central [must be signed with a PGP signature](https://central.sonatype.org/publish/requirements/gpg/), which allows users to validate the origin of artifacts. - -To get started with signing, you’ll need to generate a key pair: - -* The **private key** is used to sign your artifacts, and should never be shared with others. -* The **public key** can be used by others to validate the signature of the artifacts, and should be published. - -The `gpg` tool that can manage signatures for you is available from [their website](https://gnupg.org/download/index.html). You can also install it using package managers such as [Homebrew](https://brew.sh/): - -```bash -brew install gpg -``` -Generate a key pair with the following command, and fill in the required details when prompted. - -```bash -gpg --full-generate-key -``` - -Choose the recommended defaults for the type of key to be created. You can leave these selections empty and press Enter to accept the default values. - -> [!NOTE] -> At the time of writing, this is `ECC (sign and encrypt)` with `Curve 25519`. Older versions of `gpg` might default to `RSA` with a `3072` bit key size. - -Next, you’ll be prompted to set the expiration of the key. If you choose to create a key that automatically expires after a set amount of time, you’ll need to [extend its validity](https://central.sonatype.org/publish/requirements/gpg/#dealing-with-expired-keys) when it expires. - -You will be asked for your real name, email, and a comment. You can leave the comment empty. - -```text -Please select what kind of key you want: - (1) RSA and RSA - (2) DSA and Elgamal - (3) DSA (sign only) - (4) RSA (sign only) - (9) ECC (sign and encrypt) *default* - (10) ECC (sign only) - (14) Existing key from card -Your selection? 9 - -Please select which elliptic curve you want: - (1) Curve 25519 *default* - (4) NIST P-384 - (6) Brainpool P-256 -Your selection? 1 - -Please specify how long the key should be valid. - 0 = key does not expire - = key expires in n days - w = key expires in n weeks - m = key expires in n months - y = key expires in n years -Key is valid for? (0) 0 -Key does not expire at all - -Is this correct? (y/N) y -GnuPG needs to construct a user ID to identify your key. -``` - -You will be asked for a passphrase to encrypt the key, which you have to repeat. Keep this passphrase stored securely and privately. You’ll be using it later to access the private key. - -Let’s take a look at the key we’ve created with the following command: - -```bash -gpg --list-keys -``` - -The output will look something like this: - -```text -pub ed25519 2024-10-06 [SC] - F175482952A225BFC4A07A715EE6B5F76620B385CE -uid [ultimate] Your name - sub cv25519 2024-10-06 [E] -``` - -You’ll need to use the long alphanumerical identifier of your key displayed here in the following steps. - -#### Upload the public key - -You need to [upload the public key to a keyserver](https://central.sonatype.org/publish/requirements/gpg/#distributing-your-public-key) for it to be accepted by Maven Central. There are multiple available keyservers, we’ll use `keyserver.ubuntu.com` as a default choice. - -Run the following command to upload your public key using `gpg`, **substituting your own keyid** in the parameters: - -```bash -gpg --keyserver keyserver.ubuntu.com --send-keys F175482952A225BFC4A07A715EE6B5F76620B385CE -``` - -#### Export your private key - -To let your Gradle project access your private key, you’ll need to export it to a file. Use the following command, **passing in your own keyid** as a parameter. You will be prompted to enter the passphrase you’ve used when creating the key. - -```bash -gpg --armor --export-secret-keys F175482952A225BFC4A07A715EE6B5F76620B385CE > key.gpg -``` - -This will create a `key.gpg` file which contains your private key. - -> [!CAUTION] -> Never share a private key with anyone. - -If you check the contents of the file, you should see contents similar to this: - -```text ------BEGIN PGP PRIVATE KEY BLOCK----- -lQdGBGby2X4BEACvFj7cxScsaBpjty60ehgB6xRmt8ayt+zmgB8p+z8njF7m2XiN -... -bpD/h7ZI7FC0Db2uCU4CYdZoQVl0MNNC1Yr56Pa68qucadJhY0sFNiB63KrBUoiO ------END PGP PRIVATE KEY BLOCK----- -``` - -#### Generate the user token - -Your project will also need to authenticate with Maven Central to upload artifacts. On the Central Portal, navigate to the [Account](https://central.sonatype.com/account) page, and click on *Generate User Token*. - -The output will look like the example below, containing a username and a password. Store this information securely, as it can’t be viewed again on the Central Portal. If you lose these credentials, you’ll need to generate new ones later. - -```xml - - ${server} - l3nfaPmz - gh9jT9XfnGtUngWTZwTu/8241keYdmQpipqLPRKeDLTh - -``` - -### Configure the project - -#### Prepare your library project - -If you started developing your library from a template project, this is a good time to change any default names in the project to match your own library’s name. This includes the name of your library module, and the name of the root project in your top-level `build.gradle.kts` file. - -If you have an Android target in your project, you should follow the [steps to prepare your Android library release](https://developer.android.com/build/publish-library/prep-lib-release). This, at a minimum, requires you to [specify an appropriate namespace](https://developer.android.com/build/publish-library/prep-lib-release#choose-namespace) for your library, so that a unique R class will be generated when their resources are compiled. Notice that the namespace is different from the Maven namespace created in the [Register a namespace](#register-a-namespace) section above. - -```kotlin -// build.gradle.kts - -android { - namespace = "io.github.kotlinhandson.fibonacci" -} -``` - -#### Set up the publishing plugin - -This guide uses [vanniktech/gradle-maven-publish-plugin](https://github.com/vanniktech/gradle-maven-publish-plugin) to help with publications to Maven Central. You can read more about the advantages of the plugin [here](https://vanniktech.github.io/gradle-maven-publish-plugin/#advantages-over-maven-publish). See the [plugin’s documentation](https://vanniktech.github.io/gradle-maven-publish-plugin/central/) to learn more about its usage and available configuration options. - -To add the plugin to your project, add the following line in the plugins block, in your library module’s `build.gradle.kts` file: - -```kotlin -// build.gradle.kts - -plugins { - id("com.vanniktech.maven.publish") version "0.29.0" -} -``` - -*Note: for the latest available version of the plugin, check its [releases page](https://github.com/vanniktech/gradle-maven-publish-plugin/releases).* - -In the same file, add the following configuration. Customize all these values appropriately for your library. - -```kotlin -// build.gradle.kts - -mavenPublishing { - publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL) - - signAllPublications() - - coordinates(group.toString(), "fibonacci", version.toString()) - - pom { - name = "Fibonacci library" - description = "A mathematics calculation library." - inceptionYear = "2024" - url = "https://github.com/kotlin-hands-on/fibonacci/" - licenses { - license { - name = "The Apache License, Version 2.0" - url = "https://www.apache.org/licenses/LICENSE-2.0.txt" - distribution = "https://www.apache.org/licenses/LICENSE-2.0.txt" - } - } - developers { - developer { - id = "kotlin-hands-on" - name = "Kotlin Developer Advocate" - url = "https://github.com/kotlin-hands-on/" - } - } - scm { - url = "https://github.com/kotlin-hands-on/fibonacci/" - connection = "scm:git:git://github.com/kotlin-hands-on/fibonacci.git" - developerConnection = "scm:git:ssh://git@github.com/kotlin-hands-on/fibonacci.git" - } - } -} -``` - -Note that it’s also possible to use Gradle properties instead. - -Some of the most important, required settings here are: - -* The `coordinates`, which specify the `groupId`, `artifactId`, and `version` of your library. -* The [license](https://central.sonatype.org/publish/requirements/#license-information) that you’re publishing your library under. -* The [developer information](https://central.sonatype.org/publish/requirements/#developer-information) which lists the authors of the library. -* [SCM (Source Code Management) information](https://central.sonatype.org/publish/requirements/#scm-information), which specifies where the sources of your library are available. - -### Publish to Maven Central from Continuous Integration - -#### Add a GitHub Actions workflow to your project - -You can set up continuous integration which builds and publishes your library for you. We’ll use [GitHub Actions](https://docs.github.com/en/actions) as an example. - -To get started, add the following workflow to your repository, in the `.github/workflows/publish.yml` file. - -```yaml -# .github/workflows/publish.yml - -name: Publish -on: - release: - types: [released, prereleased] -jobs: - publish: - name: Release build and publish - runs-on: macOS-latest - steps: - - name: Check out code - uses: actions/checkout@v4 - - name: Set up JDK 21 - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: 21 - - name: Publish to MavenCentral - run: ./gradlew publishToMavenCentral --no-configuration-cache - env: - ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }} - ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - ORG_GRADLE_PROJECT_signingInMemoryKeyId: ${{ secrets.SIGNING_KEY_ID }} - ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_PASSWORD }} - ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.GPG_KEY_CONTENTS }} -``` - -After committing and pushing this change, this workflow will run automatically when you create a release (including a pre-release) in the GitHub repository hosting your project. It checks out the current version of your code, sets up a JDK, and then runs the `publishToMavenCentral` Gradle task. - -> [!NOTE] -> Alternatively, you could configure the workflow to [trigger when a tag is pushed](https://stackoverflow.com/a/61892639) to your repository. -> -> The script above disables Gradle [configuration cache](https://docs.gradle.org/current/userguide/configuration_cache.html) for the publication task by adding `--no-configuration-cache` to the Gradle command, as the publication plugin does not support it (see this [open issue](https://github.com/gradle/gradle/issues/22779)). -> -> Reminder: When using `publishToMavenCentral`, you’ll still need to check and release your deployment manually on the website, as described in the previous section. You may use `publishAndReleaseToMavenCentral` instead for a fully automated release. - -This action will need your signing details and your Maven Central credentials. These will be configured as GitHub Actions secrets in the next section. The configuration of the workflow above takes these secrets and places them into environment variables, which will make them available to the Gradle build automatically. - -### Add secrets to GitHub - -To use the keys and credentials required for publication in your GitHub Action workflow while keeping them private, you need to place those values into secrets. From your GitHub repository, go to `Settings` \> `(Security) Secrets and variables > Actions`. - -Click on the `New repository secret` button, and add the following secrets: - -- `MAVEN_CENTRAL_PASSWORD` and `MAVEN_CENTRAL_PASSWORD` are the values generated by the Central Portal website in the [Generate User Token](#generate-the-user-token) section. -- `SIGNING_KEY_ID` is **the last 8 characters** of your signing key’s identifier. -- `SIGNING_PASSWORD` is the passphrase you’ve provided when generating your signing key. -- `GPG_KEY_CONTENTS` should contain the contents of your GPG private key file, which you’ve created earlier in the [Export your private key](#export-your-private-key) section. - -![](/images/github_secrets.png) - -Note again that the names used for these secrets must match those used by the workflow that accesses their values. - -#### Create a release on GitHub - -With the workflow and secrets set up, you’re now ready to [create a release](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository#creating-a-release) that will trigger the publication of your library. - -Go to your GitHub repository’s main page, and click on Releases in the menu in the right sidebar. - -![](/images/github_releases.png) - -Click *Draft a new release*. - -![](/images/draft_release.png) - -Each release creates a new tag. Set the name for the tag to be created, and set a name for the release (these may be identical). Note that setting a version here does not change the version of your coordinates configured in your `build.gradle.kts` file, so you should update that version before creating a new release. - -![](/images/create_release_and_tag.png) - -Double-check the branch you want to target with the release (especially if you want to release from a branch that’s different from your default), and add appropriate release notes for your new version. - -The checkboxes below allow you to mark a release as a pre-release (useful for alpha, beta, or RC versions of a library), or to set the release as the latest available one: - -![](/images/release_settings.png) - -Click the *Publish release* button to create the new release. This will immediately show up on your GitHub repository’s main page. - -Click the Actions tab on the top of your GitHub repository. Here you’ll see the new workflow was triggered by the GitHub release. Click it to see the outputs of the publication task. - -After this task completes successfully, navigate to the [Deployments](https://central.sonatype.com/publishing/deployments) dashboard. You should see a new deployment here. This deployment will be in the *pending* and *validating* states for some time while Maven Central performs checks on it. - -Once your deployment moves to a *validated* state, you should see that it contains all the artifacts you’ve uploaded. If everything looks correct, click the *Publish* button to release these artifacts. - -![](/images/published_on_maven_central.png) - -Note that it will take some time (about 15–30 minutes, usually) after the release for the artifacts to be available publicly on Maven Central. -Also note that the library may be available for use before they are indexed on [the Maven Central website](https://central.sonatype.com/). - -There’s also another task available which both uploads and releases the artifacts automatically once the deployment is verified, without having to manually release them on the website: - -```bash -./gradlew publishAndReleaseToMavenCentral -``` - -**Et voilà, you have successfully published your library to Maven Central.** - -# Next steps -- Share your library with the Kotlin Community in the `#feed` channel in the [Kotlin Slack](https://kotlinlang.slack.com/) (To sign up visit https://kotl.in/slack.) -- Add [shield.io badges](https://shields.io/badges/maven-central-version) to your README. -- Create a documentation site for your project using [Writerside](https://www.jetbrains.com/writerside/). -- Share API documentation for your project using [Dokka](https://kotl.in/dokka). -- Add [Renovate](https://docs.renovatebot.com/) to automatically update dependencies. - -# Other resources -* [Publishing via the Central Portal](https://central.sonatype.org/publish-ea/publish-ea-guide/) -* [Gradle Maven Publish Plugin \- Publishing to Maven Central](https://vanniktech.github.io/gradle-maven-publish-plugin/central/) +# Tart diff --git a/images/create_release_and_tag.png b/images/create_release_and_tag.png deleted file mode 100644 index 737d45e7392efe98b787b60eaa33a9470a878783..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27866 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 G-v1AX@CZf# diff --git a/images/draft_release.png b/images/draft_release.png deleted file mode 100644 index 1687c97820cd3bf9a60b58e05e1c43bf8d50e839..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6825 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

9U6IUISF_asJ=^=C?KJ?Af|!`B)NCofqH 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

V@|_0QQiNd;|=}+pMr_;aysHP8_g& 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≫VUWoolmfjr&Ctn9!*OJu`_UBKHx z2|Eq?5d)9qMK_6SF+^};_!E*eu5SrVdR)dO*J|u~VZI`~va;bgU0ANvXfn?|hSq4B zJ)`aCfH1+NmmS)%VkNDE+i%2JG`G4a8o3-j5xg1#ps)_%MQR1djczsgCQjFni}Q^? zN;pKX+Ee3-ZwDz=fQNndoh!)bWx~PRGnMaxAgT7&Wt!5=JbSE^c?BSVgbf>OVL>bp z$KsS*GCxSnDl|z#WuIk3ylvC3urTVWahdI*Zp-Zo2hUT5(tE3x?xL-n>VfqtXL-U- zwMP|{K8#FF$BNt`^H-)SMOAn{y;~KobthFYN>6m_5;?&u8xYfRoEbYl#*J!V{&B{v zutot75)89I8Z!;5kyV&IUoQ3*jh=Zf`SXSX><>m2IBPn|NuAl2?iV>f zk#e>1`iTW#mw7fvEa6HOFa0EhFDy0uhD7=%>7}vLLGmg2SgSFKbokmCB45C+tbrn9 zGcjj*B>WXT3fvs>iDCW}`eVmT4-6v_5`V-bW8J|`zsjSt#@#IE(*HvZpSwepi51J9 zk`RK#zem0?T?!}Nz-wd=Yy4y)UGKWxRQBr?i08}E86e09BDw$0`uUMFp^wxW|HO>6 z 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

|Hw-trFu-V6uD{KIN!!yBA9#as&jUd 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 Date: Thu, 7 Nov 2024 17:20:25 +0900 Subject: [PATCH 2/4] Remove unused resources --- .../io/yumemi/something/fibiprops.android.kt | 4 ---- .../io/yumemi/something/AndroidFibiTest.kt | 12 ------------ .../kotlin/io/yumemi/something/CustomFibi.kt | 17 ----------------- .../kotlin/io/yumemi/something/FibiTest.kt | 12 ------------ .../kotlin/io/yumemi/something/fibiprops.ios.kt | 4 ---- .../kotlin/io/yumemi/something/IosFibiTest.kt | 12 ------------ 6 files changed, 61 deletions(-) delete mode 100644 library/src/androidMain/kotlin/io/yumemi/something/fibiprops.android.kt delete mode 100644 library/src/androidUnitTest/kotlin/io/yumemi/something/AndroidFibiTest.kt delete mode 100644 library/src/commonMain/kotlin/io/yumemi/something/CustomFibi.kt delete mode 100644 library/src/commonTest/kotlin/io/yumemi/something/FibiTest.kt delete mode 100644 library/src/iosMain/kotlin/io/yumemi/something/fibiprops.ios.kt delete mode 100644 library/src/iosTest/kotlin/io/yumemi/something/IosFibiTest.kt diff --git a/library/src/androidMain/kotlin/io/yumemi/something/fibiprops.android.kt b/library/src/androidMain/kotlin/io/yumemi/something/fibiprops.android.kt deleted file mode 100644 index 9539d16..0000000 --- a/library/src/androidMain/kotlin/io/yumemi/something/fibiprops.android.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.yumemi.something - -actual val firstElement: Int = 1 -actual val secondElement: Int = 2 diff --git a/library/src/androidUnitTest/kotlin/io/yumemi/something/AndroidFibiTest.kt b/library/src/androidUnitTest/kotlin/io/yumemi/something/AndroidFibiTest.kt deleted file mode 100644 index d47d915..0000000 --- a/library/src/androidUnitTest/kotlin/io/yumemi/something/AndroidFibiTest.kt +++ /dev/null @@ -1,12 +0,0 @@ -package io.yumemi.something - -import kotlin.test.Test -import kotlin.test.assertEquals - -class AndroidFibiTest { - - @Test - fun `test 3rd element`() { - assertEquals(3, generateFibi().take(3).last()) - } -} diff --git a/library/src/commonMain/kotlin/io/yumemi/something/CustomFibi.kt b/library/src/commonMain/kotlin/io/yumemi/something/CustomFibi.kt deleted file mode 100644 index 2fb4a24..0000000 --- a/library/src/commonMain/kotlin/io/yumemi/something/CustomFibi.kt +++ /dev/null @@ -1,17 +0,0 @@ -package io.yumemi.something - -fun generateFibi() = sequence { - var a = firstElement - yield(a) - var b = secondElement - yield(b) - while (true) { - val c = a + b - yield(c) - a = b - b = c - } -} - -expect val firstElement: Int -expect val secondElement: Int diff --git a/library/src/commonTest/kotlin/io/yumemi/something/FibiTest.kt b/library/src/commonTest/kotlin/io/yumemi/something/FibiTest.kt deleted file mode 100644 index edbd881..0000000 --- a/library/src/commonTest/kotlin/io/yumemi/something/FibiTest.kt +++ /dev/null @@ -1,12 +0,0 @@ -package io.yumemi.something - -import kotlin.test.Test -import kotlin.test.assertEquals - -class FibiTest { - - @Test - fun `test 3rd element`() { - assertEquals(firstElement + secondElement, generateFibi().take(3).last()) - } -} diff --git a/library/src/iosMain/kotlin/io/yumemi/something/fibiprops.ios.kt b/library/src/iosMain/kotlin/io/yumemi/something/fibiprops.ios.kt deleted file mode 100644 index b79d2a1..0000000 --- a/library/src/iosMain/kotlin/io/yumemi/something/fibiprops.ios.kt +++ /dev/null @@ -1,4 +0,0 @@ -package io.yumemi.something - -actual val firstElement: Int = 3 -actual val secondElement: Int = 4 diff --git a/library/src/iosTest/kotlin/io/yumemi/something/IosFibiTest.kt b/library/src/iosTest/kotlin/io/yumemi/something/IosFibiTest.kt deleted file mode 100644 index b809178..0000000 --- a/library/src/iosTest/kotlin/io/yumemi/something/IosFibiTest.kt +++ /dev/null @@ -1,12 +0,0 @@ -package io.yumemi.something - -import kotlin.test.Test -import kotlin.test.assertEquals - -class IosFibiTest { - - @Test - fun `test 3rd element`() { - assertEquals(7, generateFibi().take(3).last()) - } -} From e027f71cff6cd271d919323823fdd637130673d8 Mon Sep 17 00:00:00 2001 From: Hiroyuki Kusu Date: Thu, 7 Nov 2024 17:21:17 +0900 Subject: [PATCH 3/4] Library definition --- gradle/libs.versions.toml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b335131..519092b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,13 +1,20 @@ [versions] agp = "8.6.1" kotlin = "2.0.20" -android-minSdk = "24" +coroutines = "1.9.0" +compose = "1.7.5" +kermit = "1.2.2" +android-minSdk = "21" android-compileSdk = "34" [libraries] +coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "coroutines" } +compose-runtime = { group = "androidx.compose.runtime", name = "runtime", version.ref = "compose" } +logger-kermit = { group = "co.touchlab", name = "kermit", version.ref = "kermit" } kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" } [plugins] androidLibrary = { id = "com.android.library", version.ref = "agp" } kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } +compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } vanniktech-mavenPublish = { id = "com.vanniktech.maven.publish", version = "0.29.0" } From e522d8bf15d7c7aeae93a60d07baeacd568b133a Mon Sep 17 00:00:00 2001 From: Hiroyuki Kusu Date: Thu, 7 Nov 2024 17:22:22 +0900 Subject: [PATCH 4/4] Add library modules --- build.gradle.kts | 3 +- settings.gradle.kts | 7 +- tart-compose/build.gradle.kts | 86 ++++++ .../io/yumemi/tart/compose/ComposeStore.kt | 63 +++++ {library => tart-core}/build.gradle.kts | 21 +- .../kotlin/io/yumemi/tart/core/Contract.kt | 5 + .../kotlin/io/yumemi/tart/core/Middleware.kt | 19 ++ .../kotlin/io/yumemi/tart/core/Store.kt | 56 ++++ .../kotlin/io/yumemi/tart/core/TartStore.kt | 245 ++++++++++++++++++ tart-logging/build.gradle.kts | 85 ++++++ .../kotlin/io/yumemi/tart/logging/Logger.kt | 19 ++ .../yumemi/tart/logging/LoggingMiddleware.kt | 58 +++++ .../io/yumemi/tart/logging/TartLogger.kt | 32 +++ tart-message/build.gradle.kts | 84 ++++++ .../yumemi/tart/message/MessageMiddleware.kt | 99 +++++++ 15 files changed, 869 insertions(+), 13 deletions(-) create mode 100644 tart-compose/build.gradle.kts create mode 100644 tart-compose/src/commonMain/kotlin/io/yumemi/tart/compose/ComposeStore.kt rename {library => tart-core}/build.gradle.kts (78%) create mode 100644 tart-core/src/commonMain/kotlin/io/yumemi/tart/core/Contract.kt create mode 100644 tart-core/src/commonMain/kotlin/io/yumemi/tart/core/Middleware.kt create mode 100644 tart-core/src/commonMain/kotlin/io/yumemi/tart/core/Store.kt create mode 100644 tart-core/src/commonMain/kotlin/io/yumemi/tart/core/TartStore.kt create mode 100644 tart-logging/build.gradle.kts create mode 100644 tart-logging/src/commonMain/kotlin/io/yumemi/tart/logging/Logger.kt create mode 100644 tart-logging/src/commonMain/kotlin/io/yumemi/tart/logging/LoggingMiddleware.kt create mode 100644 tart-logging/src/commonMain/kotlin/io/yumemi/tart/logging/TartLogger.kt create mode 100644 tart-message/build.gradle.kts create mode 100644 tart-message/src/commonMain/kotlin/io/yumemi/tart/message/MessageMiddleware.kt diff --git a/build.gradle.kts b/build.gradle.kts index 1bababf..5c98c1c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,6 @@ plugins { alias(libs.plugins.androidLibrary) apply false - alias(libs.plugins.kotlinMultiplatform) apply false + alias(libs.plugins.kotlinMultiplatform) apply false + alias(libs.plugins.compose.compiler) apply false alias(libs.plugins.vanniktech.mavenPublish) apply false } diff --git a/settings.gradle.kts b/settings.gradle.kts index 40ece38..eceab60 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -13,5 +13,8 @@ dependencyResolutionManagement { } } -rootProject.name = "multiplatform-library-template" -include(":library") +rootProject.name = "Tart" +include(":tart-core") +include(":tart-compose") +include(":tart-logging") +include(":tart-message") diff --git a/tart-compose/build.gradle.kts b/tart-compose/build.gradle.kts new file mode 100644 index 0000000..873c6be --- /dev/null +++ b/tart-compose/build.gradle.kts @@ -0,0 +1,86 @@ +import com.vanniktech.maven.publish.SonatypeHost +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +plugins { + alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.androidLibrary) + alias(libs.plugins.compose.compiler) + alias(libs.plugins.vanniktech.mavenPublish) +} + +group = "io.yumemi.tart" +version = "1.0.0-beta01" + +kotlin { + androidTarget { + publishLibraryVariants("release") + @OptIn(ExperimentalKotlinGradlePluginApi::class) + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + } + } + // FIXME: comment out iOS because build error + // iosX64() + // iosArm64() + // iosSimulatorArm64() + + sourceSets { + val commonMain by getting { + dependencies { + // put your multiplatform dependencies here + implementation(project(":tart-core")) + implementation(libs.compose.runtime) + } + } + val commonTest by getting { + dependencies { + implementation(libs.kotlin.test) + } + } + } +} + +android { + namespace = "io.yumemi.tart.compose" + compileSdk = libs.versions.android.compileSdk.get().toInt() + defaultConfig { + minSdk = libs.versions.android.minSdk.get().toInt() + } +} + +mavenPublishing { + publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL) + + if (System.getenv("ORG_GRADLE_PROJECT_mavenCentralUsername") != null) { + signAllPublications() + } + + coordinates(group.toString(), "tart-compose", version.toString()) + + pom { + name = "Tart" + description = "A Kotlin Multiplatform Flux framework." + inceptionYear = "2024" + url = "https://github.com/yumemi-inc/Tart/" + licenses { + license { + name = "MIT" + url = "https://opensource.org/licenses/MIT" + distribution = "https://opensource.org/licenses/MIT" + } + } + developers { + developer { + id = "yumemi-inc" + name = "YUMEMI Inc." + url = "https://github.com/yumemi-inc/" + } + } + scm { + url = "https://github.com/yumemi-inc/Tart/" + connection = "scm:git:git://github.com/yumemi-inc/Tart.git" + developerConnection = "scm:git:git://github.com/yumemi-inc/Tart.git" + } + } +} diff --git a/tart-compose/src/commonMain/kotlin/io/yumemi/tart/compose/ComposeStore.kt b/tart-compose/src/commonMain/kotlin/io/yumemi/tart/compose/ComposeStore.kt new file mode 100644 index 0000000..b04ec80 --- /dev/null +++ b/tart-compose/src/commonMain/kotlin/io/yumemi/tart/compose/ComposeStore.kt @@ -0,0 +1,63 @@ +package io.yumemi.tart.compose + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import io.yumemi.tart.core.Action +import io.yumemi.tart.core.Event +import io.yumemi.tart.core.State +import io.yumemi.tart.core.Store +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.emptyFlow +import kotlinx.coroutines.flow.filter + +@Suppress("unused") +class ComposeStore private constructor( + val state: S, + val dispatch: (action: A) -> Unit, + val eventFlow: Flow, +) { + @Composable + inline fun render(block: ComposeStore.() -> Unit) { + if (state is S2) { + block( + mock( + state = state, + dispatch = dispatch, + eventFlow = eventFlow, + ), + ) + } + } + + @Composable + inline fun handle(crossinline block: ComposeStore.(event: E2) -> Unit) { + LaunchedEffect(Unit) { + eventFlow.filter { it is E2 }.collect { + block(this@ComposeStore, it as E2) + } + } + } + + companion object { + @Composable + fun create(store: Store): ComposeStore { + val state by store.state.collectAsState() + return ComposeStore( + state = state, + dispatch = store::dispatch, + eventFlow = store.event, + ) + } + + @Composable + fun mock(state: S, dispatch: (action: A) -> Unit = {}, eventFlow: Flow = emptyFlow()): ComposeStore { + return ComposeStore( + state = state, + dispatch = dispatch, + eventFlow = eventFlow, + ) + } + } +} diff --git a/library/build.gradle.kts b/tart-core/build.gradle.kts similarity index 78% rename from library/build.gradle.kts rename to tart-core/build.gradle.kts index a4b03dc..e26a167 100644 --- a/library/build.gradle.kts +++ b/tart-core/build.gradle.kts @@ -8,8 +8,8 @@ plugins { alias(libs.plugins.vanniktech.mavenPublish) } -group = "io.yumemi.something" -version = "0.0.1" +group = "io.yumemi.tart" +version = "1.0.0-beta01" kotlin { androidTarget { @@ -27,6 +27,7 @@ kotlin { val commonMain by getting { dependencies { // put your multiplatform dependencies here + implementation(libs.coroutines.core) } } val commonTest by getting { @@ -38,7 +39,7 @@ kotlin { } android { - namespace = "io.yumemi.something.library" + namespace = "io.yumemi.tart.core" compileSdk = libs.versions.android.compileSdk.get().toInt() defaultConfig { minSdk = libs.versions.android.minSdk.get().toInt() @@ -52,13 +53,13 @@ mavenPublishing { signAllPublications() } - coordinates(group.toString(), "library", version.toString()) + coordinates(group.toString(), "tart-core", version.toString()) pom { - name = "My library" - description = "A library." + name = "Tart" + description = "A Kotlin Multiplatform Flux framework." inceptionYear = "2024" - url = "https://github.com/yumemi-inc/something/" + url = "https://github.com/yumemi-inc/Tart/" licenses { license { name = "MIT" @@ -74,9 +75,9 @@ mavenPublishing { } } scm { - url = "https://github.com/yumemi-inc/something/" - connection = "scm:git:git://github.com/yumemi-inc/something.git" - developerConnection = "scm:git:git://github.com/yumemi-inc/something.git" + url = "https://github.com/yumemi-inc/Tart/" + connection = "scm:git:git://github.com/yumemi-inc/Tart.git" + developerConnection = "scm:git:git://github.com/yumemi-inc/Tart.git" } } } diff --git a/tart-core/src/commonMain/kotlin/io/yumemi/tart/core/Contract.kt b/tart-core/src/commonMain/kotlin/io/yumemi/tart/core/Contract.kt new file mode 100644 index 0000000..90a6dde --- /dev/null +++ b/tart-core/src/commonMain/kotlin/io/yumemi/tart/core/Contract.kt @@ -0,0 +1,5 @@ +package io.yumemi.tart.core + +interface State +interface Action +interface Event diff --git a/tart-core/src/commonMain/kotlin/io/yumemi/tart/core/Middleware.kt b/tart-core/src/commonMain/kotlin/io/yumemi/tart/core/Middleware.kt new file mode 100644 index 0000000..6df2c67 --- /dev/null +++ b/tart-core/src/commonMain/kotlin/io/yumemi/tart/core/Middleware.kt @@ -0,0 +1,19 @@ +package io.yumemi.tart.core + +import kotlinx.coroutines.CoroutineScope + +interface Middleware { + suspend fun onInit(store: Store, coroutineScope: CoroutineScope) {} + suspend fun beforeActionDispatch(state: S, action: A) {} + suspend fun afterActionDispatch(state: S, action: A, nextState: S) {} + suspend fun beforeEventEmit(state: S, event: E) {} + suspend fun afterEventEmit(state: S, event: E) {} + suspend fun beforeStateEnter(state: S) {} + suspend fun afterStateEnter(state: S, nextState: S) {} + suspend fun beforeStateExit(state: S) {} + suspend fun afterStateExit(state: S) {} + suspend fun beforeStateChange(state: S, nextState: S) {} + suspend fun afterStateChange(state: S, prevState: S) {} + suspend fun beforeError(state: S, error: Throwable) {} + suspend fun afterError(state: S, nextState: S, error: Throwable) {} +} diff --git a/tart-core/src/commonMain/kotlin/io/yumemi/tart/core/Store.kt b/tart-core/src/commonMain/kotlin/io/yumemi/tart/core/Store.kt new file mode 100644 index 0000000..f5ec593 --- /dev/null +++ b/tart-core/src/commonMain/kotlin/io/yumemi/tart/core/Store.kt @@ -0,0 +1,56 @@ +package io.yumemi.tart.core + +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.emptyFlow + +interface Store { + + val state: StateFlow + + val event: Flow + + val currentState: S + + fun dispatch(action: A) + + fun collectState(state: (state: S) -> Unit) + + fun collectEvent(event: (event: E) -> Unit) + + fun dispose() + + @Suppress("unused") + abstract class Base( + initialState: S, + processInitialStateEnter: Boolean = true, + latestState: suspend (state: S) -> Unit = {}, + onError: (error: Throwable) -> Unit = { throw it }, + coroutineScope: CoroutineScope = CoroutineScope(Dispatchers.Default + SupervisorJob()), + ) : TartStore( + initialState = initialState, + processInitialStateEnter = processInitialStateEnter, + latestState = latestState, + onError = onError, + coroutineScope = coroutineScope, + ) + + companion object { + @Suppress("unused") + fun mock(state: S): Store { + return object : Store { + override val state: StateFlow = MutableStateFlow(state) + override val event: Flow = emptyFlow() + override val currentState: S = state + override fun dispose() {} + override fun collectEvent(event: (event: E) -> Unit) {} + override fun collectState(state: (state: S) -> Unit) {} + override fun dispatch(action: A) {} + } + } + } +} diff --git a/tart-core/src/commonMain/kotlin/io/yumemi/tart/core/TartStore.kt b/tart-core/src/commonMain/kotlin/io/yumemi/tart/core/TartStore.kt new file mode 100644 index 0000000..b36862c --- /dev/null +++ b/tart-core/src/commonMain/kotlin/io/yumemi/tart/core/TartStore.kt @@ -0,0 +1,245 @@ +package io.yumemi.tart.core + +import kotlinx.coroutines.CoroutineExceptionHandler +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.cancel +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.update +import kotlinx.coroutines.launch +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock + +open class TartStore internal constructor( + private val initialState: S, + private val processInitialStateEnter: Boolean, + private val latestState: suspend (state: S) -> Unit, + private val onError: (error: Throwable) -> Unit, + private val coroutineScope: CoroutineScope, +) : Store { + private val _state: MutableStateFlow = MutableStateFlow(initialState) + final override val state: StateFlow by lazy { + init() + _state + } + + private val _event: MutableSharedFlow = MutableSharedFlow() + final override val event: Flow = _event + + final override val currentState: S get() = _state.value + + protected open val middlewares: List> = emptyList() + + private val mutex = Mutex() + + private val exceptionHandler: CoroutineExceptionHandler = CoroutineExceptionHandler { _, exception -> onError(exception) } + + final override fun dispatch(action: A) { + state // initialize if need + coroutineScope.launch(exceptionHandler) { + mutex.withLock { + onActionDispatched(currentState, action) + } + } + } + + final override fun collectState(state: (state: S) -> Unit) { + coroutineScope.launch(exceptionHandler) { + this@TartStore.state.collect { state(it) } + } + } + + final override fun collectEvent(event: (event: E) -> Unit) { + coroutineScope.launch(exceptionHandler) { + this@TartStore.event.collect { event(it) } + } + } + + final override fun dispose() { + coroutineScope.cancel() + } + + protected open suspend fun onEnter(state: S, emit: EmitFun): S = state + + protected open suspend fun onExit(state: S, emit: EmitFun) {} + + protected open suspend fun onDispatch(state: S, action: A, emit: EmitFun): S = state + + protected open suspend fun onError(state: S, error: Throwable, emit: EmitFun): S { + throw error + } + + private fun init() { + coroutineScope.launch(exceptionHandler) { + mutex.withLock { + coroutineScope { + middlewares.map { + launch { it.onInit(this@TartStore, this@TartStore.coroutineScope) } + } + } + if (processInitialStateEnter) { + onStateEntered(initialState) + } + } + } + } + + private suspend fun onActionDispatched(state: S, action: A) { + try { + val nextState = processActonDispatch(state, action) + + if (state::class != nextState::class) { + processStateExit(state) + } + + if (state != nextState) { + processStateChange(state, nextState) + } + + if (state::class != nextState::class) { + onStateEntered(nextState) + } + } catch (t: Throwable) { + onErrorOccurred(currentState, t) + } + } + + private suspend fun onStateEntered(state: S, inErrorHandling: Boolean = false) { + try { + val nextState = processStateEnter(state) + + if (state::class != nextState::class) { + processStateExit(state) + } + + if (state != nextState) { + processStateChange(state, nextState) + } + + if (state::class != nextState::class) { + onStateEntered(nextState, inErrorHandling = inErrorHandling) + } + } catch (t: Throwable) { + if (!inErrorHandling) { + onErrorOccurred(currentState, t) + } else { + throw t + } + } + } + + private suspend fun onErrorOccurred(state: S, throwable: Throwable) { + val nextState = processError(state, throwable) + + if (state::class != nextState::class) { + processStateExit(state) + } + + if (state != nextState) { + processStateChange(state, nextState) + } + + if (state::class != nextState::class) { + onStateEntered(nextState, inErrorHandling = true) + } + } + + private suspend fun processActonDispatch(state: S, action: A): S { + coroutineScope { + middlewares.map { + launch { it.beforeActionDispatch(state, action) } + } + } + val nextState = onDispatch(state, action, ::emit) + coroutineScope { + middlewares.map { + launch { it.afterActionDispatch(state, action, nextState) } + } + } + return nextState + } + + private suspend fun processEventEmit(state: S, event: E) { + coroutineScope { + middlewares.map { + launch { it.beforeEventEmit(state, event) } + } + } + _event.emit(event) + coroutineScope { + middlewares.map { + launch { it.afterEventEmit(state, event) } + } + } + } + + private suspend fun processStateEnter(state: S): S { + coroutineScope { + middlewares.map { + launch { it.beforeStateEnter(state) } + } + } + val nextState = onEnter(state, ::emit) + coroutineScope { + middlewares.map { + launch { it.afterStateEnter(state, nextState) } + } + } + return nextState + } + + private suspend fun processStateExit(state: S) { + coroutineScope { + middlewares.map { + launch { it.beforeStateExit(state) } + } + } + onExit(state, ::emit) + coroutineScope { + middlewares.map { + launch { it.afterStateExit(state) } + } + } + } + + private suspend fun processStateChange(state: S, nextState: S) { + coroutineScope { + middlewares.map { + launch { it.beforeStateChange(state, nextState) } + } + } + _state.update { nextState } + latestState(nextState) + coroutineScope { + middlewares.map { + launch { it.afterStateChange(nextState, state) } + } + } + } + + private suspend fun processError(state: S, throwable: Throwable): S { + coroutineScope { + middlewares.map { + launch { it.beforeError(state, throwable) } + } + } + val nextState = onError(state, throwable, ::emit) + coroutineScope { + middlewares.map { + launch { it.afterError(state, nextState, throwable) } + } + } + return nextState + } + + private suspend fun emit(event: E) { + processEventEmit(currentState, event) + } + + protected fun interface EmitFun { + suspend operator fun invoke(event: E) + } +} diff --git a/tart-logging/build.gradle.kts b/tart-logging/build.gradle.kts new file mode 100644 index 0000000..183e974 --- /dev/null +++ b/tart-logging/build.gradle.kts @@ -0,0 +1,85 @@ +import com.vanniktech.maven.publish.SonatypeHost +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +plugins { + alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.androidLibrary) + alias(libs.plugins.vanniktech.mavenPublish) +} + +group = "io.yumemi.tart" +version = "1.0.0-beta01" + +kotlin { + androidTarget { + publishLibraryVariants("release") + @OptIn(ExperimentalKotlinGradlePluginApi::class) + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + } + } + iosX64() + iosArm64() + iosSimulatorArm64() + + sourceSets { + val commonMain by getting { + dependencies { + // put your multiplatform dependencies here + implementation(project(":tart-core")) + implementation(libs.logger.kermit) + implementation(libs.coroutines.core) + } + } + val commonTest by getting { + dependencies { + implementation(libs.kotlin.test) + } + } + } +} + +android { + namespace = "io.yumemi.tart.logging" + compileSdk = libs.versions.android.compileSdk.get().toInt() + defaultConfig { + minSdk = libs.versions.android.minSdk.get().toInt() + } +} + +mavenPublishing { + publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL) + + if (System.getenv("ORG_GRADLE_PROJECT_mavenCentralUsername") != null) { + signAllPublications() + } + + coordinates(group.toString(), "tart-logging", version.toString()) + + pom { + name = "Tart" + description = "A Kotlin Multiplatform Flux framework." + inceptionYear = "2024" + url = "https://github.com/yumemi-inc/Tart/" + licenses { + license { + name = "MIT" + url = "https://opensource.org/licenses/MIT" + distribution = "https://opensource.org/licenses/MIT" + } + } + developers { + developer { + id = "yumemi-inc" + name = "YUMEMI Inc." + url = "https://github.com/yumemi-inc/" + } + } + scm { + url = "https://github.com/yumemi-inc/Tart/" + connection = "scm:git:git://github.com/yumemi-inc/Tart.git" + developerConnection = "scm:git:git://github.com/yumemi-inc/Tart.git" + } + } +} diff --git a/tart-logging/src/commonMain/kotlin/io/yumemi/tart/logging/Logger.kt b/tart-logging/src/commonMain/kotlin/io/yumemi/tart/logging/Logger.kt new file mode 100644 index 0000000..9517295 --- /dev/null +++ b/tart-logging/src/commonMain/kotlin/io/yumemi/tart/logging/Logger.kt @@ -0,0 +1,19 @@ +package io.yumemi.tart.logging + +interface Logger { + suspend fun log( + severity: Severity, + tag: String, + throwable: Throwable?, + message: String, + ) + + enum class Severity { + Verbose, + Debug, + Info, + Warn, + Error, + Assert, + } +} diff --git a/tart-logging/src/commonMain/kotlin/io/yumemi/tart/logging/LoggingMiddleware.kt b/tart-logging/src/commonMain/kotlin/io/yumemi/tart/logging/LoggingMiddleware.kt new file mode 100644 index 0000000..557ba68 --- /dev/null +++ b/tart-logging/src/commonMain/kotlin/io/yumemi/tart/logging/LoggingMiddleware.kt @@ -0,0 +1,58 @@ +package io.yumemi.tart.logging + +import co.touchlab.kermit.Severity +import io.yumemi.tart.core.Action +import io.yumemi.tart.core.Event +import io.yumemi.tart.core.Middleware +import io.yumemi.tart.core.State +import io.yumemi.tart.core.Store +import kotlinx.coroutines.CoroutineExceptionHandler +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.launch +import co.touchlab.kermit.Logger.Companion as Kermit + +@Suppress("unused") +open class LoggingMiddleware( + private val logger: Logger = TartLogger(), + private val tag: String = "Tart", + private val severity: Logger.Severity = Logger.Severity.Debug, +) : Middleware { + private lateinit var coroutineScope: CoroutineScope + private val exceptionHandler: CoroutineExceptionHandler = CoroutineExceptionHandler { _, exception -> onError(exception) } + + final override suspend fun onInit(store: Store, coroutineScope: CoroutineScope) { + this.coroutineScope = coroutineScope + } + + override suspend fun beforeActionDispatch(state: S, action: A) { + log { "Action: $action" } + } + + override suspend fun beforeEventEmit(state: S, event: E) { + log { "Event: $event" } + } + + override suspend fun beforeStateChange(state: S, nextState: S) { + log { "State: $nextState <- $state" } + } + + override suspend fun beforeError(state: S, error: Throwable) { + log(throwable = error) { "Error: $error" } + } + + @Suppress("MemberVisibilityCanBePrivate") + protected fun log(severity: Logger.Severity = this.severity, tag: String = this.tag, throwable: Throwable? = null, message: () -> String) { + coroutineScope.launch(exceptionHandler) { + logger.log(severity = severity, tag = tag, throwable = throwable, message = message()) + } + } + + protected open fun onError(error: Throwable) { + Kermit.log( + severity = Severity.Error, + tag = tag, + throwable = error, + message = "An error occurred during logging in LoggingMiddleware.", + ) + } +} diff --git a/tart-logging/src/commonMain/kotlin/io/yumemi/tart/logging/TartLogger.kt b/tart-logging/src/commonMain/kotlin/io/yumemi/tart/logging/TartLogger.kt new file mode 100644 index 0000000..62ea4db --- /dev/null +++ b/tart-logging/src/commonMain/kotlin/io/yumemi/tart/logging/TartLogger.kt @@ -0,0 +1,32 @@ +package io.yumemi.tart.logging + +import co.touchlab.kermit.Severity +import co.touchlab.kermit.Logger.Companion as Kermit + +class TartLogger : Logger { + override suspend fun log(severity: Logger.Severity, tag: String, throwable: Throwable?, message: String) { + if (isDisabled) return + Kermit.log( + severity = severity.map(), + tag = tag, + throwable = throwable, + message = message, + ) + } + + private fun Logger.Severity.map() = when (this) { + Logger.Severity.Verbose -> Severity.Verbose + Logger.Severity.Debug -> Severity.Debug + Logger.Severity.Info -> Severity.Info + Logger.Severity.Warn -> Severity.Warn + Logger.Severity.Error -> Severity.Error + Logger.Severity.Assert -> Severity.Assert + } + + companion object { + private var isDisabled = false + fun disable() { + isDisabled = true + } + } +} diff --git a/tart-message/build.gradle.kts b/tart-message/build.gradle.kts new file mode 100644 index 0000000..06f96eb --- /dev/null +++ b/tart-message/build.gradle.kts @@ -0,0 +1,84 @@ +import com.vanniktech.maven.publish.SonatypeHost +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +plugins { + alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.androidLibrary) + alias(libs.plugins.vanniktech.mavenPublish) +} + +group = "io.yumemi.tart" +version = "1.0.0-beta01" + +kotlin { + androidTarget { + publishLibraryVariants("release") + @OptIn(ExperimentalKotlinGradlePluginApi::class) + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + } + } + iosX64() + iosArm64() + iosSimulatorArm64() + + sourceSets { + val commonMain by getting { + dependencies { + // put your multiplatform dependencies here + implementation(project(":tart-core")) + implementation(libs.coroutines.core) + } + } + val commonTest by getting { + dependencies { + implementation(libs.kotlin.test) + } + } + } +} + +android { + namespace = "io.yumemi.tart.message" + compileSdk = libs.versions.android.compileSdk.get().toInt() + defaultConfig { + minSdk = libs.versions.android.minSdk.get().toInt() + } +} + +mavenPublishing { + publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL) + + if (System.getenv("ORG_GRADLE_PROJECT_mavenCentralUsername") != null) { + signAllPublications() + } + + coordinates(group.toString(), "tart-message", version.toString()) + + pom { + name = "Tart" + description = "A Kotlin Multiplatform Flux framework." + inceptionYear = "2024" + url = "https://github.com/yumemi-inc/Tart/" + licenses { + license { + name = "MIT" + url = "https://opensource.org/licenses/MIT" + distribution = "https://opensource.org/licenses/MIT" + } + } + developers { + developer { + id = "yumemi-inc" + name = "YUMEMI Inc." + url = "https://github.com/yumemi-inc/" + } + } + scm { + url = "https://github.com/yumemi-inc/Tart/" + connection = "scm:git:git://github.com/yumemi-inc/Tart.git" + developerConnection = "scm:git:git://github.com/yumemi-inc/Tart.git" + } + } +} diff --git a/tart-message/src/commonMain/kotlin/io/yumemi/tart/message/MessageMiddleware.kt b/tart-message/src/commonMain/kotlin/io/yumemi/tart/message/MessageMiddleware.kt new file mode 100644 index 0000000..b5a02f0 --- /dev/null +++ b/tart-message/src/commonMain/kotlin/io/yumemi/tart/message/MessageMiddleware.kt @@ -0,0 +1,99 @@ +package io.yumemi.tart.message + +import io.yumemi.tart.core.Action +import io.yumemi.tart.core.Event +import io.yumemi.tart.core.Middleware +import io.yumemi.tart.core.State +import io.yumemi.tart.core.Store +import kotlinx.coroutines.CoroutineExceptionHandler +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.launch + +interface Message + +internal object MessageHub { + private val _messages = MutableSharedFlow() + val messages: Flow get() = _messages + + suspend fun send(message: Message) { + _messages.emit(message) + } +} + +@Suppress("unused") +abstract class MessageSendMiddleware : Middleware { + private lateinit var store: Store + private lateinit var coroutineScope: CoroutineScope + private val exceptionHandler: CoroutineExceptionHandler = CoroutineExceptionHandler { _, exception -> onError(exception) } + + final override suspend fun onInit(store: Store, coroutineScope: CoroutineScope) { + this.store = store + this.coroutineScope = coroutineScope + } + + final override suspend fun afterEventEmit(state: S, event: E) { + coroutineScope.launch(exceptionHandler) { + onEvent(event, this@MessageSendMiddleware::send, store, coroutineScope) + } + } + + protected abstract suspend fun onEvent(event: E, send: SendFun, store: Store, coroutineScope: CoroutineScope) + + protected open fun onError(error: Throwable) { + throw error + } + + private suspend fun send(message: Message) { + MessageHub.send(message) + } + + protected fun interface SendFun { + suspend operator fun invoke(message: Message) + } + + final override suspend fun beforeActionDispatch(state: S, action: A) {} + final override suspend fun afterActionDispatch(state: S, action: A, nextState: S) {} + final override suspend fun beforeEventEmit(state: S, event: E) {} + final override suspend fun beforeStateEnter(state: S) {} + final override suspend fun afterStateEnter(state: S, nextState: S) {} + final override suspend fun beforeStateExit(state: S) {} + final override suspend fun afterStateExit(state: S) {} + final override suspend fun beforeStateChange(state: S, nextState: S) {} + final override suspend fun afterStateChange(state: S, prevState: S) {} + final override suspend fun beforeError(state: S, error: Throwable) {} + final override suspend fun afterError(state: S, nextState: S, error: Throwable) {} +} + +@Suppress("unused") +abstract class MessageReceiveMiddleware : Middleware { + private val exceptionHandler: CoroutineExceptionHandler = CoroutineExceptionHandler { _, exception -> onError(exception) } + + final override suspend fun onInit(store: Store, coroutineScope: CoroutineScope) { + coroutineScope.launch(exceptionHandler) { + MessageHub.messages.collect { + receive(it, store, coroutineScope) + } + } + } + + protected abstract suspend fun receive(message: Message, store: Store, coroutineScope: CoroutineScope) + + protected open fun onError(error: Throwable) { + throw error + } + + final override suspend fun beforeActionDispatch(state: S, action: A) {} + final override suspend fun afterActionDispatch(state: S, action: A, nextState: S) {} + final override suspend fun beforeEventEmit(state: S, event: E) {} + final override suspend fun afterEventEmit(state: S, event: E) {} + final override suspend fun beforeStateEnter(state: S) {} + final override suspend fun afterStateEnter(state: S, nextState: S) {} + final override suspend fun beforeStateExit(state: S) {} + final override suspend fun afterStateExit(state: S) {} + final override suspend fun beforeStateChange(state: S, nextState: S) {} + final override suspend fun afterStateChange(state: S, prevState: S) {} + final override suspend fun beforeError(state: S, error: Throwable) {} + final override suspend fun afterError(state: S, nextState: S, error: Throwable) {} +}