From: Lanius Trolling Date: Thu, 8 Feb 2024 20:02:00 +0000 (-0500) Subject: Update libraries and refactor code X-Git-Url: https://gitweb.starshipfights.net/?a=commitdiff_plain;h=bd9b49071a7c8045e6f4163e5f9a5065fe242f02;p=factbooks Update libraries and refactor code --- diff --git a/build.gradle.kts b/build.gradle.kts index a0e572d..de729a9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -29,8 +29,8 @@ buildscript { plugins { java - kotlin("multiplatform") version "1.9.21" - kotlin("plugin.serialization") version "1.9.21" + kotlin("multiplatform") version "1.9.22" + kotlin("plugin.serialization") version "1.9.22" id("com.github.johnrengelman.shadow") version "7.1.2" application } @@ -102,7 +102,7 @@ kotlin { dependencies { implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3") implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2") - implementation("org.jetbrains.kotlinx:kotlinx-html-js:0.10.1") + implementation("org.jetbrains.kotlinx:kotlinx-html-js:0.11.0") implementation(project(":externals")) } @@ -116,19 +116,19 @@ kotlin { implementation("org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.6.2") implementation("org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.6.2") - implementation("io.ktor:ktor-server-core-jvm:2.3.7") - implementation("io.ktor:ktor-server-cio-jvm:2.3.7") + implementation("io.ktor:ktor-server-core-jvm:2.3.8") + implementation("io.ktor:ktor-server-cio-jvm:2.3.8") - implementation("io.ktor:ktor-server-caching-headers:2.3.7") - implementation("io.ktor:ktor-server-call-id:2.3.7") - implementation("io.ktor:ktor-server-call-logging:2.3.7") - implementation("io.ktor:ktor-server-conditional-headers:2.3.7") - implementation("io.ktor:ktor-server-forwarded-header:2.3.7") - implementation("io.ktor:ktor-server-html-builder:2.3.7") - implementation("io.ktor:ktor-server-sessions-jvm:2.3.7") - implementation("io.ktor:ktor-server-status-pages:2.3.7") + implementation("io.ktor:ktor-server-caching-headers:2.3.8") + implementation("io.ktor:ktor-server-call-id:2.3.8") + implementation("io.ktor:ktor-server-call-logging:2.3.8") + implementation("io.ktor:ktor-server-conditional-headers:2.3.8") + implementation("io.ktor:ktor-server-forwarded-header:2.3.8") + implementation("io.ktor:ktor-server-html-builder:2.3.8") + implementation("io.ktor:ktor-server-sessions-jvm:2.3.8") + implementation("io.ktor:ktor-server-status-pages:2.3.8") - implementation("org.jetbrains.kotlinx:kotlinx-html-jvm:0.10.1") + implementation("org.jetbrains.kotlinx:kotlinx-html-jvm:0.11.0") implementation("io.pebbletemplates:pebble:3.2.2") implementation("org.apache.groovy:groovy-jsr223:4.0.10") diff --git a/externals/src/jsMain/kotlin/externals/threejs/ObjectLoader.module_three.kt b/externals/src/jsMain/kotlin/externals/threejs/ObjectLoader.module_three.kt index 41ab6c2..367bd70 100644 --- a/externals/src/jsMain/kotlin/externals/threejs/ObjectLoader.module_three.kt +++ b/externals/src/jsMain/kotlin/externals/threejs/ObjectLoader.module_three.kt @@ -3,7 +3,6 @@ package externals.threejs -import org.w3c.dom.HTMLImageElement import org.w3c.xhr.ProgressEvent import kotlin.js.Promise diff --git a/externals/src/jsMain/kotlin/externals/threejs/constants.module_three.kt b/externals/src/jsMain/kotlin/externals/threejs/constants.module_three.kt index 743e45d..571100a 100644 --- a/externals/src/jsMain/kotlin/externals/threejs/constants.module_three.kt +++ b/externals/src/jsMain/kotlin/externals/threejs/constants.module_three.kt @@ -21,9 +21,7 @@ sealed external class TOUCH { object DOLLY_ROTATE : TOUCH } -sealed external class CullFace { - -} +sealed external class CullFace external var CullFaceNone: CullFace @@ -33,9 +31,7 @@ external var CullFaceFront: CullFace external var CullFaceFrontBack: CullFace -sealed external class ShadowMapType { - -} +sealed external class ShadowMapType external var BasicShadowMap: ShadowMapType @@ -45,9 +41,7 @@ external var PCFSoftShadowMap: ShadowMapType external var VSMShadowMap: ShadowMapType -sealed external class Side { - -} +sealed external class Side external var FrontSide: Side @@ -55,17 +49,13 @@ external var BackSide: Side external var DoubleSide: Side -sealed external class Shading { - -} +sealed external class Shading external var FlatShading: Shading external var SmoothShading: Shading -sealed external class Blending { - -} +sealed external class Blending external var NoBlending: Blending @@ -79,9 +69,7 @@ external var MultiplyBlending: Blending external var CustomBlending: Blending -sealed external class BlendingEquation { - -} +sealed external class BlendingEquation external var AddEquation: BlendingEquation @@ -93,9 +81,7 @@ external var MinEquation: BlendingEquation external var MaxEquation: BlendingEquation -sealed external class BlendingDstFactor { - -} +sealed external class BlendingDstFactor external var ZeroFactor: BlendingDstFactor @@ -117,15 +103,11 @@ external var DstColorFactor: BlendingDstFactor external var OneMinusDstColorFactor: BlendingDstFactor -sealed external class BlendingSrcFactor { - -} +sealed external class BlendingSrcFactor external var SrcAlphaSaturateFactor: BlendingSrcFactor -sealed external class DepthModes { - -} +sealed external class DepthModes external var NeverDepth: DepthModes @@ -143,9 +125,7 @@ external var GreaterDepth: DepthModes external var NotEqualDepth: DepthModes -sealed external class Combine { - -} +sealed external class Combine external var MultiplyOperation: Combine @@ -153,9 +133,7 @@ external var MixOperation: Combine external var AddOperation: Combine -sealed external class ToneMapping { - -} +sealed external class ToneMapping external var NoToneMapping: ToneMapping @@ -167,9 +145,7 @@ external var CineonToneMapping: ToneMapping external var ACESFilmicToneMapping: ToneMapping -sealed external class Mapping { - -} +sealed external class Mapping external var UVMapping: Mapping @@ -185,9 +161,7 @@ external var CubeUVReflectionMapping: Mapping external var CubeUVRefractionMapping: Mapping -sealed external class Wrapping { - -} +sealed external class Wrapping external var RepeatWrapping: Wrapping @@ -195,9 +169,7 @@ external var ClampToEdgeWrapping: Wrapping external var MirroredRepeatWrapping: Wrapping -sealed external class TextureFilter { - -} +sealed external class TextureFilter external var NearestFilter: TextureFilter @@ -219,9 +191,7 @@ external var LinearMipmapLinearFilter: TextureFilter external var LinearMipMapLinearFilter: TextureFilter -sealed external class TextureDataType { - -} +sealed external class TextureDataType external var UnsignedByteType: TextureDataType @@ -247,9 +217,7 @@ external var UnsignedShort565Type: TextureDataType external var UnsignedInt248Type: TextureDataType -sealed external class PixelFormat { - -} +sealed external class PixelFormat external var AlphaFormat: PixelFormat @@ -279,9 +247,7 @@ external var RGBIntegerFormat: PixelFormat external var RGBAIntegerFormat: PixelFormat -sealed external class CompressedPixelFormat { - -} +sealed external class CompressedPixelFormat external var RGB_S3TC_DXT1_Format: CompressedPixelFormat @@ -363,9 +329,7 @@ external var SRGB8_ALPHA8_ASTC_12x12_Format: CompressedPixelFormat external var RGBA_BPTC_Format: CompressedPixelFormat -sealed external class AnimationActionLoopStyles { - -} +sealed external class AnimationActionLoopStyles external var LoopOnce: AnimationActionLoopStyles @@ -373,9 +337,7 @@ external var LoopRepeat: AnimationActionLoopStyles external var LoopPingPong: AnimationActionLoopStyles -sealed external class InterpolationModes { - -} +sealed external class InterpolationModes external var InterpolateDiscrete: InterpolationModes @@ -383,9 +345,7 @@ external var InterpolateLinear: InterpolationModes external var InterpolateSmooth: InterpolationModes -sealed external class InterpolationEndingModes { - -} +sealed external class InterpolationEndingModes external var ZeroCurvatureEnding: InterpolationEndingModes @@ -393,17 +353,13 @@ external var ZeroSlopeEnding: InterpolationEndingModes external var WrapAroundEnding: InterpolationEndingModes -sealed external class AnimationBlendMode { - -} +sealed external class AnimationBlendMode external var NormalAnimationBlendMode: AnimationBlendMode external var AdditiveAnimationBlendMode: AnimationBlendMode -sealed external class TrianglesDrawModes { - -} +sealed external class TrianglesDrawModes external var TrianglesDrawMode: TrianglesDrawModes @@ -411,9 +367,7 @@ external var TriangleStripDrawMode: TrianglesDrawModes external var TriangleFanDrawMode: TrianglesDrawModes -sealed external class TextureEncoding { - -} +sealed external class TextureEncoding external var LinearEncoding: TextureEncoding @@ -431,25 +385,19 @@ external var RGBM16Encoding: TextureEncoding external var RGBDEncoding: TextureEncoding -sealed external class DepthPackingStrategies { - -} +sealed external class DepthPackingStrategies external var BasicDepthPacking: DepthPackingStrategies external var RGBADepthPacking: DepthPackingStrategies -sealed external class NormalMapTypes { - -} +sealed external class NormalMapTypes external var TangentSpaceNormalMap: NormalMapTypes external var ObjectSpaceNormalMap: NormalMapTypes -sealed external class StencilOp { - -} +sealed external class StencilOp external var ZeroStencilOp: StencilOp @@ -467,9 +415,7 @@ external var DecrementWrapStencilOp: StencilOp external var InvertStencilOp: StencilOp -sealed external class StencilFunc { - -} +sealed external class StencilFunc external var NeverStencilFunc: StencilFunc @@ -487,9 +433,7 @@ external var GreaterEqualStencilFunc: StencilFunc external var AlwaysStencilFunc: StencilFunc -sealed external class Usage { - -} +sealed external class Usage external var StaticDrawUsage: Usage @@ -509,9 +453,7 @@ external var DynamicCopyUsage: Usage external var StreamCopyUsage: Usage -sealed external class GLSLVersion { - -} +sealed external class GLSLVersion external var GLSL1: GLSLVersion diff --git a/src/jvmMain/kotlin/info/mechyrdia/Factbooks.kt b/src/jvmMain/kotlin/info/mechyrdia/Factbooks.kt index 6e04060..92aeff3 100644 --- a/src/jvmMain/kotlin/info/mechyrdia/Factbooks.kt +++ b/src/jvmMain/kotlin/info/mechyrdia/Factbooks.kt @@ -27,7 +27,6 @@ import io.ktor.server.sessions.serialization.* import io.ktor.util.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.runInterruptible -import kotlinx.coroutines.withContext import org.slf4j.event.Level import java.io.File import java.io.IOException diff --git a/src/jvmMain/kotlin/info/mechyrdia/data/views_comment.kt b/src/jvmMain/kotlin/info/mechyrdia/data/views_comment.kt index 7bf7da9..9cf308c 100644 --- a/src/jvmMain/kotlin/info/mechyrdia/data/views_comment.kt +++ b/src/jvmMain/kotlin/info/mechyrdia/data/views_comment.kt @@ -147,7 +147,7 @@ suspend fun ApplicationCall.editCommentRoute(): Nothing { redirect("/comment/view/$commentId") } -suspend fun ApplicationCall.deleteCommentPage(): HTML.() -> Unit { +private suspend fun ApplicationCall.getCommentForDeletion(): Pair { val currNation = currentNation() ?: redirectWithError("/auth/login", "You must be logged in to delete comments") val commentId = Id(parameters["id"]!!) @@ -156,6 +156,12 @@ suspend fun ApplicationCall.deleteCommentPage(): HTML.() -> Unit { if (currNation.id != comment.submittedBy && currNation.id != OwnerNationId) throw ForbiddenException("Illegal attempt by ${currNation.id} to delete comment by ${comment.submittedBy}") + return currNation to comment +} + +suspend fun ApplicationCall.deleteCommentPage(): HTML.() -> Unit { + val (currNation, comment) = getCommentForDeletion() + val commentDisplay = CommentRenderData(listOf(comment), nationCache).single() return page("Confirm Deletion of Commment", standardNavBar()) { @@ -167,10 +173,10 @@ suspend fun ApplicationCall.deleteCommentPage(): HTML.() -> Unit { commentBox(commentDisplay, currNation.id) - form(method = FormMethod.get, action = "/comment/view/$commentId") { + form(method = FormMethod.get, action = "/comment/view/${comment.id}") { submitInput { value = "No, take me back" } } - form(method = FormMethod.post, action = "/comment/delete/$commentId") { + form(method = FormMethod.post, action = "/comment/delete/$comment.id") { installCsrfToken(createCsrfToken()) submitInput(classes = "evil") { value = "Yes, delete it" } } @@ -179,16 +185,10 @@ suspend fun ApplicationCall.deleteCommentPage(): HTML.() -> Unit { } suspend fun ApplicationCall.deleteCommentRoute(): Nothing { - val currNation = currentNation() ?: redirectWithError("/auth/login", "You must be logged in to delete comments") - - val commentId = Id(parameters["id"]!!) - val comment = Comment.Table.get(commentId)!! - - if (currNation.id != comment.submittedBy && currNation.id != OwnerNationId) - throw ForbiddenException("Illegal attempt by ${currNation.id} to delete comment by ${comment.submittedBy}") + val (_, comment) = getCommentForDeletion() - Comment.Table.del(commentId) - CommentReplyLink.deleteComment(commentId) + Comment.Table.del(comment.id) + CommentReplyLink.deleteComment(comment.id) redirect("/lore/${comment.submittedIn}#comments") } diff --git a/src/jvmMain/kotlin/info/mechyrdia/lore/preparser_config.kt b/src/jvmMain/kotlin/info/mechyrdia/lore/preparser_config.kt index 1ca8490..319ca54 100644 --- a/src/jvmMain/kotlin/info/mechyrdia/lore/preparser_config.kt +++ b/src/jvmMain/kotlin/info/mechyrdia/lore/preparser_config.kt @@ -225,7 +225,7 @@ object PebbleJsonLoader { resolveImports(JsonFileCodec.parseToJsonElement(text), file) } - fun loadJsonContext(name: String): Map = loadJson(name).let { json -> + private fun loadJsonContext(name: String): Map = loadJson(name).let { json -> val data = convertJson(json) if (data !is Map<*, *>) throw IOException("JSON Object expected in file $name, got $json") @@ -245,7 +245,7 @@ object PebbleToJsonFilter : Filter { return mutableListOf() } - override fun apply(input: Any?, args: MutableMap, self: PebbleTemplate?, context: EvaluationContext?, lineNumber: Int): Any? { + override fun apply(input: Any?, args: MutableMap, self: PebbleTemplate?, context: EvaluationContext?, lineNumber: Int): Any { return PebbleJsonLoader.deconvertJson(input).toString() } } @@ -303,7 +303,7 @@ object PebbleScriptLoader { return compiledScript } - fun runScript(scriptName: String, script: CompiledScript, input: Any?, args: MutableMap, self: PebbleTemplate, context: EvaluationContext, lineNumber: Int): Any? { + private fun runScript(scriptName: String, script: CompiledScript, input: Any?, args: MutableMap, self: PebbleTemplate, context: EvaluationContext, lineNumber: Int): Any? { val bindings = SimpleBindings() bindings["text"] = input bindings["stdlib"] = PebbleScriptStdlib(bindings, self, lineNumber) @@ -317,7 +317,7 @@ object PebbleScriptLoader { } } - fun runScript(scriptName: String, input: Any?, args: MutableMap, self: PebbleTemplate, context: EvaluationContext, lineNumber: Int): Any? { + private fun runScript(scriptName: String, input: Any?, args: MutableMap, self: PebbleTemplate, context: EvaluationContext, lineNumber: Int): Any? { val script = loadFunction(scriptName) ?: throw PebbleException(null, "Script $scriptName could not be found", lineNumber, self.name) diff --git a/src/mapMain/kotlin/info/mechyrdia/mapviewer/modal.kt b/src/mapMain/kotlin/info/mechyrdia/mapviewer/modal.kt index b729847..9623e4e 100644 --- a/src/mapMain/kotlin/info/mechyrdia/mapviewer/modal.kt +++ b/src/mapMain/kotlin/info/mechyrdia/mapviewer/modal.kt @@ -3,9 +3,10 @@ package info.mechyrdia.mapviewer import kotlinx.browser.document import kotlinx.coroutines.* import kotlinx.dom.clear -import kotlinx.html.* +import kotlinx.html.TagConsumer import kotlinx.html.dom.append -import kotlinx.html.js.onClickFunction +import kotlinx.html.p +import kotlinx.html.style import kotlin.coroutines.resume private suspend fun showModalBox(boxBuilder: TagConsumer<*>.((T) -> Unit) -> Unit): T {