[versions]

kotlin = "2.2.0"
ktor = "3.2.3"
exposed = "0.61.0"
javacv-ffmpeg = "7.1-1.5.11"
detekt = "1.23.7"
coroutines = "1.10.2"
swagger = "2.2.35"
tika = "3.2.1"
owl = "0.0.1"
jackson = "2.19.2"
protobuf = "4.31.1"
grpc-java = "1.74.0"
grpc-kotlin = "1.4.3"

[libraries]

exposed-core = { module = "org.jetbrains.exposed:exposed-core", version.ref = "exposed" }
exposed-jdbc = { module = "org.jetbrains.exposed:exposed-jdbc", version.ref = "exposed" }
exposed-spring = { module = "org.jetbrains.exposed:exposed-spring-boot-starter", version.ref = "exposed" }
exposed-java-time = { module = "org.jetbrains.exposed:exposed-java-time", version.ref = "exposed" }

coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" }
coroutines-reactor = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-reactor", version.ref = "coroutines" }
coroutines-slf4j = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-slf4j", version.ref = "coroutines" }
coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" }

javacv = { module = "org.bytedeco:javacv", version = "1.5.12" }
javacv-ffmpeg = { module = "org.bytedeco:ffmpeg", version.ref = "javacv-ffmpeg" }

detekt-formatting = { module = "io.gitlab.arturbosch.detekt:detekt-formatting", version.ref = "detekt" }

ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" }
ktor-client-cio = { module = "io.ktor:ktor-client-cio", version.ref = "ktor" }
ktor-client-content-negotiation = { module = "io.ktor:ktor-client-content-negotiation", version.ref = "ktor" }
ktor-client-mock = { module = "io.ktor:ktor-client-mock", version.ref = "ktor" }
ktor-client-logging-jvm = { module = "io.ktor:ktor-client-logging-jvm", version.ref = "ktor" }
ktor-serialization-jackson = { module = "io.ktor:ktor-serialization-jackson", version.ref = "ktor" }

spring-boot-oauth2-authorization = { module = "org.springframework.boot:spring-boot-starter-oauth2-authorization-server" }
spring-boot-oauth2-resource = { module = "org.springframework.boot:spring-boot-starter-oauth2-resource-server" }
spring-boot-oauth2-jose = { module = "org.springframework.security:spring-security-oauth2-jose" }

spring-boot-data-mongodb = { module = "org.springframework.boot:spring-boot-starter-data-mongodb" }
spring-boot-data-mongodb-reactive = { module = "org.springframework.boot:spring-boot-starter-data-mongodb-reactive" }

jakarta-validation = { module = "jakarta.validation:jakarta.validation-api", version = "3.1.1" }
jakarta-annotation = { module = "jakarta.annotation:jakarta.annotation-api", version = "3.0.0" }
swagger-annotations = { module = "io.swagger.core.v3:swagger-annotations", version.ref = "swagger" }
swagger-models = { module = "io.swagger.core.v3:swagger-models", version.ref = "swagger" }

apache-tika-core = { module = "org.apache.tika:tika-core", version.ref = "tika" }
apache-tika-parsers = { module = "org.apache.tika:tika-parsers", version.ref = "tika" }

owl-producer-api = { module = "dev.usbharu:owl-producer-api", version.ref = "owl" }
owl-producer-default = { module = "dev.usbharu:owl-producer-default", version.ref = "owl" }
owl-producer-embedded = { module = "dev.usbharu:owl-producer-embedded", version.ref = "owl" }
owl-broker = { module = "dev.usbharu:owl-broker", version.ref = "owl" }
owl-broker-mongodb = { module = "dev.usbharu:owl-broker-mongodb", version.ref = "owl" }
owl-common-serialize-jackson = { module = "dev.usbharu:owl-common-serialize-jackson", version.ref = "owl" }

jackson-databind = { module = "com.fasterxml.jackson.core:jackson-databind", version.ref = "jackson" }
jackson-module-kotlin = { module = "com.fasterxml.jackson.module:jackson-module-kotlin", version.ref = "jackson" }
jackson-xml = { module = "com.fasterxml.jackson.dataformat:jackson-dataformat-xml", version.ref = "jackson" }
blurhash = { module = "io.trbl:blurhash", version = "1.0.0" }

aws-s3 = { module = "software.amazon.awssdk:s3", version = "2.27.22" }

jsoup = { module = "org.jsoup:jsoup", version = "1.18.3" }

owasp-java-html-sanitizer = { module = "com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer", version = "20240325.1" }

postgresql = { module = "org.postgresql:postgresql", version = "42.7.7" }

imageio-webp = { module = "com.twelvemonkeys.imageio:imageio-webp", version = "3.12.0" }

thumbnailator = { module = "net.coobird:thumbnailator", version = "0.4.20" }

flyway-core = { module = "org.flywaydb:flyway-core" }
flyway-postgresql = { module = "org.flywaydb:flyway-database-postgresql", version = "11.1.0" }

h2db = { module = "com.h2database:h2", version = "2.3.232" }

kotlin-junit = { module = "org.jetbrains.kotlin:kotlin-test-junit", version.ref = "kotlin" }

grpc-kotlin-stub = { module = "io.grpc:grpc-kotlin-stub", version.ref = "grpc-kotlin" }
grpc-protobuf = { module = "io.grpc:grpc-protobuf", version.ref = "grpc-java" }
grpc-netty = { module = "io.grpc:grpc-netty", version.ref = "grpc-java" }
protoc-gen-grpc-java = { module = "io.grpc:protoc-gen-grpc-java", version.ref = "grpc-java" }
protoc-gen-grpc-kotlin = { module = "io.grpc:protoc-gen-grpc-kotlin", version.ref = "grpc-kotlin" }
grpc-stub = { module = "io.grpc:grpc-stub", version.ref = "grpc-java" }

protobuf-kotlin = { module = "com.google.protobuf:protobuf-kotlin", version.ref = "protobuf" }
protoc = { module = "com.google.protobuf:protoc", version.ref = "protobuf" }

koin-bom = { module = "io.insert-koin:koin-bom", version = "4.1.0" }
koin-core = { module = "io.insert-koin:koin-core" }

log4j2-slf4j = { module = "org.apache.logging.log4j:log4j-slf4j2-impl", version = "2.25.1" }

mongodb-kotlin-coroutine = { module = "org.mongodb:mongodb-driver-kotlin-coroutine", version = "5.5.1" }

mockito-kotlin = { module = "org.mockito.kotlin:mockito-kotlin", version = "5.4.0" }

http-signature = { module = "dev.usbharu:http-signature", version = "1.0.0" }
emoji-kt = { module = "dev.usbharu:emoji-kt", version = "2.0.1" }
activity-streams-serialization = { module = "dev.usbharu:activity-streams-serialization", version = "0.5.0" }

logback-ecs-encoder = { module = "co.elastic.logging:logback-ecs-encoder", version = "1.7.0" }

jsonld = { module = "com.github.jsonld-java:jsonld-java", version = "0.13.6" }

[bundles]

exposed = ["exposed-core", "exposed-java-time", "exposed-jdbc", "exposed-spring"]
coroutines = ["coroutines-core", "coroutines-reactor", "coroutines-slf4j"]
ktor-client = ["ktor-client-cio", "ktor-client-content-negotiation", "ktor-client-core", "ktor-client-logging-jvm", "ktor-serialization-jackson"]
spring-boot-oauth2 = ["spring-boot-oauth2-authorization", "spring-boot-oauth2-jose", "spring-boot-oauth2-resource"]
spring-boot-data-mongodb = ["spring-boot-data-mongodb", "spring-boot-data-mongodb-reactive"]
openapi = ["jakarta-annotation", "jakarta-validation", "swagger-annotations", "swagger-models"]
apache-tika = ["apache-tika-core", "apache-tika-parsers"]
owl-producer = ["owl-producer-api", "owl-producer-default", "owl-producer-embedded"]
owl-broker = ["owl-broker", "owl-broker-mongodb"]
jackson = ["jackson-databind", "jackson-module-kotlin"]
grpc-kotlin = ["grpc-kotlin-stub", "grpc-netty", "grpc-protobuf", "protobuf-kotlin", "grpc-stub"]

[plugins]

kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
spring-boot = { id = "org.springframework.boot", version = "3.5.4" }
detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }
kotlin-spring = { id = "org.jetbrains.kotlin.plugin.spring", version.ref = "kotlin" }
kover = { id = "org.jetbrains.kotlinx.kover", version = "0.9.1" }
openapi-generator = { id = "org.openapi.generator", version = "7.14.0" }
license-report = { id = "com.github.jk1.dependency-license-report", version = "2.9" }
protobuf-plugin = { id = "com.google.protobuf", version = "0.9.5" }