MicroUtils/CHANGELOG.md
2023-02-27 15:54:37 +06:00

46 KiB

Changelog

0.17.0

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 :)