From c8815726b112437431998367aa22005ab87b56f4 Mon Sep 17 00:00:00 2001 From: Adam <897017+aSemy@users.noreply.github.com> Date: Sun, 11 Sep 2022 00:48:16 +0200 Subject: [PATCH] start splitting up events-server --- buildSrc/build.gradle.kts | 6 +- gradle/libs.versions.toml | 26 +++--- modules/events-library/build.gradle.kts | 6 +- .../events-processor-core/build.gradle.kts | 54 +++++++++++++ .../build.gradle.kts | 54 +++++++++++++ .../events-processor-packets/build.gradle.kts | 54 +++++++++++++ .../events-processor-tiles/build.gradle.kts | 54 +++++++++++++ modules/events-server-api/build.gradle.kts | 81 +++++++++++++++++++ modules/events-server-core/build.gradle.kts | 79 ++++++++++++++++++ modules/events-server-syslog/build.gradle.kts | 79 ++++++++++++++++++ modules/events-server/build.gradle.kts | 18 ++--- modules/versions-platform/build.gradle.kts | 8 +- settings.gradle.kts | 12 ++- 13 files changed, 501 insertions(+), 30 deletions(-) create mode 100644 modules/events-processor-core/build.gradle.kts create mode 100644 modules/events-processor-entities/build.gradle.kts create mode 100644 modules/events-processor-packets/build.gradle.kts create mode 100644 modules/events-processor-tiles/build.gradle.kts create mode 100644 modules/events-server-api/build.gradle.kts create mode 100644 modules/events-server-core/build.gradle.kts create mode 100644 modules/events-server-syslog/build.gradle.kts diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index f844b16..de1982b 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -22,9 +22,9 @@ dependencies { implementation(platform(libs.kotlinx.coroutines.bom)) implementation(libs.kotlinx.coroutines.core) - implementation(platform(libs.kotlinx.serialization.bom)) - implementation(libs.kotlinx.serialization.core) - implementation(libs.kotlinx.serialization.json) + implementation(platform(libs.kotlinxSerialization.bom)) + implementation(libs.kotlinxSerialization.core) + implementation(libs.kotlinxSerialization.json) // implementation("com.charleskorn.kaml:kaml:0.37.0") implementation("com.github.node-gradle:gradle-node-plugin:${libs.versions.gradleNodePlugin.get()}") diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 656c391..2833d4e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -47,6 +47,8 @@ marykRocksDb = "7.3.1-1" # https://search.maven.org/artifact/io.m klogging = "0.4.9" +nimbusJoseJwt = "9.24.4" # https://search.maven.org/artifact/com.nimbusds/nimbus-jose-jwt + ## npm ## npm-luaTypes = "2.13.0" # https://www.npmjs.com/package/lua-types @@ -99,18 +101,20 @@ kotlinScripting-dependencies = { group = "org.jetbrains.kotlin", name = "ko kotlinScripting-dependenciesMaven = { group = "org.jetbrains.kotlin", name = "kotlin-scripting-dependencies-maven" } -kotlinx-serialization-bom = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-bom", version.ref = "kotlinx-serialization" } -kotlinx-serialization-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-core" } -kotlinx-serialization-cbor = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-cbor" } -kotlinx-serialization-hocon = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-hocon" } -kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json" } -kotlinx-serialization-properties = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-properties" } -kotlinx-serialization-protobuf = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-protobuf" } +kotlinxSerialization-bom = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-bom", version.ref = "kotlinx-serialization" } +kotlinxSerialization-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-core" } +kotlinxSerialization-cbor = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-cbor" } +kotlinxSerialization-hocon = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-hocon" } +kotlinxSerialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json" } +kotlinxSerialization-properties = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-properties" } +kotlinxSerialization-protobuf = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-protobuf" } +kotlinxSerialization-jsonOkio = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json-okio" } -kxs-charleskornKaml = { group = "com.charleskorn.kaml", name = "kaml", version.ref = "kxs-charleskornKaml" } -kxs-mamoeYamlkt = { group = "net.mamoe.yamlkt", name = "yamlkt", version.ref = "kxs-mamoeYamlkt" } + +kotlinxSerialization-charleskornKaml = { group = "com.charleskorn.kaml", name = "kaml", version.ref = "kxs-charleskornKaml" } +kotlinxSerialization-mamoeYamlkt = { group = "net.mamoe.yamlkt", name = "yamlkt", version.ref = "kxs-mamoeYamlkt" } #kxs-kxsTsGen = { group = "dev.adamko.kxstsgen", name = "kxs-ts-gen-core", version.ref = "kxs-kxsTsGen" } -kxs-kxsTsGen = { group = "com.github.adamko-dev.kotlinx-serialization-typescript-generator", name = "kxs-ts-gen-core", version.ref = "kxs-kxsTsGen" } +kotlinxSerialization-kxsTsGen = { group = "com.github.adamko-dev.kotlinx-serialization-typescript-generator", name = "kxs-ts-gen-core", version.ref = "kxs-kxsTsGen" } kotlinx-coroutines-bom = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-bom", version.ref = "kotlinx-coroutines" } @@ -242,6 +246,8 @@ hoplite-yaml = { group = "com.sksamuel.hoplite", name = "hoplite-yaml", simpleSyslogParser = { group = "com.github.palindromicity", name = "simple-syslog", version.ref = "simpleSyslogParser" } +nimbusJoseJwt = { group = "com.nimbusds", name = "nimbus-jose-jwt", version.ref = "nimbusJoseJwt" } + ############# ### test ### ############# diff --git a/modules/events-library/build.gradle.kts b/modules/events-library/build.gradle.kts index 4fc31c9..0c5f892 100644 --- a/modules/events-library/build.gradle.kts +++ b/modules/events-library/build.gradle.kts @@ -51,9 +51,9 @@ kotlin { dependencies { implementation(dependencies.platform(projects.modules.versionsPlatform)) - implementation(libs.kotlinx.serialization.core) - implementation(libs.kotlinx.serialization.json) - api(libs.kxs.kxsTsGen) + implementation(libs.kotlinxSerialization.core) + implementation(libs.kotlinxSerialization.json) + api(libs.kotlinxSerialization.kxsTsGen) implementation(libs.okio.core) diff --git a/modules/events-processor-core/build.gradle.kts b/modules/events-processor-core/build.gradle.kts new file mode 100644 index 0000000..7b92be6 --- /dev/null +++ b/modules/events-processor-core/build.gradle.kts @@ -0,0 +1,54 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + + +plugins { + dev.adamko.kafkatorio.lang.`kotlin-jvm` + kotlin("plugin.serialization") + application +} + + +//description = "serves Kafkatorio content over the web" + +val projectId: String by project.extra + +val kafkaStateDir: Directory = layout.projectDirectory.dir("kafka-state") + + +dependencies { + implementation(platform(projects.modules.versionsPlatform)) + + implementation(libs.kafka.streams) + testImplementation(libs.kafka.streamsTestUtils) + + implementation(projects.modules.eventsLibrary) + + implementation(libs.kotlinxSerialization.core) + implementation(libs.kotlinxSerialization.json) + + implementation(libs.kotlinx.coroutines.core) + + implementation(libs.bundles.logging) + + implementation(libs.scrimage.core) + + implementation(libs.okio.core) + + implementation(libs.simpleSyslogParser) + + implementation(libs.kafka.kotkaStreams) +} + + +application { + mainClass.set("dev.adamko.kafkatorio.server.EventsServerKt") +} + + +tasks.withType().configureEach { + kotlinOptions.freeCompilerArgs += listOf( + "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", + "-opt-in=kotlinx.coroutines.FlowPreview", + "-opt-in=kotlinx.serialization.ExperimentalSerializationApi", + ) +} diff --git a/modules/events-processor-entities/build.gradle.kts b/modules/events-processor-entities/build.gradle.kts new file mode 100644 index 0000000..7b92be6 --- /dev/null +++ b/modules/events-processor-entities/build.gradle.kts @@ -0,0 +1,54 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + + +plugins { + dev.adamko.kafkatorio.lang.`kotlin-jvm` + kotlin("plugin.serialization") + application +} + + +//description = "serves Kafkatorio content over the web" + +val projectId: String by project.extra + +val kafkaStateDir: Directory = layout.projectDirectory.dir("kafka-state") + + +dependencies { + implementation(platform(projects.modules.versionsPlatform)) + + implementation(libs.kafka.streams) + testImplementation(libs.kafka.streamsTestUtils) + + implementation(projects.modules.eventsLibrary) + + implementation(libs.kotlinxSerialization.core) + implementation(libs.kotlinxSerialization.json) + + implementation(libs.kotlinx.coroutines.core) + + implementation(libs.bundles.logging) + + implementation(libs.scrimage.core) + + implementation(libs.okio.core) + + implementation(libs.simpleSyslogParser) + + implementation(libs.kafka.kotkaStreams) +} + + +application { + mainClass.set("dev.adamko.kafkatorio.server.EventsServerKt") +} + + +tasks.withType().configureEach { + kotlinOptions.freeCompilerArgs += listOf( + "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", + "-opt-in=kotlinx.coroutines.FlowPreview", + "-opt-in=kotlinx.serialization.ExperimentalSerializationApi", + ) +} diff --git a/modules/events-processor-packets/build.gradle.kts b/modules/events-processor-packets/build.gradle.kts new file mode 100644 index 0000000..7b92be6 --- /dev/null +++ b/modules/events-processor-packets/build.gradle.kts @@ -0,0 +1,54 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + + +plugins { + dev.adamko.kafkatorio.lang.`kotlin-jvm` + kotlin("plugin.serialization") + application +} + + +//description = "serves Kafkatorio content over the web" + +val projectId: String by project.extra + +val kafkaStateDir: Directory = layout.projectDirectory.dir("kafka-state") + + +dependencies { + implementation(platform(projects.modules.versionsPlatform)) + + implementation(libs.kafka.streams) + testImplementation(libs.kafka.streamsTestUtils) + + implementation(projects.modules.eventsLibrary) + + implementation(libs.kotlinxSerialization.core) + implementation(libs.kotlinxSerialization.json) + + implementation(libs.kotlinx.coroutines.core) + + implementation(libs.bundles.logging) + + implementation(libs.scrimage.core) + + implementation(libs.okio.core) + + implementation(libs.simpleSyslogParser) + + implementation(libs.kafka.kotkaStreams) +} + + +application { + mainClass.set("dev.adamko.kafkatorio.server.EventsServerKt") +} + + +tasks.withType().configureEach { + kotlinOptions.freeCompilerArgs += listOf( + "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", + "-opt-in=kotlinx.coroutines.FlowPreview", + "-opt-in=kotlinx.serialization.ExperimentalSerializationApi", + ) +} diff --git a/modules/events-processor-tiles/build.gradle.kts b/modules/events-processor-tiles/build.gradle.kts new file mode 100644 index 0000000..7b92be6 --- /dev/null +++ b/modules/events-processor-tiles/build.gradle.kts @@ -0,0 +1,54 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + + +plugins { + dev.adamko.kafkatorio.lang.`kotlin-jvm` + kotlin("plugin.serialization") + application +} + + +//description = "serves Kafkatorio content over the web" + +val projectId: String by project.extra + +val kafkaStateDir: Directory = layout.projectDirectory.dir("kafka-state") + + +dependencies { + implementation(platform(projects.modules.versionsPlatform)) + + implementation(libs.kafka.streams) + testImplementation(libs.kafka.streamsTestUtils) + + implementation(projects.modules.eventsLibrary) + + implementation(libs.kotlinxSerialization.core) + implementation(libs.kotlinxSerialization.json) + + implementation(libs.kotlinx.coroutines.core) + + implementation(libs.bundles.logging) + + implementation(libs.scrimage.core) + + implementation(libs.okio.core) + + implementation(libs.simpleSyslogParser) + + implementation(libs.kafka.kotkaStreams) +} + + +application { + mainClass.set("dev.adamko.kafkatorio.server.EventsServerKt") +} + + +tasks.withType().configureEach { + kotlinOptions.freeCompilerArgs += listOf( + "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", + "-opt-in=kotlinx.coroutines.FlowPreview", + "-opt-in=kotlinx.serialization.ExperimentalSerializationApi", + ) +} diff --git a/modules/events-server-api/build.gradle.kts b/modules/events-server-api/build.gradle.kts new file mode 100644 index 0000000..63de5d8 --- /dev/null +++ b/modules/events-server-api/build.gradle.kts @@ -0,0 +1,81 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + + +plugins { + dev.adamko.kafkatorio.lang.`kotlin-jvm` + kotlin("plugin.serialization") + application +} + + +//description = "serves Kafkatorio content over the web" + +val projectId: String by project.extra + +val kafkaStateDir: Directory = layout.projectDirectory.dir("kafka-state") + + +dependencies { + implementation(platform(projects.modules.versionsPlatform)) + + implementation(libs.kafka.streams) + testImplementation(libs.kafka.streamsTestUtils) + + implementation(projects.modules.eventsLibrary) + + implementation(libs.kotlinxSerialization.core) + implementation(libs.kotlinxSerialization.json) + + implementation(libs.kotlinx.coroutines.core) + + implementation(libs.bundles.logging) + + implementation(libs.scrimage.core) + + implementation(libs.okio.core) + + // + implementation(libs.ktorSerialization.kotlinxJson) + + with(libs.ktorServer) { + implementation(auth) + implementation(authJwt) + implementation(core) + implementation(callId) + implementation(callLogging) + implementation(contentNegotiaion) + implementation(cio) + implementation(autoHeadResponse) + implementation(partialContent) + implementation(resources) + implementation(statusPages) + implementation(websockets) + implementation(compression) + } + + with(libs.ktorNetwork) { + implementation(core) + implementation(tls) + } + // + + implementation(libs.simpleSyslogParser) + +// implementation(libs.nimbusJoseJwt) + + implementation(libs.kafka.kotkaStreams) +} + + +application { + mainClass.set("dev.adamko.kafkatorio.server.EventsServerKt") +} + + +tasks.withType().configureEach { + kotlinOptions.freeCompilerArgs += listOf( + "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", + "-opt-in=kotlinx.coroutines.FlowPreview", + "-opt-in=kotlinx.serialization.ExperimentalSerializationApi", + ) +} diff --git a/modules/events-server-core/build.gradle.kts b/modules/events-server-core/build.gradle.kts new file mode 100644 index 0000000..1172be0 --- /dev/null +++ b/modules/events-server-core/build.gradle.kts @@ -0,0 +1,79 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + + +plugins { + dev.adamko.kafkatorio.lang.`kotlin-jvm` + kotlin("plugin.serialization") + application +} + + +//description = "serves Kafkatorio content over the web" + +val projectId: String by project.extra + + +dependencies { + implementation(platform(projects.modules.versionsPlatform)) + + implementation(libs.kafka.streams) + testImplementation(libs.kafka.streamsTestUtils) + + implementation(projects.modules.eventsLibrary) + + implementation(libs.kotlinxSerialization.core) + implementation(libs.kotlinxSerialization.json) + + implementation(libs.kotlinx.coroutines.core) + + implementation(libs.bundles.logging) + + implementation(libs.scrimage.core) + + implementation(libs.okio.core) + + // + implementation(libs.ktorSerialization.kotlinxJson) + + with(libs.ktorServer) { + implementation(auth) + implementation(authJwt) + implementation(core) + implementation(callId) + implementation(callLogging) + implementation(contentNegotiaion) + implementation(cio) + implementation(autoHeadResponse) + implementation(partialContent) + implementation(resources) + implementation(statusPages) + implementation(websockets) + implementation(compression) + } + + with(libs.ktorNetwork) { + implementation(core) + implementation(tls) + } + // + + implementation(libs.simpleSyslogParser) + +// implementation(libs.nimbusJoseJwt) + + implementation(libs.kafka.kotkaStreams) +} + + +application { + mainClass.set("dev.adamko.kafkatorio.server.EventsServerKt") +} + + +tasks.withType().configureEach { + kotlinOptions.freeCompilerArgs += listOf( + "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", + "-opt-in=kotlinx.coroutines.FlowPreview", + "-opt-in=kotlinx.serialization.ExperimentalSerializationApi", + ) +} diff --git a/modules/events-server-syslog/build.gradle.kts b/modules/events-server-syslog/build.gradle.kts new file mode 100644 index 0000000..1172be0 --- /dev/null +++ b/modules/events-server-syslog/build.gradle.kts @@ -0,0 +1,79 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + + +plugins { + dev.adamko.kafkatorio.lang.`kotlin-jvm` + kotlin("plugin.serialization") + application +} + + +//description = "serves Kafkatorio content over the web" + +val projectId: String by project.extra + + +dependencies { + implementation(platform(projects.modules.versionsPlatform)) + + implementation(libs.kafka.streams) + testImplementation(libs.kafka.streamsTestUtils) + + implementation(projects.modules.eventsLibrary) + + implementation(libs.kotlinxSerialization.core) + implementation(libs.kotlinxSerialization.json) + + implementation(libs.kotlinx.coroutines.core) + + implementation(libs.bundles.logging) + + implementation(libs.scrimage.core) + + implementation(libs.okio.core) + + // + implementation(libs.ktorSerialization.kotlinxJson) + + with(libs.ktorServer) { + implementation(auth) + implementation(authJwt) + implementation(core) + implementation(callId) + implementation(callLogging) + implementation(contentNegotiaion) + implementation(cio) + implementation(autoHeadResponse) + implementation(partialContent) + implementation(resources) + implementation(statusPages) + implementation(websockets) + implementation(compression) + } + + with(libs.ktorNetwork) { + implementation(core) + implementation(tls) + } + // + + implementation(libs.simpleSyslogParser) + +// implementation(libs.nimbusJoseJwt) + + implementation(libs.kafka.kotkaStreams) +} + + +application { + mainClass.set("dev.adamko.kafkatorio.server.EventsServerKt") +} + + +tasks.withType().configureEach { + kotlinOptions.freeCompilerArgs += listOf( + "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", + "-opt-in=kotlinx.coroutines.FlowPreview", + "-opt-in=kotlinx.serialization.ExperimentalSerializationApi", + ) +} diff --git a/modules/events-server/build.gradle.kts b/modules/events-server/build.gradle.kts index 5052189..8613f5c 100644 --- a/modules/events-server/build.gradle.kts +++ b/modules/events-server/build.gradle.kts @@ -25,8 +25,8 @@ dependencies { implementation(projects.modules.eventsLibrary) - implementation(libs.kotlinx.serialization.core) - implementation(libs.kotlinx.serialization.json) + implementation(libs.kotlinxSerialization.core) + implementation(libs.kotlinxSerialization.json) implementation(libs.kotlinx.coroutines.core) @@ -63,14 +63,14 @@ dependencies { implementation(libs.simpleSyslogParser) - // https://search.maven.org/artifact/org.bouncycastle/bcprov-jdk15on - implementation("org.bouncycastle:bcprov-jdk15on:1.70") - implementation("com.brendangoldberg:kotlin-jwt:1.1.0") - implementation("com.auth0:java-jwt:4.0.0") +// // https://search.maven.org/artifact/org.bouncycastle/bcprov-jdk15on +// implementation("org.bouncycastle:bcprov-jdk15on:1.70") +// implementation("com.brendangoldberg:kotlin-jwt:1.1.0") +// implementation("com.auth0:java-jwt:4.0.0") - implementation(libs.kafka.kotkaStreams) { - isChanging = false - } +// implementation(libs.nimbusJoseJwt) + + implementation(libs.kafka.kotkaStreams) implementation(libs.bundles.hoplite) } diff --git a/modules/versions-platform/build.gradle.kts b/modules/versions-platform/build.gradle.kts index c1f3914..3b2c234 100644 --- a/modules/versions-platform/build.gradle.kts +++ b/modules/versions-platform/build.gradle.kts @@ -11,7 +11,7 @@ javaPlatform { dependencies { api(platform(libs.kotlin.bom)) api(platform(libs.kotlinx.coroutines.bom)) - api(platform(libs.kotlinx.serialization.bom)) + api(platform(libs.kotlinxSerialization.bom)) api(platform(libs.kotlin.jsWrappers.bom)) @@ -28,9 +28,9 @@ dependencies { api(libs.kafka.streams) api(libs.kafka.streamsTestUtils) - api(libs.kxs.charleskornKaml) - api(libs.kxs.mamoeYamlkt) - api(libs.kxs.kxsTsGen) + api(libs.kotlinxSerialization.charleskornKaml) + api(libs.kotlinxSerialization.mamoeYamlkt) + api(libs.kotlinxSerialization.kxsTsGen) api(libs.okio.core) diff --git a/settings.gradle.kts b/settings.gradle.kts index b72e1b1..13ece3e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,9 +1,19 @@ rootProject.name = "kafkatorio" include( - ":modules:events-mod", ":modules:events-library", + + ":modules:events-mod", + + ":modules:events-processor-core", + ":modules:events-processor-entities", + ":modules:events-processor-packets", + ":modules:events-processor-tiles", + ":modules:events-server", + ":modules:events-server-api", + ":modules:events-server-core", + ":modules:events-server-syslog", ":modules:infra-factorio-client", ":modules:infra-factorio-server",