MicroUtils/CHANGELOG.md

62 KiB

Changelog

0.23.0

0.22.5

  • Versions:
    • Compose: 1.7.0-beta02 -> 1.7.0-rc01
    • SQLite: 3.46.1.2 -> 3.46.1.3
    • AndroidXFragment: 1.8.3 -> 1.8.4
  • Common:
    • Add extension withReplacedAt/withReplaced (#489)
  • Coroutines:
    • Add extension Flow.debouncedBy
  • Ktor:
    • Server:
      • Add KtorApplicationConfigurator.Routing.Static as solution for #488

0.22.4

  • Versions:
    • Exposed: 0.54.0 -> 0.55.0
    • SQLite: 3.46.1.0 -> 3.46.1.2

0.22.3

  • Versions:
    • Serialization: 1.7.2 -> 1.7.3
    • Coroutines: 1.8.1 -> 1.9.0
    • Compose: 1.7.0-alpha03 -> 1.7.0-beta02
    • Koin: 3.5.6 -> 4.0.0
    • Okio: 3.9.0 -> 3.9.1
    • AndroidFragment: 1.8.2 -> 1.8.3
    • androidx.compose.material3:material3 has been replaced with org.jetbrains.compose.material3:material3
  • Common:
    • JS:
      • Add several useful extensions
    • Compose:
      • JS:
        • Add several useful extensions

0.22.2

  • Versions:
    • Exposed: 0.53.0 -> 0.54.0
    • SQLite: 3.46.0.1 -> 3.46.1.0

0.22.1

  • Versions:
    • Kotlin: 2.0.10 -> 2.0.20
    • Serialization: 1.7.1 -> 1.7.2
    • KSLog: 1.3.5 -> 1.3.6
    • Compose: 1.7.0-alpha02 -> 1.7.0-alpha03
    • Ktor: 2.3.11 -> 2.3.12

0.22.0

THIS UPDATE CONTAINS BREAKING CHANGES ACCORDING TO UPDATE UP TO KOTLIN 2.0

  • Versions:
    • Kotlin: 1.9.23 -> 2.0.10
    • Serialization: 1.6.3 -> 1.7.1
    • KSLog: 1.3.4 -> 1.3.5
    • Compose: 1.6.2 -> 1.7.0-alpha02
    • Exposed: 0.50.1 -> 0.53.0
    • AndroidAppCompat: 1.6.1 -> 1.7.0
    • AndroidFragment: 1.7.1 -> 1.8.2

0.21.6

  • KSP:
    • Sealed:
      • Fixes in generation

0.21.5

  • KSP:
    • Add utility functions KSClassDeclaration.findSubClasses
    • Sealed:
      • Improve generation

0.21.4

  • Common:
    • Compose:
      • Add support of mingw, linux, arm64 targets
  • Coroutines:
    • Compose:
      • Add support of mingw, linux, arm64 targets
  • Koin:
    • Add support of mingw, linux, arm64 targets
  • KSP:
    • ClassCasts:
      • Add support of mingw, linux, arm64 targets
    • Sealed:
      • Add support of mingw, linux, arm64 targets

0.21.3

  • Colors:
    • Added as a module. It should be used by default in case you wish all the API currently realized for HEXAColor
  • Coroutines:
    • Fix of #374:
      • Add vararg variants of awaitFirst
      • Add joinFirst

0.21.2

  • KSP:
    • ClassCasts:
      • Module has been initialized

0.21.1

  • KSP:
    • Module has been initialized
    • Generator:
      • Module has been initialized
    • Sealed:
      • Module has been initialized

0.21.0

THIS UPDATE CONTAINS BREAKING CHANGES IN safely*-ORIENTED FUNCTIONS

  • Coroutines:
    • All safely functions lost their supervisorScope in favor to wrapping runCatching
      • runCatchingSafely is the main handling function of all safely functions
      • launchSafely* and asyncSafely* blocks lost CoroutineScope as their receiver

0.20.52

  • Coroutines:
    • Small rework of weak jobs: add WeakScope factory, rename old weal extensions and add kdocs

0.20.51

  • Versions:
    • Android Fragment: 1.7.0 -> 1.7.1
  • Pagination:
    • Add Pagination.nextPageIfTrue and Pagination.thisPageIftrue extensions to get the page according to condition pass status
    • Add PaginationResult.nextPageIfNotEmptyOrLastPage and PaginationResult.thisPageIfNotEmptyOrLastPage
    • Change all doForAll and getAll extensions fo pagination to work basing on nextPageIfNotEmptyOrLastPage and thisPageIfNotEmptyOrLastPage

0.20.50

  • Versions:
    • Coroutines: 1.8.0 -> 1.8.1
    • KSLog: 1.3.3 -> 1.3.4
    • Exposed: 0.50.0 -> 0.50.1
    • Ktor: 2.3.10 -> 2.3.11
  • A lot of inline functions became common functions due to inline with only noinline callbacks in arguments leads to low performance
  • Coroutines:
    • SmartMutex, SmartSemaphore and SmartRWLocker as their user changed their state flow to SpecialMutableStateFlow

0.20.49

  • Repos:
    • Common:
      • All Repos get diff extensions
      • KeyValueRepo and KeyValuesRepo get applyDiff extension
      • Add new extensions on* flows for crud repos

0.20.48

  • Versions:
    • Android Core KTX: 1.13.0 -> 1.13.1
    • AndroidX Fragment: 1.6.2 -> 1.7.0

0.20.47

  • Versions:
    • Exposed: 0.49.0 -> 0.50.0

0.20.46

  • Common:
    • Now this repo depends on klock
    • Add new object-serializer DateTimeSerializer for klock serializer

0.20.45

  • Versions:
    • Android Core KTX: 1.12.0 -> 1.13.0

0.20.44

  • Versions:
    • Compose: 1.6.1 -> 1.6.2
    • Koin: 3.5.4 -> 3.5.6

0.20.43

  • Versions:
    • Ktor: 2.3.9 -> 2.3.10
    • Koin: 3.5.3 -> 3.5.4

0.20.42

  • Repos:
    • Generator:
      • Improvements

0.20.41

  • Repos:
    • Exposed:
      • AbstractExposedKeyValueRepo, ExposedKeyValueRepo, AbstractExposedKeyValuesRepo, ExposedKeyValuesRepo got opportunity to setup some part of their flows

0.20.40

  • Versions:
    • KSLog: 1.3.2 -> 1.3.3
    • Exposed: 0.48.0 -> 0.49.0
    • UUID: 0.8.2 -> 0.8.4

0.20.39

  • Versions:
    • Kotlin: 1.9.22 -> 1.9.23
    • Korlibs: 5.3.2 -> 5.4.0
    • Okio: 3.8.0 -> 3.9.0
    • Compose: 1.6.0 -> 1.6.1
    • ComposeMaterial3: 1.2.0 -> 1.2.1

0.20.38

  • Versions:
    • Ktor: 2.3.8 -> 2.3.9

0.20.37

  • Versions:
    • Compose: 1.5.12 -> 1.6.0
    • Exposed: 0.47.0 -> 0.48.0

0.20.36

  • Versions:
    • Serialization: 1.6.2 -> 1.6.3
    • Korlibs: 5.3.1 -> 5.3.2
  • Repos:
    • Cache:
      • Improve work and functionality of actualizeAll and subsequent functions
      • All internal repos invalidate/actualizeAll now use common actualizeAll functions

0.20.35

  • Versions:
    • Coroutines: 1.7.3 -> 1.8.0
    • Material3: 1.1.2 -> 1.2.0

0.20.34

  • Repos:
    • Common:
      • Improve default set realization of KeyValuesRepo

0.20.33

  • Colors
    • Common:
      • Add opportunity to use HEXAColor with ahex colors

0.20.32

  • Versions:
    • Okio: 3.7.0 -> 3.8.0
  • Resources:
    • Make StringResource serializable
    • Add several variants of builder usages

0.20.31

  • Versions:
    • Ktor: 2.3.7 -> 2.3.8

0.20.30

  • Versions:
    • Exposed: 0.46.0 -> 0.47.0

0.20.29

  • Versions:
    • Kotlin: 1.9.21 -> 1.9.22
    • Compose: 1.5.11 -> 1.5.12
    • Korlibs: 5.3.0 -> 5.3.1

0.20.28

  • Versions:
    • Kotlin: 1.9.22 -> 1.9.21 (downgrade)
    • Compose: 1.6.0-dev13691 -> 1.5.11 (downgrade)

0.20.27

  • Versions:
    • Kotlin: 1.9.21 -> 1.9.22
    • Compose: 1.5.11 -> 1.6.0-dev13691

0.20.26

  • Versions:
    • Exposed: 0.45.0 -> 0.46.0. This update brinds new api deprecations in exposed
  • Resources:
    • Add opportunity to get default translation by passing null as IetfLang argument
    • Add several useful extensions to get translations in JS target

0.20.25

  • Colors:
    • Common:
      • Module inited

0.20.24

Since this version depdendencies of klock and krypto replaced with com.soywiz.korge:korlibs-time and com.soywiz.korge:korlibs-crypto

  • Versions:
    • Klock (since now KorlibsTime): 4.0.10 -> 5.3.0
    • Krypto (since now KorlibsCrypto): 4.0.10 -> 5.3.0
  • Serialization:
    • Mapper:
      • Mapper pass decoder into callback of deserialization strategy
      • Mapper pass encoder into callback of serialization strategy

0.20.23

  • Versions:
    • Koin: 3.5.0 -> 3.5.3
    • Okio: 3.6.0 -> 3.7.0
  • LanguageCodes:
    • Fixes in intermediate language codes (like Chinese.Hans)
    • Rename IetfLanguageCode to IetfLang
      • Rename all subsequent functions (including serializer)
    • New lazy properties knownLanguageCodesMap, knownLanguageCodesMapByLowerCasedKeys and several others

0.20.22

  • Common:
    • Add opportunity to create own Diff with base constructor

0.20.21

  • Resources:
    • Inited

0.20.20

  • Repos:
    • Exposed:
      • Add opportunity for setup flows in AbstractExposedCRUDRepo

0.20.19

  • Versions:
    • Ktor: 2.3.6 -> 2.3.7

0.20.18

  • Coroutines:
    • SpecialMutableStateFlow now extends MutableStateFlow
    • Compose:
      • Deprecate FlowState due to its complexity in fixes

0.20.17

  • Versions:
    • Serialization: 1.6.1 -> 1.6.2

0.20.16

  • Versions:
    • Exposed: 0.44.1 -> 0.45.0
  • Coroutines:
    • Add SpecialMutableStateFlow
    • Compose:
      • Add FlowState

0.20.15

  • Versions:
    • Kotlin: 1.9.20 -> 1.9.21
    • KSLog: 1.3.0 -> 1.3.1
    • Compose: 1.5.10 -> 1.5.11

0.20.14

  • Versions:
    • Serialization: 1.6.0 -> 1.6.1
    • KSLog: 1.2.4 -> 1.3.0

0.20.13

  • Versions:
    • Ktor: 2.3.5 -> 2.3.6
    • UUID: 0.8.1 -> 0.8.2

0.20.12

It is experimental migration onto new gradle version. Be careful in use of this version

This update have JDK 17 in compatibility and target versions

0.20.11

  • Versions:
    • Kotlin: 1.9.20-RC2 -> 1.9.20
    • Exposed: 0.44.0 -> 0.44.1
    • Compose: 1.5.10-rc02 -> 1.5.10
  • Coroutines:
    • SmartRWLocker now will wait first unlock of write mutex for acquiring read

0.20.10

  • Versions:
    • Kotlin: 1.9.20-RC -> 1.9.20-RC1
    • KSLog: 1.2.1 -> 1.2.2
    • Compose: 1.5.10-rc01 -> 1.5.10-rc02
    • RecyclerView: 1.3.1 -> 1.3.2

0.20.9

  • Most of common modules now supports linuxArm64 target

0.20.8

THIS VERSION CONTAINS UPDATES OF DEPENDENCIES UP TO RC VERSIONS. USE WITH CAUTION

  • Versions:
    • Kotlin: 1.9.20-Beta2 -> 1.9.20-RC
    • Compose: 1.5.10-beta02 -> 1.5.10-rc01

0.20.7

THIS VERSION CONTAINS UPDATES OF DEPENDENCIES UP TO BETA VERSIONS. USE WITH CAUTION

  • Versions:
    • Kotlin: 1.9.10 -> 1.9.20-Beta2
    • Compose: 1.5.1 -> 1.5.10-beta02
    • Exposed: 0.43.0 -> 0.44.0
    • Ktor: 2.3.4 -> 2.3.5
    • Koin: 3.4.3 -> 3.5.0
    • Okio: 3.5.0 -> 3.6.0
    • Android Core: 1.10.1 -> 1.12.0
    • Android Compose Material: 1.1.1 -> 1.1.2

0.20.6

  • Repos:
    • Exposed
      • Fixes in exposed key-values repos

0.20.5

  • Coroutines:
    • Fixes in SmartRWLocker

0.20.4

  • Versions:
    • Kotlin: 1.9.0 -> 1.9.10
    • KSLog: 1.2.0 -> 1.2.1
    • Compose: 1.5.0 -> 1.5.1
    • UUID: 0.8.0 -> 0.8.1

0.20.3

  • Versions:
    • Compose: 1.4.3 -> 1.5.0
    • Exposed: 0.42.1 -> 0.43.0
    • Ktor: 2.3.3 -> 2.3.4
  • Repos:
    • Cache:
      • Fixes in locks of caches

0.20.2

  • All main repos uses SmartRWLocker
  • Versions:
    • Serialization: 1.5.1 -> 1.6.0
    • Exposed: 0.42.0 -> 0.42.1
    • Korlibs: 4.0.9 -> 4.0.10
  • Androis SDK: 33 -> 34

0.20.1

  • SmallTextField:
    • Module is initialized
  • Pickers:
    • Module is initialized
  • Coroutines:
    • Add SmartSemaphore
    • Add SmartRWLocker

0.20.0

  • Versions:
    • Kotlin: 1.8.22 -> 1.9.0
    • KSLog: 1.1.1 -> 1.2.0
    • Exposed: 0.41.1 -> 0.42.0
    • UUID: 0.7.1 -> 0.8.0
    • Korlibs: 4.0.3 -> 4.0.9
    • Ktor: 2.3.2 -> 2.3.3
    • Okio: 3.4.0 -> 3.5.0

0.19.9

  • Versions:
    • Koin: 3.4.2 -> 3.4.3
  • Startup:
    • Now it is possible to start application in synchronous way

0.19.8

  • Versions:
    • Coroutines: 1.7.2 -> 1.7.3
    • Kotlin: 1.8.20 -> 1.8.22
    • Compose: 1.4.1 -> 1.4.3
    • Okio: 3.3.0 -> 3.4.0
    • RecyclerView: 1.3.0 -> 1.3.1
    • Fragment: 1.6.0 -> 1.6.1
  • Repos:
    • Fixes In KeyValueRepo.clear() of almost all inheritors of KeyValueRepo
    • Cache:
      • All full caches got skipStartInvalidate property. By default, this property is false and fully caching repos will be automatically invalidated on start of their work

0.19.7

  • Versions:
    • Coroutines: 1.7.1 -> 1.7.2

0.19.6

  • Versions:
    • Coroutines: 1.6.4 -> 1.7.1
    • Ktor: 2.3.1 -> 2.3.2
    • Compose: 1.4.0 -> 1.4.1

0.19.5

  • Repos:
    • Generator:
      • Fixes in new type generation

0.19.4

  • Versions:
    • Koin: 3.4.1 -> 3.4.2
    • Android Fragments: 1.5.7 -> 1.6.0
  • Koin
    • Generator
      • Fixes in new generic generator part

0.19.3

  • Koin
    • Generator
      • New getter methods now available with opportunity to use parameters
      • Old notation *Single and *Factory is deprecated since this release. With old will be generated new single* and factory* notations for new generations
      • Add opportunity to use generic-oriented koin definitions

0.19.2

  • Versions:
    • Ktor: 2.3.0 -> 2.3.1
    • Koin: 3.4.0 -> 3.4.1
    • Uuid: 0.7.0 -> 0.7.1

0.19.1

  • Versions:
    • Korlibs: 4.0.1 -> 4.0.3
    • Kotlin Poet: 1.13.2 -> 1.14.0

0.19.0

  • Versions:
    • Korlibs: 3.4.0 -> 4.0.1

0.18.4

  • Koin:
    • New extension lazyInject

0.18.3

  • Versions:
    • Serialization: 1.5.0 -> 1.5.1
    • Android Cor Ktx: 1.10.0 -> 1.10.1

0.18.2

  • Startup:
    • Now internal Json is fully customizable

0.18.1

  • Common:
    • Add MapDiff
  • Coroutines:
    • Add SmartMutex

0.18.0

ALL PREVIOUSLY DEPRECATED FUNCTIONALITY HAVE BEEN REMOVED

  • Versions:
    • Android Fragments: 1.5.6 -> 1.5.7
  • Ktor:
    • Server:
      • Now it is possible to take query parameters as list
  • Repos:
    • Common:
      • New WriteKeyValuesRepo.removeWithValue
    • Cache:
      • Rename full caching factories functions to fullyCached

0.17.8

  • Versions:
    • Ktor: 2.2.4 -> 2.3.0

0.17.7

  • Versions:
    • Android CoreKtx: 1.9.0 -> 1.10.0
  • Startup:
    • Add support of linuxX64 and mingwX64 platforms

0.17.6

  • Versions:
    • Kotlin: 1.8.10 -> 1.8.20
    • KSLog: 1.0.0 -> 1.1.1
    • Compose: 1.3.1 -> 1.4.0
    • Koin: 3.3.2 -> 3.4.0
    • RecyclerView: 1.2.1 -> 1.3.0
    • Fragment: 1.5.5 -> 1.5.6
  • Experimentally (!!!) add linuxX64 and mingwX64 targets

0.17.5

  • Common:
    • Conversations of number primitives with bounds care
  • Repos:
    • Common:
      • By default, getAll for repos will take all the size of repo as page size
      • New extension for all built-in repos maxPagePagination
    • All the repos got getAll functions

0.17.4

  • Serialization:
    • Mapper:
      • Module inited
  • Versions:
    • Compose: 1.3.1-rc02 -> 1.3.1

0.17.3

  • Common:
    • Add fixed extensions for Float and Double
    • New function emptyDiff
    • Now you may pass custom comparisonFun to all diff functions

0.17.2

  • FSM:
    • DefaultStatesManager.onUpdateContextsConflictResolver and DefaultStatesManager.onStartContextsConflictResolver now return false by default

0.17.1

  • Hotfix for absence of jvm dependencies in android modules
  • Versions:
    • Ktor: 2.2.3 -> 2.2.4

0.17.0

  • Versions:
    • Kotlin: 1.7.20 -> 1.8.10
    • Serialization: 1.4.1 -> 1.5.0
    • KSLog: 0.5.4 -> 1.0.0
    • AppCompat: 1.6.0 -> 1.6.1

0.16.13

  • Repos:
    • Generator:
      • Module has been created

0.16.12

  • Repos:
    • Exposed:
      • CommonExposedRepo.selectByIds uses foldRight by default instead of raw foreach
  • Koin:
    • Generator:
      • Module has been created

0.16.11

  • LanguageCodes:
    • In android and JVM targets now available toJavaLocale and from Java Locale conversations from/to IetfLanguageCode

0.16.10

  • Repos:
    • Cache:
      • New transformer type: ReadCRUDFromKeyValueRepo
      • New transformer type: ReadKeyValueFromCRUDRepo
  • Pagination:
    • New paginate extensions with reversed support for List/Set

0.16.9

  • Versions:
    • Koin: 3.2.2 -> 3.3.2
    • AppCompat: 1.5.1 -> 1.6.0
  • Ktor:
    • Client
      • HttpResponse.bodyOrNull now retrieve callback to check if body should be received or null
      • New extension HttpResponse.bodyOrNullOnNoContent

0.16.8

  • Versions:
    • Ktor: 2.2.2 -> 2.2.3
  • Ktor:
    • Client
      • Fixes in HttpClient.uniUpload
    • Server
      • Fixes in PartData.FileItem.download
  • Repos:
    • Cache:
      • New type of caches: FallbackCacheRepo
      • Fixes in Write* variants of cached repos
      • New type ActionWrapper
      • New AutoRecache* classes for all types of repos as FallbackCacheRepos
    • Common:
      • New transformations for key-value and key-values vice-verse
      • Fixes in FileReadKeyValueRepo

0.16.7

  • Common:
    • New extensions ifTrue/ifFalse/alsoIfTrue/alsoIfFalse/letIfTrue/letIfFalse
    • Diff now is serializable
    • Add IndexedValue serializer
    • repeatOnFailure extending: now you may pass any lambda to check if continue to try/do something
    • Compose:
      • New extension MutableState.asState
  • Coroutines:
    • Compose:
      • All the Flow conversations to compose State/MutableState/SnapshotStateList/List got several new parameters
      • Flow.toMutableState now is deprecated in favor to asMutableComposeState
  • Repos:
    • Cache:
      • New type FullCacheRepo
      • New type CommonCacheRepo
      • CacheRepo got invalidate method. It will fully reload FullCacheRepo and just clear CommonCacheRepo
      • New extensions KVCache.actualizeAll

0.16.6

  • Startup:
    • Launcher:
      • Improvements in StartLauncherPlugin#start methods
      • Add opportunity to pass second argument on JVM platform as log level
  • Repos:
    • Ktor:
      • Client:
        • All clients repos got opportunity to customize their flows
    • Exposed:
      • Extensions eqOrIsNull and neqOrIsNotNull for Column

0.16.5

  • Versions:
    • Ktor: 2.2.1 -> 2.2.2

0.16.4

  • Coroutines:
    • Create launchInCurrentThread

0.16.3

  • Startup:
    • Launcher:
      • All starting API have been moved into StartLauncherPlugin and do not require serialize/deserialize cycle for now

0.16.2

  • Versions:
    • Compose: 1.2.1 -> 1.2.2
  • Startup:
    • Module become available on JS target

0.16.1

  • Coroutines:
    • New runCatchingSafely/safelyWithResult with receivers
  • SafeWrapper:
    • Module inited

0.16.0

  • Versions:
    • Ktor: 2.1.3 -> 2.2.1
    • Android Fragment: 1.5.3 -> 1.5.5

0.15.1

  • Startup:
    • Inited :)
    • Plugin:
      • Inited :)
    • Launcher:
      • Inited :)

0.15.0

  • Repos:
    • CRUD:
      • Common:
        • New method ReadCRUDRepo#getIdsByPagination
      • Android:
        • AbstractAndroidCRUDRepo got new abstract method toId
      • Exposed:
        • CommonExposedRepo new abstract property asId
      • Ktor:
        • Client:
          • KtorReadCRUDRepoClient now requires paginationIdType
  • LanguageCodes:
    • Updates and fixes in generation
  • MimeTypes:
    • Updates and fixes in generation

0.14.4

  • Common:
    • JVM:
      • New extension downloadToTempFile
  • Ktor:
    • Server:
      • Small fix in handleUniUpload
      • ApplicationCall#uniloadMultipartFile now uses uniloadMultipart
    • Common:
      • New extension downloadToTempFile
    • Client:
      • New extensions on top of uniUpload

0.14.3

  • Common:
    • New type Progress
  • Ktor:
    • Client:
      • New universal uniUpload extension for HttpClient
    • Server:
      • New universal handleUniUpload extension for ApplicationCall
      • Add extensions download and downloadToTemporalFile

0.14.2

  • Versions:
    • Exposed: 0.40.1 -> 0.41.1

0.14.1

  • Versions:
    • Klock: 3.3.1 -> 3.4.0
    • UUID: 0.5.0 -> 0.6.0

0.14.0

ALL DEPRECATIONS HAVE BEEN REMOVED

  • Versions:
    • Kotlin: 1.7.10 -> 1.7.20
    • Klock: 3.3.0 -> 3.3.1
    • Compose: 1.2.0 -> 1.2.1
    • Exposed: 0.39.2 -> 0.40.1

0.13.2

  • Versions:
    • Klock: 3.1.0 -> 3.3.0
    • Ktor: 2.1.2 -> 2.1.3

0.13.1

  • Repos:
    • Exposed:
      • AbstractExposedWriteCRUDRepo#createAndInsertId now is optional and returns nullable value

0.13.0

ALL DEPRECATIONS HAVE BEEN REMOVED A LOT OF KTOR METHODS RELATED TO UnifierRouter/UnifiedRequester HAVE BEEN REMOVED

  • Repos:
    • Exposed:
      • AbstractExposedWriteCRUDRepo got two new methods: update with it as UpdateBuilder<Int> and createAndInsertId
        • Old update method has been deprecated and not recommended to override anymore in realizations
        • Old insert method now is open instead of abstract and can be omitted
      • AbstractExposedKeyValueRepo got two new methods: update with it as UpdateBuilder<Int> and insertKey
        • Old update method has been deprecated and not recommended to override anymore
        • Old insert method now is open instead of abstract and can be omitted in realizations

0.12.17

  • Versions:
    • JB Compose: 1.2.0-alpha01-dev774 -> 1.2.0-beta02
    • Ktor: 2.1.1 -> 2.1.2
    • Koin: 3.2.0 -> 3.2.2

0.12.16

  • Coroutines:
    • Android:
      • Add class FlowOnHierarchyChangeListener
      • Add ViewGroup#setOnHierarchyChangeListenerRecursively(OnHierarchyChangeListener)

0.12.15

  • Common:
    • applyDiff will return Diff object since this release
    • Android:
      • New functions/extensions findViewsByTag and findViewsByTagInActivity
  • Coroutines:
    • Add Flow extensions flatMap, flatMapNotNull and flatten
    • Add Flow extensions takeNotNull and filterNotNull

0.12.14

  • Versions:
    • Android CoreKTX: 1.8.0 -> 1.9.0
    • Android AppCompat: 1.4.2 -> 1.5.1
    • Android Compile SDK: 32 -> 33
    • Android Build Tools: 32.0.0 -> 33.0.0
  • Common:
    • Android:
      • Add argumentOrNull/argumentOrThrow delegates for fragments
  • Coroutines:
    • Rewrite awaitFirstWithDeferred onto CompletableDeferred instead of coroutines suspending

0.12.13

  • Coroutines:
    • Add opportunity to use markers in actors (solution of #160)
  • Koin:
    • Module inited :)
  • Repos:
    • Android:
      • Add typealias KeyValueSPRepo and opportunity to create shared preferences KeyValue repo with KeyValueStore(...) (fix of #155)

0.12.12

  • Common:
    • Compose:
      • JS:
        • Add SkeletonAnimation stylesheet

0.12.11

  • Repos:
    • Cache:
      • Override KeyValue cache method values

0.12.10

  • Repos:
    • Cache:
      • Hotfix in key values get

0.12.9

  • Versions:
    • Klock: 3.0.0 -> 3.1.0
  • Repos:
    • Cache:
      • Fixes in key values cache

0.12.8

  • Versions:
    • Ktor: 2.1.0 -> 2.1.1
    • Compose: 1.2.0-alpha01-dev764 -> 1.2.0-alpha01-dev774
  • Ktor:
    • Client:
      • New extension HttpClient#bodyOrNull which returns null in case when server responded with No Content (204)
    • Server:
      • New extension ApplicationCall#respondOrNoContent which responds No Content (204) when passed data is null

0.12.7

  • Repos:
    • Cache:
      • Force WriteCRUDCacheRepo to subscribe on new and updated objects of parent repo
  • Pagination:
    • New function changeResultsUnchecked(Pagination)

0.12.6

  • MimeeTypes>:
    • Fixed absence of image/* in known mime types

0.12.5

  • Repos:
    • Exposed:
      • Fixes in paginate extensions

0.12.4

  • Versions:
    • Kotlin: 1.7.0 -> 1.7.10
    • Compose: 1.2.0-alpha01-dev755 -> 1.2.0-alpha01-dev764

0.12.3

  • Repos:
    • Exposed:
      • Add abstract exposed variants of KeyValue and KeyValues repos
      • Add new extension Query#selectPaginated

0.12.2

  • Versions:
    • Serialization: 1.4.0-RC -> 1.4.0
    • Compose: 1.2.0-alpha01-dev753 -> 1.2.0-alpha01-dev755

0.12.1

  • Versions:
    • Ktor: 2.0.3 -> 2.1.0

0.12.0

OLD DEPRECATIONS HAVE BEEN REMOVED

MINIMAL ANDROID API HAS BEEN ENLARGED UP TO API 21 (Android 5.0)

  • Versions
    • Kotlin: 1.6.21 -> 1.7.0
    • Coroutines: 1.6.3 -> 1.6.4
    • Exposed: 0.38.2 -> 0.39.2
    • Compose: 1.2.0-alpha01-dev729 -> 1.2.0-alpha01-dev753
    • Klock: 2.7.0 -> 3.0.0
    • uuid: 0.4.1 -> 0.5.0
    • Android Core KTX: 1.7.0 -> 1.8.0
    • Android AppCompat: 1.4.1 -> 1.4.2
  • Ktor:
    • All previously standard functions related to work with binary data by default have been deprecated

0.11.14

  • Pagination:
    • PaginationResult got new field objectsNumber which by default is a times between pagesNumber and size

0.11.13

  • Versions:
    • Coroutines: 1.6.3 -> 1.6.4
    • Compose: 1.2.0-alpha01-dev629 -> 1.2.0-alpha01-dev731

0.11.12

  • Repos:
    • Common:
      • JVM:
        • Fixes in ReadFileKeyValueRepo methods (values/keys)

0.11.11

  • Crypto:
    • hmacSha256 has been deprecated
  • Ktor:
    • Client:
      • BodyPair has been deprecated
  • Repos:
    • Cache:
      • New interface CacheRepo
      • New interface FullCacheRepo
      • actualize* methods inside of full cache repos now open for overriding

0.11.10

  • Repos:
    • Cache:
      • KVCache has been replaced to the package dev.inmo.micro_utils.repos.cache
      • SimpleKVCache has been replaced to the package dev.inmo.micro_utils.repos.cache
      • New KVCache subtype - FullKVCache
      • Add Full* variants of standard repos
      • Add cached/caching (for write repos) extensions for all standard types of repos

0.11.9

  • Versions
    • Coroutines: 1.6.1 -> 1.6.3
    • Ktor: 2.0.2 -> 2.0.3
    • Compose: 1.2.0-alpha01-dev686 -> 1.2.0-alpha01-dev729

0.11.8

  • Repos:
    • Common:
      • Fixes in FileKeyValueRepo

0.11.7

  • Common:
    • New abstractions SimpleMapper and SimpleSuspendableMapper
  • Repos:
    • Common:
      • Add mappers for CRUDRepo

0.11.6

  • FSM:
    • Common
      • Several fixes related to the jobs handling

0.11.5

  • Coroutines:
    • Compose:
      • Add extension StateFlow#asMutableComposeListState and StateFlow#asComposeList
      • Add extension StateFlow#asMutableComposeState/StateFlow#asComposeState

0.11.4

THIS VERSION HAS BEEN BROKEN, DO NOT USE IT

0.11.3

  • Ktor:
    • Support of WebSockets has been improved
      • Client:
        • New extensions: HttpClient#openBaseWebSocketFlow, HttpClient#openWebSocketFlow, HttpClient#openSecureWebSocketFlow

0.11.2

  • Ktor:
    • Support of WebSockets has been improved and added fixes inside of clients

0.11.1

  • Repos
    • Ktor
      • In configureReadKeyValueRepoRoutes and configureReadKeyValuesRepoRoutes configurators fixed requiring of reversed property

0.11.0

  • Versions
    • UUID: 0.4.0 -> 0.4.1
  • Ktor
    • Client:
      • New extension fun HttpResponse#throwOnUnsuccess
      • All old functions, classes and extensions has been rewritten with new ktor-way with types info and keeping ContentNegotiation in mind
    • Server:
      • All old functions, classes and extensions has been rewritten with new ktor-way with types info and keeping ContentNegotiation in mind
  • Repos
    • Ktor:
      • Fully rewritten work with all declared repositories
      • All old functions, classes and extensions has been rewritten with new ktor-way with types info and keeping ContentNegotiation in mind

0.10.8

  • Common
    • Add Element.isOverflow* extension properties

0.10.7

  • Pagination:
    • Now it is possible to use doForAll* and getForAll functions in non suspend places

0.10.6

  • Versions
    • Ktor: 2.0.1 -> 2.0.2
  • Common
    • JS:
      • Add ResizeObserver functionality

0.10.5

  • Versions
    • Compose: 1.2.0-alpha01-dev683 -> 1.2.0-alpha01-dev686
  • Repos
    • Android:
      • New function SharedPreferencesKeyValueRepo
  • FSM
    • Add StateHandlingErrorHandler and opportunity to handle states handling errors

0.10.4

  • Versions:
    • Serialization: 1.3.2 -> 1.3.3

0.10.3

  • Versions:
    • Compose: 1.2.0-alpha01-dev682 -> 1.2.0-alpha01-dev683
  • Coroutines:
    • Fixes in AccumulatorFlow

0.10.2

  • Versions:
    • Compose: 1.2.0-alpha01-dev675 -> 1.2.0-alpha01-dev682

0.10.1

  • Versions:
    • Ktor: 2.0.0 -> 2.0.1
  • Crypto:
    • Add hmacSha256
    • Add hex

0.10.0

  • Versions:
    • Kotlin: 1.6.10 -> 1.6.21
    • Compose: 1.1.1 -> 1.2.0-alpha01-dev675
    • Exposed: 0.37.3 -> 0.38.2
    • Ktor: 1.6.8 -> 2.0.0
    • Dokka: 1.6.10 -> 1.6.21

0.9.24

  • Ktor:
    • Common:
      • New extension fun MPPFile#input

0.9.23

  • Repos:
    • Exposed:
      • New property ExposedRepo#selectAll to retrieve all the rows in the table

0.9.22

  • Ktor:
    • Server:
      • Now createKtorServer fun is fully customizable

0.9.21

  • Repos:
    • Exposed:
      • fixes in AbstractExposedWriteCRUDRepo

0.9.20

  • Repos:
    • Common:
      • Fixes in OneToManyAndroidRepo
      • New CursorIterator

0.9.19

  • Versions:
    • Coroutines: 1.6.0 -> 1.6.1
  • Repos:
    • Exposed:
      • Fixes in ExposedStandardVersionsRepoProxy

0.9.18

  • Common
    • New extensions for Element: Element#onActionOutside and Element#onClickOutside

0.9.17

  • Common:
    • New extensions Element#onVisibilityChanged, Element#onVisible and Element#onInvisible
  • Coroutines:
    • New extension Element.visibilityFlow()
  • FSM:
    • Now it is possible to resolve conflicts on startChain

0.9.16

  • Versions:
    • Klock: 2.6.3 -> 2.7.0
  • Common:
    • New extension Node#onRemoved
    • Compose:
      • New extension Composition#linkWithRoot for removing of composition with root element
  • Coroutines:
    • Compose:
      • New function renderComposableAndLinkToContextAndRoot with linking of composition to root element

0.9.15

  • FSM:
    • Rename DefaultUpdatableStatesMachine#compare to DefaultUpdatableStatesMachine#shouldReplaceJob
    • DefaultStatesManager now is extendable
    • DefaultStatesMachine will stop all jobs of states which was removed from statesManager

0.9.14

  • Versions:
    • Klock: 2.6.2 -> 2.6.3
    • Ktor: 1.6.7 -> 1.6.8
  • Ktor:
    • Add temporal files uploading functionality (for clients to upload and for server to receive)

0.9.13

  • Versions:
    • Compose: 1.1.0 -> 1.1.1

0.9.12

  • Common:
    • JS:
      • New function openLink
      • New function selectFile
      • New function triggerDownloadFile
    • Compose:
      • Created :)
      • Common:
        • DefaultDisposableEffectResult as a default realization of DisposableEffectResult
      • JS:
        • openLink on top of openLink with String target from common
  • Coroutines:
    • Compose:
      • Common:
        • New extension Flow.toMutableState
        • New extension StateFlow.toMutableState
      • JS:
        • New function selectFileOrThrow on top of selectFile from common
        • New function selectFileOrNull on top of selectFile from common

0.9.11

  • Versions:
    • Klock: 2.6.1 -> 2.6.2
  • Coroutines:
    • Compose:
      • Created :)
      • New extensions and function:
        • Composition#linkWithJob
        • Composition#linkWithContext
        • renderComposableAndLinkToContext

0.9.10

  • Versions:
    • Klock: 2.5.2 -> 2.6.1
  • Ktor:
    • Client:
      • New function UnifiedRequester#createStandardWebsocketFlow without checkReconnection arg
    • Server:
      • Now it is possible to filter data in Route#includeWebsocketHandling
      • Callback in Route#includeWebsocketHandling and dependent methods is suspend since now
      • Add URLProtocol support in Route#includeWebsocketHandling and dependent methods

0.9.9

  • Versions:
    • Klock: 2.5.1 -> 2.5.2
  • Common:
    • Add new diff tool - applyDiff
    • Implementation of IntersectionObserver in JS part (copypaste of this comment)

0.9.8

  • Versions:
    • Exposed: 0.37.2 -> 0.37.3
    • Klock: 2.4.13 -> 2.5.1
    • AppCompat: 1.4.0 -> 1.4.1

0.9.7

  • Repos:
    • Exposed:
      • Fix in ExposedOneToManyKeyValueRepo - now it will not use insertIgnore
  • Ktor:
    • Server:
      • Route#includeWebsocketHandling now will check that WebSockets feature and install it if not

0.9.6

  • Repos:
    • Exposed:
      • Fix in ExposedOneToManyKeyValueRepo - now it will not use deleteIgnoreWhere

0.9.5

  • Versions:
    • Klock: 2.4.12 -> 2.4.13

0.9.4

  • Pagination:
    • Common:
      • Add several optionallyReverse functions
  • Common:
    • Changes in Either:
      • Now Either uses optionalT1 and optionalT2 as main properties
      • Either#t1 and Either#t2 are deprecated
      • New extensions Either#mapOnFirst and Either#mapOnSecond

0.9.3

  • Versions:
    • UUID: 0.3.1 -> 0.4.0

0.9.2

  • Versions:
    • Klock: 2.4.10 -> 2.4.12

0.9.1

  • Repos:
    • Exposed:
      • Default realizations of standard interfaces for exposed DB are using public fields for now:
        • ExposedReadKeyValueRepo
        • ExposedReadOneToManyKeyValueRepo
        • ExposedStandardVersionsRepoProxy
      • New typealiases for one to many exposed realizations:
        • ExposedReadKeyValuesRepo
        • ExposedKeyValuesRepo

0.9.0

  • Versions:
    • Kotlin: 1.5.31 -> 1.6.10
    • Coroutines: 1.5.2 -> 1.6.0
    • Serialization: 1.3.1 -> 1.3.2
    • Exposed: 0.36.2 -> 0.37.2
    • Ktor: 1.6.5 -> 1.6.7
    • Klock: 2.4.8 -> 2.4.10

0.8.9

  • Ktor:
    • Server:
      • Fixes in uniloadMultipart
    • Client:
      • Fixes in unimultipart
  • FSM:
    • Fixes in DefaultUpdatableStatesMachine

0.8.8

  • Versions:
    • AppCompat: 1.3.1 -> 1.4.0
    • Android Compile SDK: 31.0.0 -> 32.0.0
  • FSM:
    • DefaultStatesMachine now is extendable
    • New type UpdatableStatesMachine with default realizationDefaultUpdatableStatesMachine

0.8.7

  • Ktor:
    • Client:
      • UnifiedRequester now have no private fields
      • Add preview work with multipart
    • Server
      • UnifiedRouter now have no private fields
      • Add preview work with multipart

0.8.6

  • Common:
    • Either extensions onFirst and onSecond now accept not crossinline callbacks
    • All joinTo now accept not crossinline callbacks

0.8.5

  • Common:
    • repeatOnFailure

0.8.4

  • Ktor:
    • Server:
      • Several new createKtorServer

0.8.3

  • Common:
    • Ranges intersection functionality
    • New type Optional
  • Pagination:
    • Pagination now extends ClosedRange<Int>
    • Pagination intersection functionality

0.8.2

  • Versions:
    • Klock: 2.4.7 -> 2.4.8
    • Serialization: 1.3.0 -> 1.3.1
  • FSM:
    • Now it is possible to pass any CheckableHandlerHolder in FSMBuilder
    • Now StatesMachine works with CheckableHandlerHolder instead of CustomizableHandlerHolder

0.8.1

  • Versions:
    • Exposed: 0.36.1 -> 0.36.2
    • Core KTX: 1.6.0 -> 1.7.0

0.8.0

  • Versions:
    • Klock: 2.4.6 -> 2.4.7
    • Ktor: 1.6.4 -> 1.6.5
    • Exposed: 0.35.3 -> 0.36.1
  • Common:
    • Type Either got its own serializer
  • FSM:
    • Common:
      • Full rework of FSM:
        • Now it is more flexible for checking of handler opportunity to handle state
        • Now machine and states managers are type-oriented
        • StateHandlerHolder has been renamed to CheckableHandlerHolder
      • Add opportunity for comfortable adding default state handler

0.7.4

  • Common:
    • New type Either
  • Serialization:
    • TypedSerializer
      • New factory fun which accept vararg pairs of type and its serializer
  • Repos:
    • Common (Android):
      • AbstractMutableAndroidCRUDRepo flows now will have extra buffer capacity instead of reply. It means that android crud repo WILL NOT send previous events to the
    • Exposed:
      • New parameter AbstractExposedWriteCRUDRepo#replyCacheInFlows
      • KeyValue realization ExposedKeyValueRepo properties _onNewValue and _onValueRemoved now are available in inheritors
  • Pagination:
    • Common:
      • New types getAllBy* for current, next and custom paging

0.7.3

  • Versions:
    • Exposed: 0.35.2 -> 0.35.3

0.7.2

  • Versions:
    • Klock: 2.4.5 -> 2.4.6

0.7.1

  • Versions:
    • Klock: 2.4.3 -> 2.4.5
    • Exposed: 0.35.1 -> 0.35.2
  • Coroutines:
    • Common:
      • New Flow - AccumulatorFlow
  • FSM:
    • Common:
      • InMemoryStatesManager has been replaced
      • StatesMachine became an interface
      • New manager DefaultStatesManager with DefaultStatesManagerRepo for abstraction of manager and storing of data info

0.7.0

THIS VERSION HAS MIGRATED FROM KOTLINX DATETIME TO KORLIBS KLOCK. CAREFUL

  • Versions
    • kotlinx.datetime -> Klock

THIS VERSION HAS MIGRATED FROM KORLIBS KLOCK TO KOTLINX DATETIME. CAREFUL ALL DEPRECATION HAVE BEEN REMOVED

  • Versions
    • Klock -> kotlinx.datetime

0.5.31

  • Versions:
    • Klock: 2.4.2 -> 2.4.3
    • Ktor: 1.6.3 -> 1.6.4

0.5.30

  • Versions:
    • Serialization: 1.2.2 -> 1.3.0

0.5.29

  • Versions:
    • Exposed: 0.34.2 -> 0.35.1

0.5.28

  • Versions:
    • Kotlin: 1.5.30 -> 1.5.31
    • Klock: 2.4.1 -> 2.4.2

0.5.27

  • Versions:
    • Exposed: 0.34.1 -> 0.34.2

0.5.26

  • Repos:
    • InMemory:
      • MapCRUDRepos and MapKeyValueRepos got protected methods and properties instead of private

0.5.25

  • Versions:
    • UUID: 0.3.0 -> 0.3.1
  • Common:
    • New property MPPFile#withoutSlashAtTheEnd
    • Extension clamp has been deprecated
    • New extension Iterable#diff
  • Serialization:
    • New operators TypedSerializer#plusAssign and TypedSerializer#minusAssign

0.5.24

  • Versions:
    • Coroutines: 1.5.1 -> 1.5.2
    • Klock: 2.3.4 -> 2.4.1
  • Coroutines:
    • New function CoroutineScope with safely exceptions handler as second parameter

0.5.23

  • Versions:
    • Exposed: 0.33.1 -> 0.34.1
  • Common:
    • New extensions Iterable#joinTo and Array#joinTo

0.5.22

  • Versions
    • Kotlin: 1.5.21 -> 1.5.30
    • Klock: 2.3.2 -> 2.3.4
    • AppCompat: 1.3.0 -> 1.3.1
    • Ktor: 1.6.2 -> 1.6.3

0.5.21

  • Versions
    • Klock: 2.3.1 -> 2.3.2
  • Serialization
    • Typed Serializer:
      • TypedSerializer Descriptor serial name has been fixed

0.5.20

  • Repos:
    • Common
      • Android:
        • *OrNull analogs of Cursor.get*(String) extensions have been added
        • Extensions Cursor.getFloat and Cursor.getFloatOrNull have been added

0.5.19

  • LanguageCode:
    • IetfLanguageCode became as sealed class
    • IetfLanguageCode now override toString and returns its code

0.5.18

  • Versions
    • Kotlin Exposed: 0.32.1 -> 0.33.1
  • LanguageCode:
    • Module has been created

0.5.17

SINCE THIS UPDATE JS PARTS WILL BE COMPILED WITH IR COMPILER ONLY

  • Versions
    • Kotlin: 1.5.20 -> 1.5.21
    • Ktor: 1.6.1 -> 1.6.2
    • Klock: 2.2.0 -> 2.3.1
    • CryptoJS: 4.0.0 -> 4.1.1

0.5.16

  • Versions
    • Coroutines: 1.5.0 -> 1.5.1
    • Serialization: 1.2.1 -> 1.2.2
    • Ktor: 1.6.0 -> 1.6.1
    • Klock: 2.1.2 -> 2.2.0
    • Core KTX: 1.5.0 -> 1.6.0

0.5.15 HOTFIX FOR 0.5.14

  • Coroutines
    • Fixes in subscribeAsync
  • Versions
    • Kotlin: 1.5.10 -> 1.5.20
  • Coroutines
    • subscribeSafelyWithoutExceptions got new parameter onException by analogue with safelyWithoutExceptions
    • New extensions Flow#subscribeAsync and subsequent analogs of subscribe with opportunity to set up custom marker

0.5.13

  • Common:
    • Add functionality for multiplatform working with files:
      • Main class for files MPPFile
      • Inline class for filenames work encapsulation FileName
  • FSM
    • Module inited and in preview state

0.5.12

  • Common:
    • Android
      • Extension View#changeVisibility has been fixed
  • Android
    • RecyclerView
      • Default adapter got dataCountFlow property
      • New subtype of adapter based on StateFlow: StateFlowBasedRecyclerViewAdapter

0.5.11

  • Repos:
    • Common:
      • Fixes in WriteOneToManyRepo#add
    • Exposed:
      • Fixes in ExposedOneToManyKeyValueRepo#add

0.5.10

  • Versions
    • Core KTX: 1.3.2 -> 1.5.0
    • AndroidX Recycler: 1.2.0 -> 1.2.1
    • AppCompat: 1.2.0 -> 1.3.0
  • Android
    • RecyclerView:
      • data of RecyclerViewAdapter became an abstract field
        • New function RecyclerViewAdapter
    • Common:
      • New extension View#changeVisibility
    • Repos:
      • Common:
        • WriteOneToManyRepo got new function clearWithValue
        • Android:
          • New extension SQLiteDatabase#selectDistinct
          • Fixes in OneToManyAndroidRepo
  • Ktor
    • Server
      • All elements in configurators became a fun interface
  • Pagination
    • New function doForAllWithCurrentPaging

0.5.9

  • Repos
    • Common
      • OneToManyAndroidRepo got new primary constructor

0.5.8

  • Common:
    • New extension Iterable#firstNotNull
  • Coroutines
    • New extension Flow#firstNotNull
    • New extensions CoroutineContext#LinkedSupervisorJob, CoroutineScope#LinkedSupervisorJob and CoroutineScope#LinkedSupervisorScope

0.5.7

  • Pagination
    • Ktor
      • Server
        • Fixes in extension extractPagination
  • Repos
    • Cache
      • All standard cache repos have been separated to read and read/write repos

0.5.6

  • Versions
    • Exposed: 0.31.1 -> 0.32.1
  • Coroutines
    • JVM
      • launchSynchronously and subsequent functions got improved mechanism
    • New method safelyWithResult

0.5.5

  • Versions
    • Ktor: 1.5.4 -> 1.6.0

0.5.4

  • Versions:
    • Klock: 2.1.0 -> 2.1.2

0.5.3

  • Versions:
    • Kotlin: 1.5.0 -> 1.5.10
  • Coroutines:
    • Extensions doInUI and doInDefault were replaced in common and available on any supported platform
    • Extension doInIO replaced into jvm and available on any JVM platform
    • Old extension safelyWithouException without onException has been replaced by its copy with onException and default value
      • New value defaultSafelyWithoutExceptionHandlerWithNull which is used in all *WithoutExceptions by default
    • Analogs of launch and async for safely and safelyWithoutExceptions were added
    • Analogs of runCatching for safely and safelyWithoutExceptions were added

0.5.2

  • Ktor:
    • Client:
      • Fixes in UnifiedRequester

0.5.1

  • Versions:
    • Kotlin Serialization: 1.2.0 -> 1.2.1

0.5.0

Notice: This version is still depend on Kotlin Exposed 0.31.1. That means that this version may work improperly in modules based on Kotlin Exposed

  • Versions:
    • Kotlin Exposed: 0.30.2 -> 0.31.1
    • Kotlin Coroutines: 1.4.3 -> 1.5.0
    • RecyclerView: 1.1.0 -> 1.2.0
    • Ktor: 1.5.3 -> 1.5.4
    • Klock: 2.0.7 -> 2.1.0
    • UUID: 0.2.4 -> 0.3.0
  • ALL DEPRECATIONS WERE REMOVED
  • Android:
    • Alerts:
      • RecyclerView:
        • Classes ActionViewHolder and ActionsRecyclerViewAdapter became public
  • Coroutines:
    • New extension and function doSynchronously which are the same as launchSynchronously
    • New extensions doInDefault and doInIO

0.4.36

  • All Android targets inside common mpp modules now includes JVM code

0.4.35

  • Versions:
    • Kotlin Exposed: 0.30.1 -> 0.30.2
  • Serialization:
    • TypedSerializer:
      • Project has been inited

0.4.34

  • Versions:
    • uuid: 0.2.3 -> 0.2.4
  • Repos:
    • AbstractExposedCRUDRepo now implements StandardCRUDRepo
    • AbstractMutableAndroidCRUDRepo now implements StandardCRUDRepo

0.4.33

  • Versions:
    • Ktor: 1.5.2 -> 1.5.3
  • Coroutines
    • Add WeakJob workaround:
      • CoroutineScope#weakLaunch
      • CoroutineScope#weakAsync

0.4.32

  • Versions:
    • Kotlin Exposed: 0.29.1 -> 0.30.1

0.4.31

  • Versions:
    • Kotlin: 1.4.31 -> 1.4.32
  • Pagination:
    • New extensions PaginationResult.changeResultsUnchecked and PaginationResult.changeResults for mapping results with the same parameters, but different data
    • Extension PaginationResult.thisPageIfNotEmpty now is typed and will return PaginationResult? with the same generic type as income PaginationResult
    • New extension PaginationResult.currentPageIfNotEmpty - shortcut for PaginationResult.thisPageIfNotEmpty
    • New common functions. They were created as replacements for currently available for more comfortable work with repos pagination:
      • doForAll
      • doForAllWithNextPaging
      • doForAllWithCurrentPaging
      • getAll
      • getAllWithNextPaging
      • getAllWithCurrentPaging
  • Coroutines:
    • Rewrite subscribeSafelyWithoutExceptions
      • Now subscribeSafelyWithoutExceptions will use default handler instead of skipping
    • New extension subscribeSafelySkippingExceptions
  • Repos
    • New subproject repos.cache - this subproject will contain repos with data caching mechanisms
    • Most old doForAll methods have been deprecated

0.4.30

  • Versions:
    • Klock: 2.0.6 -> 2.0.7
  • Pagination:
    • New variable defaultPaginationPageSize has been added to be able to change default pagination size
    • Add new value firstPageWithOneElementPagination

0.4.29

  • Versions:
    • Coroutines: 1.4.2 -> 1.4.3
  • Repos:
    • Common
      • Android:
        • New blockingReadableTransaction/blockingWritableTransaction
          • Android databases realizations now use blocking transactions where it is possible
        • Several improvements in transactions work

0.4.28

  • Versions:
    • Kotlin: 1.4.30 -> 1.4.31
    • Ktor: 1.5.1 -> 1.5.2
  • Coroutines
    • Add createActionsActor/createSafeActionsActor and doWithSuspending

0.4.27

  • Repos
    • Exposed
      • Fix in AbstractExposedWriteCRUDRepo

0.4.26

  • Versions:
    • Serialization: 1.0.1 -> 1.1.0

0.4.25

  • Matrix:
    • Subproject has been created

0.4.24

  • Versions:
    • Kotlin: 1.4.21 -> 1.4.30
    • Klock: 2.0.4 -> 2.0.6
  • Coroutines:
    • New class DoWithFirstBuilder
    • Several new extensions like firstOf/first/invokeOnFirstOf

0.4.23

  • Versions:
    • Ktor: 1.5.0 -> 1.5.1
  • Serialization
    • Base64
      • New serializer Base64BytesToFromStringSerializer has been added

0.4.22

  • Versions:
    • Exposed: 0.28.1 -> 0.29.1
    • Klock: 2.0.2 -> 2.0.4

0.4.21

  • Common
    • JS
      • Extension DataView#toByteArray has been added
      • Extension ArrayBuffer#toByteArray has been added
      • Extension ByteArray#toDataView has been added
      • Extension ByteArray#toArrayBuffer has been added
  • Coroutines
    • JS
      • Extension Blob#toByteArray has been added
  • Crypto
    • Subproject has been created
  • Serialization
    • Base64
      • Currently, it is not depended on common project and use crypto instead

0.4.20

  • Serialization
    • Encapsulator:
      • Has been created

0.4.19

  • Coroutines:
    • New extension Iterable<Deferred>#awaitFirstWithDeferred has been added to identify which of Deferreds was normally completed
    • New extensions Iterable<Deferred<T>>#invokeOnFirst and Iterable<DeferredAction<*, O>>.invokeFirstOf have been added

0.4.18

  • Coroutines:
    • New extension Iterable<Deferred>#awaitFirst has been added
  • Serialization
    • Base 64
      • New Base64ByteArraySerializer has been added

0.4.17

  • Common
    • Functionality for decode/encode base 64 to/from ByteArray/String have been added
  • Serialization
    • Base 64
      • Project has been initiated

0.4.16

  • Coroutines:
    • safely:
      • New safelyWithoutExceptions function may accept onException parameter with nullable result
      • Old safelyWithoutExceptions now using defaultSafelyWithoutExceptionHandler to handle exceptions "like in safely", but it is expected that defaultSafelyWithoutExceptionHandler will not throw any exception

0.4.15

  • Coroutines:
    • safely:
      • SafelyExceptionHandlerKey has been deprecated
      • SafelyExceptionHandler has been deprecated
      • ContextSafelyExceptionHandlerKey has been added
      • ContextSafelyExceptionHandler has been added
      • safelyWithContextExceptionHandler has been added

0.4.14

  • Versions:
    • Kotlin: 1.4.20 -> 1.4.21
    • Ktor: 1.4.3 -> 1.5.0
    • Klock: 2.0.1 -> 2.0.2
  • Coroutines:
    • Add global variable defaultSafelyExceptionHandler
    • Add SafelyExceptionHandlerKey and SafelyExceptionHandler classes to be able to overwrite defaultSafelyExceptionHandler using context of coroutine

0.4.13

  • Common
    • Android
      • Add expand/collapse functionality for horizontal expand/collapse

0.4.12

  • Coroutines
    • JVM
      • Update launchSynchronously signature
  • Selector
    • Project created

0.4.11

  • Common
    • Add clamp function

0.4.10

  • Versions:
    • Klock: 2.0.0 -> 2.0.1
  • Repo
    • Repo WriteStandardKeyValueRepo got new method unsetWithValues

0.4.9

  • Versions:
    • Ktor: 1.4.2 -> 1.4.3
  • Coroutines:
    • launchSynchronously has been added in JVM
  • Repo
    • Common
      • In repos different usages of BroadcastChannels has been replaced with MutableSharedFlow
    • Exposed
      • asObject open fun has been added in CRUD realization

0.4.8

  • Versions:
    • Coroutines: 1.4.1 -> 1.4.2
    • UUID: 0.2.2 -> 0.2.3
  • Pagination
    • Add PaginatedIterable and PaginatedIterator

0.4.7

  • Ktor
    • Client
      • New class UnifiedRequester
    • Server
      • New class UnifiedRouter
  • Repos
    • Ktor
      • Client
        • Rewriting of all clients on new UnifiedRequester
      • Server
        • Rewriting of all clients on new UnifiedRouter

0.4.6

  • Common
    • New annotation Warning has been added
  • Pagination
    • Common
      • Pagination got new extension: Pagination#isFirstPage
  • Coroutines:
    • New extension FlowCollector#invoke has been added
  • Repos
    • Common
      • JVM (and Android since Android API 26):
        • FileStandardKeyValueRepo has been added
      • Add several typealiases for each type of repos

0.4.5

  • Android
    • Alerts
      • Common
        • Project has been created
      • RecyclerView
        • Project has been created
  • Common
    • Annotation PreviewFeature has been added
    • Android
      • Added tools to work with visibility in more comfortable way
      • Added tools to work with disabled/enabled state in more comfortable way
      • Added tools to work with expanded/collapsed state in more comfortable way (in preview mode)

0.4.4

  • Versions:
    • Klock: 1.12.1 -> 2.0.0
  • Commons:
    • Update left items functionality to include work with GridLayoutManager
  • Repos:
    • Add interface VersionsRepo
      • Add default realization of VersionsRepo named StandardVersionsRepo which use StandardVersionsRepoProxy to get access to some end-store
      • Add default realization of StandardVersionsRepoProxy based on KeyValue repos
      • Add realizations of StandardVersionsRepoProxy for exposed and android (SQL and SharedPreferences)
    • Commons:
      • In Android fully reworked transactions functions
      • Now DatabaseCoroutineContext is a shortcut for Dispatchers.IO

0.4.3

  • Versions:
    • Kotlin: 1.4.10 -> 1.4.20
  • Common:
    • Two new extensions for Android:
      • Resources#getSp
      • Resources#getDp

0.4.2

  • Repos:
    • Add WriteOneToManyKeyValueRepo#set function and extensions

0.4.1

  • Repos:
    • Fixed error in ExposedKeyValueRepo related to negative size of shared flow
    • Fixed error in ExposedKeyValueRepo related to avoiding of table initiation

0.4.0

  • Repos:
    • ReadOneToManyKeyValueRepo got keys method with value parameter
      • All implementations inside of this library has been updated
    • ReadStandardKeyValueRepo got keys method with value parameter
      • All implementations inside of this library has been updated
    • New extensions withMapper

0.3.3

  • Coroutines:
    • New extension Flow<T>#plus

0.3.2

  • Versions:
    • Coroutines: 1.4.1 -> 1.4.2
  • Repos:
    • Common:
      • New inline function mapper for simplier creating of MapperRepo objects
      • Extensions withMapper for keyvalue repos and onetomany repos

0.3.1

ANDROID PACKAGES

  • Android:
    • RecyclerView:
      • Library has been created
  • Common
    • Now available package dev.inmo:micro_utils.common-android
  • Coroutines
    • Now available package dev.inmo:micro_utils.coroutines-android
  • Ktor
    • Common
      • Now available package dev.inmo:micro_utils.ktor.common-android
    • Client
      • Now available package dev.inmo:micro_utils.ktor.client-android
  • MimeTypes
    • Now available package dev.inmo:micro_utils.mime_types-android
  • Pagination
    • Common
      • Now available package dev.inmo:micro_utils.pagination.common-android
    • Ktor
      • Common
        • Now available package dev.inmo:micro_utils.pagination.ktor.common-android
  • Repos
    • Common
      • Now available package dev.inmo:micro_utils.repos.common-android
      • Now it is possible to use default realizations of repos abstractions natively on android
    • Inmemory
      • Now available package dev.inmo:micro_utils.repos.inmemory-android
    • Ktor
      • Common
        • Now available package dev.inmo:micro_utils.repos.ktor.common-android
      • Common
        • Now available package dev.inmo:micro_utils.repos.ktor.client-android

0.3.0

All deprecations has been removed

  • Repos:
    • Common:
      • KeyValue and OneToMany repos lost their deprecated methods
      • OneToMany write repos got additional extensions for mutation of repo
      • KeyValue write repos got additional extensions for mutation of repo
      • New interface MapperRepo and new classes which are using this:
        • KeyValue
          • MapperReadStandardKeyValueRepo
          • MapperWriteStandardKeyValueRepo
          • MapperStandardKeyValueRepo
        • OneToMany
          • MapperReadOneToManyKeyValueRepo
          • MapperWriteOneToManyKeyValueRepo
          • MapperOneToManyKeyValueRepo
    • Exposed:
      • CRUD realizations replaced their channels to shared flows

0.2.7

  • Versions:
    • Coroutines: 1.4.0 -> 1.4.1
  • Repos:
    • WriteStandardKeyValueRepo got new methods set and unset with collections
    • All standard realizations of repos got collections methods realizations
    • All old usages of BroadcastFlow and BroadcastChannel has been replaced with MutableSharedFlow
    • Ktor:
      • Server:
        • Fixed incorrect answer for keyvalue

0.2.6

  • Pagination
    • Fixes in function List#paginate
    • Extension property Pagination#lastIndexExclusive

0.2.5

  • Coroutines
    • Function safelyWithoutExceptions
    • Extension CoroutineScope#safeActor

0.2.4

  • Versions
    • Serialization: 1.0.0 -> 1.0.1
  • Common
    • Full rework of DiffUtils
      • Data class Diff has been added
      • Extension Iterable#calculateDiff has been added
        • Extension Iterable#calculateStrictDiff as replacement for Iterable#calculateDiff with strictComparison mode enabled
        • Functions Diff (as analog of Iterable#calculateDiff) and StrictDiff (as analog of Iterable#calculateStrictDiff)
  • Coroutines
    • BroadcastFlow now is deprecated
    • BroadcastStateFlow now is deprecated
    • New extensions for Flows:
      • Flow#subscribe
      • Flow#subscribeSafely
      • Flow#subscribeSafelyWithoutExceptions

0.2.3

  • Versions
    • Coroutines: 1.3.9 -> 1.4.0
    • Exposed: 0.27.1 -> 0.28.1
  • Common
    • K/JS
      • Add several extensions for Element objects to detect that object is on screen viewport
      • Add several extensions for Element objects to detect object visibility
  • Coroutines
    • BroadcastStateFlow now use different strategy for getting of state and implements replayCache

0.2.2

  • Repos
    • Common
      • Several new methods ReadOneToManyKeyValueRepo#getAll
      • Several new method WriteOneToManyKeyValueRepo#add and several extensions
      • Several new method WriteOneToManyKeyValueRepo#remove and several extensions

0.2.1

  • Pagination
    • Common:
      • Extension Pagination#reverse has been added
      • Factory PaginationByIndexes
      • Shortcut calculatePagesNumber with reversed parameters
      • Value emptyPagination for empty SimplePagination cases

0.2.0

  • Repos
    • Exposed
      • Now this project depend on micro_utils.coroutines
      • Typealias ColumnAllocator has been replaced to root exposed package
      • Interface ExposedRepo has been added
        • ExposedCRUDRepo now extends ExposedRepo instead of simple Repo
      • New extension initTable for classes which are Table and ExposedRepo at the same time
      • KeyValue:
        • tableName parameter
        • Class AbstractExposedReadKeyValueRepo
          • Renamed to ExposedReadKeyValueRepo
          • Changed incoming types to ColumnAllocator
          • open instead of abstract
          • Implements ExposedRepo
        • Class AbstractExposedKeyValueRepo
          • Renamed to ExposedKeyValueRepo
          • Changed incoming types to ColumnAllocator
          • open instead of abstract
      • OneToMany:
        • tableName parameter
        • Class AbstractExposedReadOneToManyKeyValueRepo
          • Renamed to ExposedReadOneToManyKeyValueRepo
          • Changed incoming arguments order
          • Implements ExposedRepo
        • Class AbstractExposedOneToManyKeyValueRepo
          • Renamed to ExposedKeyValueRepo
          • Changed incoming arguments order
          • open instead of abstract
          • Release for every Flow in parent interfaces

0.1.1

  • Versions:
    • kotlinx.serialization: 1.0.0-RC2 -> 1.0.0
  • Pagination
    • Common
      • Function calculatePage for calculating page based on size of page and index of first element
      • Extension List#createPaginationResult which use index of first element to calculate current page and other info in PaginationResult object
      • Factory emptyPaginationResult for empty PaginationResult
      • Extensions paginate for creating of PaginationResult which use as source one of next types:
        • Iterable
        • List
        • Set
  • Repos
    • Common
      • Interfaces related to OneToManyKeyValueRepo were renamed with convenience to Read/Write modifier before name
        • All subclasses were renamed
      • Interfaces related to StandartKeyValueRepo were renamed with convenience to Read/Write modifier before name
        • All subclasses were renamed
      • Extensions doForAll and getAll were added for all current types of repos:
        • ReadStandardCRUDRepo
        • ReadStandardKeyValueRepo
        • ReadOneToManyKeyValueRepo
      • ReadStandardKeyValueRepo methods values and keys now have default value for reversed parameter false
      • New Flow's in WriteOneToManyKeyValueRepo:
        • onNewValue
        • onValueRemoved
        • onDataCleared
      • New function ReadStandardCRUDRepo#count
    • In Memory
      • Package has been created:) you can connect it via implementation "dev.inmo:micro_utils.repos.inmemory"
      • MapCRUDRepo class as implementation of StandardCRUDRepo on top of MutableMap has been added
      • MapKeyValueRepo class as implementation of StandardKeyValueRepo on top of MutableMap has been added
      • MapOneToManyKeyValueRepo class as implementation of OneToManyKeyValueRepo on top of MutableMap has been added

0.1.0

Inited :)