Skip to content

Commit

Permalink
refactor(swc-binding): format code
Browse files Browse the repository at this point in the history
  • Loading branch information
yidafu committed Dec 12, 2023
1 parent de08fdf commit 4db9f98
Show file tree
Hide file tree
Showing 7 changed files with 73 additions and 103 deletions.
17 changes: 7 additions & 10 deletions swc-binding/src/main/kotlin/dev/yidafu/swc/Booleanable.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,20 @@ import dev.yidafu.swc.types.TerserCompressOptions
import dev.yidafu.swc.types.TerserMangleOptions
import kotlinx.serialization.*
import kotlinx.serialization.builtins.ArraySerializer
import kotlinx.serialization.builtins.ListSerializer
import kotlinx.serialization.builtins.serializer
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
import kotlinx.serialization.json.*
import kotlin.reflect.KClass

/**
* https://github.com/Kotlin/kotlinx.serialization/issues/1175
*/
open class BooleanableSerializer<T : Any>(
private val serializer: KSerializer<T>,
override val descriptor: SerialDescriptor = serializer.descriptor,
override val descriptor: SerialDescriptor = serializer.descriptor
) : KSerializer<Booleanable<T>> {


override fun deserialize(decoder: Decoder): Booleanable<T> {
val input = decoder as JsonDecoder
val tree: JsonElement = input.decodeJsonElement()
Expand Down Expand Up @@ -106,33 +103,33 @@ data class Booleanable<T : Any>(

@OptIn(InternalSerializationApi::class)
object BooleanableStringSerializer : BooleanableSerializer<String>(
String::class.serializer(),
String::class.serializer()
// String::class.serializer().descriptor
)

@OptIn(InternalSerializationApi::class)
object BooleanableFloatSerializer : BooleanableSerializer<Float>(
Float::class.serializer(),
Float::class.serializer()
)

@OptIn(InternalSerializationApi::class)
object BooleanableIntSerializer : BooleanableSerializer<Int>(
Int::class.serializer(),
Int::class.serializer()
)

@OptIn(ExperimentalSerializationApi::class)
object BooleanableArrayStringSerializer : BooleanableSerializer<Array<String>>(
ArraySerializer(String::class, String.serializer()),
ArraySerializer(String::class, String.serializer())
)

@OptIn(InternalSerializationApi::class)
object BooleanableTerserCompressOptionsSerializer : BooleanableSerializer<TerserCompressOptions>(
TerserCompressOptions::class.serializer(),
TerserCompressOptions::class.serializer()
)

@OptIn(InternalSerializationApi::class)
object BooleanableTerserMangleOptionsSerializer : BooleanableSerializer<TerserMangleOptions>(
TerserMangleOptions::class.serializer(),
TerserMangleOptions::class.serializer()
)

@OptIn(ExperimentalSerializationApi::class)
Expand Down
33 changes: 15 additions & 18 deletions swc-binding/src/main/kotlin/dev/yidafu/swc/SwcNative.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,96 +17,93 @@ class SwcNative {
external fun parseSync(
code: String,
options: String,
filename: String?,
filename: String?
): String

external fun parseFileSync(
filepath: String,
options: String,
options: String
): String

fun parseSync(
code: String,
options: ParserConfig,
filename: String?,
filename: String?
): String {
val optStr = configJson.encodeToString(options)
println(optStr)
return parseSync(code, optStr, filename)
}

fun parseFileSync(
filepath: String,
options: TsParserConfig,
options: TsParserConfig
): String {
val res = parseFileSync(filepath, configJson.encodeToString(options))
val res = parseFileSync(filepath, configJson.encodeToString<ParserConfig>(options))
return res
}

fun parseFileSync(
filepath: String,
options: EsParserConfig,
options: EsParserConfig
): String {
val res = parseFileSync(filepath, configJson.encodeToString(options))
val res = parseFileSync(filepath, configJson.encodeToString<ParserConfig>(options))
return res
}

external fun transformSync(
code: String,
isModule: Boolean,
options: String,
options: String
): String

external fun transformFileSync(
filepath: String,
isModule: Boolean,
options: String,
options: String
): String

fun transformSync(
code: String,
isModule: Boolean,
options: Options,
options: Options
): TransformOutput {
val optionStr = configJson.encodeToString(options)
println(optionStr)
val res = transformSync(code, isModule, optionStr)
return astJson.decodeFromString<TransformOutput>(res)
}

fun transformFileSync(
filepath: String,
isModule: Boolean,
options: Options,
options: Options
): TransformOutput {
val res = transformFileSync(filepath, isModule, configJson.encodeToString(options))
return astJson.decodeFromString<TransformOutput>(res)
}

external fun printSync(
program: String,
options: String,
options: String
): String

fun printSync(
program: Program,
options: Options,
options: Options
): TransformOutput {
val pStr = astJson.encodeToString(program)
println(pStr)
val oStr = configJson.encodeToString(options)
val res = printSync(pStr, oStr)
return astJson.decodeFromString<TransformOutput>(res)
}

external fun minifySync(
program: String,
options: String,
options: String
): String

fun minifySync(
program: Program,
options: Options,
options: Options
): TransformOutput {
val pStr = astJson.encodeToString(program)
val oStr = configJson.encodeToString(options)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,7 @@ fun TsExpressionWithTypeArguments.invalid(block: Invalid.() -> Unit): Invalid {
* extension function for create TsTypeParameterInstantiation -> TsTypeParameterInstantiationImpl
*/
fun TsExpressionWithTypeArguments.tsTypeParameterInstantiation(
block: TsTypeParameterInstantiation.() -> Unit,
block: TsTypeParameterInstantiation.() -> Unit
): TsTypeParameterInstantiation {
return TsTypeParameterInstantiationImpl().apply(block)
}
Expand Down
27 changes: 11 additions & 16 deletions swc-binding/src/main/kotlin/dev/yidafu/swc/json.kt
Original file line number Diff line number Diff line change
@@ -1,24 +1,19 @@
package dev.yidafu.swc

import dev.yidafu.swc.types.configSerializer
import dev.yidafu.swc.types.swcSerializersModule
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.json.Json

@OptIn(ExperimentalSerializationApi::class)
val astJson =
Json {
encodeDefaults = true
explicitNulls = false
classDiscriminator = "type"
serializersModule = swcSerializersModule
// TODO: @swc/types seems incomplete
ignoreUnknownKeys = true
}
val astJson = Json {
classDiscriminator = "type"
serializersModule = swcSerializersModule
// TODO: @swc/types seems incomplete
ignoreUnknownKeys = true
}

val configJson =
Json {
encodeDefaults = true
explicitNulls = false
classDiscriminator = "syntax"
serializersModule = swcSerializersModule
}
val configJson = Json {
classDiscriminator = "syntax"
serializersModule = configSerializer
}
41 changes: 0 additions & 41 deletions swc-binding/src/main/kotlin/dev/yidafu/swc/main.kt

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package dev.yidafu.swc.types

import kotlinx.serialization.modules.SerializersModule
import kotlinx.serialization.modules.polymorphic
import kotlinx.serialization.modules.subclass

val configSerializer = SerializersModule {
polymorphic(ParserConfig::class) {
subclass(TsParserConfig::class)
subclass(EsParserConfig::class)
}
}
Loading

0 comments on commit 4db9f98

Please sign in to comment.