From 252211729093538fd195f8995d44d60759d64f38 Mon Sep 17 00:00:00 2001 From: Matthew Nelson Date: Fri, 30 Aug 2024 10:09:40 -0400 Subject: [PATCH] Add `klib` api validation (#149) --- .github/workflows/CI.yml | 4 + .../main/kotlin/-KmpConfigurationExtension.kt | 7 +- build.gradle.kts | 5 + gradle/libs.versions.toml | 2 +- library/base16/api/base16.klib.api | 50 +++++ library/base32/api/base32.klib.api | 196 +++++++++++++++++ library/base64/api/base64.klib.api | 88 ++++++++ library/core/api/core.klib.api | 198 ++++++++++++++++++ library/test/build.gradle.kts | 2 +- tools/check-publication/build.gradle.kts | 2 +- 10 files changed, 549 insertions(+), 5 deletions(-) create mode 100644 library/base16/api/base16.klib.api create mode 100644 library/base32/api/base32.klib.api create mode 100644 library/base64/api/base64.klib.api create mode 100644 library/core/api/core.klib.api diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 999cb5f..4254ca6 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -48,6 +48,10 @@ jobs: distribution: 'zulu' java-version: 11 + - name: Check API Compatibility + if: matrix.os == 'macos-latest' + run: > + ./gradlew apiCheck --stacktrace - name: Run macOS Tests if: matrix.os == 'macos-latest' run: > diff --git a/build-logic/src/main/kotlin/-KmpConfigurationExtension.kt b/build-logic/src/main/kotlin/-KmpConfigurationExtension.kt index 0afca9d..4beb9fd 100644 --- a/build-logic/src/main/kotlin/-KmpConfigurationExtension.kt +++ b/build-logic/src/main/kotlin/-KmpConfigurationExtension.kt @@ -23,9 +23,12 @@ import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl fun KmpConfigurationExtension.configureShared( java9ModuleName: String? = null, publish: Boolean = false, - explicitApi: Boolean = true, action: Action, ) { + if (publish) { + require(!java9ModuleName.isNullOrBlank()) { "publications must specify a module-info name" } + } + configure { options { useUniqueModuleNames = true @@ -83,7 +86,7 @@ fun KmpConfigurationExtension.configureShared( } } - if (explicitApi) { kotlin { explicitApi() } } + if (publish) { kotlin { explicitApi() } } action.execute(this) } diff --git a/build.gradle.kts b/build.gradle.kts index fa3c8dd..25c4fac 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -38,6 +38,11 @@ plugins.withType { } apiValidation { + // Only enable when selectively enabled targets are not being passed via cli. + // See https://github.com/Kotlin/binary-compatibility-validator/issues/269 + @OptIn(kotlinx.validation.ExperimentalBCVApi::class) + klib.enabled = findProperty("KMP_TARGETS") == null + if (findProperty("CHECK_PUBLICATION") != null) { ignoredProjects.add("check-publication") } else { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1b53ca8..f155f26 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -gradle-binary-compat = "0.14.0" +gradle-binary-compat = "0.16.3" gradle-kmp-configuration = "0.3.2" gradle-kotlin = "1.9.24" gradle-publish-maven = "0.29.0" diff --git a/library/base16/api/base16.klib.api b/library/base16/api/base16.klib.api new file mode 100644 index 0000000..8865d22 --- /dev/null +++ b/library/base16/api/base16.klib.api @@ -0,0 +1,50 @@ +// Klib ABI Dump +// Targets: [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, wasmWasi, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64] +// Rendering settings: +// - Signature version: 2 +// - Show manifest properties: true +// - Show declarations: true + +// Library unique name: +final class io.matthewnelson.encoding.base16/Base16 : io.matthewnelson.encoding.core/EncoderDecoder { // io.matthewnelson.encoding.base16/Base16|null[0] + constructor (io.matthewnelson.encoding.base16/Base16.Config) // io.matthewnelson.encoding.base16/Base16.|(io.matthewnelson.encoding.base16.Base16.Config){}[0] + + final class Config : io.matthewnelson.encoding.core/EncoderDecoder.Config { // io.matthewnelson.encoding.base16/Base16.Config|null[0] + final val encodeToLowercase // io.matthewnelson.encoding.base16/Base16.Config.encodeToLowercase|{}encodeToLowercase[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base16/Base16.Config.encodeToLowercase.|(){}[0] + } + + final object Companion : io.matthewnelson.encoding.core/EncoderDecoder { // io.matthewnelson.encoding.base16/Base16.Companion|null[0] + final const val CHARS_LOWER // io.matthewnelson.encoding.base16/Base16.Companion.CHARS_LOWER|{}CHARS_LOWER[0] + final fun (): kotlin/String // io.matthewnelson.encoding.base16/Base16.Companion.CHARS_LOWER.|(){}[0] + final const val CHARS_UPPER // io.matthewnelson.encoding.base16/Base16.Companion.CHARS_UPPER|{}CHARS_UPPER[0] + final fun (): kotlin/String // io.matthewnelson.encoding.base16/Base16.Companion.CHARS_UPPER.|(){}[0] + } +} + +final class io.matthewnelson.encoding.base16/Base16ConfigBuilder { // io.matthewnelson.encoding.base16/Base16ConfigBuilder|null[0] + constructor () // io.matthewnelson.encoding.base16/Base16ConfigBuilder.|(){}[0] + constructor (io.matthewnelson.encoding.base16/Base16.Config?) // io.matthewnelson.encoding.base16/Base16ConfigBuilder.|(io.matthewnelson.encoding.base16.Base16.Config?){}[0] + + final var encodeToLowercase // io.matthewnelson.encoding.base16/Base16ConfigBuilder.encodeToLowercase|(kotlin.Boolean){}[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base16/Base16ConfigBuilder.encodeToLowercase.|(){}[0] + final fun (kotlin/Boolean) // io.matthewnelson.encoding.base16/Base16ConfigBuilder.encodeToLowercase.|(kotlin.Boolean){}[0] + final var isLenient // io.matthewnelson.encoding.base16/Base16ConfigBuilder.isLenient|(kotlin.Boolean){}[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base16/Base16ConfigBuilder.isLenient.|(){}[0] + final fun (kotlin/Boolean) // io.matthewnelson.encoding.base16/Base16ConfigBuilder.isLenient.|(kotlin.Boolean){}[0] + final var lineBreakInterval // io.matthewnelson.encoding.base16/Base16ConfigBuilder.lineBreakInterval|(kotlin.Byte){}[0] + final fun (): kotlin/Byte // io.matthewnelson.encoding.base16/Base16ConfigBuilder.lineBreakInterval.|(){}[0] + final fun (kotlin/Byte) // io.matthewnelson.encoding.base16/Base16ConfigBuilder.lineBreakInterval.|(kotlin.Byte){}[0] + + final fun build(): io.matthewnelson.encoding.base16/Base16.Config // io.matthewnelson.encoding.base16/Base16ConfigBuilder.build|build(){}[0] + final fun strict(): io.matthewnelson.encoding.base16/Base16ConfigBuilder // io.matthewnelson.encoding.base16/Base16ConfigBuilder.strict|strict(){}[0] +} + +final fun (kotlin/ByteArray).io.matthewnelson.component.encoding.base16/encodeBase16ToByteArray(): kotlin/ByteArray // io.matthewnelson.component.encoding.base16/encodeBase16ToByteArray|encodeBase16ToByteArray@kotlin.ByteArray(){}[0] +final fun (kotlin/CharArray).io.matthewnelson.component.encoding.base16/decodeBase16ToArray(): kotlin/ByteArray? // io.matthewnelson.component.encoding.base16/decodeBase16ToArray|decodeBase16ToArray@kotlin.CharArray(){}[0] +final fun io.matthewnelson.encoding.base16/Base16(io.matthewnelson.encoding.base16/Base16.Config?, kotlin/Function1): io.matthewnelson.encoding.base16/Base16 // io.matthewnelson.encoding.base16/Base16|Base16(io.matthewnelson.encoding.base16.Base16.Config?;kotlin.Function1){}[0] +final fun io.matthewnelson.encoding.base16/Base16(kotlin/Boolean =...): io.matthewnelson.encoding.base16/Base16 // io.matthewnelson.encoding.base16/Base16|Base16(kotlin.Boolean){}[0] +final fun io.matthewnelson.encoding.base16/Base16(kotlin/Function1): io.matthewnelson.encoding.base16/Base16 // io.matthewnelson.encoding.base16/Base16|Base16(kotlin.Function1){}[0] +final inline fun (kotlin/ByteArray).io.matthewnelson.component.encoding.base16/encodeBase16(): kotlin/String // io.matthewnelson.component.encoding.base16/encodeBase16|encodeBase16@kotlin.ByteArray(){}[0] +final inline fun (kotlin/ByteArray).io.matthewnelson.component.encoding.base16/encodeBase16ToCharArray(): kotlin/CharArray // io.matthewnelson.component.encoding.base16/encodeBase16ToCharArray|encodeBase16ToCharArray@kotlin.ByteArray(){}[0] +final inline fun (kotlin/String).io.matthewnelson.component.encoding.base16/decodeBase16ToArray(): kotlin/ByteArray? // io.matthewnelson.component.encoding.base16/decodeBase16ToArray|decodeBase16ToArray@kotlin.String(){}[0] diff --git a/library/base32/api/base32.klib.api b/library/base32/api/base32.klib.api new file mode 100644 index 0000000..71f0ba1 --- /dev/null +++ b/library/base32/api/base32.klib.api @@ -0,0 +1,196 @@ +// Klib ABI Dump +// Targets: [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, wasmWasi, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64] +// Rendering settings: +// - Signature version: 2 +// - Show manifest properties: true +// - Show declarations: true + +// Library unique name: +final class io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder { // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder|null[0] + constructor () // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder.|(){}[0] + constructor (io.matthewnelson.encoding.base32/Base32.Crockford.Config?) // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder.|(io.matthewnelson.encoding.base32.Base32.Crockford.Config?){}[0] + + final var checkSymbol // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder.checkSymbol|(kotlin.Char?){}[0] + final fun (): kotlin/Char? // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder.checkSymbol.|(){}[0] + final var encodeToLowercase // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder.encodeToLowercase|(kotlin.Boolean){}[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder.encodeToLowercase.|(){}[0] + final fun (kotlin/Boolean) // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder.encodeToLowercase.|(kotlin.Boolean){}[0] + final var finalizeWhenFlushed // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder.finalizeWhenFlushed|(kotlin.Boolean){}[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder.finalizeWhenFlushed.|(){}[0] + final fun (kotlin/Boolean) // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder.finalizeWhenFlushed.|(kotlin.Boolean){}[0] + final var hyphenInterval // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder.hyphenInterval|(kotlin.Byte){}[0] + final fun (): kotlin/Byte // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder.hyphenInterval.|(){}[0] + final fun (kotlin/Byte) // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder.hyphenInterval.|(kotlin.Byte){}[0] + final var isLenient // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder.isLenient|(kotlin.Boolean){}[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder.isLenient.|(){}[0] + final fun (kotlin/Boolean) // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder.isLenient.|(kotlin.Boolean){}[0] + + final fun build(): io.matthewnelson.encoding.base32/Base32.Crockford.Config // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder.build|build(){}[0] + final fun checkSymbol(kotlin/Char?): io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder.checkSymbol|checkSymbol(kotlin.Char?){}[0] + final fun strict(): io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder // io.matthewnelson.encoding.base32/Base32CrockfordConfigBuilder.strict|strict(){}[0] +} + +final class io.matthewnelson.encoding.base32/Base32DefaultConfigBuilder { // io.matthewnelson.encoding.base32/Base32DefaultConfigBuilder|null[0] + constructor () // io.matthewnelson.encoding.base32/Base32DefaultConfigBuilder.|(){}[0] + constructor (io.matthewnelson.encoding.base32/Base32.Default.Config?) // io.matthewnelson.encoding.base32/Base32DefaultConfigBuilder.|(io.matthewnelson.encoding.base32.Base32.Default.Config?){}[0] + + final var encodeToLowercase // io.matthewnelson.encoding.base32/Base32DefaultConfigBuilder.encodeToLowercase|(kotlin.Boolean){}[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base32/Base32DefaultConfigBuilder.encodeToLowercase.|(){}[0] + final fun (kotlin/Boolean) // io.matthewnelson.encoding.base32/Base32DefaultConfigBuilder.encodeToLowercase.|(kotlin.Boolean){}[0] + final var isLenient // io.matthewnelson.encoding.base32/Base32DefaultConfigBuilder.isLenient|(kotlin.Boolean){}[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base32/Base32DefaultConfigBuilder.isLenient.|(){}[0] + final fun (kotlin/Boolean) // io.matthewnelson.encoding.base32/Base32DefaultConfigBuilder.isLenient.|(kotlin.Boolean){}[0] + final var lineBreakInterval // io.matthewnelson.encoding.base32/Base32DefaultConfigBuilder.lineBreakInterval|(kotlin.Byte){}[0] + final fun (): kotlin/Byte // io.matthewnelson.encoding.base32/Base32DefaultConfigBuilder.lineBreakInterval.|(){}[0] + final fun (kotlin/Byte) // io.matthewnelson.encoding.base32/Base32DefaultConfigBuilder.lineBreakInterval.|(kotlin.Byte){}[0] + final var padEncoded // io.matthewnelson.encoding.base32/Base32DefaultConfigBuilder.padEncoded|(kotlin.Boolean){}[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base32/Base32DefaultConfigBuilder.padEncoded.|(){}[0] + final fun (kotlin/Boolean) // io.matthewnelson.encoding.base32/Base32DefaultConfigBuilder.padEncoded.|(kotlin.Boolean){}[0] + + final fun build(): io.matthewnelson.encoding.base32/Base32.Default.Config // io.matthewnelson.encoding.base32/Base32DefaultConfigBuilder.build|build(){}[0] + final fun strict(): io.matthewnelson.encoding.base32/Base32DefaultConfigBuilder // io.matthewnelson.encoding.base32/Base32DefaultConfigBuilder.strict|strict(){}[0] +} + +final class io.matthewnelson.encoding.base32/Base32HexConfigBuilder { // io.matthewnelson.encoding.base32/Base32HexConfigBuilder|null[0] + constructor () // io.matthewnelson.encoding.base32/Base32HexConfigBuilder.|(){}[0] + constructor (io.matthewnelson.encoding.base32/Base32.Hex.Config?) // io.matthewnelson.encoding.base32/Base32HexConfigBuilder.|(io.matthewnelson.encoding.base32.Base32.Hex.Config?){}[0] + + final var encodeToLowercase // io.matthewnelson.encoding.base32/Base32HexConfigBuilder.encodeToLowercase|(kotlin.Boolean){}[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base32/Base32HexConfigBuilder.encodeToLowercase.|(){}[0] + final fun (kotlin/Boolean) // io.matthewnelson.encoding.base32/Base32HexConfigBuilder.encodeToLowercase.|(kotlin.Boolean){}[0] + final var isLenient // io.matthewnelson.encoding.base32/Base32HexConfigBuilder.isLenient|(kotlin.Boolean){}[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base32/Base32HexConfigBuilder.isLenient.|(){}[0] + final fun (kotlin/Boolean) // io.matthewnelson.encoding.base32/Base32HexConfigBuilder.isLenient.|(kotlin.Boolean){}[0] + final var lineBreakInterval // io.matthewnelson.encoding.base32/Base32HexConfigBuilder.lineBreakInterval|(kotlin.Byte){}[0] + final fun (): kotlin/Byte // io.matthewnelson.encoding.base32/Base32HexConfigBuilder.lineBreakInterval.|(){}[0] + final fun (kotlin/Byte) // io.matthewnelson.encoding.base32/Base32HexConfigBuilder.lineBreakInterval.|(kotlin.Byte){}[0] + final var padEncoded // io.matthewnelson.encoding.base32/Base32HexConfigBuilder.padEncoded|(kotlin.Boolean){}[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base32/Base32HexConfigBuilder.padEncoded.|(){}[0] + final fun (kotlin/Boolean) // io.matthewnelson.encoding.base32/Base32HexConfigBuilder.padEncoded.|(kotlin.Boolean){}[0] + + final fun build(): io.matthewnelson.encoding.base32/Base32.Hex.Config // io.matthewnelson.encoding.base32/Base32HexConfigBuilder.build|build(){}[0] + final fun strict(): io.matthewnelson.encoding.base32/Base32HexConfigBuilder // io.matthewnelson.encoding.base32/Base32HexConfigBuilder.strict|strict(){}[0] +} + +sealed class <#A: io.matthewnelson.encoding.core/EncoderDecoder.Config> io.matthewnelson.encoding.base32/Base32 : io.matthewnelson.encoding.core/EncoderDecoder<#A> { // io.matthewnelson.encoding.base32/Base32|null[0] + constructor (#A) // io.matthewnelson.encoding.base32/Base32.|(1:0){}[0] + + final class Crockford : io.matthewnelson.encoding.base32/Base32 { // io.matthewnelson.encoding.base32/Base32.Crockford|null[0] + constructor (io.matthewnelson.encoding.base32/Base32.Crockford.Config) // io.matthewnelson.encoding.base32/Base32.Crockford.|(io.matthewnelson.encoding.base32.Base32.Crockford.Config){}[0] + + final class Config : io.matthewnelson.encoding.core/EncoderDecoder.Config { // io.matthewnelson.encoding.base32/Base32.Crockford.Config|null[0] + final val checkSymbol // io.matthewnelson.encoding.base32/Base32.Crockford.Config.checkSymbol|{}checkSymbol[0] + final fun (): kotlin/Char? // io.matthewnelson.encoding.base32/Base32.Crockford.Config.checkSymbol.|(){}[0] + final val encodeToLowercase // io.matthewnelson.encoding.base32/Base32.Crockford.Config.encodeToLowercase|{}encodeToLowercase[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base32/Base32.Crockford.Config.encodeToLowercase.|(){}[0] + final val finalizeWhenFlushed // io.matthewnelson.encoding.base32/Base32.Crockford.Config.finalizeWhenFlushed|{}finalizeWhenFlushed[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base32/Base32.Crockford.Config.finalizeWhenFlushed.|(){}[0] + final val hyphenInterval // io.matthewnelson.encoding.base32/Base32.Crockford.Config.hyphenInterval|{}hyphenInterval[0] + final fun (): kotlin/Byte // io.matthewnelson.encoding.base32/Base32.Crockford.Config.hyphenInterval.|(){}[0] + } + + final object Companion : io.matthewnelson.encoding.core/EncoderDecoder { // io.matthewnelson.encoding.base32/Base32.Crockford.Companion|null[0] + final const val CHARS_LOWER // io.matthewnelson.encoding.base32/Base32.Crockford.Companion.CHARS_LOWER|{}CHARS_LOWER[0] + final fun (): kotlin/String // io.matthewnelson.encoding.base32/Base32.Crockford.Companion.CHARS_LOWER.|(){}[0] + final const val CHARS_UPPER // io.matthewnelson.encoding.base32/Base32.Crockford.Companion.CHARS_UPPER|{}CHARS_UPPER[0] + final fun (): kotlin/String // io.matthewnelson.encoding.base32/Base32.Crockford.Companion.CHARS_UPPER.|(){}[0] + } + } + + final class Default : io.matthewnelson.encoding.base32/Base32 { // io.matthewnelson.encoding.base32/Base32.Default|null[0] + constructor (io.matthewnelson.encoding.base32/Base32.Default.Config) // io.matthewnelson.encoding.base32/Base32.Default.|(io.matthewnelson.encoding.base32.Base32.Default.Config){}[0] + + final class Config : io.matthewnelson.encoding.core/EncoderDecoder.Config { // io.matthewnelson.encoding.base32/Base32.Default.Config|null[0] + final val encodeToLowercase // io.matthewnelson.encoding.base32/Base32.Default.Config.encodeToLowercase|{}encodeToLowercase[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base32/Base32.Default.Config.encodeToLowercase.|(){}[0] + final val padEncoded // io.matthewnelson.encoding.base32/Base32.Default.Config.padEncoded|{}padEncoded[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base32/Base32.Default.Config.padEncoded.|(){}[0] + } + + final object Companion : io.matthewnelson.encoding.core/EncoderDecoder { // io.matthewnelson.encoding.base32/Base32.Default.Companion|null[0] + final const val CHARS_LOWER // io.matthewnelson.encoding.base32/Base32.Default.Companion.CHARS_LOWER|{}CHARS_LOWER[0] + final fun (): kotlin/String // io.matthewnelson.encoding.base32/Base32.Default.Companion.CHARS_LOWER.|(){}[0] + final const val CHARS_UPPER // io.matthewnelson.encoding.base32/Base32.Default.Companion.CHARS_UPPER|{}CHARS_UPPER[0] + final fun (): kotlin/String // io.matthewnelson.encoding.base32/Base32.Default.Companion.CHARS_UPPER.|(){}[0] + } + } + + final class Hex : io.matthewnelson.encoding.base32/Base32 { // io.matthewnelson.encoding.base32/Base32.Hex|null[0] + constructor (io.matthewnelson.encoding.base32/Base32.Hex.Config) // io.matthewnelson.encoding.base32/Base32.Hex.|(io.matthewnelson.encoding.base32.Base32.Hex.Config){}[0] + + final class Config : io.matthewnelson.encoding.core/EncoderDecoder.Config { // io.matthewnelson.encoding.base32/Base32.Hex.Config|null[0] + final val encodeToLowercase // io.matthewnelson.encoding.base32/Base32.Hex.Config.encodeToLowercase|{}encodeToLowercase[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base32/Base32.Hex.Config.encodeToLowercase.|(){}[0] + final val padEncoded // io.matthewnelson.encoding.base32/Base32.Hex.Config.padEncoded|{}padEncoded[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base32/Base32.Hex.Config.padEncoded.|(){}[0] + } + + final object Companion : io.matthewnelson.encoding.core/EncoderDecoder { // io.matthewnelson.encoding.base32/Base32.Hex.Companion|null[0] + final const val CHARS_LOWER // io.matthewnelson.encoding.base32/Base32.Hex.Companion.CHARS_LOWER|{}CHARS_LOWER[0] + final fun (): kotlin/String // io.matthewnelson.encoding.base32/Base32.Hex.Companion.CHARS_LOWER.|(){}[0] + final const val CHARS_UPPER // io.matthewnelson.encoding.base32/Base32.Hex.Companion.CHARS_UPPER|{}CHARS_UPPER[0] + final fun (): kotlin/String // io.matthewnelson.encoding.base32/Base32.Hex.Companion.CHARS_UPPER.|(){}[0] + } + } +} + +sealed class io.matthewnelson.component.encoding.base32/Base32 { // io.matthewnelson.component.encoding.base32/Base32|null[0] + constructor () // io.matthewnelson.component.encoding.base32/Base32.|(){}[0] + + final class Crockford : io.matthewnelson.component.encoding.base32/Base32 { // io.matthewnelson.component.encoding.base32/Base32.Crockford|null[0] + constructor (kotlin/Char? =...) // io.matthewnelson.component.encoding.base32/Base32.Crockford.|(kotlin.Char?){}[0] + + final val checkByte // io.matthewnelson.component.encoding.base32/Base32.Crockford.checkByte|{}checkByte[0] + final inline fun (): kotlin/Byte? // io.matthewnelson.component.encoding.base32/Base32.Crockford.checkByte.|(){}[0] + final val checkSymbol // io.matthewnelson.component.encoding.base32/Base32.Crockford.checkSymbol|{}checkSymbol[0] + final fun (): kotlin/Char? // io.matthewnelson.component.encoding.base32/Base32.Crockford.checkSymbol.|(){}[0] + final val hasCheckSymbol // io.matthewnelson.component.encoding.base32/Base32.Crockford.hasCheckSymbol|{}hasCheckSymbol[0] + final inline fun (): kotlin/Boolean // io.matthewnelson.component.encoding.base32/Base32.Crockford.hasCheckSymbol.|(){}[0] + + final fun component1(): kotlin/Char? // io.matthewnelson.component.encoding.base32/Base32.Crockford.component1|component1(){}[0] + final fun copy(kotlin/Char? =...): io.matthewnelson.component.encoding.base32/Base32.Crockford // io.matthewnelson.component.encoding.base32/Base32.Crockford.copy|copy(kotlin.Char?){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // io.matthewnelson.component.encoding.base32/Base32.Crockford.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // io.matthewnelson.component.encoding.base32/Base32.Crockford.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // io.matthewnelson.component.encoding.base32/Base32.Crockford.toString|toString(){}[0] + + final object Companion { // io.matthewnelson.component.encoding.base32/Base32.Crockford.Companion|null[0] + final const val CHARS // io.matthewnelson.component.encoding.base32/Base32.Crockford.Companion.CHARS|{}CHARS[0] + final fun (): kotlin/String // io.matthewnelson.component.encoding.base32/Base32.Crockford.Companion.CHARS.|(){}[0] + } + } + + final object Default : io.matthewnelson.component.encoding.base32/Base32 { // io.matthewnelson.component.encoding.base32/Base32.Default|null[0] + final const val CHARS // io.matthewnelson.component.encoding.base32/Base32.Default.CHARS|{}CHARS[0] + final fun (): kotlin/String // io.matthewnelson.component.encoding.base32/Base32.Default.CHARS.|(){}[0] + } + + final object Hex : io.matthewnelson.component.encoding.base32/Base32 { // io.matthewnelson.component.encoding.base32/Base32.Hex|null[0] + final const val CHARS // io.matthewnelson.component.encoding.base32/Base32.Hex.CHARS|{}CHARS[0] + final fun (): kotlin/String // io.matthewnelson.component.encoding.base32/Base32.Hex.CHARS.|(){}[0] + } +} + +final fun (kotlin/ByteArray).io.matthewnelson.component.encoding.base32/encodeBase32ToByteArray(io.matthewnelson.component.encoding.base32/Base32.Crockford): kotlin/ByteArray // io.matthewnelson.component.encoding.base32/encodeBase32ToByteArray|encodeBase32ToByteArray@kotlin.ByteArray(io.matthewnelson.component.encoding.base32.Base32.Crockford){}[0] +final fun (kotlin/ByteArray).io.matthewnelson.component.encoding.base32/encodeBase32ToByteArray(io.matthewnelson.component.encoding.base32/Base32.Default =...): kotlin/ByteArray // io.matthewnelson.component.encoding.base32/encodeBase32ToByteArray|encodeBase32ToByteArray@kotlin.ByteArray(io.matthewnelson.component.encoding.base32.Base32.Default){}[0] +final fun (kotlin/ByteArray).io.matthewnelson.component.encoding.base32/encodeBase32ToByteArray(io.matthewnelson.component.encoding.base32/Base32.Hex): kotlin/ByteArray // io.matthewnelson.component.encoding.base32/encodeBase32ToByteArray|encodeBase32ToByteArray@kotlin.ByteArray(io.matthewnelson.component.encoding.base32.Base32.Hex){}[0] +final fun (kotlin/CharArray).io.matthewnelson.component.encoding.base32/decodeBase32ToArray(io.matthewnelson.component.encoding.base32/Base32.Crockford): kotlin/ByteArray? // io.matthewnelson.component.encoding.base32/decodeBase32ToArray|decodeBase32ToArray@kotlin.CharArray(io.matthewnelson.component.encoding.base32.Base32.Crockford){}[0] +final fun (kotlin/CharArray).io.matthewnelson.component.encoding.base32/decodeBase32ToArray(io.matthewnelson.component.encoding.base32/Base32.Default =...): kotlin/ByteArray? // io.matthewnelson.component.encoding.base32/decodeBase32ToArray|decodeBase32ToArray@kotlin.CharArray(io.matthewnelson.component.encoding.base32.Base32.Default){}[0] +final fun (kotlin/CharArray).io.matthewnelson.component.encoding.base32/decodeBase32ToArray(io.matthewnelson.component.encoding.base32/Base32.Hex): kotlin/ByteArray? // io.matthewnelson.component.encoding.base32/decodeBase32ToArray|decodeBase32ToArray@kotlin.CharArray(io.matthewnelson.component.encoding.base32.Base32.Hex){}[0] +final fun io.matthewnelson.encoding.base32/Base32Crockford(io.matthewnelson.encoding.base32/Base32.Crockford.Config?, kotlin/Function1): io.matthewnelson.encoding.base32/Base32.Crockford // io.matthewnelson.encoding.base32/Base32Crockford|Base32Crockford(io.matthewnelson.encoding.base32.Base32.Crockford.Config?;kotlin.Function1){}[0] +final fun io.matthewnelson.encoding.base32/Base32Crockford(kotlin/Boolean =...): io.matthewnelson.encoding.base32/Base32.Crockford // io.matthewnelson.encoding.base32/Base32Crockford|Base32Crockford(kotlin.Boolean){}[0] +final fun io.matthewnelson.encoding.base32/Base32Crockford(kotlin/Function1): io.matthewnelson.encoding.base32/Base32.Crockford // io.matthewnelson.encoding.base32/Base32Crockford|Base32Crockford(kotlin.Function1){}[0] +final fun io.matthewnelson.encoding.base32/Base32Default(io.matthewnelson.encoding.base32/Base32.Default.Config?, kotlin/Function1): io.matthewnelson.encoding.base32/Base32.Default // io.matthewnelson.encoding.base32/Base32Default|Base32Default(io.matthewnelson.encoding.base32.Base32.Default.Config?;kotlin.Function1){}[0] +final fun io.matthewnelson.encoding.base32/Base32Default(kotlin/Boolean =...): io.matthewnelson.encoding.base32/Base32.Default // io.matthewnelson.encoding.base32/Base32Default|Base32Default(kotlin.Boolean){}[0] +final fun io.matthewnelson.encoding.base32/Base32Default(kotlin/Function1): io.matthewnelson.encoding.base32/Base32.Default // io.matthewnelson.encoding.base32/Base32Default|Base32Default(kotlin.Function1){}[0] +final fun io.matthewnelson.encoding.base32/Base32Hex(io.matthewnelson.encoding.base32/Base32.Hex.Config?, kotlin/Function1): io.matthewnelson.encoding.base32/Base32.Hex // io.matthewnelson.encoding.base32/Base32Hex|Base32Hex(io.matthewnelson.encoding.base32.Base32.Hex.Config?;kotlin.Function1){}[0] +final fun io.matthewnelson.encoding.base32/Base32Hex(kotlin/Boolean =...): io.matthewnelson.encoding.base32/Base32.Hex // io.matthewnelson.encoding.base32/Base32Hex|Base32Hex(kotlin.Boolean){}[0] +final fun io.matthewnelson.encoding.base32/Base32Hex(kotlin/Function1): io.matthewnelson.encoding.base32/Base32.Hex // io.matthewnelson.encoding.base32/Base32Hex|Base32Hex(kotlin.Function1){}[0] +final inline fun (kotlin/ByteArray).io.matthewnelson.component.encoding.base32/encodeBase32(io.matthewnelson.component.encoding.base32/Base32.Crockford): kotlin/String // io.matthewnelson.component.encoding.base32/encodeBase32|encodeBase32@kotlin.ByteArray(io.matthewnelson.component.encoding.base32.Base32.Crockford){}[0] +final inline fun (kotlin/ByteArray).io.matthewnelson.component.encoding.base32/encodeBase32(io.matthewnelson.component.encoding.base32/Base32.Default =...): kotlin/String // io.matthewnelson.component.encoding.base32/encodeBase32|encodeBase32@kotlin.ByteArray(io.matthewnelson.component.encoding.base32.Base32.Default){}[0] +final inline fun (kotlin/ByteArray).io.matthewnelson.component.encoding.base32/encodeBase32(io.matthewnelson.component.encoding.base32/Base32.Hex): kotlin/String // io.matthewnelson.component.encoding.base32/encodeBase32|encodeBase32@kotlin.ByteArray(io.matthewnelson.component.encoding.base32.Base32.Hex){}[0] +final inline fun (kotlin/ByteArray).io.matthewnelson.component.encoding.base32/encodeBase32ToCharArray(io.matthewnelson.component.encoding.base32/Base32.Crockford): kotlin/CharArray // io.matthewnelson.component.encoding.base32/encodeBase32ToCharArray|encodeBase32ToCharArray@kotlin.ByteArray(io.matthewnelson.component.encoding.base32.Base32.Crockford){}[0] +final inline fun (kotlin/ByteArray).io.matthewnelson.component.encoding.base32/encodeBase32ToCharArray(io.matthewnelson.component.encoding.base32/Base32.Default =...): kotlin/CharArray // io.matthewnelson.component.encoding.base32/encodeBase32ToCharArray|encodeBase32ToCharArray@kotlin.ByteArray(io.matthewnelson.component.encoding.base32.Base32.Default){}[0] +final inline fun (kotlin/ByteArray).io.matthewnelson.component.encoding.base32/encodeBase32ToCharArray(io.matthewnelson.component.encoding.base32/Base32.Hex): kotlin/CharArray // io.matthewnelson.component.encoding.base32/encodeBase32ToCharArray|encodeBase32ToCharArray@kotlin.ByteArray(io.matthewnelson.component.encoding.base32.Base32.Hex){}[0] +final inline fun (kotlin/String).io.matthewnelson.component.encoding.base32/decodeBase32ToArray(io.matthewnelson.component.encoding.base32/Base32.Crockford): kotlin/ByteArray? // io.matthewnelson.component.encoding.base32/decodeBase32ToArray|decodeBase32ToArray@kotlin.String(io.matthewnelson.component.encoding.base32.Base32.Crockford){}[0] +final inline fun (kotlin/String).io.matthewnelson.component.encoding.base32/decodeBase32ToArray(io.matthewnelson.component.encoding.base32/Base32.Default =...): kotlin/ByteArray? // io.matthewnelson.component.encoding.base32/decodeBase32ToArray|decodeBase32ToArray@kotlin.String(io.matthewnelson.component.encoding.base32.Base32.Default){}[0] +final inline fun (kotlin/String).io.matthewnelson.component.encoding.base32/decodeBase32ToArray(io.matthewnelson.component.encoding.base32/Base32.Hex): kotlin/ByteArray? // io.matthewnelson.component.encoding.base32/decodeBase32ToArray|decodeBase32ToArray@kotlin.String(io.matthewnelson.component.encoding.base32.Base32.Hex){}[0] diff --git a/library/base64/api/base64.klib.api b/library/base64/api/base64.klib.api new file mode 100644 index 0000000..c45ba9a --- /dev/null +++ b/library/base64/api/base64.klib.api @@ -0,0 +1,88 @@ +// Klib ABI Dump +// Targets: [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, wasmWasi, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64] +// Rendering settings: +// - Signature version: 2 +// - Show manifest properties: true +// - Show declarations: true + +// Library unique name: +final class io.matthewnelson.encoding.base64/Base64 : io.matthewnelson.encoding.core/EncoderDecoder { // io.matthewnelson.encoding.base64/Base64|null[0] + constructor (io.matthewnelson.encoding.base64/Base64.Config) // io.matthewnelson.encoding.base64/Base64.|(io.matthewnelson.encoding.base64.Base64.Config){}[0] + + final class Config : io.matthewnelson.encoding.core/EncoderDecoder.Config { // io.matthewnelson.encoding.base64/Base64.Config|null[0] + final val encodeToUrlSafe // io.matthewnelson.encoding.base64/Base64.Config.encodeToUrlSafe|{}encodeToUrlSafe[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base64/Base64.Config.encodeToUrlSafe.|(){}[0] + final val padEncoded // io.matthewnelson.encoding.base64/Base64.Config.padEncoded|{}padEncoded[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base64/Base64.Config.padEncoded.|(){}[0] + } + + final object Default : io.matthewnelson.encoding.core/EncoderDecoder { // io.matthewnelson.encoding.base64/Base64.Default|null[0] + final const val CHARS // io.matthewnelson.encoding.base64/Base64.Default.CHARS|{}CHARS[0] + final fun (): kotlin/String // io.matthewnelson.encoding.base64/Base64.Default.CHARS.|(){}[0] + } + + final object UrlSafe : io.matthewnelson.encoding.core/EncoderDecoder { // io.matthewnelson.encoding.base64/Base64.UrlSafe|null[0] + final const val CHARS // io.matthewnelson.encoding.base64/Base64.UrlSafe.CHARS|{}CHARS[0] + final fun (): kotlin/String // io.matthewnelson.encoding.base64/Base64.UrlSafe.CHARS.|(){}[0] + } +} + +final class io.matthewnelson.encoding.base64/Base64ConfigBuilder { // io.matthewnelson.encoding.base64/Base64ConfigBuilder|null[0] + constructor () // io.matthewnelson.encoding.base64/Base64ConfigBuilder.|(){}[0] + constructor (io.matthewnelson.encoding.base64/Base64.Config?) // io.matthewnelson.encoding.base64/Base64ConfigBuilder.|(io.matthewnelson.encoding.base64.Base64.Config?){}[0] + + final var encodeToUrlSafe // io.matthewnelson.encoding.base64/Base64ConfigBuilder.encodeToUrlSafe|(kotlin.Boolean){}[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base64/Base64ConfigBuilder.encodeToUrlSafe.|(){}[0] + final fun (kotlin/Boolean) // io.matthewnelson.encoding.base64/Base64ConfigBuilder.encodeToUrlSafe.|(kotlin.Boolean){}[0] + final var isLenient // io.matthewnelson.encoding.base64/Base64ConfigBuilder.isLenient|(kotlin.Boolean){}[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base64/Base64ConfigBuilder.isLenient.|(){}[0] + final fun (kotlin/Boolean) // io.matthewnelson.encoding.base64/Base64ConfigBuilder.isLenient.|(kotlin.Boolean){}[0] + final var lineBreakInterval // io.matthewnelson.encoding.base64/Base64ConfigBuilder.lineBreakInterval|(kotlin.Byte){}[0] + final fun (): kotlin/Byte // io.matthewnelson.encoding.base64/Base64ConfigBuilder.lineBreakInterval.|(){}[0] + final fun (kotlin/Byte) // io.matthewnelson.encoding.base64/Base64ConfigBuilder.lineBreakInterval.|(kotlin.Byte){}[0] + final var padEncoded // io.matthewnelson.encoding.base64/Base64ConfigBuilder.padEncoded|(kotlin.Boolean){}[0] + final fun (): kotlin/Boolean // io.matthewnelson.encoding.base64/Base64ConfigBuilder.padEncoded.|(){}[0] + final fun (kotlin/Boolean) // io.matthewnelson.encoding.base64/Base64ConfigBuilder.padEncoded.|(kotlin.Boolean){}[0] + + final fun build(): io.matthewnelson.encoding.base64/Base64.Config // io.matthewnelson.encoding.base64/Base64ConfigBuilder.build|build(){}[0] + final fun strict(): io.matthewnelson.encoding.base64/Base64ConfigBuilder // io.matthewnelson.encoding.base64/Base64ConfigBuilder.strict|strict(){}[0] +} + +sealed class io.matthewnelson.component.base64/Base64 { // io.matthewnelson.component.base64/Base64|null[0] + constructor () // io.matthewnelson.component.base64/Base64.|(){}[0] + + final class UrlSafe : io.matthewnelson.component.base64/Base64 { // io.matthewnelson.component.base64/Base64.UrlSafe|null[0] + constructor (kotlin/Boolean =...) // io.matthewnelson.component.base64/Base64.UrlSafe.|(kotlin.Boolean){}[0] + + final val pad // io.matthewnelson.component.base64/Base64.UrlSafe.pad|{}pad[0] + final fun (): kotlin/Boolean // io.matthewnelson.component.base64/Base64.UrlSafe.pad.|(){}[0] + + final fun component1(): kotlin/Boolean // io.matthewnelson.component.base64/Base64.UrlSafe.component1|component1(){}[0] + final fun copy(kotlin/Boolean =...): io.matthewnelson.component.base64/Base64.UrlSafe // io.matthewnelson.component.base64/Base64.UrlSafe.copy|copy(kotlin.Boolean){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // io.matthewnelson.component.base64/Base64.UrlSafe.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // io.matthewnelson.component.base64/Base64.UrlSafe.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // io.matthewnelson.component.base64/Base64.UrlSafe.toString|toString(){}[0] + + final object Companion { // io.matthewnelson.component.base64/Base64.UrlSafe.Companion|null[0] + final const val CHARS // io.matthewnelson.component.base64/Base64.UrlSafe.Companion.CHARS|{}CHARS[0] + final fun (): kotlin/String // io.matthewnelson.component.base64/Base64.UrlSafe.Companion.CHARS.|(){}[0] + } + } + + final object Default : io.matthewnelson.component.base64/Base64 { // io.matthewnelson.component.base64/Base64.Default|null[0] + final const val CHARS // io.matthewnelson.component.base64/Base64.Default.CHARS|{}CHARS[0] + final fun (): kotlin/String // io.matthewnelson.component.base64/Base64.Default.CHARS.|(){}[0] + } +} + +final fun (kotlin/ByteArray).io.matthewnelson.component.base64/encodeBase64ToByteArray(io.matthewnelson.component.base64/Base64.Default =...): kotlin/ByteArray // io.matthewnelson.component.base64/encodeBase64ToByteArray|encodeBase64ToByteArray@kotlin.ByteArray(io.matthewnelson.component.base64.Base64.Default){}[0] +final fun (kotlin/ByteArray).io.matthewnelson.component.base64/encodeBase64ToByteArray(io.matthewnelson.component.base64/Base64.UrlSafe): kotlin/ByteArray // io.matthewnelson.component.base64/encodeBase64ToByteArray|encodeBase64ToByteArray@kotlin.ByteArray(io.matthewnelson.component.base64.Base64.UrlSafe){}[0] +final fun (kotlin/CharArray).io.matthewnelson.component.base64/decodeBase64ToArray(): kotlin/ByteArray? // io.matthewnelson.component.base64/decodeBase64ToArray|decodeBase64ToArray@kotlin.CharArray(){}[0] +final fun io.matthewnelson.encoding.base64/Base64(io.matthewnelson.encoding.base64/Base64.Config?, kotlin/Function1): io.matthewnelson.encoding.base64/Base64 // io.matthewnelson.encoding.base64/Base64|Base64(io.matthewnelson.encoding.base64.Base64.Config?;kotlin.Function1){}[0] +final fun io.matthewnelson.encoding.base64/Base64(kotlin/Boolean =...): io.matthewnelson.encoding.base64/Base64 // io.matthewnelson.encoding.base64/Base64|Base64(kotlin.Boolean){}[0] +final fun io.matthewnelson.encoding.base64/Base64(kotlin/Function1): io.matthewnelson.encoding.base64/Base64 // io.matthewnelson.encoding.base64/Base64|Base64(kotlin.Function1){}[0] +final inline fun (kotlin/ByteArray).io.matthewnelson.component.base64/encodeBase64(io.matthewnelson.component.base64/Base64.Default =...): kotlin/String // io.matthewnelson.component.base64/encodeBase64|encodeBase64@kotlin.ByteArray(io.matthewnelson.component.base64.Base64.Default){}[0] +final inline fun (kotlin/ByteArray).io.matthewnelson.component.base64/encodeBase64(io.matthewnelson.component.base64/Base64.UrlSafe): kotlin/String // io.matthewnelson.component.base64/encodeBase64|encodeBase64@kotlin.ByteArray(io.matthewnelson.component.base64.Base64.UrlSafe){}[0] +final inline fun (kotlin/ByteArray).io.matthewnelson.component.base64/encodeBase64ToCharArray(io.matthewnelson.component.base64/Base64.Default =...): kotlin/CharArray // io.matthewnelson.component.base64/encodeBase64ToCharArray|encodeBase64ToCharArray@kotlin.ByteArray(io.matthewnelson.component.base64.Base64.Default){}[0] +final inline fun (kotlin/ByteArray).io.matthewnelson.component.base64/encodeBase64ToCharArray(io.matthewnelson.component.base64/Base64.UrlSafe): kotlin/CharArray // io.matthewnelson.component.base64/encodeBase64ToCharArray|encodeBase64ToCharArray@kotlin.ByteArray(io.matthewnelson.component.base64.Base64.UrlSafe){}[0] +final inline fun (kotlin/String).io.matthewnelson.component.base64/decodeBase64ToArray(): kotlin/ByteArray? // io.matthewnelson.component.base64/decodeBase64ToArray|decodeBase64ToArray@kotlin.String(){}[0] diff --git a/library/core/api/core.klib.api b/library/core/api/core.klib.api new file mode 100644 index 0000000..91d71d4 --- /dev/null +++ b/library/core/api/core.klib.api @@ -0,0 +1,198 @@ +// Klib ABI Dump +// Targets: [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, wasmWasi, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64] +// Rendering settings: +// - Signature version: 2 +// - Show manifest properties: true +// - Show declarations: true + +// Library unique name: +open annotation class io.matthewnelson.encoding.core.internal/InternalEncodingApi : kotlin/Annotation { // io.matthewnelson.encoding.core.internal/InternalEncodingApi|null[0] + constructor () // io.matthewnelson.encoding.core.internal/InternalEncodingApi.|(){}[0] +} + +open annotation class io.matthewnelson.encoding.core/ExperimentalEncodingApi : kotlin/Annotation { // io.matthewnelson.encoding.core/ExperimentalEncodingApi|null[0] + constructor () // io.matthewnelson.encoding.core/ExperimentalEncodingApi.|(){}[0] +} + +abstract class <#A: io.matthewnelson.encoding.core/EncoderDecoder.Config> io.matthewnelson.encoding.core/EncoderDecoder : io.matthewnelson.encoding.core/Encoder<#A> { // io.matthewnelson.encoding.core/EncoderDecoder|null[0] + constructor (#A) // io.matthewnelson.encoding.core/EncoderDecoder.|(1:0){}[0] + + abstract fun name(): kotlin/String // io.matthewnelson.encoding.core/EncoderDecoder.name|name(){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // io.matthewnelson.encoding.core/EncoderDecoder.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // io.matthewnelson.encoding.core/EncoderDecoder.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // io.matthewnelson.encoding.core/EncoderDecoder.toString|toString(){}[0] + + abstract class Config { // io.matthewnelson.encoding.core/EncoderDecoder.Config|null[0] + constructor (kotlin/Boolean?, kotlin/Byte, kotlin/Char?) // io.matthewnelson.encoding.core/EncoderDecoder.Config.|(kotlin.Boolean?;kotlin.Byte;kotlin.Char?){}[0] + + final val isLenient // io.matthewnelson.encoding.core/EncoderDecoder.Config.isLenient|{}isLenient[0] + final fun (): kotlin/Boolean? // io.matthewnelson.encoding.core/EncoderDecoder.Config.isLenient.|(){}[0] + final val lineBreakInterval // io.matthewnelson.encoding.core/EncoderDecoder.Config.lineBreakInterval|{}lineBreakInterval[0] + final fun (): kotlin/Byte // io.matthewnelson.encoding.core/EncoderDecoder.Config.lineBreakInterval.|(){}[0] + final val paddingChar // io.matthewnelson.encoding.core/EncoderDecoder.Config.paddingChar|{}paddingChar[0] + final fun (): kotlin/Char? // io.matthewnelson.encoding.core/EncoderDecoder.Config.paddingChar.|(){}[0] + + abstract fun decodeOutMaxSizeOrFailProtected(kotlin/Int, io.matthewnelson.encoding.core.util/DecoderInput): kotlin/Int // io.matthewnelson.encoding.core/EncoderDecoder.Config.decodeOutMaxSizeOrFailProtected|decodeOutMaxSizeOrFailProtected(kotlin.Int;io.matthewnelson.encoding.core.util.DecoderInput){}[0] + abstract fun decodeOutMaxSizeProtected(kotlin/Long): kotlin/Long // io.matthewnelson.encoding.core/EncoderDecoder.Config.decodeOutMaxSizeProtected|decodeOutMaxSizeProtected(kotlin.Long){}[0] + abstract fun encodeOutSizeProtected(kotlin/Long): kotlin/Long // io.matthewnelson.encoding.core/EncoderDecoder.Config.encodeOutSizeProtected|encodeOutSizeProtected(kotlin.Long){}[0] + abstract fun toStringAddSettings(): kotlin.collections/Set // io.matthewnelson.encoding.core/EncoderDecoder.Config.toStringAddSettings|toStringAddSettings(){}[0] + final fun decodeOutMaxSize(kotlin/Long): kotlin/Long // io.matthewnelson.encoding.core/EncoderDecoder.Config.decodeOutMaxSize|decodeOutMaxSize(kotlin.Long){}[0] + final fun decodeOutMaxSizeOrFail(io.matthewnelson.encoding.core.util/DecoderInput): kotlin/Int // io.matthewnelson.encoding.core/EncoderDecoder.Config.decodeOutMaxSizeOrFail|decodeOutMaxSizeOrFail(io.matthewnelson.encoding.core.util.DecoderInput){}[0] + final fun encodeOutSize(kotlin/Long): kotlin/Long // io.matthewnelson.encoding.core/EncoderDecoder.Config.encodeOutSize|encodeOutSize(kotlin.Long){}[0] + final fun encodeOutSize(kotlin/Long, kotlin/Byte): kotlin/Long // io.matthewnelson.encoding.core/EncoderDecoder.Config.encodeOutSize|encodeOutSize(kotlin.Long;kotlin.Byte){}[0] + final fun equals(kotlin/Any?): kotlin/Boolean // io.matthewnelson.encoding.core/EncoderDecoder.Config.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // io.matthewnelson.encoding.core/EncoderDecoder.Config.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // io.matthewnelson.encoding.core/EncoderDecoder.Config.toString|toString(){}[0] + + final inner class Setting { // io.matthewnelson.encoding.core/EncoderDecoder.Config.Setting|null[0] + constructor (kotlin/String, kotlin/Any?) // io.matthewnelson.encoding.core/EncoderDecoder.Config.Setting.|(kotlin.String;kotlin.Any?){}[0] + + final val name // io.matthewnelson.encoding.core/EncoderDecoder.Config.Setting.name|{}name[0] + final fun (): kotlin/String // io.matthewnelson.encoding.core/EncoderDecoder.Config.Setting.name.|(){}[0] + final val value // io.matthewnelson.encoding.core/EncoderDecoder.Config.Setting.value|{}value[0] + final fun (): kotlin/Any? // io.matthewnelson.encoding.core/EncoderDecoder.Config.Setting.value.|(){}[0] + + final fun equals(kotlin/Any?): kotlin/Boolean // io.matthewnelson.encoding.core/EncoderDecoder.Config.Setting.equals|equals(kotlin.Any?){}[0] + final fun hashCode(): kotlin/Int // io.matthewnelson.encoding.core/EncoderDecoder.Config.Setting.hashCode|hashCode(){}[0] + final fun toString(): kotlin/String // io.matthewnelson.encoding.core/EncoderDecoder.Config.Setting.toString|toString(){}[0] + } + + final object Companion { // io.matthewnelson.encoding.core/EncoderDecoder.Config.Companion|null[0] + final fun outSizeExceedsMaxEncodingSizeException(kotlin/Number, kotlin/Number): io.matthewnelson.encoding.core/EncodingSizeException // io.matthewnelson.encoding.core/EncoderDecoder.Config.Companion.outSizeExceedsMaxEncodingSizeException|outSizeExceedsMaxEncodingSizeException(kotlin.Number;kotlin.Number){}[0] + } + } + + sealed class <#A1: io.matthewnelson.encoding.core/EncoderDecoder.Config> Feed { // io.matthewnelson.encoding.core/EncoderDecoder.Feed|null[0] + constructor (#A1) // io.matthewnelson.encoding.core/EncoderDecoder.Feed.|(1:0){}[0] + + final val config // io.matthewnelson.encoding.core/EncoderDecoder.Feed.config|{}config[0] + final fun (): #A1 // io.matthewnelson.encoding.core/EncoderDecoder.Feed.config.|(){}[0] + + abstract fun close() // io.matthewnelson.encoding.core/EncoderDecoder.Feed.close|close(){}[0] + abstract fun doFinalProtected() // io.matthewnelson.encoding.core/EncoderDecoder.Feed.doFinalProtected|doFinalProtected(){}[0] + abstract fun flush() // io.matthewnelson.encoding.core/EncoderDecoder.Feed.flush|flush(){}[0] + abstract fun isClosed(): kotlin/Boolean // io.matthewnelson.encoding.core/EncoderDecoder.Feed.isClosed|isClosed(){}[0] + final fun doFinal() // io.matthewnelson.encoding.core/EncoderDecoder.Feed.doFinal|doFinal(){}[0] + } +} + +abstract class io.matthewnelson.encoding.core.util/FeedBuffer { // io.matthewnelson.encoding.core.util/FeedBuffer|null[0] + constructor (kotlin/Int, io.matthewnelson.encoding.core.util/FeedBuffer.Flush, io.matthewnelson.encoding.core.util/FeedBuffer.Finalize) // io.matthewnelson.encoding.core.util/FeedBuffer.|(kotlin.Int;io.matthewnelson.encoding.core.util.FeedBuffer.Flush;io.matthewnelson.encoding.core.util.FeedBuffer.Finalize){}[0] + + final val blockSize // io.matthewnelson.encoding.core.util/FeedBuffer.blockSize|{}blockSize[0] + final fun (): kotlin/Int // io.matthewnelson.encoding.core.util/FeedBuffer.blockSize.|(){}[0] + + final var count // io.matthewnelson.encoding.core.util/FeedBuffer.count|{}count[0] + final fun (): kotlin/Int // io.matthewnelson.encoding.core.util/FeedBuffer.count.|(){}[0] + + final fun finalize() // io.matthewnelson.encoding.core.util/FeedBuffer.finalize|finalize(){}[0] + final fun update(kotlin/Int) // io.matthewnelson.encoding.core.util/FeedBuffer.update|update(kotlin.Int){}[0] + + abstract fun interface Finalize { // io.matthewnelson.encoding.core.util/FeedBuffer.Finalize|null[0] + abstract fun invoke(kotlin/Int, kotlin/IntArray) // io.matthewnelson.encoding.core.util/FeedBuffer.Finalize.invoke|invoke(kotlin.Int;kotlin.IntArray){}[0] + } + + abstract fun interface Flush { // io.matthewnelson.encoding.core.util/FeedBuffer.Flush|null[0] + abstract fun invoke(kotlin/IntArray) // io.matthewnelson.encoding.core.util/FeedBuffer.Flush.invoke|invoke(kotlin.IntArray){}[0] + } + + final object Companion { // io.matthewnelson.encoding.core.util/FeedBuffer.Companion|null[0] + final fun truncatedInputEncodingException(kotlin/Int): io.matthewnelson.encoding.core/EncodingException // io.matthewnelson.encoding.core.util/FeedBuffer.Companion.truncatedInputEncodingException|truncatedInputEncodingException(kotlin.Int){}[0] + } +} + +final class io.matthewnelson.encoding.core.util/DecoderInput { // io.matthewnelson.encoding.core.util/DecoderInput|null[0] + constructor (kotlin/ByteArray) // io.matthewnelson.encoding.core.util/DecoderInput.|(kotlin.ByteArray){}[0] + constructor (kotlin/CharArray) // io.matthewnelson.encoding.core.util/DecoderInput.|(kotlin.CharArray){}[0] + constructor (kotlin/CharSequence) // io.matthewnelson.encoding.core.util/DecoderInput.|(kotlin.CharSequence){}[0] + + final fun get(kotlin/Int): kotlin/Char // io.matthewnelson.encoding.core.util/DecoderInput.get|get(kotlin.Int){}[0] +} + +final class io.matthewnelson.encoding.core.util/LineBreakOutFeed : io.matthewnelson.encoding.core/Encoder.OutFeed { // io.matthewnelson.encoding.core.util/LineBreakOutFeed|null[0] + constructor (kotlin/Byte, io.matthewnelson.encoding.core/Encoder.OutFeed) // io.matthewnelson.encoding.core.util/LineBreakOutFeed.|(kotlin.Byte;io.matthewnelson.encoding.core.Encoder.OutFeed){}[0] + + final val interval // io.matthewnelson.encoding.core.util/LineBreakOutFeed.interval|{}interval[0] + final fun (): kotlin/Byte // io.matthewnelson.encoding.core.util/LineBreakOutFeed.interval.|(){}[0] + + final fun output(kotlin/Char) // io.matthewnelson.encoding.core.util/LineBreakOutFeed.output|output(kotlin.Char){}[0] + final fun reset() // io.matthewnelson.encoding.core.util/LineBreakOutFeed.reset|reset(){}[0] +} + +open class io.matthewnelson.encoding.core/EncodingException : kotlin/RuntimeException { // io.matthewnelson.encoding.core/EncodingException|null[0] + constructor (kotlin/String) // io.matthewnelson.encoding.core/EncodingException.|(kotlin.String){}[0] + constructor (kotlin/String, kotlin/Throwable?) // io.matthewnelson.encoding.core/EncodingException.|(kotlin.String;kotlin.Throwable?){}[0] + + final val message // io.matthewnelson.encoding.core/EncodingException.message|{}message[0] + final fun (): kotlin/String // io.matthewnelson.encoding.core/EncodingException.message.|(){}[0] +} + +open class io.matthewnelson.encoding.core/EncodingSizeException : io.matthewnelson.encoding.core/EncodingException { // io.matthewnelson.encoding.core/EncodingSizeException|null[0] + constructor (kotlin/String) // io.matthewnelson.encoding.core/EncodingSizeException.|(kotlin.String){}[0] + constructor (kotlin/String, kotlin/Throwable?) // io.matthewnelson.encoding.core/EncodingSizeException.|(kotlin.String;kotlin.Throwable?){}[0] +} + +sealed class <#A: io.matthewnelson.encoding.core/EncoderDecoder.Config> io.matthewnelson.encoding.core/Decoder { // io.matthewnelson.encoding.core/Decoder|null[0] + constructor (#A) // io.matthewnelson.encoding.core/Decoder.|(1:0){}[0] + + final val config // io.matthewnelson.encoding.core/Decoder.config|{}config[0] + final fun (): #A // io.matthewnelson.encoding.core/Decoder.config.|(){}[0] + + abstract fun newDecoderFeedProtected(io.matthewnelson.encoding.core/Decoder.OutFeed): io.matthewnelson.encoding.core/Decoder.Feed<#A> // io.matthewnelson.encoding.core/Decoder.newDecoderFeedProtected|newDecoderFeedProtected(io.matthewnelson.encoding.core.Decoder.OutFeed){}[0] + final fun newDecoderFeed(io.matthewnelson.encoding.core/Decoder.OutFeed): io.matthewnelson.encoding.core/Decoder.Feed<#A> // io.matthewnelson.encoding.core/Decoder.newDecoderFeed|newDecoderFeed(io.matthewnelson.encoding.core.Decoder.OutFeed){}[0] + + abstract fun interface OutFeed { // io.matthewnelson.encoding.core/Decoder.OutFeed|null[0] + abstract fun output(kotlin/Byte) // io.matthewnelson.encoding.core/Decoder.OutFeed.output|output(kotlin.Byte){}[0] + } + + abstract inner class Feed : io.matthewnelson.encoding.core/EncoderDecoder.Feed<#A> { // io.matthewnelson.encoding.core/Decoder.Feed|null[0] + constructor () // io.matthewnelson.encoding.core/Decoder.Feed.|(){}[0] + + abstract fun consumeProtected(kotlin/Char) // io.matthewnelson.encoding.core/Decoder.Feed.consumeProtected|consumeProtected(kotlin.Char){}[0] + final fun close() // io.matthewnelson.encoding.core/Decoder.Feed.close|close(){}[0] + final fun consume(kotlin/Char) // io.matthewnelson.encoding.core/Decoder.Feed.consume|consume(kotlin.Char){}[0] + final fun flush() // io.matthewnelson.encoding.core/Decoder.Feed.flush|flush(){}[0] + final fun isClosed(): kotlin/Boolean // io.matthewnelson.encoding.core/Decoder.Feed.isClosed|isClosed(){}[0] + final fun toString(): kotlin/String // io.matthewnelson.encoding.core/Decoder.Feed.toString|toString(){}[0] + } + + final object Companion { // io.matthewnelson.encoding.core/Decoder.Companion|null[0] + final fun (kotlin/ByteArray).decodeToByteArray(io.matthewnelson.encoding.core/Decoder<*>): kotlin/ByteArray // io.matthewnelson.encoding.core/Decoder.Companion.decodeToByteArray|decodeToByteArray@kotlin.ByteArray(io.matthewnelson.encoding.core.Decoder<*>){}[0] + final fun (kotlin/ByteArray).decodeToByteArrayOrNull(io.matthewnelson.encoding.core/Decoder<*>): kotlin/ByteArray? // io.matthewnelson.encoding.core/Decoder.Companion.decodeToByteArrayOrNull|decodeToByteArrayOrNull@kotlin.ByteArray(io.matthewnelson.encoding.core.Decoder<*>){}[0] + final fun (kotlin/CharArray).decodeToByteArray(io.matthewnelson.encoding.core/Decoder<*>): kotlin/ByteArray // io.matthewnelson.encoding.core/Decoder.Companion.decodeToByteArray|decodeToByteArray@kotlin.CharArray(io.matthewnelson.encoding.core.Decoder<*>){}[0] + final fun (kotlin/CharArray).decodeToByteArrayOrNull(io.matthewnelson.encoding.core/Decoder<*>): kotlin/ByteArray? // io.matthewnelson.encoding.core/Decoder.Companion.decodeToByteArrayOrNull|decodeToByteArrayOrNull@kotlin.CharArray(io.matthewnelson.encoding.core.Decoder<*>){}[0] + final fun (kotlin/CharSequence).decodeToByteArray(io.matthewnelson.encoding.core/Decoder<*>): kotlin/ByteArray // io.matthewnelson.encoding.core/Decoder.Companion.decodeToByteArray|decodeToByteArray@kotlin.CharSequence(io.matthewnelson.encoding.core.Decoder<*>){}[0] + final fun (kotlin/CharSequence).decodeToByteArrayOrNull(io.matthewnelson.encoding.core/Decoder<*>): kotlin/ByteArray? // io.matthewnelson.encoding.core/Decoder.Companion.decodeToByteArrayOrNull|decodeToByteArrayOrNull@kotlin.CharSequence(io.matthewnelson.encoding.core.Decoder<*>){}[0] + } +} + +sealed class <#A: io.matthewnelson.encoding.core/EncoderDecoder.Config> io.matthewnelson.encoding.core/Encoder : io.matthewnelson.encoding.core/Decoder<#A> { // io.matthewnelson.encoding.core/Encoder|null[0] + constructor (#A) // io.matthewnelson.encoding.core/Encoder.|(1:0){}[0] + + abstract fun newEncoderFeedProtected(io.matthewnelson.encoding.core/Encoder.OutFeed): io.matthewnelson.encoding.core/Encoder.Feed<#A> // io.matthewnelson.encoding.core/Encoder.newEncoderFeedProtected|newEncoderFeedProtected(io.matthewnelson.encoding.core.Encoder.OutFeed){}[0] + final fun newEncoderFeed(io.matthewnelson.encoding.core/Encoder.OutFeed): io.matthewnelson.encoding.core/Encoder.Feed<#A> // io.matthewnelson.encoding.core/Encoder.newEncoderFeed|newEncoderFeed(io.matthewnelson.encoding.core.Encoder.OutFeed){}[0] + + abstract fun interface OutFeed { // io.matthewnelson.encoding.core/Encoder.OutFeed|null[0] + abstract fun output(kotlin/Char) // io.matthewnelson.encoding.core/Encoder.OutFeed.output|output(kotlin.Char){}[0] + } + + abstract inner class Feed : io.matthewnelson.encoding.core/EncoderDecoder.Feed<#A> { // io.matthewnelson.encoding.core/Encoder.Feed|null[0] + constructor () // io.matthewnelson.encoding.core/Encoder.Feed.|(){}[0] + + abstract fun consumeProtected(kotlin/Byte) // io.matthewnelson.encoding.core/Encoder.Feed.consumeProtected|consumeProtected(kotlin.Byte){}[0] + abstract fun doFinalProtected() // io.matthewnelson.encoding.core/Encoder.Feed.doFinalProtected|doFinalProtected(){}[0] + final fun close() // io.matthewnelson.encoding.core/Encoder.Feed.close|close(){}[0] + final fun consume(kotlin/Byte) // io.matthewnelson.encoding.core/Encoder.Feed.consume|consume(kotlin.Byte){}[0] + final fun flush() // io.matthewnelson.encoding.core/Encoder.Feed.flush|flush(){}[0] + final fun isClosed(): kotlin/Boolean // io.matthewnelson.encoding.core/Encoder.Feed.isClosed|isClosed(){}[0] + final fun toString(): kotlin/String // io.matthewnelson.encoding.core/Encoder.Feed.toString|toString(){}[0] + } + + final object Companion { // io.matthewnelson.encoding.core/Encoder.Companion|null[0] + final fun (kotlin/ByteArray).encodeToByteArray(io.matthewnelson.encoding.core/Encoder<*>): kotlin/ByteArray // io.matthewnelson.encoding.core/Encoder.Companion.encodeToByteArray|encodeToByteArray@kotlin.ByteArray(io.matthewnelson.encoding.core.Encoder<*>){}[0] + final fun (kotlin/ByteArray).encodeToCharArray(io.matthewnelson.encoding.core/Encoder<*>): kotlin/CharArray // io.matthewnelson.encoding.core/Encoder.Companion.encodeToCharArray|encodeToCharArray@kotlin.ByteArray(io.matthewnelson.encoding.core.Encoder<*>){}[0] + final fun (kotlin/ByteArray).encodeToString(io.matthewnelson.encoding.core/Encoder<*>): kotlin/String // io.matthewnelson.encoding.core/Encoder.Companion.encodeToString|encodeToString@kotlin.ByteArray(io.matthewnelson.encoding.core.Encoder<*>){}[0] + } +} + +final inline fun <#A: io.matthewnelson.encoding.core/EncoderDecoder.Config, #B: io.matthewnelson.encoding.core/EncoderDecoder.Feed<#A>?, #C: kotlin/Any?> (#B).io.matthewnelson.encoding.core/use(kotlin/Function1<#B, #C>): #C // io.matthewnelson.encoding.core/use|use@0:1(kotlin.Function1<0:1,0:2>){0§;1§?>;2§}[0] diff --git a/library/test/build.gradle.kts b/library/test/build.gradle.kts index bcc2341..dcfc88b 100644 --- a/library/test/build.gradle.kts +++ b/library/test/build.gradle.kts @@ -18,7 +18,7 @@ plugins { } kmpConfiguration { - configureShared(explicitApi = false) { + configureShared { common { sourceSetMain { dependencies { diff --git a/tools/check-publication/build.gradle.kts b/tools/check-publication/build.gradle.kts index 55fe377..84524e7 100644 --- a/tools/check-publication/build.gradle.kts +++ b/tools/check-publication/build.gradle.kts @@ -35,7 +35,7 @@ repositories { } kmpConfiguration { - configureShared(explicitApi = false) { + configureShared { common { sourceSetMain { dependencies {