Releases: codeborne/klite
Releases · codeborne/klite
1.6.6
- core: Converter will force initialize companion objects to better support
init { Converter.use {...} }
- core: Converter now supports inline classes with multiple constructors automatically
- core: Converter now supports any static(String) method automatically, not only parse()
- core: Cache keepAlive function introduced to prolong external cache entries
- server: KeyCipher now uses base64UrlEncode() internally instead of plain base64
- jdbc: db.upsert() now uses
excluded
special table name for update part instead of setting values twice
1.6.5
- core: simple Cache with expiration timer implemented
- oauth: AppleOAuthClient updated and tested
- oauth: JWT helper class introduced
- jdbc: introduced db.upsertBatch()
- jobs: runOnce() introduced for convenience
- json: throw more descriptive errors from JsonNode.get() in case of missing keys
1.6.4
- core: added common value types for Email, Phone, and Password, also StringValue base class
- jdbc: introduced db.insertBatch()
- jdbc: deprecated Entity interface (UUID-based), which can be replaced with BaseEntity
- jdbc: support SqlComputed with other operators, e.g.
where = "date" lte SqlComputed("currrent_date")
- server: added path to annotated(), to make paths more visible in one place
- server: make a few more Server properties public (sessionStore, notFoundHandler, etc)
- server: bugfix after 1.6.0: wrap notFoundHandler correctly to produce correct 404 response
- server: NotFoundRoute introduced to be easily distinguishable from normal routes
- oauth: new experimental OAuth 2.0 login module
1.6.3
- server: added support for SSE (Server-Side Events)
- json: improve parsing of complex types with parameters
- jdbc: introduce
NullableId
for entities with null ids until they are persisted. - jdbc: introduce
UpdatableEntity
for optimistic locking inBaseRepository.save
1.6.2
- server: fix check for requested assets being inside of assets directory
- server: introduced FormDataRenderer
- core/json: KClass.createFrom will report missing parameters in a nicer way
- core: conversion of enum values from string is now case-insensitive
- json: can convert number to a custom type using opts.values
- json: TSGenerator: better detection of types of inline classes with several computed properties
- jdbc: upsert() now has skipUpdateFields parameter
1.6.1
- jdbc: and() introduced in addition to or() for more convenient composition of where expressions
- Kotlin and other dependency updates
1.6.0
- server: notFoundHandler is now decorated separately in each context, so that decorators can intercept and handle missing routes (e.g. CorsHandler)
- server: ErrorHandler will now omit the default message thrown by first() function ("List/Collection is empty.") and generate a standard 404 NotFound response
- server: ThrowableHandler now has HttpExchange as receiver for cleaner code, as it is not used in most handlers anyway
- server: ThrowableHandler returning null will now proceed with next handler, eventually producing error 500 if not handled
- server: Route is now a KAnnotatedElement, so that findAnnotation/hasAnnotation() functions from kotlin-reflect should be used on it (not backwards-compatible)
- jdbc: startDevDB() will now throw an exception if docker-compose returns a non-zero exit code
- jdbc: deprecated 1.4.x functions removed, please upgrade from 1.4.x to 1.5.0 first, fix deprecations, and then to 1.6.x
- openapi: new module that can generate OpenAPI json spec file for all routes in a context
1.5.6
- jdbc: DB_READONLY=true env var can be used to make the whole app read-only (e.g. when migrating the DB, instead of Heroku maintenance mode)
- jdbc: CrudRepository.get() now has optional forUpdate parameter
- HttpExchange.fileName() added for setting of Content-Disposition
- json bugfix: json within json (and '') are now properly escaped
- json bugfix: render Any type as 'any' instead of 'string' in TSGenerator
- csv: new module for CSV parsing/generation
1.5.5
- jdbc: support reading of collections of Decimal from DB array columns
- jdbc: db.upsert() now has an optional "where" parameter
- server: AssetsHandler.headerModifier now gets file parameter to make decisions based on it
- server: allow having annotations on AssetsHandler for e.g. access checks
1.5.4
- json: ValueConverter can now be used to transform strings into types
- json: JsonNode.getList() signature fixed
- json: improve error message when trying to parse an empty stream
- json: JsonParser.readArray can now be used to stream json arrays without loading them into memory
- jdbc: close connection (return to pool) even if autoCommit/commit/rollback fails
- server: support for boolean query parameters without values, e.g. ?flag
- server: support for anonymous handler annotations (fixed in Kotlin 1.8)