CSV and FixedLength Formats for kotlinx-serialization

Last update: Aug 14, 2022

Module kotlinx-serialization-csv

Serialize and deserialize ordered CSV and Fixed Length Format Files with kotlinx-serialization.

Install

This package is uploaded to MavenCentral and supports JVM, JS(IR) and all native targets as well.

repositories {
    mavenCentral()
}

dependencies {
    implementation("app.softwork:kotlinx-serialization-csv:LATEST")
    implementation("app.softwork:kotlinx-serialization-flf:LATEST")
}

License

Apache 2

Package app.softwork.serialization.csv

This package contains the CSV-Format.

Usage

FirstName,LastName
John,Doe

To decode from the given CSV string:

@Serializable
data class Names(val firstName: String, val lastName: String)

CSVFormat.decodeFromString(Names.serializer(), csv)

And to encode:

CSVFormat.encodeToString(Names.serializer(), Names("John", "Doe"))

"""
firstName,lastName
John,Doe
"""

Limitations

  • The order of the properties of the class must match the order of the header/fields!
  • The header is ignored.
  • Inner lists are not supported, eg. data class NotSupported(val innerList: List<String>)

Package app.softwork.serialization.flf

This package contains the Fixed LengthFile Format.

Usage

John Doe  

To decode from the given Fixed-Length string you need to apply @FixedLength(length = n):

@Serializable
data class Names(
    @FixedLength(5) val firstName: String,
    @FixedLength(5) val lastName: String
)

FixedLengthFormat.decodeFromString(Names.serializer(), flf)

And to encode:

FixedLengthFormat.encodeToString(Names.serializer(), Names("John", "Doe"))

"""
John Doe  
"""

Limitations

  • The order of the properties of the class must match the order of the fields!
  • All whitespaces are trimmed.
  • Because this format does not have any delimiters, there is no check, if a given length is too long and consumes the next value.
  • Because this format does not have any delimiters, it is not possible to decode/encode primitives. You must use a class with @FixedLength annotated properties.
  • Inner lists are not supported, eg. data class NotSupported(val innerList: List<String>)

GitHub

https://github.com/hfhbd/kotlinx-serialization-csv
Comments
  • 1. New line character(s)

    It looks like this implementation is hardcoded to use \n as the newline character, but on Windows files the newline is \r\n which can result in incorrect decoding.

    e.g. if a number is in the last column, it is parsed as 0\r which will throw a NumberFormatException when converted to an int.

    Reviewed by dellisd at 2022-05-18 15:43
  • 2. Bump multiplatform from 1.7.0 to 1.7.10

    Bumps multiplatform from 1.7.0 to 1.7.10.

    Commits

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-07-07 13:40
  • 3. Bump plugin.serialization from 1.6.21 to 1.7.0

    Bumps plugin.serialization from 1.6.21 to 1.7.0.

    Release notes

    Sourced from plugin.serialization's releases.

    Kotlin 1.7.0-RC2

    Changelog

    Compiler

    • KT-52311 java.lang.VerifyError: Bad type on operand stack
    • KT-52503 New green code appeared at the callable reference resolution

    JavaScript

    • KT-52518 Kotlin/JS IR: project with 1.6.21 fails to consume library built with 1.7.0-RC: ISE "Unexpected IrType kind: KIND_NOT_SET" at IrDeclarationDeserializer.deserializeIrTypeData()

    Tools. CLI

    • KT-52409 Report error when use-k2 with Multiplatform

    Tools. Gradle

    • KT-52509 Main variant published to Gradle plugin portal uses unshadowed artifact
    • KT-52392 Gradle: 1.7.0 does not support custom gradle build configuration on Windows OS

    Tools. Kapt

    • KT-52284 FIR: add error in 1.7.0 branch if run with Kapt

    Checksums

    File Sha256
    kotlin-compiler-1.7.0-RC2.zip 264b86c9d91d15a6eba0b720d759861adaab886ce37ae2dc8081af634eefba71
    kotlin-native-linux-x86_64-1.7.0-RC2.tar.gz 650812727f1ce1c585d109e9435872ffa89316714ecde472cdf0927d5efc4a1c
    kotlin-native-macos-x86_64-1.7.0-RC2.tar.gz c4bfc7332ccd2ea952a201f489d1ff57fa0b2ae93dccac5a2459c545e5655cf3
    kotlin-native-macos-aarch64-1.7.0-RC2.tar.gz 753e0ea090bc190eb63f6caf4bacf69817253aaa0d2f4eb6e7e79267a3041cb6
    kotlin-native-windows-x86_64-1.7.0-RC2.zip 58c824f3e0fdbd358584b87745d918518513ab83b5e0c67ca072f5402477946e

    Kotlin 1.7.0-RC

    Changelog

    Compiler

    • KT-51640 FIR: remove warning about "far from being production ready"
    • KT-52404 Prolong deprecation cycle for errors at contravariant usages of star projected argument from Java
    • KT-51844 New errors in overload resolution involving vararg extension methods
    • KT-50877 Inconsistent flexible type
    • KT-51988 "NPE: getContainingDeclaration…lDeclarationType.REGULAR) must not be null" when using @BuilderInference with multiple type arguments
    • KT-51925 Native: "IllegalStateException: Symbol for kotlinx.cinterop/CStructVar|null[0] is unbound" caused by inline function
    • KT-52035 FIR: add error in 1.7.0 branch if run on JS / Native configuration
    • KT-52037 FIR: add error in 1.7.0 branch if run with non-compatible plugins

    JavaScript

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-06-08 20:40
  • 4. Bump multiplatform from 1.6.21 to 1.7.0

    Bumps multiplatform from 1.6.21 to 1.7.0.

    Release notes

    Sourced from multiplatform's releases.

    Kotlin 1.7.0-RC2

    Changelog

    Compiler

    • KT-52311 java.lang.VerifyError: Bad type on operand stack
    • KT-52503 New green code appeared at the callable reference resolution

    JavaScript

    • KT-52518 Kotlin/JS IR: project with 1.6.21 fails to consume library built with 1.7.0-RC: ISE "Unexpected IrType kind: KIND_NOT_SET" at IrDeclarationDeserializer.deserializeIrTypeData()

    Tools. CLI

    • KT-52409 Report error when use-k2 with Multiplatform

    Tools. Gradle

    • KT-52509 Main variant published to Gradle plugin portal uses unshadowed artifact
    • KT-52392 Gradle: 1.7.0 does not support custom gradle build configuration on Windows OS

    Tools. Kapt

    • KT-52284 FIR: add error in 1.7.0 branch if run with Kapt

    Checksums

    File Sha256
    kotlin-compiler-1.7.0-RC2.zip 264b86c9d91d15a6eba0b720d759861adaab886ce37ae2dc8081af634eefba71
    kotlin-native-linux-x86_64-1.7.0-RC2.tar.gz 650812727f1ce1c585d109e9435872ffa89316714ecde472cdf0927d5efc4a1c
    kotlin-native-macos-x86_64-1.7.0-RC2.tar.gz c4bfc7332ccd2ea952a201f489d1ff57fa0b2ae93dccac5a2459c545e5655cf3
    kotlin-native-macos-aarch64-1.7.0-RC2.tar.gz 753e0ea090bc190eb63f6caf4bacf69817253aaa0d2f4eb6e7e79267a3041cb6
    kotlin-native-windows-x86_64-1.7.0-RC2.zip 58c824f3e0fdbd358584b87745d918518513ab83b5e0c67ca072f5402477946e

    Kotlin 1.7.0-RC

    Changelog

    Compiler

    • KT-51640 FIR: remove warning about "far from being production ready"
    • KT-52404 Prolong deprecation cycle for errors at contravariant usages of star projected argument from Java
    • KT-51844 New errors in overload resolution involving vararg extension methods
    • KT-50877 Inconsistent flexible type
    • KT-51988 "NPE: getContainingDeclaration…lDeclarationType.REGULAR) must not be null" when using @BuilderInference with multiple type arguments
    • KT-51925 Native: "IllegalStateException: Symbol for kotlinx.cinterop/CStructVar|null[0] is unbound" caused by inline function
    • KT-52035 FIR: add error in 1.7.0 branch if run on JS / Native configuration
    • KT-52037 FIR: add error in 1.7.0 branch if run with non-compatible plugins

    JavaScript

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-06-08 20:39
  • 5. Bump kotlinx-datetime from 0.3.2 to 0.3.3

    Bumps kotlinx-datetime from 0.3.2 to 0.3.3.

    Release notes

    Sourced from kotlinx-datetime's releases.

    v0.3.3

    Changes

    • Just updated Kotlin dependency to 1.7.0-Beta and kotlinx.serialization to 1.3.2
    Changelog

    Sourced from kotlinx-datetime's changelog.

    0.3.3

    • Just updated Kotlin dependency to 1.7.0-Beta and kotlinx.serialization to 1.3.2
    Commits
    • b862fad Add changelog entry for 0.3.3
    • e4d6e0f Increase timeout for JS tests
    • d90c7bf Upgrade Kotlin to 1.7.0-Beta
    • b979c2e Upgrade Kotlin to 1.6.20 and kotlinx.serialization to 1.3.2.
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-05-05 20:36
  • 6. Bump serialization from 1.3.3 to 1.4.0

    Bumps serialization from 1.3.3 to 1.4.0. Updates kotlinx-serialization-core from 1.3.3 to 1.4.0

    Release notes

    Sourced from kotlinx-serialization-core's releases.

    1.4.0

    This release contains all features and bugfixes from 1.4.0-RC plus some bugfixes on its own (see below). Kotlin 1.7.10 is used as a default.

    Bugfixes

    • Fixed decoding of huge JSON data for okio streams (#2006)

    1.4.0-RC

    This is a candidate for the next big release with many new exciting features to try. It uses Kotlin 1.7.10 by default.

    Integration with Okio's BufferedSource and BufferedSink

    Okio library by Square is a popular solution for fast and efficient IO operations on JVM, K/N and K/JS. In this version, we have added functions that parse/write JSON directly to Okio's input/output classes, saving you the overhead of copying data to String beforehand. These functions are called Json.decodeFromBufferedSource and Json.encodeToBufferedSink, respectively. There's also decodeBufferedSourceToSequence that behaves similarly to decodeToSequence from Java streams integration, so you can lazily decode multiple objects the same way as before.

    Note that these functions are located in a separate new artifact, so users who don't need them wouldn't find themselves dependent on Okio. To include this artifact in your project, use the same group id org.jetbrains.kotlinx and artifact id kotlinx-serialization-json-okio. To find out more about this integration, check new functions' documentation and corresponding pull requests: #1901 and #1982.

    Inline classes and unsigned numbers do not require experimental annotations anymore

    Inline classes and unsigned number types have been promoted to a Stable feature in Kotlin 1.5, and now we are promoting support for them in kotlinx.serialization to Stable status, too. To be precise, we've removed all @ExperimentalSerializationApi annotations from functions related to inline classes encoding and decoding, namely SerialDescriptor.isInline, Encoder.encodeInline, and some others. We've also updated related documentation article.

    Additionally, all @ExperimentalUnsignedTypes annotations were removed completely, so you can freely use types such as UInt and their respective serializers as a stable feature without opt-in requirement.

    Part of SerializationException's hierarchy is public now

    When kotlinx.serialization 1.0 was released, all subclasses of SerializationException were made internal, since they didn't provide helpful information besides the standard message. Since then, we've received a lot of feature requests with compelling use-cases for exposing some of these internal types to the public. In this release, we are starting to fulfilling these requests by making MissingFieldException public. One can use it in the catch clause to better understand the reasons of failure — for example, to return 400 instead of 500 from an HTTP server — and then use its fields property to communicate the message better. See the details in the corresponding PR.

    In future releases, we'll continue work in this direction, and we aim to provide more useful public exception types & properties. In the meantime, we've revamped KDoc for some methods regarding the exceptions — all of them now properly declare which exception types are allowed to be thrown. For example, KSerializer.deserialize is documented to throw IllegalStateException to indicate problems unrelated to serialization, such as data validation in classes' constructors.

    @​MetaSerializable annotation

    This release introduces a new @MetaSerializable annotation that adds @Serializable behavior to user-defined annotations — i.e., those annotations would also instruct the compiler plugin to generate a serializer for class. In addition, all annotations marked with @MetaSerializable are saved in the generated @SerialDescriptor

    ... (truncated)

    Changelog

    Sourced from kotlinx-serialization-core's changelog.

    1.4.0 / 2022-08-18

    This release contains all features and bugfixes from 1.4.0-RC plus some bugfixes on its own (see below). Kotlin 1.7.10 is used as a default.

    Bugfixes

    • Fixed decoding of huge JSON data for okio streams (#2006)

    1.4.0-RC / 2022-07-20

    This is a candidate for the next big release with many new exciting features to try. It uses Kotlin 1.7.10 by default.

    Integration with Okio's BufferedSource and BufferedSink

    Okio library by Square is a popular solution for fast and efficient IO operations on JVM, K/N and K/JS. In this version, we have added functions that parse/write JSON directly to Okio's input/output classes, saving you the overhead of copying data to String beforehand. These functions are called Json.decodeFromBufferedSource and Json.encodeToBufferedSink, respectively. There's also decodeBufferedSourceToSequence that behaves similarly to decodeToSequence from Java streams integration, so you can lazily decode multiple objects the same way as before.

    Note that these functions are located in a separate new artifact, so users who don't need them wouldn't find themselves dependent on Okio. To include this artifact in your project, use the same group id org.jetbrains.kotlinx and artifact id kotlinx-serialization-json-okio. To find out more about this integration, check new functions' documentation and corresponding pull requests: #1901 and #1982.

    Inline classes and unsigned numbers do not require experimental annotations anymore

    Inline classes and unsigned number types have been promoted to a Stable feature in Kotlin 1.5, and now we are promoting support for them in kotlinx.serialization to Stable status, too. To be precise, we've removed all @ExperimentalSerializationApi annotations from functions related to inline classes encoding and decoding, namely SerialDescriptor.isInline, Encoder.encodeInline, and some others. We've also updated related documentation article.

    Additionally, all @ExperimentalUnsignedTypes annotations were removed completely, so you can freely use types such as UInt and their respective serializers as a stable feature without opt-in requirement.

    Part of SerializationException's hierarchy is public now

    When kotlinx.serialization 1.0 was released, all subclasses of SerializationException were made internal, since they didn't provide helpful information besides the standard message. Since then, we've received a lot of feature requests with compelling use-cases for exposing some of these internal types to the public. In this release, we are starting to fulfilling these requests by making MissingFieldException public. One can use it in the catch clause to better understand the reasons of failure — for example, to return 400 instead of 500 from an HTTP server — and then use its fields property to communicate the message better. See the details in the corresponding PR.

    In future releases, we'll continue work in this direction, and we aim to provide more useful public exception types & properties.

    ... (truncated)

    Commits

    Updates kotlinx-serialization-json from 1.3.3 to 1.4.0

    Release notes

    Sourced from kotlinx-serialization-json's releases.

    1.4.0

    This release contains all features and bugfixes from 1.4.0-RC plus some bugfixes on its own (see below). Kotlin 1.7.10 is used as a default.

    Bugfixes

    • Fixed decoding of huge JSON data for okio streams (#2006)

    1.4.0-RC

    This is a candidate for the next big release with many new exciting features to try. It uses Kotlin 1.7.10 by default.

    Integration with Okio's BufferedSource and BufferedSink

    Okio library by Square is a popular solution for fast and efficient IO operations on JVM, K/N and K/JS. In this version, we have added functions that parse/write JSON directly to Okio's input/output classes, saving you the overhead of copying data to String beforehand. These functions are called Json.decodeFromBufferedSource and Json.encodeToBufferedSink, respectively. There's also decodeBufferedSourceToSequence that behaves similarly to decodeToSequence from Java streams integration, so you can lazily decode multiple objects the same way as before.

    Note that these functions are located in a separate new artifact, so users who don't need them wouldn't find themselves dependent on Okio. To include this artifact in your project, use the same group id org.jetbrains.kotlinx and artifact id kotlinx-serialization-json-okio. To find out more about this integration, check new functions' documentation and corresponding pull requests: #1901 and #1982.

    Inline classes and unsigned numbers do not require experimental annotations anymore

    Inline classes and unsigned number types have been promoted to a Stable feature in Kotlin 1.5, and now we are promoting support for them in kotlinx.serialization to Stable status, too. To be precise, we've removed all @ExperimentalSerializationApi annotations from functions related to inline classes encoding and decoding, namely SerialDescriptor.isInline, Encoder.encodeInline, and some others. We've also updated related documentation article.

    Additionally, all @ExperimentalUnsignedTypes annotations were removed completely, so you can freely use types such as UInt and their respective serializers as a stable feature without opt-in requirement.

    Part of SerializationException's hierarchy is public now

    When kotlinx.serialization 1.0 was released, all subclasses of SerializationException were made internal, since they didn't provide helpful information besides the standard message. Since then, we've received a lot of feature requests with compelling use-cases for exposing some of these internal types to the public. In this release, we are starting to fulfilling these requests by making MissingFieldException public. One can use it in the catch clause to better understand the reasons of failure — for example, to return 400 instead of 500 from an HTTP server — and then use its fields property to communicate the message better. See the details in the corresponding PR.

    In future releases, we'll continue work in this direction, and we aim to provide more useful public exception types & properties. In the meantime, we've revamped KDoc for some methods regarding the exceptions — all of them now properly declare which exception types are allowed to be thrown. For example, KSerializer.deserialize is documented to throw IllegalStateException to indicate problems unrelated to serialization, such as data validation in classes' constructors.

    @​MetaSerializable annotation

    This release introduces a new @MetaSerializable annotation that adds @Serializable behavior to user-defined annotations — i.e., those annotations would also instruct the compiler plugin to generate a serializer for class. In addition, all annotations marked with @MetaSerializable are saved in the generated @SerialDescriptor

    ... (truncated)

    Changelog

    Sourced from kotlinx-serialization-json's changelog.

    1.4.0 / 2022-08-18

    This release contains all features and bugfixes from 1.4.0-RC plus some bugfixes on its own (see below). Kotlin 1.7.10 is used as a default.

    Bugfixes

    • Fixed decoding of huge JSON data for okio streams (#2006)

    1.4.0-RC / 2022-07-20

    This is a candidate for the next big release with many new exciting features to try. It uses Kotlin 1.7.10 by default.

    Integration with Okio's BufferedSource and BufferedSink

    Okio library by Square is a popular solution for fast and efficient IO operations on JVM, K/N and K/JS. In this version, we have added functions that parse/write JSON directly to Okio's input/output classes, saving you the overhead of copying data to String beforehand. These functions are called Json.decodeFromBufferedSource and Json.encodeToBufferedSink, respectively. There's also decodeBufferedSourceToSequence that behaves similarly to decodeToSequence from Java streams integration, so you can lazily decode multiple objects the same way as before.

    Note that these functions are located in a separate new artifact, so users who don't need them wouldn't find themselves dependent on Okio. To include this artifact in your project, use the same group id org.jetbrains.kotlinx and artifact id kotlinx-serialization-json-okio. To find out more about this integration, check new functions' documentation and corresponding pull requests: #1901 and #1982.

    Inline classes and unsigned numbers do not require experimental annotations anymore

    Inline classes and unsigned number types have been promoted to a Stable feature in Kotlin 1.5, and now we are promoting support for them in kotlinx.serialization to Stable status, too. To be precise, we've removed all @ExperimentalSerializationApi annotations from functions related to inline classes encoding and decoding, namely SerialDescriptor.isInline, Encoder.encodeInline, and some others. We've also updated related documentation article.

    Additionally, all @ExperimentalUnsignedTypes annotations were removed completely, so you can freely use types such as UInt and their respective serializers as a stable feature without opt-in requirement.

    Part of SerializationException's hierarchy is public now

    When kotlinx.serialization 1.0 was released, all subclasses of SerializationException were made internal, since they didn't provide helpful information besides the standard message. Since then, we've received a lot of feature requests with compelling use-cases for exposing some of these internal types to the public. In this release, we are starting to fulfilling these requests by making MissingFieldException public. One can use it in the catch clause to better understand the reasons of failure — for example, to return 400 instead of 500 from an HTTP server — and then use its fields property to communicate the message better. See the details in the corresponding PR.

    In future releases, we'll continue work in this direction, and we aim to provide more useful public exception types & properties.

    ... (truncated)

    Commits

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-08-18 20:44
  • 7. Configure Renovate

    Mend Renovate

    Welcome to Renovate! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.

    🚦 To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.


    Detected Package Files

    • .github/workflows/CD.yml (github-actions)
    • .github/workflows/CI.yml (github-actions)
    • .github/workflows/Docs.yml (github-actions)
    • gradle.properties (gradle)
    • settings.gradle.kts (gradle)
    • build.gradle.kts (gradle)
    • kotlinx-serialization-csv/build.gradle.kts (gradle)
    • kotlinx-serialization-flf/build.gradle.kts (gradle)
    • gradle/wrapper/gradle-wrapper.properties (gradle-wrapper)

    Configuration

    🔡 Renovate has detected a custom config for this PR. Feel free to ask for help if you have any doubts and would like it reviewed.

    Important: Now that this branch is edited, Renovate can't rebase it from the base branch any more. If you make changes to the base branch that could impact this onboarding PR, please merge them manually.

    What to Expect

    It looks like your repository dependencies are already up-to-date and no Pull Requests will be necessary right away.


    ❓ Got questions? Check out Renovate's Docs, particularly the Getting Started section. If you need any further assistance then you can also request help here.


    This PR has been generated by Mend Renovate. View repository job log here.

    Reviewed by renovate[bot] at 2022-07-26 16:35
  • 8. Bump detekt-formatting from 1.20.0 to 1.21.0

    Bumps detekt-formatting from 1.20.0 to 1.21.0.

    Release notes

    Sourced from detekt-formatting's releases.

    v1.21.0

    We're delighted to announce the next upcoming stable release of Detekt: 1.21.0 🎉 This release is coming with 6 new rules, new API and functionalities and several stability improvements.

    We want to thank you very much our Sponsors for the support in those last months. The work behind Detekt is all happening on a voluntary basis, and we're more than grateful for all the support we get from the Open Source Ecosystem.

    We're also excited to announce that we're now having an Open Source Gradle Enterprise instance. When building the Detekt projects, you'll benefit from the Gradle Remote Cache that this instance is providing!

    Finally, we want to take the opportunity to thank our contributors for testing, bug reporting and helping us release this new version of Detekt. You're more than welcome to join our community on the #detekt channel on KotlinLang's Slack (you can get an invite here).

    Notable Changes

    • We enabled ~30 new rules by default which we believe are now stable enough. - #4875
    • We added 6 new Rules to Detekt
      • NullableBooleanCheck - #4872
      • CouldBeSequence - #4855
      • UnnecessaryBackticks - #4764
      • ForbiddenSuppress - #4899
      • MaxChainedCallsOnSameLine - #4985
      • CascadingCallWrapping - #4979
    • We added support for Markdown reports - #4858
    • We now allow users and rule authors to specify a reason for every value in the config file - #4611
    • We now report as warnings the Strings in the config file that can be converted to be an array - #4793
    • We added a dependency on ConTester to help us verify concurrency scenarios for Detekt - #4672
    • For contributors: we restructured our build setup to be use Gradle composite build - #4751

    Migration

    We fixed a bug related to function with KDocs and how their location in the source code was calculated (see #4961 and #4887).

    Because of this, some users might have to recreate their baseline as the location of such functions are not matched anymore against the baseline. You can do so by deleting your old baseline and invoking the detektBaseline task (or the corresponding task, based on your configuration).

    Changelog

    • ReturnCount: Make configuration parameter more explicit - #5062
    • Remove redundant null check - #5061
    • Drop redundant Gradle workaround - #5057
    • Update ktlint links from website to readme - #5056
    • Improve extensions.doc format with admonitions - #5055
    • Update docusaurus monorepo to v2.0.0-beta.22 - #5050
    • Enable strict Kotlin DSL precompiled script plugins accessors generation - #5048
    • MaxChainedCallsOnSameLine: don't count package references as chained calls - #5036
    • Xml Report Merger now merges duplicate smells across input report files - #5033
    • Add ending line and column to Location.kt - #5032
    • Fix type resolution link in Contributing.md - #5027
    • #5014 Fix MaxChainedCallsOnSameLine false positives - #5020
    • Add endColumn/endLine to SARIF region - #5011
    • Removed UnnecessaryAbstractClass if it inherits from a abstract class - #5009
    • Only recommend using index accessors for Java classes that are known collections - #4994

    ... (truncated)

    Commits

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-07-18 21:59
  • 9. Bump io.gitlab.arturbosch.detekt from 1.20.0 to 1.21.0

    Bumps io.gitlab.arturbosch.detekt from 1.20.0 to 1.21.0.

    Release notes

    Sourced from io.gitlab.arturbosch.detekt's releases.

    v1.21.0

    We're delighted to announce the next upcoming stable release of Detekt: 1.21.0 🎉 This release is coming with 6 new rules, new API and functionalities and several stability improvements.

    We want to thank you very much our Sponsors for the support in those last months. The work behind Detekt is all happening on a voluntary basis, and we're more than grateful for all the support we get from the Open Source Ecosystem.

    We're also excited to announce that we're now having an Open Source Gradle Enterprise instance. When building the Detekt projects, you'll benefit from the Gradle Remote Cache that this instance is providing!

    Finally, we want to take the opportunity to thank our contributors for testing, bug reporting and helping us release this new version of Detekt. You're more than welcome to join our community on the #detekt channel on KotlinLang's Slack (you can get an invite here).

    Notable Changes

    • We enabled ~30 new rules by default which we believe are now stable enough. - #4875
    • We added 6 new Rules to Detekt
      • NullableBooleanCheck - #4872
      • CouldBeSequence - #4855
      • UnnecessaryBackticks - #4764
      • ForbiddenSuppress - #4899
      • MaxChainedCallsOnSameLine - #4985
      • CascadingCallWrapping - #4979
    • We added support for Markdown reports - #4858
    • We now allow users and rule authors to specify a reason for every value in the config file - #4611
    • We now report as warnings the Strings in the config file that can be converted to be an array - #4793
    • We added a dependency on ConTester to help us verify concurrency scenarios for Detekt - #4672
    • For contributors: we restructured our build setup to be use Gradle composite build - #4751

    Migration

    We fixed a bug related to function with KDocs and how their location in the source code was calculated (see #4961 and #4887).

    Because of this, some users might have to recreate their baseline as the location of such functions are not matched anymore against the baseline. You can do so by deleting your old baseline and invoking the detektBaseline task (or the corresponding task, based on your configuration).

    Changelog

    • ReturnCount: Make configuration parameter more explicit - #5062
    • Remove redundant null check - #5061
    • Drop redundant Gradle workaround - #5057
    • Update ktlint links from website to readme - #5056
    • Improve extensions.doc format with admonitions - #5055
    • Update docusaurus monorepo to v2.0.0-beta.22 - #5050
    • Enable strict Kotlin DSL precompiled script plugins accessors generation - #5048
    • MaxChainedCallsOnSameLine: don't count package references as chained calls - #5036
    • Xml Report Merger now merges duplicate smells across input report files - #5033
    • Add ending line and column to Location.kt - #5032
    • Fix type resolution link in Contributing.md - #5027
    • #5014 Fix MaxChainedCallsOnSameLine false positives - #5020
    • Add endColumn/endLine to SARIF region - #5011
    • Removed UnnecessaryAbstractClass if it inherits from a abstract class - #5009
    • Only recommend using index accessors for Java classes that are known collections - #4994

    ... (truncated)

    Commits

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-07-18 21:59
  • 10. Bump org.jetbrains.kotlinx.binary-compatibility-validator from 0.10.1 to 0.11.0

    Bumps org.jetbrains.kotlinx.binary-compatibility-validator from 0.10.1 to 0.11.0.

    Release notes

    Sourced from org.jetbrains.kotlinx.binary-compatibility-validator's releases.

    0.11.0

    Commits

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-07-12 20:44
  • 11. Bump org.jetbrains.dokka from 1.7.0 to 1.7.10

    Bumps org.jetbrains.dokka from 1.7.0 to 1.7.10.

    Commits

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Reviewed by dependabot[bot] at 2022-07-12 20:44
Minecraft NBT support for kotlinx.serialization

knbt An implementation of Minecraft's NBT format for kotlinx.serialization. Technical information about NBT can be found here. Using the same version

Aug 9, 2022
Android Parcelable support for the Kotlinx Serialization library.
Android Parcelable support for the Kotlinx Serialization library.

Android Parcelable support for the Kotlinx Serialization library.

Jul 14, 2022
Kotlin tooling for generating kotlinx.serialization serializers for serializing a class as a bitmask

kotlinx-serialization-bitmask Kotlin tooling for generating kotlinx.serialization serializers for serializing a class as a bitmask. Example @Serializa

May 29, 2022
An application to convert strings to diffirent formats
An application to convert strings to diffirent formats

Localized An application to convert strings to diffirent formats This app will help developers to convert strings from application in one platform to

Feb 12, 2021
Automatic CoroutineDispatcher injection and extensions for kotlinx.coroutines

Dispatch Utilities for kotlinx.coroutines which make them type-safe, easier to test, and more expressive. Use the predefined types and factories or de

Jul 31, 2022
Small Kafka Playground to play around with Test Containers, and KotlinX Coroutines bindings while reading Kafka Definite Guide V2

KafkaPlayground Small playground where I'm playing around with Kafka in Kotlin and the Kafka SDK whilst reading the Kafka book Definite Guide from Con

Jul 22, 2022
An tool to help developer to use Retrofit elegantly while using kotlinx.coroutines.

one An tool to help developer to use Retrofit elegantly while using kotlinx.coroutines. Feature Transform different data structs to one. {errorCode, d

Jul 24, 2022
Kotlinx-murmurhash - Kotlin Multiplatform (KMP) library for hashing using MurmurHash

kotlinx-murmurhash Kotlin Multiplatform (KMP) library for MurmurHash, a non-cryp

Aug 9, 2022
Reapp is everything you need to build amazing apps with React: a collection of packages that work together, our UI kit, and a CLI that scaffolds your app and includes a server and build system.
Reapp is everything you need to build amazing apps with React: a collection of packages that work together, our UI kit, and a CLI that scaffolds your app and includes a server and build system.

What is it? Reapp is everything you need to build amazing apps with React: a collection of packages that work together, our UI kit, and a CLI that sca

Aug 12, 2022
YouTube Player library for Android and Chromecast, stable and customizable.
YouTube Player library for Android and Chromecast, stable and customizable.

android-youtube-player android-youtube-player is a stable and customizable open source YouTube player for Android. It provides a simple View that can

Aug 14, 2022
🛠️ The missing drawable toolbox for Android. Create drawables programmatically and get rid of the boring and always repeated drawable.xml files.
🛠️ The missing drawable toolbox for Android. Create drawables programmatically and get rid of the boring and always repeated drawable.xml files.

DrawableToolbox English | 中文 The missing DrawableToolbox for Android. Create drawables programmatically and get rid of the boring and always repeated

Aug 4, 2022
Utility for developers and QAs what helps minimize time wasting on writing the same data for testing over and over again. Made by Stfalcon
 Utility for developers and QAs what helps minimize time wasting on writing the same data for testing over and over again. Made by Stfalcon

Stfalcon Fixturer A Utility for developers and QAs which helps minimize time wasting on writing the same data for testing over and over again. You can

Nov 29, 2021
A simple and easy adapter for RecyclerView. You don't have to make adapters and view holders anymore. Slush will help you.
A simple and easy adapter for RecyclerView. You don't have to make adapters and view holders anymore. Slush will help you.

한국어 No more boilerplate adapters and view holders. Slush will make using RecyclerView easy and fast. The goal of this project is to make RecyclerView,

Jun 19, 2022
The most complete and powerful data-binding library and persistence infra for Kotlin 1.3, Android & Splitties Views DSL, JavaFX & TornadoFX, JSON, JDBC & SQLite, SharedPreferences.

Lychee (ex. reactive-properties) Lychee is a library to rule all the data. ToC Approach to declaring data Properties Other data-binding libraries Prop

Jul 16, 2022
ATH Sample is a sample Authentication and Authorization Application with Kotlin Language and MVVM architecture.
ATH Sample is a sample Authentication and Authorization Application with Kotlin Language and MVVM architecture.

ATH Sample ATH Sample is a sample Authentication and Authorization Application with Kotlin Language and MVVM architecture. Overview ATH Sample is a sa

Jun 8, 2021
Ricky and Morty episode guide using KMM and Apollo GraphQL Native

Ricky And Morty Episodes - Kmm Ricky and Morty episode guide using KMM and Apollo GraphQL Native This is a simple guide on how to create an KMM projec

Apr 15, 2022
D-KMP Architecture official sample: it uses a shared KMP ViewModel and Navigation for Compose and SwiftUI apps.
D-KMP Architecture official sample: it uses a shared KMP ViewModel and Navigation for Compose and SwiftUI apps.

D-KMP architecture - official sample This is the official sample of the D-KMP architecture, presenting a simple master/detail app, for Android, iOS an

Aug 16, 2022
A Kotlin Multiplatform and Compose template that allows you to easily set up your project targeting: Android, Desktop, and Web

A Kotlin Multiplatform and Compose template that allows you to easily set up your project targeting: Android, Desktop, and Web

Oct 27, 2021
Unsplash application for Android, Desktop and Web. Built using Kotlin Multiplatform and Compose
Unsplash application for Android, Desktop and Web. Built using Kotlin Multiplatform and Compose

Unsplash Unsplash application for Android, Desktop and Web. Built using Kotlin Multiplatform and Compose with ❤️ ?? Presentation Set up the environmen

Jul 14, 2022