diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml index 161f536..44cafeb 100644 --- a/.github/workflows/backend.yml +++ b/.github/workflows/backend.yml @@ -17,8 +17,8 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: - distribution: temurin - java-version: 21 + distribution: graalvm + java-version: 23 cache: gradle - name: Verify run: ./gradlew --no-daemon check koverHtmlReport koverVerify diff --git a/.github/workflows/gradle-dependency-submission.yml b/.github/workflows/gradle-dependency-submission.yml index 18a59a9..603dfc5 100644 --- a/.github/workflows/gradle-dependency-submission.yml +++ b/.github/workflows/gradle-dependency-submission.yml @@ -14,8 +14,8 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: - distribution: temurin - java-version: 21 + distribution: graalvm + java-version: 23 cache: gradle - name: Run snapshot action diff --git a/.github/workflows/operations.yml b/.github/workflows/operations.yml index cc202c4..89fe3d8 100644 --- a/.github/workflows/operations.yml +++ b/.github/workflows/operations.yml @@ -17,8 +17,8 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: - distribution: temurin - java-version: 21 + distribution: graalvm + java-version: 23 cache: gradle - uses: pnpm/action-setup@v4 with: diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 061365e..ef4b173 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -4,9 +4,6 @@ + \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml index 5ed8ccb..131e44d 100644 --- a/.idea/kotlinc.xml +++ b/.idea/kotlinc.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 3c13ada..e749ca2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -12,5 +12,5 @@ - - + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index ec13a12..5b42f0d 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,6 +2,7 @@ + diff --git a/.idea/modules/Backend/bootstrap/JassTracker.Backend.bootstrap.test.iml b/.idea/modules/Backend/bootstrap/JassTracker.Backend.bootstrap.test.iml new file mode 100644 index 0000000..d1de22c --- /dev/null +++ b/.idea/modules/Backend/bootstrap/JassTracker.Backend.bootstrap.test.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Backend/bootstrap/build.gradle.kts b/Backend/bootstrap/build.gradle.kts index 11de7d6..7f06401 100644 --- a/Backend/bootstrap/build.gradle.kts +++ b/Backend/bootstrap/build.gradle.kts @@ -2,18 +2,21 @@ plugins { application alias(libs.plugins.kotlin.jvm) alias(libs.plugins.shadow) - alias(libs.plugins.kover) + alias(testLibs.plugins.kover) } application { - mainClass.set("io.ktor.server.netty.EngineMain") + mainClass.set("dev.honegger.jasstracker.bootstrap.ApplicationKt") val isDevelopment: Boolean = project.ext.has("development") applicationDefaultJvmArgs = listOf("-Dio.ktor.development=$isDevelopment") } kotlin { - jvmToolchain(23) + jvmToolchain { + languageVersion.set(JavaLanguageVersion.of(23)) + vendor.set(JvmVendorSpec.GRAAL_VM) + } } dependencies { @@ -27,7 +30,7 @@ dependencies { implementation(libs.ktor.server.call.logging) implementation(libs.ktor.server.content.negotiation) implementation(libs.ktor.server.cors) - implementation(libs.ktor.server.netty) + implementation(libs.ktor.server.cio) implementation(libs.ktor.server.auth) implementation(libs.ktor.server.auth.jwt) implementation(libs.ktor.server.status.pages) @@ -37,12 +40,18 @@ dependencies { implementation(libs.kotlin.logging) implementation(libs.slf4j) implementation(libs.java.jwt) + testImplementation(testLibs.kotlin.test) + testImplementation(testLibs.mockk) +} + +tasks.withType { + useJUnitPlatform() } tasks { shadowJar { manifest { - attributes(Pair("Main-Class", "io.ktor.server.netty.EngineMain")) + attributes("Main-Class" to "dev.honegger.jasstracker.bootstrap.ApplicationKt") } } } diff --git a/Backend/bootstrap/src/main/kotlin/dev/honegger/jasstracker/bootstrap/Application.kt b/Backend/bootstrap/src/main/kotlin/dev/honegger/jasstracker/bootstrap/Application.kt index 9a7d7c4..33abb06 100644 --- a/Backend/bootstrap/src/main/kotlin/dev/honegger/jasstracker/bootstrap/Application.kt +++ b/Backend/bootstrap/src/main/kotlin/dev/honegger/jasstracker/bootstrap/Application.kt @@ -1,10 +1,10 @@ +@file:OptIn(ExperimentalEncodingApi::class) + package dev.honegger.jasstracker.bootstrap import dev.honegger.jasstracker.api.endpoints.* -import dev.honegger.jasstracker.bootstrap.plugins.configureAuthentication -import dev.honegger.jasstracker.bootstrap.plugins.configureHTTP -import dev.honegger.jasstracker.bootstrap.plugins.configureStaticRouting -import dev.honegger.jasstracker.bootstrap.plugins.initializeDatabase +import dev.honegger.jasstracker.bootstrap.plugins.* +import dev.honegger.jasstracker.bootstrap.utils.readConfiguration import dev.honegger.jasstracker.data.repositories.* import dev.honegger.jasstracker.domain.services.* import dev.honegger.jasstracker.security.Argon2HashConfig @@ -14,15 +14,32 @@ import dev.honegger.jasstracker.security.JwtTokenService import io.ktor.server.application.* import io.ktor.server.auth.* import io.ktor.server.routing.* +import io.ktor.server.engine.* +import io.ktor.server.cio.* +import io.ktor.server.config.* +import kotlin.io.encoding.Base64 +import kotlin.io.encoding.ExperimentalEncodingApi import kotlin.time.Duration -fun main(args: Array): Unit = io.ktor.server.netty.EngineMain.main(args) +fun main() { + embeddedServer( + factory = CIO, + configure = { + connectors += EngineConnectorBuilder().apply { + port = System.getenv("PORT")?.toInt() ?: 8080 + } + }, + environment = applicationEnvironment { + config = MapApplicationConfig(readConfiguration(System::getenv)) + }, + module = Application::module, + ).start(true) +} -@Suppress("unused") // application.conf references the main function. This annotation prevents the IDE from marking it as unused. fun Application.module() { environment.config.apply { val jwtConfig = JwtConfig( - secret = property("jwt.secret").getString(), + secret = Base64.decode(property("jwt.secret").getString()), issuer = property("jwt.issuer").getString(), audience = property("jwt.audience").getString(), realm = property("jwt.realm").getString(), @@ -56,7 +73,6 @@ fun Application.module() { configureHTTP() configureStaticRouting() - routing { route("/api") { configureAuthenticationEndpoints(playerService) diff --git a/Backend/bootstrap/src/main/kotlin/dev/honegger/jasstracker/bootstrap/utils/Configuration.kt b/Backend/bootstrap/src/main/kotlin/dev/honegger/jasstracker/bootstrap/utils/Configuration.kt new file mode 100644 index 0000000..14d80c4 --- /dev/null +++ b/Backend/bootstrap/src/main/kotlin/dev/honegger/jasstracker/bootstrap/utils/Configuration.kt @@ -0,0 +1,17 @@ +package dev.honegger.jasstracker.bootstrap.utils + +inline fun readConfiguration(getEnvVariable: (name: String) -> String?) = listOf( + "jasstracker.db.url" to (getEnvVariable("DB_URL") ?: "jdbc:postgresql://localhost:5432/jasstracker"), + "jasstracker.db.user" to (getEnvVariable("DB_USER") ?: "jasstracker"), + "jasstracker.db.password" to (getEnvVariable("DB_PASSWORD") ?: "password"), + + "jwt.secret" to (getEnvVariable("JWT_SECRET") ?: "z8TxaimeeD3R9EFBCBTLNi6LNlDOOiRuKjb5TYcUEcNNjYDzhbS5StLIB1wqvDPhNoXY66FUvIsQrOykDUbUQg=="), + "jwt.issuer" to (getEnvVariable("JWT_ISSUER") ?: "http://0.0.0.0:8080/"), + "jwt.audience" to (getEnvVariable("JWT_AUDIENCE") ?: "http://0.0.0.0:9090/"), + "jwt.realm" to (getEnvVariable("JWT_REALM") ?: "JassTracker"), + "jwt.expiryTime" to (getEnvVariable("JWT_EXPIRY_TIME") ?: "4h"), + + "hash.iterations" to (getEnvVariable("HASH_ITERATIONS") ?: "10"), + "hash.memory" to (getEnvVariable("HASH_MEMORY") ?: "65536"), + "hash.parallelization" to (getEnvVariable("HASH_PARALLELIZATION") ?: "1"), +) diff --git a/Backend/bootstrap/src/main/resources/application.conf b/Backend/bootstrap/src/main/resources/application.conf deleted file mode 100644 index e44bf3a..0000000 --- a/Backend/bootstrap/src/main/resources/application.conf +++ /dev/null @@ -1,41 +0,0 @@ -ktor { - deployment { - port = 8080 - port = ${?PORT} - } - application { - modules = [ dev.honegger.jasstracker.bootstrap.ApplicationKt.module ] - } -} -jasstracker { - db { - url = "jdbc:postgresql://localhost:5432/jasstracker" - url = ${?DB_URL} - user = "jasstracker" - user = ${?DB_USER} - password = "password" - password = ${?DB_PASSWORD} - } -} - -jwt { - secret = "z8TxaimeeD3R9EFBCBTLNi6LNlDOOiRuKjb5TYcUEcNNjYDzhbS5StLIB1wqvDPhNoXY66FUvIsQrOykDUbUQg==" - issuer = ${?JWT_SECRET} - issuer = "http://0.0.0.0:9090/" - issuer = ${?JWT_ISSUER} - audience = "http://0.0.0.0:8080/" - audience = ${?JWT_AUDIENCE} - realm = "JassTracker" - realm = ${?JWT_REALM} - expiryTime = 4h - expiryTime = ${?JWT_EXPIRY_TIME} -} - -hash { - iterations = 10 - iterations = ${?HASH_ITERATIONS} - memory = 65536 - memory = ${?HASH_MEMORY} - parallelization = 1 - parallelization = ${?HASH_PARALLELIZATION} -} diff --git a/Backend/bootstrap/src/test/kotlin/dev/honegger/jasstracker/bootstrap/plugins/ConfigurationTest.kt b/Backend/bootstrap/src/test/kotlin/dev/honegger/jasstracker/bootstrap/plugins/ConfigurationTest.kt new file mode 100644 index 0000000..e1510ee --- /dev/null +++ b/Backend/bootstrap/src/test/kotlin/dev/honegger/jasstracker/bootstrap/plugins/ConfigurationTest.kt @@ -0,0 +1,40 @@ +package dev.honegger.jasstracker.bootstrap.plugins + +import dev.honegger.jasstracker.bootstrap.utils.readConfiguration +import kotlin.test.* + +class ConfigurationTest { + @Test + fun `should provide default configuration`() { + assertContentEquals(listOf( + "jasstracker.db.url" to "jdbc:postgresql://localhost:5432/jasstracker", + "jasstracker.db.user" to "jasstracker", + "jasstracker.db.password" to "password", + "jwt.secret" to "z8TxaimeeD3R9EFBCBTLNi6LNlDOOiRuKjb5TYcUEcNNjYDzhbS5StLIB1wqvDPhNoXY66FUvIsQrOykDUbUQg==", + "jwt.issuer" to "http://0.0.0.0:8080/", + "jwt.audience" to "http://0.0.0.0:9090/", + "jwt.realm" to "JassTracker", + "jwt.expiryTime" to "4h", + "hash.iterations" to "10", + "hash.memory" to "65536", + "hash.parallelization" to "1", + ), readConfiguration { null }) + } + + @Test + fun `should read environment variables`() { + assertContentEquals(listOf( + "jasstracker.db.url" to "DB_URL_VALUE", + "jasstracker.db.user" to "DB_USER_VALUE", + "jasstracker.db.password" to "DB_PASSWORD_VALUE", + "jwt.secret" to "JWT_SECRET_VALUE", + "jwt.issuer" to "JWT_ISSUER_VALUE", + "jwt.audience" to "JWT_AUDIENCE_VALUE", + "jwt.realm" to "JWT_REALM_VALUE", + "jwt.expiryTime" to "JWT_EXPIRY_TIME_VALUE", + "hash.iterations" to "HASH_ITERATIONS_VALUE", + "hash.memory" to "HASH_MEMORY_VALUE", + "hash.parallelization" to "HASH_PARALLELIZATION_VALUE", + ), readConfiguration { "${it}_VALUE" }) + } +} \ No newline at end of file diff --git a/Backend/data-access/build.gradle.kts b/Backend/data-access/build.gradle.kts index a2b7ace..c3f6408 100644 --- a/Backend/data-access/build.gradle.kts +++ b/Backend/data-access/build.gradle.kts @@ -4,11 +4,14 @@ plugins { java alias(libs.plugins.kotlin.jvm) alias(libs.plugins.jooq) - alias(libs.plugins.kover) + alias(testLibs.plugins.kover) } kotlin { - jvmToolchain(23) + jvmToolchain { + languageVersion.set(JavaLanguageVersion.of(23)) + vendor.set(JvmVendorSpec.GRAAL_VM) + } } dependencies { @@ -74,8 +77,6 @@ jooq { generate.apply { isDeprecated = false isRecords = true - isPojos = false - isFluentSetters = false } target.apply { packageName = "dev.honegger.jasstracker.data.database" diff --git a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/DefaultCatalog.java b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/DefaultCatalog.java index 306880b..77296c1 100644 --- a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/DefaultCatalog.java +++ b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/DefaultCatalog.java @@ -15,7 +15,7 @@ /** * This class is generated by jOOQ. */ -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class DefaultCatalog extends CatalogImpl { private static final long serialVersionUID = 1L; @@ -26,7 +26,7 @@ public class DefaultCatalog extends CatalogImpl { public static final DefaultCatalog DEFAULT_CATALOG = new DefaultCatalog(); /** - * The schema public. + * standard public schema */ public final Public PUBLIC = Public.PUBLIC; @@ -45,10 +45,10 @@ public final List getSchemas() { } /** - * A reference to the 3.18 minor release of the code generator. If this + * A reference to the 3.20 minor release of the code generator. If this * doesn't compile, it's because the runtime library uses an older minor - * release, namely: 3.18. You can turn off the generation of this reference + * release, namely: 3.20. You can turn off the generation of this reference * by specifying /configuration/generator/generate/jooqVersionReference */ - private static final String REQUIRE_RUNTIME_JOOQ_VERSION = Constants.VERSION_3_18; + private static final String REQUIRE_RUNTIME_JOOQ_VERSION = Constants.VERSION_3_20; } diff --git a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/Keys.java b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/Keys.java index 0ee2c02..443fd7c 100644 --- a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/Keys.java +++ b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/Keys.java @@ -22,13 +22,14 @@ import org.jooq.UniqueKey; import org.jooq.impl.DSL; import org.jooq.impl.Internal; +import org.jooq.impl.QOM.ForeignKeyRule; /** * A class modelling foreign key relationships and constraints of tables in * public. */ -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Keys { // ------------------------------------------------------------------------- @@ -48,10 +49,10 @@ public class Keys { // FOREIGN KEY definitions // ------------------------------------------------------------------------- - public static final ForeignKey GAME__GAME_TABLE_ID_FKEY = Internal.createForeignKey(Game.GAME, DSL.name("game_table_id_fkey"), new TableField[] { Game.GAME.TABLE_ID }, Keys.TABLE_PKEY, new TableField[] { Table.TABLE.ID }, true); - public static final ForeignKey GAME_PARTICIPATION__GAME_PARTICIPATION_GAME_ID_FKEY = Internal.createForeignKey(GameParticipation.GAME_PARTICIPATION, DSL.name("game_participation_game_id_fkey"), new TableField[] { GameParticipation.GAME_PARTICIPATION.GAME_ID }, Keys.GAME_PKEY, new TableField[] { Game.GAME.ID }, true); - public static final ForeignKey GAME_PARTICIPATION__GAME_PARTICIPATION_PLAYER_ID_FKEY = Internal.createForeignKey(GameParticipation.GAME_PARTICIPATION, DSL.name("game_participation_player_id_fkey"), new TableField[] { GameParticipation.GAME_PARTICIPATION.PLAYER_ID }, Keys.PLAYER_PKEY, new TableField[] { Player.PLAYER.ID }, true); - public static final ForeignKey ROUND__ROUND_CONTRACT_ID_FKEY = Internal.createForeignKey(Round.ROUND, DSL.name("round_contract_id_fkey"), new TableField[] { Round.ROUND.CONTRACT_ID }, Keys.CONTRACT_PKEY, new TableField[] { Contract.CONTRACT.ID }, true); - public static final ForeignKey ROUND__ROUND_GAME_ID_PLAYER_ID_FKEY = Internal.createForeignKey(Round.ROUND, DSL.name("round_game_id_player_id_fkey"), new TableField[] { Round.ROUND.GAME_ID, Round.ROUND.PLAYER_ID }, Keys.GAME_PARTICIPATION_PKEY, new TableField[] { GameParticipation.GAME_PARTICIPATION.GAME_ID, GameParticipation.GAME_PARTICIPATION.PLAYER_ID }, true); - public static final ForeignKey TABLE__TABLE_OWNER_ID_FKEY = Internal.createForeignKey(Table.TABLE, DSL.name("table_owner_id_fkey"), new TableField[] { Table.TABLE.OWNER_ID }, Keys.PLAYER_PKEY, new TableField[] { Player.PLAYER.ID }, true); + public static final ForeignKey GAME__GAME_TABLE_ID_FKEY = Internal.createForeignKey(Game.GAME, DSL.name("game_table_id_fkey"), new TableField[] { Game.GAME.TABLE_ID }, Keys.TABLE_PKEY, new TableField[] { Table.TABLE.ID }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); + public static final ForeignKey GAME_PARTICIPATION__GAME_PARTICIPATION_GAME_ID_FKEY = Internal.createForeignKey(GameParticipation.GAME_PARTICIPATION, DSL.name("game_participation_game_id_fkey"), new TableField[] { GameParticipation.GAME_PARTICIPATION.GAME_ID }, Keys.GAME_PKEY, new TableField[] { Game.GAME.ID }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); + public static final ForeignKey GAME_PARTICIPATION__GAME_PARTICIPATION_PLAYER_ID_FKEY = Internal.createForeignKey(GameParticipation.GAME_PARTICIPATION, DSL.name("game_participation_player_id_fkey"), new TableField[] { GameParticipation.GAME_PARTICIPATION.PLAYER_ID }, Keys.PLAYER_PKEY, new TableField[] { Player.PLAYER.ID }, true, ForeignKeyRule.NO_ACTION, ForeignKeyRule.NO_ACTION); + public static final ForeignKey ROUND__ROUND_CONTRACT_ID_FKEY = Internal.createForeignKey(Round.ROUND, DSL.name("round_contract_id_fkey"), new TableField[] { Round.ROUND.CONTRACT_ID }, Keys.CONTRACT_PKEY, new TableField[] { Contract.CONTRACT.ID }, true, ForeignKeyRule.NO_ACTION, ForeignKeyRule.NO_ACTION); + public static final ForeignKey ROUND__ROUND_GAME_ID_PLAYER_ID_FKEY = Internal.createForeignKey(Round.ROUND, DSL.name("round_game_id_player_id_fkey"), new TableField[] { Round.ROUND.GAME_ID, Round.ROUND.PLAYER_ID }, Keys.GAME_PARTICIPATION_PKEY, new TableField[] { GameParticipation.GAME_PARTICIPATION.GAME_ID, GameParticipation.GAME_PARTICIPATION.PLAYER_ID }, true, ForeignKeyRule.CASCADE, ForeignKeyRule.NO_ACTION); + public static final ForeignKey TABLE__TABLE_OWNER_ID_FKEY = Internal.createForeignKey(Table.TABLE, DSL.name("table_owner_id_fkey"), new TableField[] { Table.TABLE.OWNER_ID }, Keys.PLAYER_PKEY, new TableField[] { Player.PLAYER.ID }, true, ForeignKeyRule.NO_ACTION, ForeignKeyRule.NO_ACTION); } diff --git a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/Public.java b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/Public.java index eb83a04..e493b8a 100644 --- a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/Public.java +++ b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/Public.java @@ -15,13 +15,14 @@ import java.util.List; import org.jooq.Catalog; +import org.jooq.impl.DSL; import org.jooq.impl.SchemaImpl; /** - * This class is generated by jOOQ. + * standard public schema */ -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Public extends SchemaImpl { private static final long serialVersionUID = 1L; @@ -65,7 +66,7 @@ public class Public extends SchemaImpl { * No further instances allowed */ private Public() { - super("public", null); + super(DSL.name("public"), null, DSL.comment("standard public schema")); } diff --git a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/Tables.java b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/Tables.java index 8a01d50..4ad38ce 100644 --- a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/Tables.java +++ b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/Tables.java @@ -15,7 +15,7 @@ /** * Convenience access to all tables in public. */ -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Tables { /** diff --git a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/enums/ContractType.java b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/enums/ContractType.java index 1199899..47a6c80 100644 --- a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/enums/ContractType.java +++ b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/enums/ContractType.java @@ -14,7 +14,7 @@ /** * This class is generated by jOOQ. */ -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public enum ContractType implements EnumType { acorns("acorns"), @@ -62,7 +62,9 @@ public String getLiteral() { } /** - * Lookup a value of this EnumType by its literal + * Lookup a value of this EnumType by its literal. Returns + * null, if no such value could be found, see {@link + * EnumType#lookupLiteral(Class, String)}. */ public static ContractType lookupLiteral(String literal) { return EnumType.lookupLiteral(ContractType.class, literal); diff --git a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Contract.java b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Contract.java index 2b4407e..d2e4386 100644 --- a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Contract.java +++ b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Contract.java @@ -7,20 +7,25 @@ import dev.honegger.jasstracker.data.database.Keys; import dev.honegger.jasstracker.data.database.Public; import dev.honegger.jasstracker.data.database.enums.ContractType; +import dev.honegger.jasstracker.data.database.tables.Round.RoundPath; import dev.honegger.jasstracker.data.database.tables.records.ContractRecord; +import java.util.Collection; import java.util.UUID; -import java.util.function.Function; +import org.jooq.Condition; import org.jooq.Field; import org.jooq.ForeignKey; -import org.jooq.Function4; +import org.jooq.InverseForeignKey; import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; import org.jooq.Record; -import org.jooq.Records; -import org.jooq.Row4; +import org.jooq.SQL; import org.jooq.Schema; -import org.jooq.SelectField; +import org.jooq.Select; +import org.jooq.Stringly; import org.jooq.Table; import org.jooq.TableField; import org.jooq.TableOptions; @@ -33,7 +38,7 @@ /** * This class is generated by jOOQ. */ -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Contract extends TableImpl { private static final long serialVersionUID = 1L; @@ -69,14 +74,14 @@ public Class getRecordType() { /** * The column public.contract.type. */ - public final TableField TYPE = createField(DSL.name("type"), SQLDataType.VARCHAR.nullable(false).asEnumDataType(dev.honegger.jasstracker.data.database.enums.ContractType.class), this, ""); + public final TableField TYPE = createField(DSL.name("type"), SQLDataType.VARCHAR.nullable(false).asEnumDataType(ContractType.class), this, ""); private Contract(Name alias, Table aliased) { - this(alias, aliased, null); + this(alias, aliased, (Field[]) null, null); } - private Contract(Name alias, Table aliased, Field[] parameters) { - super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table()); + private Contract(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); } /** @@ -100,8 +105,37 @@ public Contract() { this(DSL.name("contract"), null); } - public Contract(Table child, ForeignKey key) { - super(child, key, CONTRACT); + public Contract(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, CONTRACT); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class ContractPath extends Contract implements Path { + + private static final long serialVersionUID = 1L; + public ContractPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private ContractPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public ContractPath as(String alias) { + return new ContractPath(DSL.name(alias), this); + } + + @Override + public ContractPath as(Name alias) { + return new ContractPath(alias, this); + } + + @Override + public ContractPath as(Table alias) { + return new ContractPath(alias.getQualifiedName(), this); + } } @Override @@ -114,6 +148,18 @@ public UniqueKey getPrimaryKey() { return Keys.CONTRACT_PKEY; } + private transient RoundPath _round; + + /** + * Get the implicit to-many join path to the public.round table + */ + public RoundPath round() { + if (_round == null) + _round = new RoundPath(this, null, Keys.ROUND__ROUND_CONTRACT_ID_FKEY.getInverseKey()); + + return _round; + } + @Override public Contract as(String alias) { return new Contract(DSL.name(alias), this); @@ -153,27 +199,87 @@ public Contract rename(Table name) { return new Contract(name.getQualifiedName(), null); } - // ------------------------------------------------------------------------- - // Row4 type methods - // ------------------------------------------------------------------------- + /** + * Create an inline derived table from this table + */ + @Override + public Contract where(Condition condition) { + return new Contract(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Contract where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Contract where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Contract where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Contract where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Contract where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + /** + * Create an inline derived table from this table + */ @Override - public Row4 fieldsRow() { - return (Row4) super.fieldsRow(); + @PlainSQL + public Contract where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); } /** - * Convenience mapping calling {@link SelectField#convertFrom(Function)}. + * Create an inline derived table from this table */ - public SelectField mapping(Function4 from) { - return convertFrom(Records.mapping(from)); + @Override + @PlainSQL + public Contract where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); } /** - * Convenience mapping calling {@link SelectField#convertFrom(Class, - * Function)}. + * Create an inline derived table from this table */ - public SelectField mapping(Class toType, Function4 from) { - return convertFrom(toType, Records.mapping(from)); + @Override + public Contract whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Contract whereNotExists(Select select) { + return where(DSL.notExists(select)); } } diff --git a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Game.java b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Game.java index 9061be3..59a5c00 100644 --- a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Game.java +++ b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Game.java @@ -7,24 +7,31 @@ import dev.honegger.jasstracker.data.converters.LocalDateTimeConverter; import dev.honegger.jasstracker.data.database.Keys; import dev.honegger.jasstracker.data.database.Public; +import dev.honegger.jasstracker.data.database.tables.GameParticipation.GameParticipationPath; +import dev.honegger.jasstracker.data.database.tables.Player.PlayerPath; +import dev.honegger.jasstracker.data.database.tables.Table.TablePath; import dev.honegger.jasstracker.data.database.tables.records.GameRecord; import java.util.Arrays; +import java.util.Collection; import java.util.List; import java.util.UUID; -import java.util.function.Function; import kotlinx.datetime.LocalDateTime; +import org.jooq.Condition; import org.jooq.Field; import org.jooq.ForeignKey; -import org.jooq.Function4; +import org.jooq.InverseForeignKey; import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; import org.jooq.Record; -import org.jooq.Records; -import org.jooq.Row4; +import org.jooq.SQL; import org.jooq.Schema; -import org.jooq.SelectField; +import org.jooq.Select; +import org.jooq.Stringly; import org.jooq.Table; import org.jooq.TableField; import org.jooq.TableOptions; @@ -37,7 +44,7 @@ /** * This class is generated by jOOQ. */ -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Game extends TableImpl { private static final long serialVersionUID = 1L; @@ -76,11 +83,11 @@ public Class getRecordType() { public final TableField TABLE_ID = createField(DSL.name("table_id"), SQLDataType.UUID.nullable(false), this, ""); private Game(Name alias, Table aliased) { - this(alias, aliased, null); + this(alias, aliased, (Field[]) null, null); } - private Game(Name alias, Table aliased, Field[] parameters) { - super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table()); + private Game(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); } /** @@ -104,8 +111,37 @@ public Game() { this(DSL.name("game"), null); } - public Game(Table child, ForeignKey key) { - super(child, key, GAME); + public Game(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, GAME); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class GamePath extends Game implements Path { + + private static final long serialVersionUID = 1L; + public GamePath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private GamePath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public GamePath as(String alias) { + return new GamePath(DSL.name(alias), this); + } + + @Override + public GamePath as(Name alias) { + return new GamePath(alias, this); + } + + @Override + public GamePath as(Table alias) { + return new GamePath(alias.getQualifiedName(), this); + } } @Override @@ -123,18 +159,39 @@ public UniqueKey getPrimaryKey() { return Arrays.asList(Keys.GAME__GAME_TABLE_ID_FKEY); } - private transient dev.honegger.jasstracker.data.database.tables.Table _table; + private transient TablePath _table; /** * Get the implicit join path to the public.table table. */ - public dev.honegger.jasstracker.data.database.tables.Table table() { + public TablePath table() { if (_table == null) - _table = new dev.honegger.jasstracker.data.database.tables.Table(this, Keys.GAME__GAME_TABLE_ID_FKEY); + _table = new TablePath(this, Keys.GAME__GAME_TABLE_ID_FKEY, null); return _table; } + private transient GameParticipationPath _gameParticipation; + + /** + * Get the implicit to-many join path to the + * public.game_participation table + */ + public GameParticipationPath gameParticipation() { + if (_gameParticipation == null) + _gameParticipation = new GameParticipationPath(this, null, Keys.GAME_PARTICIPATION__GAME_PARTICIPATION_GAME_ID_FKEY.getInverseKey()); + + return _gameParticipation; + } + + /** + * Get the implicit many-to-many join path to the public.player + * table + */ + public PlayerPath player() { + return gameParticipation().player(); + } + @Override public Game as(String alias) { return new Game(DSL.name(alias), this); @@ -174,27 +231,87 @@ public Game rename(Table name) { return new Game(name.getQualifiedName(), null); } - // ------------------------------------------------------------------------- - // Row4 type methods - // ------------------------------------------------------------------------- + /** + * Create an inline derived table from this table + */ + @Override + public Game where(Condition condition) { + return new Game(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Game where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Game where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Game where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Game where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Game where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + /** + * Create an inline derived table from this table + */ @Override - public Row4 fieldsRow() { - return (Row4) super.fieldsRow(); + @PlainSQL + public Game where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); } /** - * Convenience mapping calling {@link SelectField#convertFrom(Function)}. + * Create an inline derived table from this table */ - public SelectField mapping(Function4 from) { - return convertFrom(Records.mapping(from)); + @Override + @PlainSQL + public Game where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); } /** - * Convenience mapping calling {@link SelectField#convertFrom(Class, - * Function)}. + * Create an inline derived table from this table */ - public SelectField mapping(Class toType, Function4 from) { - return convertFrom(toType, Records.mapping(from)); + @Override + public Game whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Game whereNotExists(Select select) { + return where(DSL.notExists(select)); } } diff --git a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/GameParticipation.java b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/GameParticipation.java index 191df8d..0b14ce6 100644 --- a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/GameParticipation.java +++ b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/GameParticipation.java @@ -6,23 +6,30 @@ import dev.honegger.jasstracker.data.database.Keys; import dev.honegger.jasstracker.data.database.Public; +import dev.honegger.jasstracker.data.database.tables.Game.GamePath; +import dev.honegger.jasstracker.data.database.tables.Player.PlayerPath; +import dev.honegger.jasstracker.data.database.tables.Round.RoundPath; import dev.honegger.jasstracker.data.database.tables.records.GameParticipationRecord; import java.util.Arrays; +import java.util.Collection; import java.util.List; import java.util.UUID; -import java.util.function.Function; import org.jooq.Check; +import org.jooq.Condition; import org.jooq.Field; import org.jooq.ForeignKey; -import org.jooq.Function4; +import org.jooq.InverseForeignKey; import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; import org.jooq.Record; -import org.jooq.Records; -import org.jooq.Row4; +import org.jooq.SQL; import org.jooq.Schema; -import org.jooq.SelectField; +import org.jooq.Select; +import org.jooq.Stringly; import org.jooq.Table; import org.jooq.TableField; import org.jooq.TableOptions; @@ -36,7 +43,7 @@ /** * This class is generated by jOOQ. */ -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class GameParticipation extends TableImpl { private static final long serialVersionUID = 1L; @@ -75,11 +82,11 @@ public Class getRecordType() { public final TableField PLAYER_NAME = createField(DSL.name("player_name"), SQLDataType.VARCHAR(30).nullable(false), this, ""); private GameParticipation(Name alias, Table aliased) { - this(alias, aliased, null); + this(alias, aliased, (Field[]) null, null); } - private GameParticipation(Name alias, Table aliased, Field[] parameters) { - super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table()); + private GameParticipation(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); } /** @@ -103,8 +110,37 @@ public GameParticipation() { this(DSL.name("game_participation"), null); } - public GameParticipation(Table child, ForeignKey key) { - super(child, key, GAME_PARTICIPATION); + public GameParticipation(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, GAME_PARTICIPATION); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class GameParticipationPath extends GameParticipation implements Path { + + private static final long serialVersionUID = 1L; + public GameParticipationPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private GameParticipationPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public GameParticipationPath as(String alias) { + return new GameParticipationPath(DSL.name(alias), this); + } + + @Override + public GameParticipationPath as(Name alias) { + return new GameParticipationPath(alias, this); + } + + @Override + public GameParticipationPath as(Table alias) { + return new GameParticipationPath(alias.getQualifiedName(), this); + } } @Override @@ -127,29 +163,42 @@ public List> getUniqueKeys() { return Arrays.asList(Keys.GAME_PARTICIPATION__GAME_PARTICIPATION_GAME_ID_FKEY, Keys.GAME_PARTICIPATION__GAME_PARTICIPATION_PLAYER_ID_FKEY); } - private transient Game _game; - private transient Player _player; + private transient GamePath _game; /** * Get the implicit join path to the public.game table. */ - public Game game() { + public GamePath game() { if (_game == null) - _game = new Game(this, Keys.GAME_PARTICIPATION__GAME_PARTICIPATION_GAME_ID_FKEY); + _game = new GamePath(this, Keys.GAME_PARTICIPATION__GAME_PARTICIPATION_GAME_ID_FKEY, null); return _game; } + private transient PlayerPath _player; + /** * Get the implicit join path to the public.player table. */ - public Player player() { + public PlayerPath player() { if (_player == null) - _player = new Player(this, Keys.GAME_PARTICIPATION__GAME_PARTICIPATION_PLAYER_ID_FKEY); + _player = new PlayerPath(this, Keys.GAME_PARTICIPATION__GAME_PARTICIPATION_PLAYER_ID_FKEY, null); return _player; } + private transient RoundPath _round; + + /** + * Get the implicit to-many join path to the public.round table + */ + public RoundPath round() { + if (_round == null) + _round = new RoundPath(this, null, Keys.ROUND__ROUND_GAME_ID_PLAYER_ID_FKEY.getInverseKey()); + + return _round; + } + @Override public List> getChecks() { return Arrays.asList( @@ -196,27 +245,87 @@ public GameParticipation rename(Table name) { return new GameParticipation(name.getQualifiedName(), null); } - // ------------------------------------------------------------------------- - // Row4 type methods - // ------------------------------------------------------------------------- + /** + * Create an inline derived table from this table + */ + @Override + public GameParticipation where(Condition condition) { + return new GameParticipation(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public GameParticipation where(Collection conditions) { + return where(DSL.and(conditions)); + } + /** + * Create an inline derived table from this table + */ @Override - public Row4 fieldsRow() { - return (Row4) super.fieldsRow(); + public GameParticipation where(Condition... conditions) { + return where(DSL.and(conditions)); } /** - * Convenience mapping calling {@link SelectField#convertFrom(Function)}. + * Create an inline derived table from this table */ - public SelectField mapping(Function4 from) { - return convertFrom(Records.mapping(from)); + @Override + public GameParticipation where(Field condition) { + return where(DSL.condition(condition)); } /** - * Convenience mapping calling {@link SelectField#convertFrom(Class, - * Function)}. + * Create an inline derived table from this table */ - public SelectField mapping(Class toType, Function4 from) { - return convertFrom(toType, Records.mapping(from)); + @Override + @PlainSQL + public GameParticipation where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public GameParticipation where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public GameParticipation where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public GameParticipation where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public GameParticipation whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public GameParticipation whereNotExists(Select select) { + return where(DSL.notExists(select)); } } diff --git a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Player.java b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Player.java index d76ce64..97209bc 100644 --- a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Player.java +++ b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Player.java @@ -6,22 +6,29 @@ import dev.honegger.jasstracker.data.database.Keys; import dev.honegger.jasstracker.data.database.Public; +import dev.honegger.jasstracker.data.database.tables.Game.GamePath; +import dev.honegger.jasstracker.data.database.tables.GameParticipation.GameParticipationPath; +import dev.honegger.jasstracker.data.database.tables.Table.TablePath; import dev.honegger.jasstracker.data.database.tables.records.PlayerRecord; import java.util.Arrays; +import java.util.Collection; import java.util.List; import java.util.UUID; -import java.util.function.Function; +import org.jooq.Condition; import org.jooq.Field; import org.jooq.ForeignKey; -import org.jooq.Function5; +import org.jooq.InverseForeignKey; import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; import org.jooq.Record; -import org.jooq.Records; -import org.jooq.Row5; +import org.jooq.SQL; import org.jooq.Schema; -import org.jooq.SelectField; +import org.jooq.Select; +import org.jooq.Stringly; import org.jooq.Table; import org.jooq.TableField; import org.jooq.TableOptions; @@ -34,7 +41,7 @@ /** * This class is generated by jOOQ. */ -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Player extends TableImpl { private static final long serialVersionUID = 1L; @@ -78,11 +85,11 @@ public Class getRecordType() { public final TableField IS_GUEST = createField(DSL.name("is_guest"), SQLDataType.BOOLEAN, this, ""); private Player(Name alias, Table aliased) { - this(alias, aliased, null); + this(alias, aliased, (Field[]) null, null); } - private Player(Name alias, Table aliased, Field[] parameters) { - super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table()); + private Player(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); } /** @@ -106,8 +113,37 @@ public Player() { this(DSL.name("player"), null); } - public Player(Table child, ForeignKey key) { - super(child, key, PLAYER); + public Player(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, PLAYER); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class PlayerPath extends Player implements Path { + + private static final long serialVersionUID = 1L; + public PlayerPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private PlayerPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public PlayerPath as(String alias) { + return new PlayerPath(DSL.name(alias), this); + } + + @Override + public PlayerPath as(Name alias) { + return new PlayerPath(alias, this); + } + + @Override + public PlayerPath as(Table alias) { + return new PlayerPath(alias.getQualifiedName(), this); + } } @Override @@ -125,6 +161,39 @@ public List> getUniqueKeys() { return Arrays.asList(Keys.PLAYER_USERNAME_KEY); } + private transient GameParticipationPath _gameParticipation; + + /** + * Get the implicit to-many join path to the + * public.game_participation table + */ + public GameParticipationPath gameParticipation() { + if (_gameParticipation == null) + _gameParticipation = new GameParticipationPath(this, null, Keys.GAME_PARTICIPATION__GAME_PARTICIPATION_PLAYER_ID_FKEY.getInverseKey()); + + return _gameParticipation; + } + + private transient TablePath _table; + + /** + * Get the implicit to-many join path to the public.table table + */ + public TablePath table() { + if (_table == null) + _table = new TablePath(this, null, Keys.TABLE__TABLE_OWNER_ID_FKEY.getInverseKey()); + + return _table; + } + + /** + * Get the implicit many-to-many join path to the public.game + * table + */ + public GamePath game() { + return gameParticipation().game(); + } + @Override public Player as(String alias) { return new Player(DSL.name(alias), this); @@ -164,27 +233,87 @@ public Player rename(Table name) { return new Player(name.getQualifiedName(), null); } - // ------------------------------------------------------------------------- - // Row5 type methods - // ------------------------------------------------------------------------- + /** + * Create an inline derived table from this table + */ + @Override + public Player where(Condition condition) { + return new Player(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Player where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Player where(Condition... conditions) { + return where(DSL.and(conditions)); + } + /** + * Create an inline derived table from this table + */ @Override - public Row5 fieldsRow() { - return (Row5) super.fieldsRow(); + public Player where(Field condition) { + return where(DSL.condition(condition)); } /** - * Convenience mapping calling {@link SelectField#convertFrom(Function)}. + * Create an inline derived table from this table */ - public SelectField mapping(Function5 from) { - return convertFrom(Records.mapping(from)); + @Override + @PlainSQL + public Player where(SQL condition) { + return where(DSL.condition(condition)); } /** - * Convenience mapping calling {@link SelectField#convertFrom(Class, - * Function)}. + * Create an inline derived table from this table */ - public SelectField mapping(Class toType, Function5 from) { - return convertFrom(toType, Records.mapping(from)); + @Override + @PlainSQL + public Player where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Player where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Player where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Player whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Player whereNotExists(Select select) { + return where(DSL.notExists(select)); } } diff --git a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Round.java b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Round.java index b6c2525..55cf387 100644 --- a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Round.java +++ b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Round.java @@ -6,22 +6,28 @@ import dev.honegger.jasstracker.data.database.Keys; import dev.honegger.jasstracker.data.database.Public; +import dev.honegger.jasstracker.data.database.tables.Contract.ContractPath; +import dev.honegger.jasstracker.data.database.tables.GameParticipation.GameParticipationPath; import dev.honegger.jasstracker.data.database.tables.records.RoundRecord; import java.util.Arrays; +import java.util.Collection; import java.util.List; import java.util.UUID; -import java.util.function.Function; +import org.jooq.Condition; import org.jooq.Field; import org.jooq.ForeignKey; -import org.jooq.Function6; +import org.jooq.InverseForeignKey; import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; import org.jooq.Record; -import org.jooq.Records; -import org.jooq.Row6; +import org.jooq.SQL; import org.jooq.Schema; -import org.jooq.SelectField; +import org.jooq.Select; +import org.jooq.Stringly; import org.jooq.Table; import org.jooq.TableField; import org.jooq.TableOptions; @@ -34,7 +40,7 @@ /** * This class is generated by jOOQ. */ -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Round extends TableImpl { private static final long serialVersionUID = 1L; @@ -83,11 +89,11 @@ public Class getRecordType() { public final TableField CONTRACT_ID = createField(DSL.name("contract_id"), SQLDataType.UUID.nullable(false), this, ""); private Round(Name alias, Table aliased) { - this(alias, aliased, null); + this(alias, aliased, (Field[]) null, null); } - private Round(Name alias, Table aliased, Field[] parameters) { - super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table()); + private Round(Name alias, Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); } /** @@ -111,8 +117,37 @@ public Round() { this(DSL.name("round"), null); } - public Round(Table child, ForeignKey key) { - super(child, key, ROUND); + public Round(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, ROUND); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class RoundPath extends Round implements Path { + + private static final long serialVersionUID = 1L; + public RoundPath(Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private RoundPath(Name alias, Table aliased) { + super(alias, aliased); + } + + @Override + public RoundPath as(String alias) { + return new RoundPath(DSL.name(alias), this); + } + + @Override + public RoundPath as(Name alias) { + return new RoundPath(alias, this); + } + + @Override + public RoundPath as(Table alias) { + return new RoundPath(alias.getQualifiedName(), this); + } } @Override @@ -127,31 +162,32 @@ public UniqueKey getPrimaryKey() { @Override public List> getReferences() { - return Arrays.asList(Keys.ROUND__ROUND_GAME_ID_PLAYER_ID_FKEY, Keys.ROUND__ROUND_CONTRACT_ID_FKEY); + return Arrays.asList(Keys.ROUND__ROUND_CONTRACT_ID_FKEY, Keys.ROUND__ROUND_GAME_ID_PLAYER_ID_FKEY); } - private transient GameParticipation _gameParticipation; - private transient Contract _contract; + private transient ContractPath _contract; /** - * Get the implicit join path to the public.game_participation - * table. + * Get the implicit join path to the public.contract table. */ - public GameParticipation gameParticipation() { - if (_gameParticipation == null) - _gameParticipation = new GameParticipation(this, Keys.ROUND__ROUND_GAME_ID_PLAYER_ID_FKEY); + public ContractPath contract() { + if (_contract == null) + _contract = new ContractPath(this, Keys.ROUND__ROUND_CONTRACT_ID_FKEY, null); - return _gameParticipation; + return _contract; } + private transient GameParticipationPath _gameParticipation; + /** - * Get the implicit join path to the public.contract table. + * Get the implicit join path to the public.game_participation + * table. */ - public Contract contract() { - if (_contract == null) - _contract = new Contract(this, Keys.ROUND__ROUND_CONTRACT_ID_FKEY); + public GameParticipationPath gameParticipation() { + if (_gameParticipation == null) + _gameParticipation = new GameParticipationPath(this, Keys.ROUND__ROUND_GAME_ID_PLAYER_ID_FKEY, null); - return _contract; + return _gameParticipation; } @Override @@ -193,27 +229,87 @@ public Round rename(Table name) { return new Round(name.getQualifiedName(), null); } - // ------------------------------------------------------------------------- - // Row6 type methods - // ------------------------------------------------------------------------- + /** + * Create an inline derived table from this table + */ + @Override + public Round where(Condition condition) { + return new Round(getQualifiedName(), aliased() ? this : null, null, condition); + } + /** + * Create an inline derived table from this table + */ @Override - public Row6 fieldsRow() { - return (Row6) super.fieldsRow(); + public Round where(Collection conditions) { + return where(DSL.and(conditions)); } /** - * Convenience mapping calling {@link SelectField#convertFrom(Function)}. + * Create an inline derived table from this table */ - public SelectField mapping(Function6 from) { - return convertFrom(Records.mapping(from)); + @Override + public Round where(Condition... conditions) { + return where(DSL.and(conditions)); } /** - * Convenience mapping calling {@link SelectField#convertFrom(Class, - * Function)}. + * Create an inline derived table from this table */ - public SelectField mapping(Class toType, Function6 from) { - return convertFrom(toType, Records.mapping(from)); + @Override + public Round where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Round where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Round where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Round where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Round where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Round whereExists(Select select) { + return where(DSL.exists(select)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Round whereNotExists(Select select) { + return where(DSL.notExists(select)); } } diff --git a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Table.java b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Table.java index 24ceb5d..23ac33d 100644 --- a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Table.java +++ b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/Table.java @@ -6,22 +6,28 @@ import dev.honegger.jasstracker.data.database.Keys; import dev.honegger.jasstracker.data.database.Public; +import dev.honegger.jasstracker.data.database.tables.Game.GamePath; +import dev.honegger.jasstracker.data.database.tables.Player.PlayerPath; import dev.honegger.jasstracker.data.database.tables.records.TableRecord; import java.util.Arrays; +import java.util.Collection; import java.util.List; import java.util.UUID; -import java.util.function.Function; +import org.jooq.Condition; import org.jooq.Field; import org.jooq.ForeignKey; -import org.jooq.Function3; +import org.jooq.InverseForeignKey; import org.jooq.Name; +import org.jooq.Path; +import org.jooq.PlainSQL; +import org.jooq.QueryPart; import org.jooq.Record; -import org.jooq.Records; -import org.jooq.Row3; +import org.jooq.SQL; import org.jooq.Schema; -import org.jooq.SelectField; +import org.jooq.Select; +import org.jooq.Stringly; import org.jooq.TableField; import org.jooq.TableOptions; import org.jooq.UniqueKey; @@ -33,7 +39,7 @@ /** * This class is generated by jOOQ. */ -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) public class Table extends TableImpl { private static final long serialVersionUID = 1L; @@ -67,11 +73,11 @@ public Class getRecordType() { public final TableField OWNER_ID = createField(DSL.name("owner_id"), SQLDataType.UUID.nullable(false), this, ""); private Table(Name alias, org.jooq.Table aliased) { - this(alias, aliased, null); + this(alias, aliased, (Field[]) null, null); } - private Table(Name alias, org.jooq.Table aliased, Field[] parameters) { - super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table()); + private Table(Name alias, org.jooq.Table aliased, Field[] parameters, Condition where) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where); } /** @@ -95,8 +101,37 @@ public Table() { this(DSL.name("table"), null); } - public Table(org.jooq.Table child, ForeignKey key) { - super(child, key, TABLE); + public Table(org.jooq.Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath, TABLE); + } + + /** + * A subtype implementing {@link Path} for simplified path-based joins. + */ + public static class TablePath extends Table implements Path { + + private static final long serialVersionUID = 1L; + public TablePath(org.jooq.Table path, ForeignKey childPath, InverseForeignKey parentPath) { + super(path, childPath, parentPath); + } + private TablePath(Name alias, org.jooq.Table aliased) { + super(alias, aliased); + } + + @Override + public TablePath as(String alias) { + return new TablePath(DSL.name(alias), this); + } + + @Override + public TablePath as(Name alias) { + return new TablePath(alias, this); + } + + @Override + public TablePath as(org.jooq.Table alias) { + return new TablePath(alias.getQualifiedName(), this); + } } @Override @@ -114,18 +149,30 @@ public UniqueKey getPrimaryKey() { return Arrays.asList(Keys.TABLE__TABLE_OWNER_ID_FKEY); } - private transient Player _player; + private transient PlayerPath _player; /** * Get the implicit join path to the public.player table. */ - public Player player() { + public PlayerPath player() { if (_player == null) - _player = new Player(this, Keys.TABLE__TABLE_OWNER_ID_FKEY); + _player = new PlayerPath(this, Keys.TABLE__TABLE_OWNER_ID_FKEY, null); return _player; } + private transient GamePath _game; + + /** + * Get the implicit to-many join path to the public.game table + */ + public GamePath game() { + if (_game == null) + _game = new GamePath(this, null, Keys.GAME__GAME_TABLE_ID_FKEY.getInverseKey()); + + return _game; + } + @Override public Table as(String alias) { return new Table(DSL.name(alias), this); @@ -165,27 +212,87 @@ public Table rename(org.jooq.Table name) { return new Table(name.getQualifiedName(), null); } - // ------------------------------------------------------------------------- - // Row3 type methods - // ------------------------------------------------------------------------- + /** + * Create an inline derived table from this table + */ + @Override + public Table where(Condition condition) { + return new Table(getQualifiedName(), aliased() ? this : null, null, condition); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Table where(Collection conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Table where(Condition... conditions) { + return where(DSL.and(conditions)); + } + + /** + * Create an inline derived table from this table + */ + @Override + public Table where(Field condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Table where(SQL condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Table where(@Stringly.SQL String condition) { + return where(DSL.condition(condition)); + } + + /** + * Create an inline derived table from this table + */ + @Override + @PlainSQL + public Table where(@Stringly.SQL String condition, Object... binds) { + return where(DSL.condition(condition, binds)); + } + /** + * Create an inline derived table from this table + */ @Override - public Row3 fieldsRow() { - return (Row3) super.fieldsRow(); + @PlainSQL + public Table where(@Stringly.SQL String condition, QueryPart... parts) { + return where(DSL.condition(condition, parts)); } /** - * Convenience mapping calling {@link SelectField#convertFrom(Function)}. + * Create an inline derived table from this table */ - public SelectField mapping(Function3 from) { - return convertFrom(Records.mapping(from)); + @Override + public Table whereExists(Select select) { + return where(DSL.exists(select)); } /** - * Convenience mapping calling {@link SelectField#convertFrom(Class, - * Function)}. + * Create an inline derived table from this table */ - public SelectField mapping(Class toType, Function3 from) { - return convertFrom(toType, Records.mapping(from)); + @Override + public Table whereNotExists(Select select) { + return where(DSL.notExists(select)); } } diff --git a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/ContractRecord.java b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/ContractRecord.java index d51a49b..ee06ca0 100644 --- a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/ContractRecord.java +++ b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/ContractRecord.java @@ -9,18 +9,15 @@ import java.util.UUID; -import org.jooq.Field; import org.jooq.Record1; -import org.jooq.Record4; -import org.jooq.Row4; import org.jooq.impl.UpdatableRecordImpl; /** * This class is generated by jOOQ. */ -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class ContractRecord extends UpdatableRecordImpl implements Record4 { +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) +public class ContractRecord extends UpdatableRecordImpl { private static final long serialVersionUID = 1L; @@ -89,113 +86,6 @@ public Record1 key() { return (Record1) super.key(); } - // ------------------------------------------------------------------------- - // Record4 type implementation - // ------------------------------------------------------------------------- - - @Override - public Row4 fieldsRow() { - return (Row4) super.fieldsRow(); - } - - @Override - public Row4 valuesRow() { - return (Row4) super.valuesRow(); - } - - @Override - public Field field1() { - return Contract.CONTRACT.ID; - } - - @Override - public Field field2() { - return Contract.CONTRACT.NAME; - } - - @Override - public Field field3() { - return Contract.CONTRACT.MULTIPLIER; - } - - @Override - public Field field4() { - return Contract.CONTRACT.TYPE; - } - - @Override - public UUID component1() { - return getId(); - } - - @Override - public String component2() { - return getName(); - } - - @Override - public Integer component3() { - return getMultiplier(); - } - - @Override - public ContractType component4() { - return getType(); - } - - @Override - public UUID value1() { - return getId(); - } - - @Override - public String value2() { - return getName(); - } - - @Override - public Integer value3() { - return getMultiplier(); - } - - @Override - public ContractType value4() { - return getType(); - } - - @Override - public ContractRecord value1(UUID value) { - setId(value); - return this; - } - - @Override - public ContractRecord value2(String value) { - setName(value); - return this; - } - - @Override - public ContractRecord value3(Integer value) { - setMultiplier(value); - return this; - } - - @Override - public ContractRecord value4(ContractType value) { - setType(value); - return this; - } - - @Override - public ContractRecord values(UUID value1, String value2, Integer value3, ContractType value4) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - return this; - } - // ------------------------------------------------------------------------- // Constructors // ------------------------------------------------------------------------- @@ -217,6 +107,6 @@ public ContractRecord(UUID id, String name, Integer multiplier, ContractType typ setName(name); setMultiplier(multiplier); setType(type); - resetChangedOnNotNull(); + resetTouchedOnNotNull(); } } diff --git a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/GameParticipationRecord.java b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/GameParticipationRecord.java index 8e950a2..2fd6f67 100644 --- a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/GameParticipationRecord.java +++ b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/GameParticipationRecord.java @@ -8,18 +8,15 @@ import java.util.UUID; -import org.jooq.Field; import org.jooq.Record2; -import org.jooq.Record4; -import org.jooq.Row4; import org.jooq.impl.UpdatableRecordImpl; /** * This class is generated by jOOQ. */ -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class GameParticipationRecord extends UpdatableRecordImpl implements Record4 { +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) +public class GameParticipationRecord extends UpdatableRecordImpl { private static final long serialVersionUID = 1L; @@ -88,113 +85,6 @@ public Record2 key() { return (Record2) super.key(); } - // ------------------------------------------------------------------------- - // Record4 type implementation - // ------------------------------------------------------------------------- - - @Override - public Row4 fieldsRow() { - return (Row4) super.fieldsRow(); - } - - @Override - public Row4 valuesRow() { - return (Row4) super.valuesRow(); - } - - @Override - public Field field1() { - return GameParticipation.GAME_PARTICIPATION.GAME_ID; - } - - @Override - public Field field2() { - return GameParticipation.GAME_PARTICIPATION.PLAYER_ID; - } - - @Override - public Field field3() { - return GameParticipation.GAME_PARTICIPATION.TABLE_POSITION; - } - - @Override - public Field field4() { - return GameParticipation.GAME_PARTICIPATION.PLAYER_NAME; - } - - @Override - public UUID component1() { - return getGameId(); - } - - @Override - public UUID component2() { - return getPlayerId(); - } - - @Override - public Integer component3() { - return getTablePosition(); - } - - @Override - public String component4() { - return getPlayerName(); - } - - @Override - public UUID value1() { - return getGameId(); - } - - @Override - public UUID value2() { - return getPlayerId(); - } - - @Override - public Integer value3() { - return getTablePosition(); - } - - @Override - public String value4() { - return getPlayerName(); - } - - @Override - public GameParticipationRecord value1(UUID value) { - setGameId(value); - return this; - } - - @Override - public GameParticipationRecord value2(UUID value) { - setPlayerId(value); - return this; - } - - @Override - public GameParticipationRecord value3(Integer value) { - setTablePosition(value); - return this; - } - - @Override - public GameParticipationRecord value4(String value) { - setPlayerName(value); - return this; - } - - @Override - public GameParticipationRecord values(UUID value1, UUID value2, Integer value3, String value4) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - return this; - } - // ------------------------------------------------------------------------- // Constructors // ------------------------------------------------------------------------- @@ -216,6 +106,6 @@ public GameParticipationRecord(UUID gameId, UUID playerId, Integer tablePosition setPlayerId(playerId); setTablePosition(tablePosition); setPlayerName(playerName); - resetChangedOnNotNull(); + resetTouchedOnNotNull(); } } diff --git a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/GameRecord.java b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/GameRecord.java index 70bdf99..b1cd092 100644 --- a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/GameRecord.java +++ b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/GameRecord.java @@ -10,18 +10,15 @@ import kotlinx.datetime.LocalDateTime; -import org.jooq.Field; import org.jooq.Record1; -import org.jooq.Record4; -import org.jooq.Row4; import org.jooq.impl.UpdatableRecordImpl; /** * This class is generated by jOOQ. */ -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class GameRecord extends UpdatableRecordImpl implements Record4 { +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) +public class GameRecord extends UpdatableRecordImpl { private static final long serialVersionUID = 1L; @@ -90,113 +87,6 @@ public Record1 key() { return (Record1) super.key(); } - // ------------------------------------------------------------------------- - // Record4 type implementation - // ------------------------------------------------------------------------- - - @Override - public Row4 fieldsRow() { - return (Row4) super.fieldsRow(); - } - - @Override - public Row4 valuesRow() { - return (Row4) super.valuesRow(); - } - - @Override - public Field field1() { - return Game.GAME.ID; - } - - @Override - public Field field2() { - return Game.GAME.START_TIME; - } - - @Override - public Field field3() { - return Game.GAME.END_TIME; - } - - @Override - public Field field4() { - return Game.GAME.TABLE_ID; - } - - @Override - public UUID component1() { - return getId(); - } - - @Override - public LocalDateTime component2() { - return getStartTime(); - } - - @Override - public LocalDateTime component3() { - return getEndTime(); - } - - @Override - public UUID component4() { - return getTableId(); - } - - @Override - public UUID value1() { - return getId(); - } - - @Override - public LocalDateTime value2() { - return getStartTime(); - } - - @Override - public LocalDateTime value3() { - return getEndTime(); - } - - @Override - public UUID value4() { - return getTableId(); - } - - @Override - public GameRecord value1(UUID value) { - setId(value); - return this; - } - - @Override - public GameRecord value2(LocalDateTime value) { - setStartTime(value); - return this; - } - - @Override - public GameRecord value3(LocalDateTime value) { - setEndTime(value); - return this; - } - - @Override - public GameRecord value4(UUID value) { - setTableId(value); - return this; - } - - @Override - public GameRecord values(UUID value1, LocalDateTime value2, LocalDateTime value3, UUID value4) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - return this; - } - // ------------------------------------------------------------------------- // Constructors // ------------------------------------------------------------------------- @@ -218,6 +108,6 @@ public GameRecord(UUID id, LocalDateTime startTime, LocalDateTime endTime, UUID setStartTime(startTime); setEndTime(endTime); setTableId(tableId); - resetChangedOnNotNull(); + resetTouchedOnNotNull(); } } diff --git a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/PlayerRecord.java b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/PlayerRecord.java index de08a38..0720ebf 100644 --- a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/PlayerRecord.java +++ b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/PlayerRecord.java @@ -8,18 +8,15 @@ import java.util.UUID; -import org.jooq.Field; import org.jooq.Record1; -import org.jooq.Record5; -import org.jooq.Row5; import org.jooq.impl.UpdatableRecordImpl; /** * This class is generated by jOOQ. */ -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class PlayerRecord extends UpdatableRecordImpl implements Record5 { +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) +public class PlayerRecord extends UpdatableRecordImpl { private static final long serialVersionUID = 1L; @@ -102,135 +99,6 @@ public Record1 key() { return (Record1) super.key(); } - // ------------------------------------------------------------------------- - // Record5 type implementation - // ------------------------------------------------------------------------- - - @Override - public Row5 fieldsRow() { - return (Row5) super.fieldsRow(); - } - - @Override - public Row5 valuesRow() { - return (Row5) super.valuesRow(); - } - - @Override - public Field field1() { - return Player.PLAYER.ID; - } - - @Override - public Field field2() { - return Player.PLAYER.USERNAME; - } - - @Override - public Field field3() { - return Player.PLAYER.DISPLAY_NAME; - } - - @Override - public Field field4() { - return Player.PLAYER.PASSWORD; - } - - @Override - public Field field5() { - return Player.PLAYER.IS_GUEST; - } - - @Override - public UUID component1() { - return getId(); - } - - @Override - public String component2() { - return getUsername(); - } - - @Override - public String component3() { - return getDisplayName(); - } - - @Override - public String component4() { - return getPassword(); - } - - @Override - public Boolean component5() { - return getIsGuest(); - } - - @Override - public UUID value1() { - return getId(); - } - - @Override - public String value2() { - return getUsername(); - } - - @Override - public String value3() { - return getDisplayName(); - } - - @Override - public String value4() { - return getPassword(); - } - - @Override - public Boolean value5() { - return getIsGuest(); - } - - @Override - public PlayerRecord value1(UUID value) { - setId(value); - return this; - } - - @Override - public PlayerRecord value2(String value) { - setUsername(value); - return this; - } - - @Override - public PlayerRecord value3(String value) { - setDisplayName(value); - return this; - } - - @Override - public PlayerRecord value4(String value) { - setPassword(value); - return this; - } - - @Override - public PlayerRecord value5(Boolean value) { - setIsGuest(value); - return this; - } - - @Override - public PlayerRecord values(UUID value1, String value2, String value3, String value4, Boolean value5) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - return this; - } - // ------------------------------------------------------------------------- // Constructors // ------------------------------------------------------------------------- @@ -253,6 +121,6 @@ public PlayerRecord(UUID id, String username, String displayName, String passwor setDisplayName(displayName); setPassword(password); setIsGuest(isGuest); - resetChangedOnNotNull(); + resetTouchedOnNotNull(); } } diff --git a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/RoundRecord.java b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/RoundRecord.java index deb6c36..06e5797 100644 --- a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/RoundRecord.java +++ b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/RoundRecord.java @@ -8,18 +8,15 @@ import java.util.UUID; -import org.jooq.Field; import org.jooq.Record1; -import org.jooq.Record6; -import org.jooq.Row6; import org.jooq.impl.UpdatableRecordImpl; /** * This class is generated by jOOQ. */ -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class RoundRecord extends UpdatableRecordImpl implements Record6 { +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) +public class RoundRecord extends UpdatableRecordImpl { private static final long serialVersionUID = 1L; @@ -116,157 +113,6 @@ public Record1 key() { return (Record1) super.key(); } - // ------------------------------------------------------------------------- - // Record6 type implementation - // ------------------------------------------------------------------------- - - @Override - public Row6 fieldsRow() { - return (Row6) super.fieldsRow(); - } - - @Override - public Row6 valuesRow() { - return (Row6) super.valuesRow(); - } - - @Override - public Field field1() { - return Round.ROUND.ID; - } - - @Override - public Field field2() { - return Round.ROUND.NUMBER; - } - - @Override - public Field field3() { - return Round.ROUND.SCORE; - } - - @Override - public Field field4() { - return Round.ROUND.GAME_ID; - } - - @Override - public Field field5() { - return Round.ROUND.PLAYER_ID; - } - - @Override - public Field field6() { - return Round.ROUND.CONTRACT_ID; - } - - @Override - public UUID component1() { - return getId(); - } - - @Override - public Integer component2() { - return getNumber(); - } - - @Override - public Integer component3() { - return getScore(); - } - - @Override - public UUID component4() { - return getGameId(); - } - - @Override - public UUID component5() { - return getPlayerId(); - } - - @Override - public UUID component6() { - return getContractId(); - } - - @Override - public UUID value1() { - return getId(); - } - - @Override - public Integer value2() { - return getNumber(); - } - - @Override - public Integer value3() { - return getScore(); - } - - @Override - public UUID value4() { - return getGameId(); - } - - @Override - public UUID value5() { - return getPlayerId(); - } - - @Override - public UUID value6() { - return getContractId(); - } - - @Override - public RoundRecord value1(UUID value) { - setId(value); - return this; - } - - @Override - public RoundRecord value2(Integer value) { - setNumber(value); - return this; - } - - @Override - public RoundRecord value3(Integer value) { - setScore(value); - return this; - } - - @Override - public RoundRecord value4(UUID value) { - setGameId(value); - return this; - } - - @Override - public RoundRecord value5(UUID value) { - setPlayerId(value); - return this; - } - - @Override - public RoundRecord value6(UUID value) { - setContractId(value); - return this; - } - - @Override - public RoundRecord values(UUID value1, Integer value2, Integer value3, UUID value4, UUID value5, UUID value6) { - value1(value1); - value2(value2); - value3(value3); - value4(value4); - value5(value5); - value6(value6); - return this; - } - // ------------------------------------------------------------------------- // Constructors // ------------------------------------------------------------------------- @@ -290,6 +136,6 @@ public RoundRecord(UUID id, Integer number, Integer score, UUID gameId, UUID pla setGameId(gameId); setPlayerId(playerId); setContractId(contractId); - resetChangedOnNotNull(); + resetTouchedOnNotNull(); } } diff --git a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/TableRecord.java b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/TableRecord.java index 1ed10d7..6948594 100644 --- a/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/TableRecord.java +++ b/Backend/data-access/src/main/java/dev/honegger/jasstracker/data/database/tables/records/TableRecord.java @@ -8,18 +8,15 @@ import java.util.UUID; -import org.jooq.Field; import org.jooq.Record1; -import org.jooq.Record3; -import org.jooq.Row3; import org.jooq.impl.UpdatableRecordImpl; /** * This class is generated by jOOQ. */ -@SuppressWarnings({ "all", "unchecked", "rawtypes" }) -public class TableRecord extends UpdatableRecordImpl implements Record3 { +@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" }) +public class TableRecord extends UpdatableRecordImpl { private static final long serialVersionUID = 1L; @@ -74,91 +71,6 @@ public Record1 key() { return (Record1) super.key(); } - // ------------------------------------------------------------------------- - // Record3 type implementation - // ------------------------------------------------------------------------- - - @Override - public Row3 fieldsRow() { - return (Row3) super.fieldsRow(); - } - - @Override - public Row3 valuesRow() { - return (Row3) super.valuesRow(); - } - - @Override - public Field field1() { - return Table.TABLE.ID; - } - - @Override - public Field field2() { - return Table.TABLE.NAME; - } - - @Override - public Field field3() { - return Table.TABLE.OWNER_ID; - } - - @Override - public UUID component1() { - return getId(); - } - - @Override - public String component2() { - return getName(); - } - - @Override - public UUID component3() { - return getOwnerId(); - } - - @Override - public UUID value1() { - return getId(); - } - - @Override - public String value2() { - return getName(); - } - - @Override - public UUID value3() { - return getOwnerId(); - } - - @Override - public TableRecord value1(UUID value) { - setId(value); - return this; - } - - @Override - public TableRecord value2(String value) { - setName(value); - return this; - } - - @Override - public TableRecord value3(UUID value) { - setOwnerId(value); - return this; - } - - @Override - public TableRecord values(UUID value1, String value2, UUID value3) { - value1(value1); - value2(value2); - value3(value3); - return this; - } - // ------------------------------------------------------------------------- // Constructors // ------------------------------------------------------------------------- @@ -179,6 +91,6 @@ public TableRecord(UUID id, String name, UUID ownerId) { setId(id); setName(name); setOwnerId(ownerId); - resetChangedOnNotNull(); + resetTouchedOnNotNull(); } } diff --git a/Backend/data-access/src/test/kotlin/dev/honegger/jasstracker/data/repositories/RepositoryTest.kt b/Backend/data-access/src/test/kotlin/dev/honegger/jasstracker/data/repositories/RepositoryTest.kt index 33dfba9..cc86e7b 100644 --- a/Backend/data-access/src/test/kotlin/dev/honegger/jasstracker/data/repositories/RepositoryTest.kt +++ b/Backend/data-access/src/test/kotlin/dev/honegger/jasstracker/data/repositories/RepositoryTest.kt @@ -11,7 +11,7 @@ open class RepositoryTest { companion object { @Container @JvmStatic - val postgresql = PostgreSQLContainer("postgres:14-alpine") + val postgresql = PostgreSQLContainer("postgres:17-alpine") @BeforeAll @JvmStatic diff --git a/Backend/domain/build.gradle.kts b/Backend/domain/build.gradle.kts index b32a507..fa72738 100644 --- a/Backend/domain/build.gradle.kts +++ b/Backend/domain/build.gradle.kts @@ -1,10 +1,13 @@ plugins { alias(libs.plugins.kotlin.jvm) - alias(libs.plugins.kover) + alias(testLibs.plugins.kover) } kotlin { - jvmToolchain(23) + jvmToolchain { + languageVersion.set(JavaLanguageVersion.of(23)) + vendor.set(JvmVendorSpec.GRAAL_VM) + } } dependencies { diff --git a/Backend/security/build.gradle.kts b/Backend/security/build.gradle.kts index d6d5734..d230029 100644 --- a/Backend/security/build.gradle.kts +++ b/Backend/security/build.gradle.kts @@ -1,18 +1,20 @@ plugins { alias(libs.plugins.kotlin.jvm) - alias(libs.plugins.kover) + alias(testLibs.plugins.kover) } kotlin { - jvmToolchain(23) + jvmToolchain { + languageVersion.set(JavaLanguageVersion.of(23)) + vendor.set(JvmVendorSpec.GRAAL_VM) + } } dependencies { implementation(project(":Backend:domain")) implementation(libs.java.jwt) - implementation(libs.argon2.jvm.nolibs) + implementation(libs.argon2.jvm) implementation(libs.kotlinx.datetime) - testImplementation(libs.argon2.jvm) testImplementation(testLibs.kotlin.test) testImplementation(testLibs.mockk) } diff --git a/Backend/security/src/main/kotlin/dev/honegger/jasstracker/security/JwtTokenService.kt b/Backend/security/src/main/kotlin/dev/honegger/jasstracker/security/JwtTokenService.kt index 4796c35..38e717a 100644 --- a/Backend/security/src/main/kotlin/dev/honegger/jasstracker/security/JwtTokenService.kt +++ b/Backend/security/src/main/kotlin/dev/honegger/jasstracker/security/JwtTokenService.kt @@ -15,8 +15,8 @@ import kotlinx.datetime.toJavaInstant import java.util.* import kotlin.time.Duration -data class JwtConfig( - val secret: String, +class JwtConfig( + val secret: ByteArray, val issuer: String, val audience: String, val realm: String, diff --git a/Backend/security/src/test/kotlin/dev/honegger/jasstracker/security/JwtTokenServiceTest.kt b/Backend/security/src/test/kotlin/dev/honegger/jasstracker/security/JwtTokenServiceTest.kt index 1a639cc..7de79c6 100644 --- a/Backend/security/src/test/kotlin/dev/honegger/jasstracker/security/JwtTokenServiceTest.kt +++ b/Backend/security/src/test/kotlin/dev/honegger/jasstracker/security/JwtTokenServiceTest.kt @@ -4,13 +4,16 @@ import dev.honegger.jasstracker.domain.GuestPlayer import dev.honegger.jasstracker.domain.PlayerSession import dev.honegger.jasstracker.domain.RegisteredPlayer import java.util.* +import kotlin.io.encoding.Base64 +import kotlin.io.encoding.ExperimentalEncodingApi import kotlin.test.Test import kotlin.test.assertEquals import kotlin.time.Duration.Companion.hours +@OptIn(ExperimentalEncodingApi::class) class JwtTokenServiceTest { private val config = JwtConfig( - secret = "z8TxaimeeD3R9EFBCBTLNi6LNlDOOiRuKjb5TYcUEcNNjYDzhbS5StLIB1wqvDPhNoXY66FUvIsQrOykDUbUQg==", + secret = Base64.decode("z8TxaimeeD3R9EFBCBTLNi6LNlDOOiRuKjb5TYcUEcNNjYDzhbS5StLIB1wqvDPhNoXY66FUvIsQrOykDUbUQg=="), issuer = "Test Issuer", audience = "Test Audience", realm = "JwtTokenServiceTest", diff --git a/Backend/web-api/build.gradle.kts b/Backend/web-api/build.gradle.kts index c3a2ba5..3b8da7d 100644 --- a/Backend/web-api/build.gradle.kts +++ b/Backend/web-api/build.gradle.kts @@ -1,11 +1,14 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.kotlin.serialization) - alias(libs.plugins.kover) + alias(testLibs.plugins.kover) } kotlin { - jvmToolchain(23) + jvmToolchain { + languageVersion.set(JavaLanguageVersion.of(23)) + vendor.set(JvmVendorSpec.GRAAL_VM) + } } dependencies { diff --git a/Dockerfile b/Dockerfile index 10326d6..d44449f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,15 +5,13 @@ WORKDIR /home/node/src RUN pnpm i --frozen-lockfile RUN pnpm build --outDir ./dist -FROM eclipse-temurin:23-jdk-alpine AS build_backend +FROM ghcr.io/graalvm/jdk-community:23 AS build_backend COPY . /home/gradle/src COPY --from=build_frontend /home/node/src/dist /home/gradle/src/Backend/bootstrap/src/main/resources/static WORKDIR /home/gradle/src RUN ./gradlew shadowJar --no-daemon -FROM eclipse-temurin:23-jre-alpine -RUN apk add --no-cache argon2-libs +FROM ghcr.io/graalvm/jdk-community:23 EXPOSE 8080:8080 -RUN mkdir /app COPY --from=build_backend /home/gradle/src/Backend/bootstrap/build/libs/*.jar /app/jasstracker.jar ENTRYPOINT ["java","-jar","/app/jasstracker.jar"] diff --git a/DockerfileBuiltLocally b/DockerfileBuiltLocally index 1e6b46b..5278843 100644 --- a/DockerfileBuiltLocally +++ b/DockerfileBuiltLocally @@ -1,6 +1,4 @@ -FROM eclipse-temurin:23-jre-alpine -RUN apk add --no-cache argon2-libs +FROM ghcr.io/graalvm/jdk-community:23 EXPOSE 8080:8080 -RUN mkdir /app COPY ./Backend/bootstrap/build/libs/*.jar /app/jasstracker.jar ENTRYPOINT ["java","-jar","/app/jasstracker.jar"] diff --git a/Frontend/package.json b/Frontend/package.json index ba60f2b..cc85393 100644 --- a/Frontend/package.json +++ b/Frontend/package.json @@ -2,7 +2,7 @@ "name": "jasstracker", "version": "0.1.0", "private": true, - "packageManager": "pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee", + "packageManager": "pnpm@10.6.5+sha512.cdf928fca20832cd59ec53826492b7dc25dc524d4370b6b4adbf65803d32efaa6c1c88147c0ae4e8d579a6c9eec715757b50d4fa35eea179d868eada4ed043af", "license": "MIT", "type": "module", "scripts": { @@ -16,33 +16,37 @@ }, "dependencies": { "mande": "^2.0.9", - "pinia": "^2.2.5", - "vue": "^3.5.12", + "pinia": "^3.0.1", + "vue": "^3.5.13", "vue-draggable-next": "^2.2.1", - "vue-router": "^4.4.5", + "vue-router": "^4.5.0", "vue-toastification": "2.0.0-rc.5", "vue3-charts": "^1.1.33" }, "devDependencies": { - "@eslint/js": "^9.14.0", - "@rushstack/eslint-patch": "^1.10.4", - "@tsconfig/node22": "^22.0.0", + "@eslint/js": "^9.23.0", + "@tailwindcss/vite": "^4.0.16", + "@tsconfig/node22": "^22.0.1", "@types/d3-axis": "^3.0.6", - "@types/d3-shape": "^3.1.6", - "@types/node": "^22.8.6", - "@vitejs/plugin-vue": "^5.1.4", - "@vue/eslint-config-prettier": "^10.1.0", - "@vue/eslint-config-typescript": "^14.1.3", - "@vue/tsconfig": "^0.5.1", - "autoprefixer": "^10.4.20", - "eslint": "^9.14.0", - "eslint-plugin-vue": "^9.30.0", + "@types/d3-shape": "^3.1.7", + "@types/node": "^22.13.13", + "@vitejs/plugin-vue": "^5.2.3", + "@vue/eslint-config-prettier": "^10.2.0", + "@vue/eslint-config-typescript": "^14.5.0", + "@vue/tsconfig": "^0.7.0", + "eslint": "^9.23.0", + "eslint-plugin-vue": "^10.0.0", "npm-run-all": "^4.1.5", - "postcss": "^8.4.47", - "prettier": "^3.3.3", - "tailwindcss": "^3.4.14", - "typescript": "^5.6.3", - "vite": "^5.4.12", - "vue-tsc": "^2.1.10" + "prettier": "^3.5.3", + "tailwindcss": "^4.0.16", + "typescript": "^5.8.2", + "vite": "^6.2.3", + "vue-tsc": "^2.2.8" + }, + "pnpm": { + "onlyBuiltDependencies": [ + "esbuild", + "vue-demi" + ] } } diff --git a/Frontend/pnpm-lock.yaml b/Frontend/pnpm-lock.yaml index d1bdf30..677edce 100644 --- a/Frontend/pnpm-lock.yaml +++ b/Frontend/pnpm-lock.yaml @@ -12,91 +12,81 @@ importers: specifier: ^2.0.9 version: 2.0.9 pinia: - specifier: ^2.2.5 - version: 2.2.5(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)) + specifier: ^3.0.1 + version: 3.0.1(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) vue: - specifier: ^3.5.12 - version: 3.5.12(typescript@5.6.3) + specifier: ^3.5.13 + version: 3.5.13(typescript@5.8.2) vue-draggable-next: specifier: ^2.2.1 - version: 2.2.1(sortablejs@1.15.0)(vue@3.5.12(typescript@5.6.3)) + version: 2.2.1(sortablejs@1.15.0)(vue@3.5.13(typescript@5.8.2)) vue-router: - specifier: ^4.4.5 - version: 4.4.5(vue@3.5.12(typescript@5.6.3)) + specifier: ^4.5.0 + version: 4.5.0(vue@3.5.13(typescript@5.8.2)) vue-toastification: specifier: 2.0.0-rc.5 - version: 2.0.0-rc.5(vue@3.5.12(typescript@5.6.3)) + version: 2.0.0-rc.5(vue@3.5.13(typescript@5.8.2)) vue3-charts: specifier: ^1.1.33 - version: 1.1.33(vue@3.5.12(typescript@5.6.3)) + version: 1.1.33(vue@3.5.13(typescript@5.8.2)) devDependencies: '@eslint/js': - specifier: ^9.14.0 - version: 9.14.0 - '@rushstack/eslint-patch': - specifier: ^1.10.4 - version: 1.10.4 + specifier: ^9.23.0 + version: 9.23.0 + '@tailwindcss/vite': + specifier: ^4.0.16 + version: 4.0.16(vite@6.2.3(@types/node@22.13.13)(jiti@2.4.2)(lightningcss@1.29.2)) '@tsconfig/node22': - specifier: ^22.0.0 - version: 22.0.0 + specifier: ^22.0.1 + version: 22.0.1 '@types/d3-axis': specifier: ^3.0.6 version: 3.0.6 '@types/d3-shape': - specifier: ^3.1.6 - version: 3.1.6 + specifier: ^3.1.7 + version: 3.1.7 '@types/node': - specifier: ^22.8.6 - version: 22.8.6 + specifier: ^22.13.13 + version: 22.13.13 '@vitejs/plugin-vue': - specifier: ^5.1.4 - version: 5.1.4(vite@5.4.12(@types/node@22.8.6))(vue@3.5.12(typescript@5.6.3)) + specifier: ^5.2.3 + version: 5.2.3(vite@6.2.3(@types/node@22.13.13)(jiti@2.4.2)(lightningcss@1.29.2))(vue@3.5.13(typescript@5.8.2)) '@vue/eslint-config-prettier': - specifier: ^10.1.0 - version: 10.1.0(eslint@9.14.0(jiti@1.21.6))(prettier@3.3.3) + specifier: ^10.2.0 + version: 10.2.0(eslint@9.23.0(jiti@2.4.2))(prettier@3.5.3) '@vue/eslint-config-typescript': - specifier: ^14.1.3 - version: 14.1.3(@typescript-eslint/parser@8.12.2(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3))(eslint-plugin-vue@9.30.0(eslint@9.14.0(jiti@1.21.6)))(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) + specifier: ^14.5.0 + version: 14.5.0(eslint-plugin-vue@10.0.0(eslint@9.23.0(jiti@2.4.2))(vue-eslint-parser@10.1.1(eslint@9.23.0(jiti@2.4.2))))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) '@vue/tsconfig': - specifier: ^0.5.1 - version: 0.5.1 - autoprefixer: - specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.47) + specifier: ^0.7.0 + version: 0.7.0(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) eslint: - specifier: ^9.14.0 - version: 9.14.0(jiti@1.21.6) + specifier: ^9.23.0 + version: 9.23.0(jiti@2.4.2) eslint-plugin-vue: - specifier: ^9.30.0 - version: 9.30.0(eslint@9.14.0(jiti@1.21.6)) + specifier: ^10.0.0 + version: 10.0.0(eslint@9.23.0(jiti@2.4.2))(vue-eslint-parser@10.1.1(eslint@9.23.0(jiti@2.4.2))) npm-run-all: specifier: ^4.1.5 version: 4.1.5 - postcss: - specifier: ^8.4.47 - version: 8.4.47 prettier: - specifier: ^3.3.3 - version: 3.3.3 + specifier: ^3.5.3 + version: 3.5.3 tailwindcss: - specifier: ^3.4.14 - version: 3.4.14 + specifier: ^4.0.16 + version: 4.0.16 typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.8.2 + version: 5.8.2 vite: - specifier: ^5.4.12 - version: 5.4.12(@types/node@22.8.6) + specifier: ^6.2.3 + version: 6.2.3(@types/node@22.13.13)(jiti@2.4.2)(lightningcss@1.29.2) vue-tsc: - specifier: ^2.1.10 - version: 2.1.10(typescript@5.6.3) + specifier: ^2.2.8 + version: 2.2.8(typescript@5.8.2) packages: - '@alloc/quick-lru@5.2.0': - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - '@babel/helper-string-parser@7.25.9': resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} @@ -105,155 +95,167 @@ packages: resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.2': - resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} + '@babel/parser@7.27.0': + resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/types@7.26.0': - resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} + '@babel/types@7.27.0': + resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} engines: {node: '>=6.9.0'} - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} + '@esbuild/aix-ppc64@0.25.1': + resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==} + engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} + '@esbuild/android-arm64@0.25.1': + resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==} + engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} + '@esbuild/android-arm@0.25.1': + resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==} + engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} + '@esbuild/android-x64@0.25.1': + resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==} + engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} + '@esbuild/darwin-arm64@0.25.1': + resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==} + engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} + '@esbuild/darwin-x64@0.25.1': + resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==} + engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} + '@esbuild/freebsd-arm64@0.25.1': + resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==} + engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} + '@esbuild/freebsd-x64@0.25.1': + resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==} + engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} + '@esbuild/linux-arm64@0.25.1': + resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==} + engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} + '@esbuild/linux-arm@0.25.1': + resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==} + engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} + '@esbuild/linux-ia32@0.25.1': + resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==} + engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} + '@esbuild/linux-loong64@0.25.1': + resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==} + engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} + '@esbuild/linux-mips64el@0.25.1': + resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==} + engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} + '@esbuild/linux-ppc64@0.25.1': + resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==} + engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} + '@esbuild/linux-riscv64@0.25.1': + resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==} + engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} + '@esbuild/linux-s390x@0.25.1': + resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==} + engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} + '@esbuild/linux-x64@0.25.1': + resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==} + engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} + '@esbuild/netbsd-arm64@0.25.1': + resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.1': + resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==} + engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} + '@esbuild/openbsd-arm64@0.25.1': + resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.1': + resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==} + engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} + '@esbuild/sunos-x64@0.25.1': + resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==} + engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} + '@esbuild/win32-arm64@0.25.1': + resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==} + engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} + '@esbuild/win32-ia32@0.25.1': + resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==} + engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} + '@esbuild/win32-x64@0.25.1': + resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==} + engines: {node: '>=18'} cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.4.1': - resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} + '@eslint-community/eslint-utils@4.5.1': + resolution: {integrity: sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -262,28 +264,32 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.18.0': - resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + '@eslint/config-array@0.19.2': + resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.2.0': + resolution: {integrity: sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.7.0': - resolution: {integrity: sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==} + '@eslint/core@0.12.0': + resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.1.0': - resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.14.0': - resolution: {integrity: sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==} + '@eslint/js@9.23.0': + resolution: {integrity: sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/object-schema@2.1.4': - resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.2.3': - resolution: {integrity: sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==} + '@eslint/plugin-kit@0.2.7': + resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@humanfs/core@0.19.1': @@ -302,32 +308,13 @@ packages: resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} engines: {node: '>=18.18'} - '@humanwhocodes/retry@0.4.0': - resolution: {integrity: sha512-xnRgu9DxZbkWak/te3fcytNyp8MTbuiZIaueg2rgEvBuN55n04nwLYLU9TX/VVlusc9L2ZNXi99nUFNkHXtr5g==} + '@humanwhocodes/retry@0.4.2': + resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} engines: {node: '>=18.18'} - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -340,220 +327,289 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@pkgr/core@0.1.1': - resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + '@pkgr/core@0.2.0': + resolution: {integrity: sha512-vsJDAkYR6qCPu+ioGScGiMYR7LvZYIXh/dlQeviqoTWNCVfKTLYD/LkNWH4Mxsv2a5vpIRc77FN5DnmK1eBggQ==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@rollup/rollup-android-arm-eabi@4.31.0': - resolution: {integrity: sha512-9NrR4033uCbUBRgvLcBrJofa2KY9DzxL2UKZ1/4xA/mnTNyhZCWBuD8X3tPm1n4KxcgaraOYgrFKSgwjASfmlA==} + '@rollup/rollup-android-arm-eabi@4.37.0': + resolution: {integrity: sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.31.0': - resolution: {integrity: sha512-iBbODqT86YBFHajxxF8ebj2hwKm1k8PTBQSojSt3d1FFt1gN+xf4CowE47iN0vOSdnd+5ierMHBbu/rHc7nq5g==} + '@rollup/rollup-android-arm64@4.37.0': + resolution: {integrity: sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.31.0': - resolution: {integrity: sha512-WHIZfXgVBX30SWuTMhlHPXTyN20AXrLH4TEeH/D0Bolvx9PjgZnn4H677PlSGvU6MKNsjCQJYczkpvBbrBnG6g==} + '@rollup/rollup-darwin-arm64@4.37.0': + resolution: {integrity: sha512-+iTQ5YHuGmPt10NTzEyMPbayiNTcOZDWsbxZYR1ZnmLnZxG17ivrPSWFO9j6GalY0+gV3Jtwrrs12DBscxnlYA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.31.0': - resolution: {integrity: sha512-hrWL7uQacTEF8gdrQAqcDy9xllQ0w0zuL1wk1HV8wKGSGbKPVjVUv/DEwT2+Asabf8Dh/As+IvfdU+H8hhzrQQ==} + '@rollup/rollup-darwin-x64@4.37.0': + resolution: {integrity: sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.31.0': - resolution: {integrity: sha512-S2oCsZ4hJviG1QjPY1h6sVJLBI6ekBeAEssYKad1soRFv3SocsQCzX6cwnk6fID6UQQACTjeIMB+hyYrFacRew==} + '@rollup/rollup-freebsd-arm64@4.37.0': + resolution: {integrity: sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.31.0': - resolution: {integrity: sha512-pCANqpynRS4Jirn4IKZH4tnm2+2CqCNLKD7gAdEjzdLGbH1iO0zouHz4mxqg0uEMpO030ejJ0aA6e1PJo2xrPA==} + '@rollup/rollup-freebsd-x64@4.37.0': + resolution: {integrity: sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.31.0': - resolution: {integrity: sha512-0O8ViX+QcBd3ZmGlcFTnYXZKGbFu09EhgD27tgTdGnkcYXLat4KIsBBQeKLR2xZDCXdIBAlWLkiXE1+rJpCxFw==} + '@rollup/rollup-linux-arm-gnueabihf@4.37.0': + resolution: {integrity: sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.31.0': - resolution: {integrity: sha512-w5IzG0wTVv7B0/SwDnMYmbr2uERQp999q8FMkKG1I+j8hpPX2BYFjWe69xbhbP6J9h2gId/7ogesl9hwblFwwg==} + '@rollup/rollup-linux-arm-musleabihf@4.37.0': + resolution: {integrity: sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.31.0': - resolution: {integrity: sha512-JyFFshbN5xwy6fulZ8B/8qOqENRmDdEkcIMF0Zz+RsfamEW+Zabl5jAb0IozP/8UKnJ7g2FtZZPEUIAlUSX8cA==} + '@rollup/rollup-linux-arm64-gnu@4.37.0': + resolution: {integrity: sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.31.0': - resolution: {integrity: sha512-kpQXQ0UPFeMPmPYksiBL9WS/BDiQEjRGMfklVIsA0Sng347H8W2iexch+IEwaR7OVSKtr2ZFxggt11zVIlZ25g==} + '@rollup/rollup-linux-arm64-musl@4.37.0': + resolution: {integrity: sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.31.0': - resolution: {integrity: sha512-pMlxLjt60iQTzt9iBb3jZphFIl55a70wexvo8p+vVFK+7ifTRookdoXX3bOsRdmfD+OKnMozKO6XM4zR0sHRrQ==} + '@rollup/rollup-linux-loongarch64-gnu@4.37.0': + resolution: {integrity: sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.31.0': - resolution: {integrity: sha512-D7TXT7I/uKEuWiRkEFbed1UUYZwcJDU4vZQdPTcepK7ecPhzKOYk4Er2YR4uHKme4qDeIh6N3XrLfpuM7vzRWQ==} + '@rollup/rollup-linux-powerpc64le-gnu@4.37.0': + resolution: {integrity: sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.31.0': - resolution: {integrity: sha512-wal2Tc8O5lMBtoePLBYRKj2CImUCJ4UNGJlLwspx7QApYny7K1cUYlzQ/4IGQBLmm+y0RS7dwc3TDO/pmcneTw==} + '@rollup/rollup-linux-riscv64-gnu@4.37.0': + resolution: {integrity: sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.31.0': - resolution: {integrity: sha512-O1o5EUI0+RRMkK9wiTVpk2tyzXdXefHtRTIjBbmFREmNMy7pFeYXCFGbhKFwISA3UOExlo5GGUuuj3oMKdK6JQ==} + '@rollup/rollup-linux-riscv64-musl@4.37.0': + resolution: {integrity: sha512-DTNwl6a3CfhGTAOYZ4KtYbdS8b+275LSLqJVJIrPa5/JuIufWWZ/QFvkxp52gpmguN95eujrM68ZG+zVxa8zHA==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.37.0': + resolution: {integrity: sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.31.0': - resolution: {integrity: sha512-zSoHl356vKnNxwOWnLd60ixHNPRBglxpv2g7q0Cd3Pmr561gf0HiAcUBRL3S1vPqRC17Zo2CX/9cPkqTIiai1g==} + '@rollup/rollup-linux-x64-gnu@4.37.0': + resolution: {integrity: sha512-pKivGpgJM5g8dwj0ywBwe/HeVAUSuVVJhUTa/URXjxvoyTT/AxsLTAbkHkDHG7qQxLoW2s3apEIl26uUe08LVQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.31.0': - resolution: {integrity: sha512-ypB/HMtcSGhKUQNiFwqgdclWNRrAYDH8iMYH4etw/ZlGwiTVxBz2tDrGRrPlfZu6QjXwtd+C3Zib5pFqID97ZA==} + '@rollup/rollup-linux-x64-musl@4.37.0': + resolution: {integrity: sha512-E2lPrLKE8sQbY/2bEkVTGDEk4/49UYRVWgj90MY8yPjpnGBQ+Xi1Qnr7b7UIWw1NOggdFQFOLZ8+5CzCiz143w==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.31.0': - resolution: {integrity: sha512-JuhN2xdI/m8Hr+aVO3vspO7OQfUFO6bKLIRTAy0U15vmWjnZDLrEgCZ2s6+scAYaQVpYSh9tZtRijApw9IXyMw==} + '@rollup/rollup-win32-arm64-msvc@4.37.0': + resolution: {integrity: sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.31.0': - resolution: {integrity: sha512-U1xZZXYkvdf5MIWmftU8wrM5PPXzyaY1nGCI4KI4BFfoZxHamsIe+BtnPLIvvPykvQWlVbqUXdLa4aJUuilwLQ==} + '@rollup/rollup-win32-ia32-msvc@4.37.0': + resolution: {integrity: sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.31.0': - resolution: {integrity: sha512-ul8rnCsUumNln5YWwz0ted2ZHFhzhRRnkpBZ+YRuHoRAlUji9KChpOUOndY7uykrPEPXVbHLlsdo6v5yXo/TXw==} + '@rollup/rollup-win32-x64-msvc@4.37.0': + resolution: {integrity: sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA==} + cpu: [x64] + os: [win32] + + '@tailwindcss/node@4.0.16': + resolution: {integrity: sha512-T6IK79hoCFScxD5tRxWMtwqwSs4sT81Vw+YbzL7RZD0/Ndm4y5kboV7LdQ97YGH6udoOZyVT/uEfrnU2L5Nkog==} + + '@tailwindcss/oxide-android-arm64@4.0.16': + resolution: {integrity: sha512-mieEZrNLHatpQu6ad0pWBnL8ObUE9ZSe4eoX6GKTqsKv98AxNw5lUa5nJM0FgD8rYJeZ2dPtHNN/YM2xY9R+9g==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.0.16': + resolution: {integrity: sha512-pfilSvgrX5UDdjh09gGVMhAPfZVucm4AnwFBkwBe6WFl7gzMAZ92/35GC0yMDeS+W+RNSXclXJz+HamF1iS/aA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.0.16': + resolution: {integrity: sha512-Z3lJY3yUjlHbzgXwWH9Y6IGeSGXfwjbXuvTPolyJUGMZl2ZaHdQMPOZ8dMll1knSLjctOif+QijMab0+GSXYLQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.0.16': + resolution: {integrity: sha512-dv2U8Yc7vKIDyiJkUouhjsl+dTfRImNyZRCTFsHvvrhJvenYZBRtE/wDSYlZHR0lWKhIocxk1ScAkAcMR3F3QQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.16': + resolution: {integrity: sha512-XBRXyUUyjMg5UMiyuQxJqWSs27w0V49g1iPuhrFakmu1/idDSly59XYteRrI2onoS9AzmMwfyzdiQSJXM89+PQ==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.0.16': + resolution: {integrity: sha512-+bL1zkU8MDzv389OqyI0SJbrG9kGsdxf+k2ZAILlw1TPWg5oeMkwoqgaQRqGwpOHz0pycT94qIgWVNJavAz+Iw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.0.16': + resolution: {integrity: sha512-Uqfnyx9oFxoX+/iy9pIDTADHLLNwuZNB8QSp+BwKAhtHjBTTYmDAdxKy3u8lJZve1aOd+S145eWpn3tT08cm4w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.0.16': + resolution: {integrity: sha512-v0Hx0KD94F6FG0IW3AJyCzQepSv/47xhShCgiWJ2TNVu406VtREkGpJtxS0Gu1ecSXhgn/36LToU5kivAuQiPg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.0.16': + resolution: {integrity: sha512-CjV6hhQAVNYw6W2EXp1ZVL81CTSBEh6nTmS5EZq5rdEhqOx8G8YQtFKjcCJiojsS+vMXt9r87gGoORJcHOA0lg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-win32-arm64-msvc@4.0.16': + resolution: {integrity: sha512-Pj9eaAtXYH7NrvVx8Jx0U/sEaNpcIbb8d+2WnC8a+xL0LfIXWsu4AyeRUeTeb8Ty4fTGhKSJTohdXj1iSdN9WQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.0.16': + resolution: {integrity: sha512-M35hoFrhJe+1QdSiZpn85y8K7tfEVw6lswv3TjIfJ44JiPjPzZ4URg+rsTjTq0kue6NjNCbbY99AsRSSpJZxOw==} + engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@rushstack/eslint-patch@1.10.4': - resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} + '@tailwindcss/oxide@4.0.16': + resolution: {integrity: sha512-n++F8Rzvo/e+FYxikZgKW4sCRXneSstLhTI91Ay9toeRcE/+WO33SQWzGtgmjWJcTupXZreskJ8FCr9b+kdXew==} + engines: {node: '>= 10'} + + '@tailwindcss/vite@4.0.16': + resolution: {integrity: sha512-6mZVWhAyjVNMMRw0Pvv2RZfTttjsAClU8HouLNZbeLbX0yURMa0UYEY/qS4dB1tZlRpiDBnCLsGsWbxEyIjW6A==} + peerDependencies: + vite: ^5.2.0 || ^6 - '@tsconfig/node22@22.0.0': - resolution: {integrity: sha512-twLQ77zevtxobBOD4ToAtVmuYrpeYUh3qh+TEp+08IWhpsrIflVHqQ1F1CiPxQGL7doCdBIOOCF+1Tm833faNg==} + '@tsconfig/node22@22.0.1': + resolution: {integrity: sha512-VkgOa3n6jvs1p+r3DiwBqeEwGAwEvnVCg/hIjiANl5IEcqP3G0u5m8cBJspe1t9qjZRlZ7WFgqq5bJrGdgAKMg==} '@types/d3-axis@3.0.6': resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} - '@types/d3-path@3.1.0': - resolution: {integrity: sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==} + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} '@types/d3-selection@3.0.11': resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} - '@types/d3-shape@3.1.6': - resolution: {integrity: sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==} + '@types/d3-shape@3.1.7': + resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/node@22.8.6': - resolution: {integrity: sha512-tosuJYKrIqjQIlVCM4PEGxOmyg3FCPa/fViuJChnGeEIhjA46oy8FMVoF9su1/v8PNs2a8Q0iFNyOx0uOF91nw==} + '@types/node@22.13.13': + resolution: {integrity: sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ==} - '@typescript-eslint/eslint-plugin@8.12.2': - resolution: {integrity: sha512-gQxbxM8mcxBwaEmWdtLCIGLfixBMHhQjBqR8sVWNTPpcj45WlYL2IObS/DNMLH1DBP0n8qz+aiiLTGfopPEebw==} + '@typescript-eslint/eslint-plugin@8.28.0': + resolution: {integrity: sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.12.2': - resolution: {integrity: sha512-MrvlXNfGPLH3Z+r7Tk+Z5moZAc0dzdVjTgUgwsdGweH7lydysQsnSww3nAmsq8blFuRD5VRlAr9YdEFw3e6PBw==} + '@typescript-eslint/parser@8.28.0': + resolution: {integrity: sha512-LPcw1yHD3ToaDEoljFEfQ9j2xShY367h7FZ1sq5NJT9I3yj4LHer1Xd1yRSOdYy9BpsrxU7R+eoDokChYM53lQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.12.2': - resolution: {integrity: sha512-gPLpLtrj9aMHOvxJkSbDBmbRuYdtiEbnvO25bCMza3DhMjTQw0u7Y1M+YR5JPbMsXXnSPuCf5hfq0nEkQDL/JQ==} + '@typescript-eslint/scope-manager@8.28.0': + resolution: {integrity: sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.12.2': - resolution: {integrity: sha512-bwuU4TAogPI+1q/IJSKuD4shBLc/d2vGcRT588q+jzayQyjVK2X6v/fbR4InY2U2sgf8MEvVCqEWUzYzgBNcGQ==} + '@typescript-eslint/type-utils@8.28.0': + resolution: {integrity: sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.12.2': - resolution: {integrity: sha512-VwDwMF1SZ7wPBUZwmMdnDJ6sIFk4K4s+ALKLP6aIQsISkPv8jhiw65sAK6SuWODN/ix+m+HgbYDkH+zLjrzvOA==} + '@typescript-eslint/types@8.28.0': + resolution: {integrity: sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.12.2': - resolution: {integrity: sha512-mME5MDwGe30Pq9zKPvyduyU86PH7aixwqYR2grTglAdB+AN8xXQ1vFGpYaUSJ5o5P/5znsSBeNcs5g5/2aQwow==} + '@typescript-eslint/typescript-estree@8.28.0': + resolution: {integrity: sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.12.2': - resolution: {integrity: sha512-UTTuDIX3fkfAz6iSVa5rTuSfWIYZ6ATtEocQ/umkRSyC9O919lbZ8dcH7mysshrCdrAM03skJOEYaBugxN+M6A==} + '@typescript-eslint/utils@8.28.0': + resolution: {integrity: sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.12.2': - resolution: {integrity: sha512-PChz8UaKQAVNHghsHcPyx1OMHoFRUEA7rJSK/mDhdq85bk+PLsUHUBqTQTFt18VJZbmxBovM65fezlheQRsSDA==} + '@typescript-eslint/visitor-keys@8.28.0': + resolution: {integrity: sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vitejs/plugin-vue@5.1.4': - resolution: {integrity: sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==} + '@vitejs/plugin-vue@5.2.3': + resolution: {integrity: sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: - vite: ^5.0.0 + vite: ^5.0.0 || ^6.0.0 vue: ^3.2.25 - '@volar/language-core@2.4.8': - resolution: {integrity: sha512-K/GxMOXGq997bO00cdFhTNuR85xPxj0BEEAy+BaqqayTmy9Tmhfgmq2wpJcVspRhcwfgPoE2/mEJa26emUhG/g==} + '@volar/language-core@2.4.12': + resolution: {integrity: sha512-RLrFdXEaQBWfSnYGVxvR2WrO6Bub0unkdHYIdC31HzIEqATIuuhRRzYu76iGPZ6OtA4Au1SnW0ZwIqPP217YhA==} - '@volar/source-map@2.4.8': - resolution: {integrity: sha512-jeWJBkC/WivdelMwxKkpFL811uH/jJ1kVxa+c7OvG48DXc3VrP7pplSWPP2W1dLMqBxD+awRlg55FQQfiup4cA==} + '@volar/source-map@2.4.12': + resolution: {integrity: sha512-bUFIKvn2U0AWojOaqf63ER0N/iHIBYZPpNGogfLPQ68F5Eet6FnLlyho7BS0y2HJ1jFhSif7AcuTx1TqsCzRzw==} - '@volar/typescript@2.4.8': - resolution: {integrity: sha512-6xkIYJ5xxghVBhVywMoPMidDDAFT1OoQeXwa27HSgJ6AiIKRe61RXLoik+14Z7r0JvnblXVsjsRLmCr42SGzqg==} + '@volar/typescript@2.4.12': + resolution: {integrity: sha512-HJB73OTJDgPc80K30wxi3if4fSsZZAOScbj2fcicMuOPoOkcf9NNAINb33o+DzhBdF9xTKC1gnPmIRDous5S0g==} - '@vue/compiler-core@3.5.12': - resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==} + '@vue/compiler-core@3.5.13': + resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} - '@vue/compiler-dom@3.5.12': - resolution: {integrity: sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==} + '@vue/compiler-dom@3.5.13': + resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} - '@vue/compiler-sfc@3.5.12': - resolution: {integrity: sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==} + '@vue/compiler-sfc@3.5.13': + resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} - '@vue/compiler-ssr@3.5.12': - resolution: {integrity: sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==} + '@vue/compiler-ssr@3.5.13': + resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} '@vue/compiler-vue2@2.7.16': resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} @@ -561,74 +617,83 @@ packages: '@vue/devtools-api@6.6.4': resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} - '@vue/eslint-config-prettier@10.1.0': - resolution: {integrity: sha512-J6wV91y2pXc0Phha01k0WOHBTPsoSTf4xlmMjoKaeSxBpAdsgTppGF5RZRdOHM7OA74zAXD+VLANrtYXpiPKkQ==} + '@vue/devtools-api@7.7.2': + resolution: {integrity: sha512-1syn558KhyN+chO5SjlZIwJ8bV/bQ1nOVTG66t2RbG66ZGekyiYNmRO7X9BJCXQqPsFHlnksqvPhce2qpzxFnA==} + + '@vue/devtools-kit@7.7.2': + resolution: {integrity: sha512-CY0I1JH3Z8PECbn6k3TqM1Bk9ASWxeMtTCvZr7vb+CHi+X/QwQm5F1/fPagraamKMAHVfuuCbdcnNg1A4CYVWQ==} + + '@vue/devtools-shared@7.7.2': + resolution: {integrity: sha512-uBFxnp8gwW2vD6FrJB8JZLUzVb6PNRG0B0jBnHsOH8uKyva2qINY8PTF5Te4QlTbMDqU5K6qtJDr6cNsKWhbOA==} + + '@vue/eslint-config-prettier@10.2.0': + resolution: {integrity: sha512-GL3YBLwv/+b86yHcNNfPJxOTtVFJ4Mbc9UU3zR+KVoG7SwGTjPT+32fXamscNumElhcpXW3mT0DgzS9w32S7Bw==} peerDependencies: eslint: '>= 8.21.0' prettier: '>= 3.0.0' - '@vue/eslint-config-typescript@14.1.3': - resolution: {integrity: sha512-L4NUJQz/0We2QYtrNwRAGRy4KfpOagl5V3MpZZ+rQ51a+bKjlKYYrugi7lp7PIX8LolRgu06ZwDoswnSGWnAmA==} + '@vue/eslint-config-typescript@14.5.0': + resolution: {integrity: sha512-5oPOyuwkw++AP5gHDh5YFmST50dPfWOcm3/W7Nbh42IK5O3H74ytWAw0TrCRTaBoD/02khnWXuZf1Bz1xflavQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^9.10.0 - eslint-plugin-vue: ^9.28.0 + eslint-plugin-vue: ^9.28.0 || ^10.0.0 typescript: '>=4.8.4' peerDependenciesMeta: typescript: optional: true - '@vue/language-core@2.1.10': - resolution: {integrity: sha512-DAI289d0K3AB5TUG3xDp9OuQ71CnrujQwJrQnfuZDwo6eGNf0UoRlPuaVNO+Zrn65PC3j0oB2i7mNmVPggeGeQ==} + '@vue/language-core@2.2.8': + resolution: {integrity: sha512-rrzB0wPGBvcwaSNRriVWdNAbHQWSf0NlGqgKHK5mEkXpefjUlVRP62u03KvwZpvKVjRnBIQ/Lwre+Mx9N6juUQ==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - '@vue/reactivity@3.5.12': - resolution: {integrity: sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==} + '@vue/reactivity@3.5.13': + resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} - '@vue/runtime-core@3.5.12': - resolution: {integrity: sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==} + '@vue/runtime-core@3.5.13': + resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} - '@vue/runtime-dom@3.5.12': - resolution: {integrity: sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==} + '@vue/runtime-dom@3.5.13': + resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==} - '@vue/server-renderer@3.5.12': - resolution: {integrity: sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==} + '@vue/server-renderer@3.5.13': + resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==} peerDependencies: - vue: 3.5.12 + vue: 3.5.13 - '@vue/shared@3.5.12': - resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==} + '@vue/shared@3.5.13': + resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} - '@vue/tsconfig@0.5.1': - resolution: {integrity: sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==} + '@vue/tsconfig@0.7.0': + resolution: {integrity: sha512-ku2uNz5MaZ9IerPPUyOHzyjhXoX2kVJaVf7hL315DC17vS6IiZRmmCPfggNbU16QTvM80+uYYy3eYJB59WCtvg==} + peerDependencies: + typescript: 5.x + vue: ^3.4.0 + peerDependenciesMeta: + typescript: + optional: true + vue: + optional: true acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} engines: {node: '>=0.4.0'} hasBin: true ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - alien-signals@0.2.0: - resolution: {integrity: sha512-StlonZhBBrsPPwrDjiPAiVTf/rolxffLxVPT60Qv/t88BZ81BvUVzHgGqEFvJ1ii8HXtm1+zU2Icr59tfWEcag==} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} + alien-signals@1.0.8: + resolution: {integrity: sha512-5Tnk+Q3E7b4NgTgxAyoggQHeEzUicxgiZhcFvBQhM4catV+wFDTmoHPectL7FL5YzkCjz4zhB/y00Q7n3vwVGQ==} ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} @@ -638,37 +703,20 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} - arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} - autoprefixer@10.4.20: - resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} @@ -677,9 +725,8 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} + birpc@0.2.19: + resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==} boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -694,26 +741,22 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.24.2: - resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - - caniuse-lite@1.0.30001676: - resolution: {integrity: sha512-Qz6zwGCiPghQXGJvgQAem79esjitvJ+CxSbSQkW9H/UX5hg8XM88d4lp2W+MEQ81j+Hip58Il+jGVdazk1z9cw==} - chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -722,10 +765,6 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -739,19 +778,19 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + cross-spawn@6.0.6: resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} engines: {node: '>=4.8'} - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} cssesc@3.0.0: @@ -810,23 +849,23 @@ packages: resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} engines: {node: '>=12'} - data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} - data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} engines: {node: '>= 0.4'} - data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -845,23 +884,17 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - electron-to-chromium@1.5.50: - resolution: {integrity: sha512-eMVObiUQ2LdgeO1F/ySTXsvqvxb6ZH2zPGaMYsWzRDdOddUa77tdmI0ltg+L16UpbWdhPmuF3wIQYyQq65WfZw==} + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} @@ -870,39 +903,35 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + es-abstract@1.23.9: + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} engines: {node: '>= 0.4'} - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} - es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} - es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} + esbuild@0.25.1: + resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==} + engines: {node: '>=18'} hasBin: true - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -911,19 +940,19 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - eslint-config-prettier@9.1.0: - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + eslint-config-prettier@10.1.1: + resolution: {integrity: sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==} hasBin: true peerDependencies: eslint: '>=7.0.0' - eslint-plugin-prettier@5.2.1: - resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} + eslint-plugin-prettier@5.2.5: + resolution: {integrity: sha512-IKKP8R87pJyMl7WWamLgPkloB16dagPIdd2FjBDbyRYPKo93wS/NbCOPh6gH+ieNLC+XZrhJt/kWj0PS/DFdmg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' eslint: '>=8.0.0' - eslint-config-prettier: '*' + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' prettier: '>=3.0.0' peerDependenciesMeta: '@types/eslint': @@ -931,18 +960,15 @@ packages: eslint-config-prettier: optional: true - eslint-plugin-vue@9.30.0: - resolution: {integrity: sha512-CyqlRgShvljFkOeYK8wN5frh/OGTvkj1S7wlr2Q2pUvwq+X5VYiLd6ZjujpgSgLnys2W8qrBLkXQ41SUYaoPIQ==} - engines: {node: ^14.17.0 || >=16.0.0} + eslint-plugin-vue@10.0.0: + resolution: {integrity: sha512-XKckedtajqwmaX6u1VnECmZ6xJt+YvlmMzBPZd+/sI3ub2lpYZyFnsyWo7c3nMOQKJQudeyk1lw/JxdgeKT64w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 - - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint: ^8.57.0 || ^9.0.0 + vue-eslint-parser: ^10.0.0 - eslint-scope@8.2.0: - resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + eslint-scope@8.3.0: + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: @@ -953,8 +979,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.14.0: - resolution: {integrity: sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==} + eslint@9.23.0: + resolution: {integrity: sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -967,10 +993,6 @@ packages: resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - esquery@1.6.0: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} @@ -996,8 +1018,8 @@ packages: fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} fast-json-stable-stringify@2.1.0: @@ -1006,8 +1028,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} @@ -1025,18 +1047,12 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - - foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} - engines: {node: '>=14'} - - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -1046,19 +1062,23 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} engines: {node: '>= 0.4'} functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} - get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} glob-parent@5.1.2: @@ -1069,14 +1089,6 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -1085,8 +1097,9 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -1094,8 +1107,9 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} @@ -1108,12 +1122,12 @@ packages: has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} engines: {node: '>= 0.4'} - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} has-tostringtag@1.0.2: @@ -1128,6 +1142,9 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -1135,102 +1152,124 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} internmap@2.0.3: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} - is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} - is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} engines: {node: '>= 0.4'} - is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} - is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} - is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} engines: {node: '>= 0.4'} - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} - is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} engines: {node: '>= 0.4'} - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -1238,11 +1277,8 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - jiti@1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} hasBin: true js-yaml@4.1.0: @@ -1268,16 +1304,69 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} + lightningcss-darwin-arm64@1.29.2: + resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] - lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} - engines: {node: '>=14'} + lightningcss-darwin-x64@1.29.2: + resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lightningcss-freebsd-x64@1.29.2: + resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.29.2: + resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.29.2: + resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.29.2: + resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.29.2: + resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.29.2: + resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.29.2: + resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.29.2: + resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.29.2: + resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==} + engines: {node: '>= 12.0.0'} load-json-file@4.0.0: resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} @@ -1293,15 +1382,16 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - - magic-string@0.30.12: - resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} mande@2.0.9: resolution: {integrity: sha512-F5kH/uSnhQBP7D5C+Y1rGt2S4lZuPfgIs5Ui49jrkjxE3sSAHwCE6r3hNo5gqihR5pZ1rGnjO7Oqnu2Lr1uG7g==} + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + memorystream@0.3.1: resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} engines: {node: '>= 0.10.0'} @@ -1321,9 +1411,8 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -1331,11 +1420,8 @@ packages: muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nanoid@3.3.8: - resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -1345,20 +1431,9 @@ packages: nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - npm-run-all@4.1.5: resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} engines: {node: '>= 4'} @@ -1367,30 +1442,26 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - object-inspect@1.13.2: - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -1399,9 +1470,6 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -1428,14 +1496,13 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - path-type@3.0.0: resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} engines: {node: '>=4'} + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -1448,73 +1515,29 @@ packages: engines: {node: '>=0.10'} hasBin: true - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - pify@3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} - pinia@2.2.5: - resolution: {integrity: sha512-T4PEQ4uFv2KIRC8A1Y3k1ceQGTDtxtd7nngYGu1IJUUSpuQoYfGq7w7rOc+f5YN1vx3mEs2NjjtN2IFbNS7jqA==} + pinia@3.0.1: + resolution: {integrity: sha512-WXglsDzztOTH6IfcJ99ltYZin2mY8XZCXujkYWVIJlBjqsP6ST7zw+Aarh63E1cDVYeyUcPCxPHzJpEOmzB6Wg==} peerDependencies: - '@vue/composition-api': ^1.4.0 typescript: '>=4.4.4' - vue: ^2.6.14 || ^3.5.11 + vue: ^2.7.0 || ^3.5.11 peerDependenciesMeta: - '@vue/composition-api': - optional: true typescript: optional: true - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-nested@6.2.0: - resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - postcss-selector-parser@6.1.2: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.4.47: - resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -1525,8 +1548,8 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} - prettier@3.3.3: - resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + prettier@3.5.3: + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} engines: {node: '>=14'} hasBin: true @@ -1540,55 +1563,60 @@ packages: ramda@0.28.0: resolution: {integrity: sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==} - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - read-pkg@3.0.0: resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} engines: {node: '>=4'} - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} - regexp.prototype.flags@1.5.3: - resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} hasBin: true - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rollup@4.31.0: - resolution: {integrity: sha512-9cCE8P4rZLx9+PjoyqHLs31V9a9Vpvfo4qNcs6JCiGWYhw2gijSetFbH6SSy1whnkgcefnUwr8sad7tgqsGvnw==} + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rollup@4.37.0: + resolution: {integrity: sha512-iAtQy/L4QFU+rTJ1YUjXqJOJzuwEghqWzCEYD2FEghT7Gsy1VdABntrO4CLopA5IkflTyqNiLNwPcOJ3S7UKLg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} - safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} engines: {node: '>=10'} hasBin: true @@ -1600,6 +1628,10 @@ packages: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -1616,16 +1648,25 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + shell-quote@1.8.2: + resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} + engines: {node: '>= 0.4'} - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} sortablejs@1.15.0: resolution: {integrity: sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==} @@ -1643,40 +1684,29 @@ packages: spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-license-ids@3.0.20: - resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} + spdx-license-ids@3.0.21: + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} string.prototype.padend@3.1.6: resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==} engines: {node: '>= 0.4'} - string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} - string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} string.prototype.trimstart@1.0.8: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -1685,10 +1715,9 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true + superjson@2.2.2: + resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} + engines: {node: '>=16'} supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} @@ -1702,37 +1731,26 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - synckit@0.9.2: - resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} + synckit@0.10.3: + resolution: {integrity: sha512-R1urvuyiTaWfeCggqEvpDJwAlDVdsT9NM+IP//Tk2x7qHCkSvBk/fwFgw/TLAHzZlrAnnazMcRw0ZD8HlYFTEQ==} engines: {node: ^14.18.0 || >=16.0.0} - tailwindcss@3.4.14: - resolution: {integrity: sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==} - engines: {node: '>=14.0.0'} - hasBin: true - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + tailwindcss@4.0.16: + resolution: {integrity: sha512-i/SbG7ThTIcLshcFJL+je7hCv9dPis4Xl4XNeel6iZNX42pp/BZ+la+SbZIPoYE+PN8zhKbnHblpQ/lhOWwIeQ==} - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - ts-api-utils@1.4.0: - resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==} - engines: {node: '>=16'} + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} peerDependencies: - typescript: '>=4.2.0' - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + typescript: '>=4.8.4' tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -1741,51 +1759,40 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} - typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} engines: {node: '>= 0.4'} - typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} engines: {node: '>= 0.4'} - typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript-eslint@8.12.2: - resolution: {integrity: sha512-UbuVUWSrHVR03q9CWx+JDHeO6B/Hr9p4U5lRH++5tq/EbFq1faYZe50ZSBePptgfIKLEti0aPQ3hFgnPVcd8ZQ==} + typescript-eslint@8.28.0: + resolution: {integrity: sha512-jfZtxJoHm59bvoCMYCe2BM0/baMswRhMmYhy+w6VfcyHrjxZ0OJe0tGasydCpIpA+A/WIJhTyZfb3EtwNC/kHQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + typescript@5.8.2: + resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} engines: {node: '>=14.17'} hasBin: true - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} - update-browserslist-db@1.1.1: - resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -1796,22 +1803,27 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - vite@5.4.12: - resolution: {integrity: sha512-KwUaKB27TvWwDJr1GjjWthLMATbGEbeWYZIbGZ5qFIsgPP3vWzLu4cVooqhm5/Z2SPDUMjyPVjTztm5tYKwQxA==} - engines: {node: ^18.0.0 || >=20.0.0} + vite@6.2.3: + resolution: {integrity: sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' less: '*' lightningcss: ^1.21.0 sass: '*' sass-embedded: '*' stylus: '*' sugarss: '*' - terser: ^5.4.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: '@types/node': optional: true + jiti: + optional: true less: optional: true lightningcss: @@ -1826,20 +1838,13 @@ packages: optional: true terser: optional: true - - vscode-uri@3.0.8: - resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - - vue-demi@0.14.10: - resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} - engines: {node: '>=12'} - hasBin: true - peerDependencies: - '@vue/composition-api': ^1.0.0-rc.1 - vue: ^3.0.0-0 || ^2.6.0 - peerDependenciesMeta: - '@vue/composition-api': + tsx: optional: true + yaml: + optional: true + + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} vue-draggable-next@2.2.1: resolution: {integrity: sha512-EAMS1IRHF0kZO0o5PMOinsQsXIqsrKT1hKmbICxG3UEtn7zLFkLxlAtajcCcUTisNvQ6TtCB5COjD9a1raNADw==} @@ -1847,14 +1852,14 @@ packages: sortablejs: ^1.14.0 vue: ^3.2.2 - vue-eslint-parser@9.4.3: - resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} - engines: {node: ^14.17.0 || >=16.0.0} + vue-eslint-parser@10.1.1: + resolution: {integrity: sha512-bh2Z/Au5slro9QJ3neFYLanZtb1jH+W2bKqGHXAoYD4vZgNG3KeotL7JpPv5xzY4UXUXJl7TrIsnzECH63kd3Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: '>=6.0.0' + eslint: ^8.57.0 || ^9.0.0 - vue-router@4.4.5: - resolution: {integrity: sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==} + vue-router@4.5.0: + resolution: {integrity: sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==} peerDependencies: vue: ^3.2.0 @@ -1863,8 +1868,8 @@ packages: peerDependencies: vue: ^3.0.2 - vue-tsc@2.1.10: - resolution: {integrity: sha512-RBNSfaaRHcN5uqVqJSZh++Gy/YUzryuv9u1aFWhsammDJXNtUiJMNoJ747lZcQ68wUQFx6E73y4FY3D8E7FGMA==} + vue-tsc@2.2.8: + resolution: {integrity: sha512-jBYKBNFADTN+L+MdesNX/TB3XuDSyaWynKMDgR+yCSln0GQ9Tfb7JS2lr46s2LiFUT1WsmfWsSvIElyxzOPqcQ==} hasBin: true peerDependencies: typescript: '>=5.0.0' @@ -1875,19 +1880,28 @@ packages: peerDependencies: vue: '>=3.0.0' - vue@3.5.12: - resolution: {integrity: sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==} + vue@3.5.13: + resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} engines: {node: '>= 0.4'} which@1.3.1: @@ -1903,150 +1917,146 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} - yaml@2.6.0: - resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==} - engines: {node: '>= 14'} - hasBin: true - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} snapshots: - '@alloc/quick-lru@5.2.0': {} - '@babel/helper-string-parser@7.25.9': {} '@babel/helper-validator-identifier@7.25.9': {} - '@babel/parser@7.26.2': + '@babel/parser@7.27.0': dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.27.0 - '@babel/types@7.26.0': + '@babel/types@7.27.0': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@esbuild/aix-ppc64@0.21.5': + '@esbuild/aix-ppc64@0.25.1': + optional: true + + '@esbuild/android-arm64@0.25.1': + optional: true + + '@esbuild/android-arm@0.25.1': optional: true - '@esbuild/android-arm64@0.21.5': + '@esbuild/android-x64@0.25.1': optional: true - '@esbuild/android-arm@0.21.5': + '@esbuild/darwin-arm64@0.25.1': optional: true - '@esbuild/android-x64@0.21.5': + '@esbuild/darwin-x64@0.25.1': optional: true - '@esbuild/darwin-arm64@0.21.5': + '@esbuild/freebsd-arm64@0.25.1': optional: true - '@esbuild/darwin-x64@0.21.5': + '@esbuild/freebsd-x64@0.25.1': optional: true - '@esbuild/freebsd-arm64@0.21.5': + '@esbuild/linux-arm64@0.25.1': optional: true - '@esbuild/freebsd-x64@0.21.5': + '@esbuild/linux-arm@0.25.1': optional: true - '@esbuild/linux-arm64@0.21.5': + '@esbuild/linux-ia32@0.25.1': optional: true - '@esbuild/linux-arm@0.21.5': + '@esbuild/linux-loong64@0.25.1': optional: true - '@esbuild/linux-ia32@0.21.5': + '@esbuild/linux-mips64el@0.25.1': optional: true - '@esbuild/linux-loong64@0.21.5': + '@esbuild/linux-ppc64@0.25.1': optional: true - '@esbuild/linux-mips64el@0.21.5': + '@esbuild/linux-riscv64@0.25.1': optional: true - '@esbuild/linux-ppc64@0.21.5': + '@esbuild/linux-s390x@0.25.1': optional: true - '@esbuild/linux-riscv64@0.21.5': + '@esbuild/linux-x64@0.25.1': optional: true - '@esbuild/linux-s390x@0.21.5': + '@esbuild/netbsd-arm64@0.25.1': optional: true - '@esbuild/linux-x64@0.21.5': + '@esbuild/netbsd-x64@0.25.1': optional: true - '@esbuild/netbsd-x64@0.21.5': + '@esbuild/openbsd-arm64@0.25.1': optional: true - '@esbuild/openbsd-x64@0.21.5': + '@esbuild/openbsd-x64@0.25.1': optional: true - '@esbuild/sunos-x64@0.21.5': + '@esbuild/sunos-x64@0.25.1': optional: true - '@esbuild/win32-arm64@0.21.5': + '@esbuild/win32-arm64@0.25.1': optional: true - '@esbuild/win32-ia32@0.21.5': + '@esbuild/win32-ia32@0.25.1': optional: true - '@esbuild/win32-x64@0.21.5': + '@esbuild/win32-x64@0.25.1': optional: true - '@eslint-community/eslint-utils@4.4.1(eslint@9.14.0(jiti@1.21.6))': + '@eslint-community/eslint-utils@4.5.1(eslint@9.23.0(jiti@2.4.2))': dependencies: - eslint: 9.14.0(jiti@1.21.6) + eslint: 9.23.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/config-array@0.18.0': + '@eslint/config-array@0.19.2': dependencies: - '@eslint/object-schema': 2.1.4 - debug: 4.3.7 + '@eslint/object-schema': 2.1.6 + debug: 4.4.0 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - '@eslint/core@0.7.0': {} + '@eslint/config-helpers@0.2.0': {} + + '@eslint/core@0.12.0': + dependencies: + '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.1.0': + '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 - debug: 4.3.7 + debug: 4.4.0 espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 - import-fresh: 3.3.0 + import-fresh: 3.3.1 js-yaml: 4.1.0 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - '@eslint/js@9.14.0': {} + '@eslint/js@9.23.0': {} - '@eslint/object-schema@2.1.4': {} + '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.2.3': + '@eslint/plugin-kit@0.2.7': dependencies: + '@eslint/core': 0.12.0 levn: 0.4.1 '@humanfs/core@0.19.1': {} @@ -2060,34 +2070,10 @@ snapshots: '@humanwhocodes/retry@0.3.1': {} - '@humanwhocodes/retry@0.4.0': {} - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@jridgewell/gen-mapping@0.3.5': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} + '@humanwhocodes/retry@0.4.2': {} '@jridgewell/sourcemap-codec@1.5.0': {} - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -2098,221 +2084,278 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 + fastq: 1.19.1 + + '@pkgr/core@0.2.0': {} + + '@rollup/rollup-android-arm-eabi@4.37.0': + optional: true + + '@rollup/rollup-android-arm64@4.37.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.37.0': + optional: true + + '@rollup/rollup-darwin-x64@4.37.0': + optional: true + + '@rollup/rollup-freebsd-arm64@4.37.0': + optional: true + + '@rollup/rollup-freebsd-x64@4.37.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.37.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.37.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.37.0': + optional: true - '@pkgjs/parseargs@0.11.0': + '@rollup/rollup-linux-arm64-musl@4.37.0': optional: true - '@pkgr/core@0.1.1': {} + '@rollup/rollup-linux-loongarch64-gnu@4.37.0': + optional: true - '@rollup/rollup-android-arm-eabi@4.31.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.37.0': optional: true - '@rollup/rollup-android-arm64@4.31.0': + '@rollup/rollup-linux-riscv64-gnu@4.37.0': optional: true - '@rollup/rollup-darwin-arm64@4.31.0': + '@rollup/rollup-linux-riscv64-musl@4.37.0': optional: true - '@rollup/rollup-darwin-x64@4.31.0': + '@rollup/rollup-linux-s390x-gnu@4.37.0': optional: true - '@rollup/rollup-freebsd-arm64@4.31.0': + '@rollup/rollup-linux-x64-gnu@4.37.0': optional: true - '@rollup/rollup-freebsd-x64@4.31.0': + '@rollup/rollup-linux-x64-musl@4.37.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.31.0': + '@rollup/rollup-win32-arm64-msvc@4.37.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.31.0': + '@rollup/rollup-win32-ia32-msvc@4.37.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.31.0': + '@rollup/rollup-win32-x64-msvc@4.37.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.31.0': + '@tailwindcss/node@4.0.16': + dependencies: + enhanced-resolve: 5.18.1 + jiti: 2.4.2 + tailwindcss: 4.0.16 + + '@tailwindcss/oxide-android-arm64@4.0.16': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.31.0': + '@tailwindcss/oxide-darwin-arm64@4.0.16': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.31.0': + '@tailwindcss/oxide-darwin-x64@4.0.16': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.31.0': + '@tailwindcss/oxide-freebsd-x64@4.0.16': optional: true - '@rollup/rollup-linux-s390x-gnu@4.31.0': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.16': optional: true - '@rollup/rollup-linux-x64-gnu@4.31.0': + '@tailwindcss/oxide-linux-arm64-gnu@4.0.16': optional: true - '@rollup/rollup-linux-x64-musl@4.31.0': + '@tailwindcss/oxide-linux-arm64-musl@4.0.16': optional: true - '@rollup/rollup-win32-arm64-msvc@4.31.0': + '@tailwindcss/oxide-linux-x64-gnu@4.0.16': optional: true - '@rollup/rollup-win32-ia32-msvc@4.31.0': + '@tailwindcss/oxide-linux-x64-musl@4.0.16': optional: true - '@rollup/rollup-win32-x64-msvc@4.31.0': + '@tailwindcss/oxide-win32-arm64-msvc@4.0.16': optional: true - '@rushstack/eslint-patch@1.10.4': {} + '@tailwindcss/oxide-win32-x64-msvc@4.0.16': + optional: true - '@tsconfig/node22@22.0.0': {} + '@tailwindcss/oxide@4.0.16': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.0.16 + '@tailwindcss/oxide-darwin-arm64': 4.0.16 + '@tailwindcss/oxide-darwin-x64': 4.0.16 + '@tailwindcss/oxide-freebsd-x64': 4.0.16 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.16 + '@tailwindcss/oxide-linux-arm64-gnu': 4.0.16 + '@tailwindcss/oxide-linux-arm64-musl': 4.0.16 + '@tailwindcss/oxide-linux-x64-gnu': 4.0.16 + '@tailwindcss/oxide-linux-x64-musl': 4.0.16 + '@tailwindcss/oxide-win32-arm64-msvc': 4.0.16 + '@tailwindcss/oxide-win32-x64-msvc': 4.0.16 + + '@tailwindcss/vite@4.0.16(vite@6.2.3(@types/node@22.13.13)(jiti@2.4.2)(lightningcss@1.29.2))': + dependencies: + '@tailwindcss/node': 4.0.16 + '@tailwindcss/oxide': 4.0.16 + lightningcss: 1.29.2 + tailwindcss: 4.0.16 + vite: 6.2.3(@types/node@22.13.13)(jiti@2.4.2)(lightningcss@1.29.2) + + '@tsconfig/node22@22.0.1': {} '@types/d3-axis@3.0.6': dependencies: '@types/d3-selection': 3.0.11 - '@types/d3-path@3.1.0': {} + '@types/d3-path@3.1.1': {} '@types/d3-selection@3.0.11': {} - '@types/d3-shape@3.1.6': + '@types/d3-shape@3.1.7': dependencies: - '@types/d3-path': 3.1.0 + '@types/d3-path': 3.1.1 '@types/estree@1.0.6': {} + '@types/estree@1.0.7': {} + '@types/json-schema@7.0.15': {} - '@types/node@22.8.6': + '@types/node@22.13.13': dependencies: - undici-types: 6.19.8 + undici-types: 6.20.0 - '@typescript-eslint/eslint-plugin@8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3)': + '@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.12.2(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.12.2 - '@typescript-eslint/type-utils': 8.12.2(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) - '@typescript-eslint/utils': 8.12.2(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.12.2 - eslint: 9.14.0(jiti@1.21.6) + '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/scope-manager': 8.28.0 + '@typescript-eslint/type-utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.28.0 + eslint: 9.23.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.4.0(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 + ts-api-utils: 2.1.0(typescript@5.8.2) + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.12.2(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3)': + '@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': dependencies: - '@typescript-eslint/scope-manager': 8.12.2 - '@typescript-eslint/types': 8.12.2 - '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.12.2 - debug: 4.3.7 - eslint: 9.14.0(jiti@1.21.6) - optionalDependencies: - typescript: 5.6.3 + '@typescript-eslint/scope-manager': 8.28.0 + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.28.0 + debug: 4.4.0 + eslint: 9.23.0(jiti@2.4.2) + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.12.2': + '@typescript-eslint/scope-manager@8.28.0': dependencies: - '@typescript-eslint/types': 8.12.2 - '@typescript-eslint/visitor-keys': 8.12.2 + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/visitor-keys': 8.28.0 - '@typescript-eslint/type-utils@8.12.2(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3)': + '@typescript-eslint/type-utils@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) - '@typescript-eslint/utils': 8.12.2(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) - debug: 4.3.7 - ts-api-utils: 1.4.0(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 + '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.2) + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + debug: 4.4.0 + eslint: 9.23.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.8.2) + typescript: 5.8.2 transitivePeerDependencies: - - eslint - supports-color - '@typescript-eslint/types@8.12.2': {} + '@typescript-eslint/types@8.28.0': {} - '@typescript-eslint/typescript-estree@8.12.2(typescript@5.6.3)': + '@typescript-eslint/typescript-estree@8.28.0(typescript@5.8.2)': dependencies: - '@typescript-eslint/types': 8.12.2 - '@typescript-eslint/visitor-keys': 8.12.2 - debug: 4.3.7 - fast-glob: 3.3.2 + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/visitor-keys': 8.28.0 + debug: 4.4.0 + fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 1.4.0(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 + semver: 7.7.1 + ts-api-utils: 2.1.0(typescript@5.8.2) + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.12.2(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3)': + '@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.14.0(jiti@1.21.6)) - '@typescript-eslint/scope-manager': 8.12.2 - '@typescript-eslint/types': 8.12.2 - '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) - eslint: 9.14.0(jiti@1.21.6) + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.28.0 + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.8.2) + eslint: 9.23.0(jiti@2.4.2) + typescript: 5.8.2 transitivePeerDependencies: - supports-color - - typescript - '@typescript-eslint/visitor-keys@8.12.2': + '@typescript-eslint/visitor-keys@8.28.0': dependencies: - '@typescript-eslint/types': 8.12.2 - eslint-visitor-keys: 3.4.3 + '@typescript-eslint/types': 8.28.0 + eslint-visitor-keys: 4.2.0 - '@vitejs/plugin-vue@5.1.4(vite@5.4.12(@types/node@22.8.6))(vue@3.5.12(typescript@5.6.3))': + '@vitejs/plugin-vue@5.2.3(vite@6.2.3(@types/node@22.13.13)(jiti@2.4.2)(lightningcss@1.29.2))(vue@3.5.13(typescript@5.8.2))': dependencies: - vite: 5.4.12(@types/node@22.8.6) - vue: 3.5.12(typescript@5.6.3) + vite: 6.2.3(@types/node@22.13.13)(jiti@2.4.2)(lightningcss@1.29.2) + vue: 3.5.13(typescript@5.8.2) - '@volar/language-core@2.4.8': + '@volar/language-core@2.4.12': dependencies: - '@volar/source-map': 2.4.8 + '@volar/source-map': 2.4.12 - '@volar/source-map@2.4.8': {} + '@volar/source-map@2.4.12': {} - '@volar/typescript@2.4.8': + '@volar/typescript@2.4.12': dependencies: - '@volar/language-core': 2.4.8 + '@volar/language-core': 2.4.12 path-browserify: 1.0.1 - vscode-uri: 3.0.8 + vscode-uri: 3.1.0 - '@vue/compiler-core@3.5.12': + '@vue/compiler-core@3.5.13': dependencies: - '@babel/parser': 7.26.2 - '@vue/shared': 3.5.12 + '@babel/parser': 7.27.0 + '@vue/shared': 3.5.13 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.12': + '@vue/compiler-dom@3.5.13': dependencies: - '@vue/compiler-core': 3.5.12 - '@vue/shared': 3.5.12 + '@vue/compiler-core': 3.5.13 + '@vue/shared': 3.5.13 - '@vue/compiler-sfc@3.5.12': + '@vue/compiler-sfc@3.5.13': dependencies: - '@babel/parser': 7.26.2 - '@vue/compiler-core': 3.5.12 - '@vue/compiler-dom': 3.5.12 - '@vue/compiler-ssr': 3.5.12 - '@vue/shared': 3.5.12 + '@babel/parser': 7.27.0 + '@vue/compiler-core': 3.5.13 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 estree-walker: 2.0.2 - magic-string: 0.30.12 - postcss: 8.4.47 + magic-string: 0.30.17 + postcss: 8.5.3 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.12': + '@vue/compiler-ssr@3.5.13': dependencies: - '@vue/compiler-dom': 3.5.12 - '@vue/shared': 3.5.12 + '@vue/compiler-dom': 3.5.13 + '@vue/shared': 3.5.13 '@vue/compiler-vue2@2.7.16': dependencies: @@ -2321,73 +2364,93 @@ snapshots: '@vue/devtools-api@6.6.4': {} - '@vue/eslint-config-prettier@10.1.0(eslint@9.14.0(jiti@1.21.6))(prettier@3.3.3)': + '@vue/devtools-api@7.7.2': + dependencies: + '@vue/devtools-kit': 7.7.2 + + '@vue/devtools-kit@7.7.2': + dependencies: + '@vue/devtools-shared': 7.7.2 + birpc: 0.2.19 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.2 + + '@vue/devtools-shared@7.7.2': + dependencies: + rfdc: 1.4.1 + + '@vue/eslint-config-prettier@10.2.0(eslint@9.23.0(jiti@2.4.2))(prettier@3.5.3)': dependencies: - eslint: 9.14.0(jiti@1.21.6) - eslint-config-prettier: 9.1.0(eslint@9.14.0(jiti@1.21.6)) - eslint-plugin-prettier: 5.2.1(eslint-config-prettier@9.1.0(eslint@9.14.0(jiti@1.21.6)))(eslint@9.14.0(jiti@1.21.6))(prettier@3.3.3) - prettier: 3.3.3 + eslint: 9.23.0(jiti@2.4.2) + eslint-config-prettier: 10.1.1(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-prettier: 5.2.5(eslint-config-prettier@10.1.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(prettier@3.5.3) + prettier: 3.5.3 transitivePeerDependencies: - '@types/eslint' - '@vue/eslint-config-typescript@14.1.3(@typescript-eslint/parser@8.12.2(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3))(eslint-plugin-vue@9.30.0(eslint@9.14.0(jiti@1.21.6)))(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3)': + '@vue/eslint-config-typescript@14.5.0(eslint-plugin-vue@10.0.0(eslint@9.23.0(jiti@2.4.2))(vue-eslint-parser@10.1.1(eslint@9.23.0(jiti@2.4.2))))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2)': dependencies: - '@typescript-eslint/eslint-plugin': 8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) - eslint: 9.14.0(jiti@1.21.6) - eslint-plugin-vue: 9.30.0(eslint@9.14.0(jiti@1.21.6)) - fast-glob: 3.3.2 - typescript-eslint: 8.12.2(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) - vue-eslint-parser: 9.4.3(eslint@9.14.0(jiti@1.21.6)) + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + eslint: 9.23.0(jiti@2.4.2) + eslint-plugin-vue: 10.0.0(eslint@9.23.0(jiti@2.4.2))(vue-eslint-parser@10.1.1(eslint@9.23.0(jiti@2.4.2))) + fast-glob: 3.3.3 + typescript-eslint: 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + vue-eslint-parser: 10.1.1(eslint@9.23.0(jiti@2.4.2)) optionalDependencies: - typescript: 5.6.3 + typescript: 5.8.2 transitivePeerDependencies: - - '@typescript-eslint/parser' - supports-color - '@vue/language-core@2.1.10(typescript@5.6.3)': + '@vue/language-core@2.2.8(typescript@5.8.2)': dependencies: - '@volar/language-core': 2.4.8 - '@vue/compiler-dom': 3.5.12 + '@volar/language-core': 2.4.12 + '@vue/compiler-dom': 3.5.13 '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.12 - alien-signals: 0.2.0 + '@vue/shared': 3.5.13 + alien-signals: 1.0.8 minimatch: 9.0.5 muggle-string: 0.4.1 path-browserify: 1.0.1 optionalDependencies: - typescript: 5.6.3 + typescript: 5.8.2 - '@vue/reactivity@3.5.12': + '@vue/reactivity@3.5.13': dependencies: - '@vue/shared': 3.5.12 + '@vue/shared': 3.5.13 - '@vue/runtime-core@3.5.12': + '@vue/runtime-core@3.5.13': dependencies: - '@vue/reactivity': 3.5.12 - '@vue/shared': 3.5.12 + '@vue/reactivity': 3.5.13 + '@vue/shared': 3.5.13 - '@vue/runtime-dom@3.5.12': + '@vue/runtime-dom@3.5.13': dependencies: - '@vue/reactivity': 3.5.12 - '@vue/runtime-core': 3.5.12 - '@vue/shared': 3.5.12 + '@vue/reactivity': 3.5.13 + '@vue/runtime-core': 3.5.13 + '@vue/shared': 3.5.13 csstype: 3.1.3 - '@vue/server-renderer@3.5.12(vue@3.5.12(typescript@5.6.3))': + '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.2))': dependencies: - '@vue/compiler-ssr': 3.5.12 - '@vue/shared': 3.5.12 - vue: 3.5.12(typescript@5.6.3) + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 + vue: 3.5.13(typescript@5.8.2) - '@vue/shared@3.5.12': {} + '@vue/shared@3.5.13': {} - '@vue/tsconfig@0.5.1': {} + '@vue/tsconfig@0.7.0(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))': + optionalDependencies: + typescript: 5.8.2 + vue: 3.5.13(typescript@5.8.2) - acorn-jsx@5.3.2(acorn@8.14.0): + acorn-jsx@5.3.2(acorn@8.14.1): dependencies: - acorn: 8.14.0 + acorn: 8.14.1 - acorn@8.14.0: {} + acorn@8.14.1: {} ajv@6.12.6: dependencies: @@ -2396,11 +2459,7 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - alien-signals@0.2.0: {} - - ansi-regex@5.0.1: {} - - ansi-regex@6.1.0: {} + alien-signals@1.0.8: {} ansi-styles@3.2.1: dependencies: @@ -2410,52 +2469,32 @@ snapshots: dependencies: color-convert: 2.0.1 - ansi-styles@6.2.1: {} - - any-promise@1.3.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - arg@5.0.2: {} - argparse@2.0.1: {} - array-buffer-byte-length@1.0.1: + array-buffer-byte-length@1.0.2: dependencies: - call-bind: 1.0.7 - is-array-buffer: 3.0.4 + call-bound: 1.0.4 + is-array-buffer: 3.0.5 - arraybuffer.prototype.slice@1.0.3: + arraybuffer.prototype.slice@1.0.4: dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.9 es-errors: 1.3.0 - get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 - autoprefixer@10.4.20(postcss@8.4.47): - dependencies: - browserslist: 4.24.2 - caniuse-lite: 1.0.30001676 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.1.1 - postcss: 8.4.47 - postcss-value-parser: 4.2.0 + async-function@1.0.0: {} available-typed-arrays@1.0.7: dependencies: - possible-typed-array-names: 1.0.0 + possible-typed-array-names: 1.1.0 balanced-match@1.0.2: {} - binary-extensions@2.3.0: {} + birpc@0.2.19: {} boolbase@1.0.0: {} @@ -2472,26 +2511,24 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.24.2: + call-bind-apply-helpers@1.0.2: dependencies: - caniuse-lite: 1.0.30001676 - electron-to-chromium: 1.5.50 - node-releases: 2.0.18 - update-browserslist-db: 1.1.1(browserslist@4.24.2) - - call-bind@1.0.7: - dependencies: - es-define-property: 1.0.0 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - callsites@3.1.0: {} + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 - camelcase-css@2.0.1: {} + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 - caniuse-lite@1.0.30001676: {} + callsites@3.1.0: {} chalk@2.4.2: dependencies: @@ -2504,18 +2541,6 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -2528,10 +2553,12 @@ snapshots: color-name@1.1.4: {} - commander@4.1.1: {} - concat-map@0.0.1: {} + copy-anything@3.0.5: + dependencies: + is-what: 4.1.16 + cross-spawn@6.0.6: dependencies: nice-try: 1.0.5 @@ -2540,7 +2567,7 @@ snapshots: shebang-command: 1.2.0 which: 1.3.1 - cross-spawn@7.0.3: + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 @@ -2590,27 +2617,27 @@ snapshots: dependencies: d3-array: 3.2.4 - data-view-buffer@1.0.1: + data-view-buffer@1.0.2: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 - data-view-byte-length@1.0.1: + data-view-byte-length@1.0.2: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 - data-view-byte-offset@1.0.0: + data-view-byte-offset@1.0.1: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 de-indent@1.0.2: {} - debug@4.3.7: + debug@4.4.0: dependencies: ms: 2.1.3 @@ -2618,9 +2645,9 @@ snapshots: define-data-property@1.1.4: dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 es-errors: 1.3.0 - gopd: 1.0.1 + gopd: 1.2.0 define-properties@1.2.1: dependencies: @@ -2628,17 +2655,18 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - didyoumean@1.2.2: {} - - dlv@1.1.3: {} - - eastasianwidth@0.2.0: {} + detect-libc@2.0.3: {} - electron-to-chromium@1.5.50: {} - - emoji-regex@8.0.0: {} + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 - emoji-regex@9.2.2: {} + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 entities@4.5.0: {} @@ -2646,142 +2674,138 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-abstract@1.23.3: + es-abstract@1.23.9: dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 - es-define-property: 1.0.0 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 globalthis: 1.0.4 - gopd: 1.0.1 + gopd: 1.2.0 has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 + has-proto: 1.2.0 + has-symbols: 1.1.0 hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 is-callable: 1.2.7 - is-data-view: 1.0.1 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.2 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.3 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.6 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 + es-define-property@1.0.1: {} es-errors@1.3.0: {} - es-object-atoms@1.0.0: + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 - es-set-tostringtag@2.0.3: + es-set-tostringtag@2.1.0: dependencies: - get-intrinsic: 1.2.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 has-tostringtag: 1.0.2 hasown: 2.0.2 - es-to-primitive@1.2.1: + es-to-primitive@1.3.0: dependencies: is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 + is-date-object: 1.1.0 + is-symbol: 1.1.1 - esbuild@0.21.5: + esbuild@0.25.1: optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 - - escalade@3.2.0: {} + '@esbuild/aix-ppc64': 0.25.1 + '@esbuild/android-arm': 0.25.1 + '@esbuild/android-arm64': 0.25.1 + '@esbuild/android-x64': 0.25.1 + '@esbuild/darwin-arm64': 0.25.1 + '@esbuild/darwin-x64': 0.25.1 + '@esbuild/freebsd-arm64': 0.25.1 + '@esbuild/freebsd-x64': 0.25.1 + '@esbuild/linux-arm': 0.25.1 + '@esbuild/linux-arm64': 0.25.1 + '@esbuild/linux-ia32': 0.25.1 + '@esbuild/linux-loong64': 0.25.1 + '@esbuild/linux-mips64el': 0.25.1 + '@esbuild/linux-ppc64': 0.25.1 + '@esbuild/linux-riscv64': 0.25.1 + '@esbuild/linux-s390x': 0.25.1 + '@esbuild/linux-x64': 0.25.1 + '@esbuild/netbsd-arm64': 0.25.1 + '@esbuild/netbsd-x64': 0.25.1 + '@esbuild/openbsd-arm64': 0.25.1 + '@esbuild/openbsd-x64': 0.25.1 + '@esbuild/sunos-x64': 0.25.1 + '@esbuild/win32-arm64': 0.25.1 + '@esbuild/win32-ia32': 0.25.1 + '@esbuild/win32-x64': 0.25.1 escape-string-regexp@1.0.5: {} escape-string-regexp@4.0.0: {} - eslint-config-prettier@9.1.0(eslint@9.14.0(jiti@1.21.6)): + eslint-config-prettier@10.1.1(eslint@9.23.0(jiti@2.4.2)): dependencies: - eslint: 9.14.0(jiti@1.21.6) + eslint: 9.23.0(jiti@2.4.2) - eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@9.14.0(jiti@1.21.6)))(eslint@9.14.0(jiti@1.21.6))(prettier@3.3.3): + eslint-plugin-prettier@5.2.5(eslint-config-prettier@10.1.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(prettier@3.5.3): dependencies: - eslint: 9.14.0(jiti@1.21.6) - prettier: 3.3.3 + eslint: 9.23.0(jiti@2.4.2) + prettier: 3.5.3 prettier-linter-helpers: 1.0.0 - synckit: 0.9.2 + synckit: 0.10.3 optionalDependencies: - eslint-config-prettier: 9.1.0(eslint@9.14.0(jiti@1.21.6)) + eslint-config-prettier: 10.1.1(eslint@9.23.0(jiti@2.4.2)) - eslint-plugin-vue@9.30.0(eslint@9.14.0(jiti@1.21.6)): + eslint-plugin-vue@10.0.0(eslint@9.23.0(jiti@2.4.2))(vue-eslint-parser@10.1.1(eslint@9.23.0(jiti@2.4.2))): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.14.0(jiti@1.21.6)) - eslint: 9.14.0(jiti@1.21.6) - globals: 13.24.0 + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + eslint: 9.23.0(jiti@2.4.2) natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.2 - semver: 7.6.3 - vue-eslint-parser: 9.4.3(eslint@9.14.0(jiti@1.21.6)) + semver: 7.7.1 + vue-eslint-parser: 10.1.1(eslint@9.23.0(jiti@2.4.2)) xml-name-validator: 4.0.0 - transitivePeerDependencies: - - supports-color - - eslint-scope@7.2.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - eslint-scope@8.2.0: + eslint-scope@8.3.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 @@ -2790,26 +2814,27 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.14.0(jiti@1.21.6): + eslint@9.23.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.14.0(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.18.0 - '@eslint/core': 0.7.0 - '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.14.0 - '@eslint/plugin-kit': 0.2.3 + '@eslint/config-array': 0.19.2 + '@eslint/config-helpers': 0.2.0 + '@eslint/core': 0.12.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.23.0 + '@eslint/plugin-kit': 0.2.7 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.0 - '@types/estree': 1.0.6 + '@humanwhocodes/retry': 0.4.2 + '@types/estree': 1.0.7 '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.7 + cross-spawn: 7.0.6 + debug: 4.4.0 escape-string-regexp: 4.0.0 - eslint-scope: 8.2.0 + eslint-scope: 8.3.0 eslint-visitor-keys: 4.2.0 espree: 10.3.0 esquery: 1.6.0 @@ -2826,24 +2851,17 @@ snapshots: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 - text-table: 0.2.0 optionalDependencies: - jiti: 1.21.6 + jiti: 2.4.2 transitivePeerDependencies: - supports-color espree@10.3.0: dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) eslint-visitor-keys: 4.2.0 - espree@9.6.1: - dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 3.4.3 - esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -2862,7 +2880,7 @@ snapshots: fast-diff@1.3.0: {} - fast-glob@3.3.2: + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -2874,9 +2892,9 @@ snapshots: fast-levenshtein@2.0.6: {} - fastq@1.17.1: + fastq@1.19.1: dependencies: - reusify: 1.0.4 + reusify: 1.1.0 file-entry-cache@8.0.0: dependencies: @@ -2893,49 +2911,54 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.1 + flatted: 3.3.3 keyv: 4.5.4 - flatted@3.3.1: {} + flatted@3.3.3: {} - for-each@0.3.3: + for-each@0.3.5: dependencies: is-callable: 1.2.7 - foreground-child@3.3.0: - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - - fraction.js@4.3.7: {} - fsevents@2.3.3: optional: true function-bind@1.1.2: {} - function.prototype.name@1.1.6: + function.prototype.name@1.1.8: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.3 functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 functions-have-names@1.2.3: {} - get-intrinsic@1.2.4: + get-intrinsic@1.3.0: dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 es-errors: 1.3.0 + es-object-atoms: 1.1.1 function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 - get-symbol-description@1.0.2: + get-symbol-description@1.1.0: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - get-intrinsic: 1.2.4 + get-intrinsic: 1.3.0 glob-parent@5.1.2: dependencies: @@ -2945,35 +2968,20 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@10.4.5: - dependencies: - foreground-child: 3.3.0 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - globals@14.0.0: {} globalthis@1.0.4: dependencies: define-properties: 1.2.1 - gopd: 1.0.1 + gopd: 1.2.0 - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 + gopd@1.2.0: {} graceful-fs@4.2.11: {} graphemer@1.4.0: {} - has-bigints@1.0.2: {} + has-bigints@1.1.0: {} has-flag@3.0.0: {} @@ -2981,15 +2989,17 @@ snapshots: has-property-descriptors@1.0.2: dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 - has-proto@1.0.3: {} + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 - has-symbols@1.0.3: {} + has-symbols@1.1.0: {} has-tostringtag@1.0.2: dependencies: - has-symbols: 1.0.3 + has-symbols: 1.1.0 hasown@2.0.2: dependencies: @@ -2997,111 +3007,141 @@ snapshots: he@1.2.0: {} + hookable@5.5.3: {} + hosted-git-info@2.8.9: {} ignore@5.3.2: {} - import-fresh@3.3.0: + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 imurmurhash@0.1.4: {} - internal-slot@1.0.7: + internal-slot@1.1.0: dependencies: es-errors: 1.3.0 hasown: 2.0.2 - side-channel: 1.0.6 + side-channel: 1.1.0 internmap@2.0.3: {} - is-array-buffer@3.0.4: + is-array-buffer@3.0.5: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 is-arrayish@0.2.1: {} - is-bigint@1.0.4: + is-async-function@2.1.1: dependencies: - has-bigints: 1.0.2 + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 - is-binary-path@2.1.0: + is-bigint@1.1.0: dependencies: - binary-extensions: 2.3.0 + has-bigints: 1.1.0 - is-boolean-object@1.1.2: + is-boolean-object@1.2.2: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-callable@1.2.7: {} - is-core-module@2.15.1: + is-core-module@2.16.1: dependencies: hasown: 2.0.2 - is-data-view@1.0.1: + is-data-view@1.0.2: dependencies: - is-typed-array: 1.1.13 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 - is-date-object@1.0.5: + is-date-object@1.1.0: dependencies: + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-extglob@2.1.1: {} - is-fullwidth-code-point@3.0.0: {} + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - is-negative-zero@2.0.3: {} + is-map@2.0.3: {} - is-number-object@1.0.7: + is-number-object@1.1.1: dependencies: + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-number@7.0.0: {} - is-regex@1.1.4: + is-regex@1.2.1: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 + gopd: 1.2.0 has-tostringtag: 1.0.2 + hasown: 2.0.2 - is-shared-array-buffer@1.0.3: + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 - is-string@1.0.7: + is-string@1.1.1: dependencies: + call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-symbol@1.0.4: + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: dependencies: - has-symbols: 1.0.3 + which-typed-array: 1.1.19 + + is-weakmap@2.0.2: {} - is-typed-array@1.1.13: + is-weakref@1.1.1: dependencies: - which-typed-array: 1.1.15 + call-bound: 1.0.4 - is-weakref@1.0.2: + is-weakset@2.0.4: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-what@4.1.16: {} isarray@2.0.5: {} isexe@2.0.0: {} - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jiti@1.21.6: {} + jiti@2.4.2: {} js-yaml@4.1.0: dependencies: @@ -3124,11 +3164,50 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lilconfig@2.1.0: {} + lightningcss-darwin-arm64@1.29.2: + optional: true + + lightningcss-darwin-x64@1.29.2: + optional: true + + lightningcss-freebsd-x64@1.29.2: + optional: true + + lightningcss-linux-arm-gnueabihf@1.29.2: + optional: true + + lightningcss-linux-arm64-gnu@1.29.2: + optional: true + + lightningcss-linux-arm64-musl@1.29.2: + optional: true + + lightningcss-linux-x64-gnu@1.29.2: + optional: true + + lightningcss-linux-x64-musl@1.29.2: + optional: true + + lightningcss-win32-arm64-msvc@1.29.2: + optional: true - lilconfig@3.1.2: {} + lightningcss-win32-x64-msvc@1.29.2: + optional: true - lines-and-columns@1.2.4: {} + lightningcss@1.29.2: + dependencies: + detect-libc: 2.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.29.2 + lightningcss-darwin-x64: 1.29.2 + lightningcss-freebsd-x64: 1.29.2 + lightningcss-linux-arm-gnueabihf: 1.29.2 + lightningcss-linux-arm64-gnu: 1.29.2 + lightningcss-linux-arm64-musl: 1.29.2 + lightningcss-linux-x64-gnu: 1.29.2 + lightningcss-linux-x64-musl: 1.29.2 + lightningcss-win32-arm64-msvc: 1.29.2 + lightningcss-win32-x64-msvc: 1.29.2 load-json-file@4.0.0: dependencies: @@ -3145,14 +3224,14 @@ snapshots: lodash@4.17.21: {} - lru-cache@10.4.3: {} - - magic-string@0.30.12: + magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 mande@2.0.9: {} + math-intrinsics@1.1.0: {} + memorystream@0.3.1: {} merge2@1.4.1: {} @@ -3170,37 +3249,25 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minipass@7.1.2: {} + mitt@3.0.1: {} ms@2.1.3: {} muggle-string@0.4.1: {} - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - - nanoid@3.3.8: {} + nanoid@3.3.11: {} natural-compare@1.4.0: {} nice-try@1.0.5: {} - node-releases@2.0.18: {} - normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.8 + resolve: 1.22.10 semver: 5.7.2 validate-npm-package-license: 3.0.4 - normalize-path@3.0.0: {} - - normalize-range@0.1.2: {} - npm-run-all@4.1.5: dependencies: ansi-styles: 3.2.1 @@ -3210,26 +3277,24 @@ snapshots: minimatch: 3.1.2 pidtree: 0.3.1 read-pkg: 3.0.0 - shell-quote: 1.8.1 + shell-quote: 1.8.2 string.prototype.padend: 3.1.6 nth-check@2.1.1: dependencies: boolbase: 1.0.0 - object-assign@4.1.1: {} - - object-hash@3.0.0: {} - - object-inspect@1.13.2: {} + object-inspect@1.13.4: {} object-keys@1.1.1: {} - object.assign@4.1.5: + object.assign@4.1.7: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - has-symbols: 1.0.3 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 object-keys: 1.1.1 optionator@0.9.4: @@ -3241,6 +3306,12 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -3249,8 +3320,6 @@ snapshots: dependencies: p-limit: 3.1.0 - package-json-from-dist@1.0.1: {} - parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -3270,71 +3339,37 @@ snapshots: path-parse@1.0.7: {} - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - path-type@3.0.0: dependencies: pify: 3.0.0 + perfect-debounce@1.0.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} pidtree@0.3.1: {} - pify@2.3.0: {} - pify@3.0.0: {} - pinia@2.2.5(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)): - dependencies: - '@vue/devtools-api': 6.6.4 - vue: 3.5.12(typescript@5.6.3) - vue-demi: 0.14.10(vue@3.5.12(typescript@5.6.3)) - optionalDependencies: - typescript: 5.6.3 - - pirates@4.0.6: {} - - possible-typed-array-names@1.0.0: {} - - postcss-import@15.1.0(postcss@8.4.47): - dependencies: - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 - - postcss-js@4.0.1(postcss@8.4.47): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.47 - - postcss-load-config@4.0.2(postcss@8.4.47): + pinia@3.0.1(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)): dependencies: - lilconfig: 3.1.2 - yaml: 2.6.0 + '@vue/devtools-api': 7.7.2 + vue: 3.5.13(typescript@5.8.2) optionalDependencies: - postcss: 8.4.47 + typescript: 5.8.2 - postcss-nested@6.2.0(postcss@8.4.47): - dependencies: - postcss: 8.4.47 - postcss-selector-parser: 6.1.2 + possible-typed-array-names@1.1.0: {} postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-value-parser@4.2.0: {} - - postcss@8.4.47: + postcss@8.5.3: dependencies: - nanoid: 3.3.8 + nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -3344,7 +3379,7 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier@3.3.3: {} + prettier@3.5.3: {} punycode@2.3.1: {} @@ -3352,90 +3387,104 @@ snapshots: ramda@0.28.0: {} - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - read-pkg@3.0.0: dependencies: load-json-file: 4.0.0 normalize-package-data: 2.5.0 path-type: 3.0.0 - readdirp@3.6.0: + reflect.getprototypeof@1.0.10: dependencies: - picomatch: 2.3.1 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 - regexp.prototype.flags@1.5.3: + regexp.prototype.flags@1.5.4: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 set-function-name: 2.0.2 resolve-from@4.0.0: {} - resolve@1.22.8: + resolve@1.22.10: dependencies: - is-core-module: 2.15.1 + is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - reusify@1.0.4: {} + reusify@1.1.0: {} + + rfdc@1.4.1: {} - rollup@4.31.0: + rollup@4.37.0: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.31.0 - '@rollup/rollup-android-arm64': 4.31.0 - '@rollup/rollup-darwin-arm64': 4.31.0 - '@rollup/rollup-darwin-x64': 4.31.0 - '@rollup/rollup-freebsd-arm64': 4.31.0 - '@rollup/rollup-freebsd-x64': 4.31.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.31.0 - '@rollup/rollup-linux-arm-musleabihf': 4.31.0 - '@rollup/rollup-linux-arm64-gnu': 4.31.0 - '@rollup/rollup-linux-arm64-musl': 4.31.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.31.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.31.0 - '@rollup/rollup-linux-riscv64-gnu': 4.31.0 - '@rollup/rollup-linux-s390x-gnu': 4.31.0 - '@rollup/rollup-linux-x64-gnu': 4.31.0 - '@rollup/rollup-linux-x64-musl': 4.31.0 - '@rollup/rollup-win32-arm64-msvc': 4.31.0 - '@rollup/rollup-win32-ia32-msvc': 4.31.0 - '@rollup/rollup-win32-x64-msvc': 4.31.0 + '@rollup/rollup-android-arm-eabi': 4.37.0 + '@rollup/rollup-android-arm64': 4.37.0 + '@rollup/rollup-darwin-arm64': 4.37.0 + '@rollup/rollup-darwin-x64': 4.37.0 + '@rollup/rollup-freebsd-arm64': 4.37.0 + '@rollup/rollup-freebsd-x64': 4.37.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.37.0 + '@rollup/rollup-linux-arm-musleabihf': 4.37.0 + '@rollup/rollup-linux-arm64-gnu': 4.37.0 + '@rollup/rollup-linux-arm64-musl': 4.37.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.37.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.37.0 + '@rollup/rollup-linux-riscv64-gnu': 4.37.0 + '@rollup/rollup-linux-riscv64-musl': 4.37.0 + '@rollup/rollup-linux-s390x-gnu': 4.37.0 + '@rollup/rollup-linux-x64-gnu': 4.37.0 + '@rollup/rollup-linux-x64-musl': 4.37.0 + '@rollup/rollup-win32-arm64-msvc': 4.37.0 + '@rollup/rollup-win32-ia32-msvc': 4.37.0 + '@rollup/rollup-win32-x64-msvc': 4.37.0 fsevents: 2.3.3 run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - safe-array-concat@1.1.2: + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-push-apply@1.0.0: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 + es-errors: 1.3.0 isarray: 2.0.5 - safe-regex-test@1.0.3: + safe-regex-test@1.1.0: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - is-regex: 1.1.4 + is-regex: 1.2.1 semver@5.7.2: {} - semver@7.6.3: {} + semver@7.7.1: {} set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 has-property-descriptors: 1.0.2 set-function-name@2.0.2: @@ -3445,6 +3494,12 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 @@ -3457,16 +3512,35 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.8.1: {} + shell-quote@1.8.2: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 - side-channel@1.0.6: + side-channel-weakmap@1.0.2: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.2 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 - signal-exit@4.1.0: {} + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 sortablejs@1.15.0: {} @@ -3475,76 +3549,56 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.20 + spdx-license-ids: 3.0.21 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.20 - - spdx-license-ids@3.0.20: {} + spdx-license-ids: 3.0.21 - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 + spdx-license-ids@3.0.21: {} - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + speakingurl@14.0.1: {} string.prototype.padend@3.1.6: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 - string.prototype.trim@1.2.9: + string.prototype.trim@1.2.10: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 - string.prototype.trimend@1.0.8: + string.prototype.trimend@1.0.9: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 string.prototype.trimstart@1.0.8: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-object-atoms: 1.0.0 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.1.0 + es-object-atoms: 1.1.1 strip-bom@3.0.0: {} strip-json-comments@3.1.1: {} - sucrase@3.35.0: + superjson@2.2.2: dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 10.4.5 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 + copy-anything: 3.0.5 supports-color@5.5.0: dependencies: @@ -3556,57 +3610,22 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - synckit@0.9.2: + synckit@0.10.3: dependencies: - '@pkgr/core': 0.1.1 + '@pkgr/core': 0.2.0 tslib: 2.8.1 - tailwindcss@3.4.14: - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.6 - lilconfig: 2.1.0 - micromatch: 4.0.8 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.1.1 - postcss: 8.4.47 - postcss-import: 15.1.0(postcss@8.4.47) - postcss-js: 4.0.1(postcss@8.4.47) - postcss-load-config: 4.0.2(postcss@8.4.47) - postcss-nested: 6.2.0(postcss@8.4.47) - postcss-selector-parser: 6.1.2 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - - text-table@0.2.0: {} - - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 + tailwindcss@4.0.16: {} - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 + tapable@2.2.1: {} to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - ts-api-utils@1.4.0(typescript@5.6.3): + ts-api-utils@2.1.0(typescript@5.8.2): dependencies: - typescript: 5.6.3 - - ts-interface-checker@0.1.13: {} + typescript: 5.8.2 tslib@2.8.1: {} @@ -3614,67 +3633,59 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-fest@0.20.2: {} - - typed-array-buffer@1.0.2: + typed-array-buffer@1.0.3: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - is-typed-array: 1.1.13 + is-typed-array: 1.1.15 - typed-array-byte-length@1.0.1: + typed-array-byte-length@1.0.3: dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 - typed-array-byte-offset@1.0.2: + typed-array-byte-offset@1.0.4: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - - typed-array-length@1.0.6: - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - possible-typed-array-names: 1.0.0 - - typescript-eslint@8.12.2(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) - '@typescript-eslint/parser': 8.12.2(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) - '@typescript-eslint/utils': 8.12.2(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) - optionalDependencies: - typescript: 5.6.3 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript-eslint@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2): + dependencies: + '@typescript-eslint/eslint-plugin': 8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.8.2) + eslint: 9.23.0(jiti@2.4.2) + typescript: 5.8.2 transitivePeerDependencies: - - eslint - supports-color - typescript@5.6.3: {} + typescript@5.8.2: {} - unbox-primitive@1.0.2: + unbox-primitive@1.1.0: dependencies: - call-bind: 1.0.7 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 - undici-types@6.19.8: {} - - update-browserslist-db@1.1.1(browserslist@4.24.2): - dependencies: - browserslist: 4.24.2 - escalade: 3.2.0 - picocolors: 1.1.1 + undici-types@6.20.0: {} uri-js@4.4.1: dependencies: @@ -3687,56 +3698,53 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite@5.4.12(@types/node@22.8.6): + vite@6.2.3(@types/node@22.13.13)(jiti@2.4.2)(lightningcss@1.29.2): dependencies: - esbuild: 0.21.5 - postcss: 8.4.47 - rollup: 4.31.0 + esbuild: 0.25.1 + postcss: 8.5.3 + rollup: 4.37.0 optionalDependencies: - '@types/node': 22.8.6 + '@types/node': 22.13.13 fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.29.2 - vscode-uri@3.0.8: {} - - vue-demi@0.14.10(vue@3.5.12(typescript@5.6.3)): - dependencies: - vue: 3.5.12(typescript@5.6.3) + vscode-uri@3.1.0: {} - vue-draggable-next@2.2.1(sortablejs@1.15.0)(vue@3.5.12(typescript@5.6.3)): + vue-draggable-next@2.2.1(sortablejs@1.15.0)(vue@3.5.13(typescript@5.8.2)): dependencies: sortablejs: 1.15.0 - vue: 3.5.12(typescript@5.6.3) + vue: 3.5.13(typescript@5.8.2) - vue-eslint-parser@9.4.3(eslint@9.14.0(jiti@1.21.6)): + vue-eslint-parser@10.1.1(eslint@9.23.0(jiti@2.4.2)): dependencies: - debug: 4.3.7 - eslint: 9.14.0(jiti@1.21.6) - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + debug: 4.4.0 + eslint: 9.23.0(jiti@2.4.2) + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 esquery: 1.6.0 lodash: 4.17.21 - semver: 7.6.3 + semver: 7.7.1 transitivePeerDependencies: - supports-color - vue-router@4.4.5(vue@3.5.12(typescript@5.6.3)): + vue-router@4.5.0(vue@3.5.13(typescript@5.8.2)): dependencies: '@vue/devtools-api': 6.6.4 - vue: 3.5.12(typescript@5.6.3) + vue: 3.5.13(typescript@5.8.2) - vue-toastification@2.0.0-rc.5(vue@3.5.12(typescript@5.6.3)): + vue-toastification@2.0.0-rc.5(vue@3.5.13(typescript@5.8.2)): dependencies: - vue: 3.5.12(typescript@5.6.3) + vue: 3.5.13(typescript@5.8.2) - vue-tsc@2.1.10(typescript@5.6.3): + vue-tsc@2.2.8(typescript@5.8.2): dependencies: - '@volar/typescript': 2.4.8 - '@vue/language-core': 2.1.10(typescript@5.6.3) - semver: 7.6.3 - typescript: 5.6.3 + '@volar/typescript': 2.4.12 + '@vue/language-core': 2.2.8(typescript@5.8.2) + typescript: 5.8.2 - vue3-charts@1.1.33(vue@3.5.12(typescript@5.6.3)): + vue3-charts@1.1.33(vue@3.5.13(typescript@5.8.2)): dependencies: d3-array: 3.2.4 d3-axis: 3.0.0 @@ -3747,32 +3755,57 @@ snapshots: d3-selection: 3.0.0 d3-shape: 3.2.0 ramda: 0.28.0 - vue: 3.5.12(typescript@5.6.3) + vue: 3.5.13(typescript@5.8.2) - vue@3.5.12(typescript@5.6.3): + vue@3.5.13(typescript@5.8.2): dependencies: - '@vue/compiler-dom': 3.5.12 - '@vue/compiler-sfc': 3.5.12 - '@vue/runtime-dom': 3.5.12 - '@vue/server-renderer': 3.5.12(vue@3.5.12(typescript@5.6.3)) - '@vue/shared': 3.5.12 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-sfc': 3.5.13 + '@vue/runtime-dom': 3.5.13 + '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.8.2)) + '@vue/shared': 3.5.13 optionalDependencies: - typescript: 5.6.3 + typescript: 5.8.2 + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 - which-boxed-primitive@1.0.2: + which-collection@1.0.2: dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 - which-typed-array@1.1.15: + which-typed-array@1.1.19: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 has-tostringtag: 1.0.2 which@1.3.1: @@ -3785,20 +3818,6 @@ snapshots: word-wrap@1.2.5: {} - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - xml-name-validator@4.0.0: {} - yaml@2.6.0: {} - yocto-queue@0.1.0: {} diff --git a/Frontend/src/styles/tailwind.css b/Frontend/src/styles/tailwind.css index 1aa3f39..5e1ee4d 100644 --- a/Frontend/src/styles/tailwind.css +++ b/Frontend/src/styles/tailwind.css @@ -1,6 +1,4 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; +@import "tailwindcss"; .btn { @apply font-bold py-2 px-4 rounded; diff --git a/Frontend/vite.config.ts b/Frontend/vite.config.ts index 109c18c..0b6790a 100644 --- a/Frontend/vite.config.ts +++ b/Frontend/vite.config.ts @@ -2,12 +2,11 @@ import { fileURLToPath, URL } from 'node:url' import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' -import tailwindcss from "tailwindcss"; -import autoprefixer from "autoprefixer"; +import tailwindcss from "@tailwindcss/vite"; // https://vitejs.dev/config/ export default defineConfig({ - plugins: [vue()], + plugins: [vue(), tailwindcss()], server: { port: 9090 }, @@ -17,11 +16,6 @@ export default defineConfig({ }, extensions: ['.js', '.json', '.jsx', '.mjs', '.ts', '.tsx', '.vue'] }, - css: { - postcss: { - plugins: [tailwindcss, autoprefixer] - } - }, build: { outDir: '../Backend/bootstrap/src/main/resources/static' } diff --git a/README.md b/README.md index b67aeaf..a151704 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ cd Frontend # Install NPM dependencies pnpm i # Start dev server -pnpm serve +pnpm dev # Build for prod pnpm build # Run linter diff --git a/build.gradle.kts b/build.gradle.kts index 616ecf0..37a2735 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,8 +7,8 @@ buildscript { plugins { alias(libs.plugins.kotlin.jvm) apply false alias(libs.plugins.kotlin.serialization) apply false - alias(libs.plugins.kover) - alias(libs.plugins.versions) + alias(testLibs.plugins.kover) + alias(testLibs.plugins.versions) } allprojects { @@ -32,7 +32,7 @@ kover { reports { filters { excludes { - packages("dev.honegger.jasstracker.data.database", "dev.honegger.jasstracker.bootstrap.*") + packages("dev.honegger.jasstracker.data.database", "dev.honegger.jasstracker.bootstrap", "dev.honegger.jasstracker.bootstrap.plugins") } } verify { diff --git a/docker-compose.yml b/docker-compose.yml index 6c1453b..40a3c01 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: '3.8' - volumes: postgresql_data: @@ -21,7 +19,7 @@ services: DB_PASSWORD: password database: - image: postgres:16-alpine + image: postgres:17-alpine restart: on-failure environment: POSTGRES_USER: jasstracker diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..dccfe15 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,45 @@ +[versions] +kotlin = "2.1.20" +ktor = "3.1.1" +logback = "1.5.18" +shadow = "8.1.1" +kotlinxDatetime = "0.6.2" +kotlinLogging = "7.0.5" +flyway = "11.5.0" +postgresql = "42.7.5" +jooq = "3.20.2" +jooqPlugin = "10.0" +javaJwt = "4.5.0" # Equal to java-jwt-version from https://github.com/ktorio/ktor/blob/main/gradle/libs.versions.toml +slf4j = "2.0.13" +argon2 = "2.12" + +[libraries] +ktor-server-core = { module = "io.ktor:ktor-server-core-jvm", version.ref = "ktor" } +ktor-server-host-common = { module = "io.ktor:ktor-server-host-common-jvm", version.ref = "ktor" } +ktor-server-auto-head-response = { module = "io.ktor:ktor-server-auto-head-response-jvm", version.ref = "ktor" } +ktor-server-call-logging = { module = "io.ktor:ktor-server-call-logging", version.ref = "ktor" } +ktor-server-content-negotiation = { module = "io.ktor:ktor-server-content-negotiation-jvm", version.ref = "ktor" } +ktor-server-cors = { module = "io.ktor:ktor-server-cors-jvm", version.ref = "ktor" } +ktor-serialization-kotlinx-json = { module = "io.ktor:ktor-serialization-kotlinx-json-jvm", version.ref = "ktor" } +ktor-server-cio = { module = "io.ktor:ktor-server-cio", version.ref = "ktor" } +ktor-client-content-negotiation = { module = "io.ktor:ktor-client-content-negotiation", version.ref = "ktor" } +ktor-server-auth = { module = "io.ktor:ktor-server-auth", version.ref = "ktor" } +ktor-server-auth-jwt = { module = "io.ktor:ktor-server-auth-jwt", version.ref = "ktor" } +ktor-server-status-pages = { module = "io.ktor:ktor-server-status-pages", version.ref = "ktor" } +kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime-jvm", version.ref = "kotlinxDatetime" } +logback = { module = "ch.qos.logback:logback-classic", version.ref = "logback" } +slf4j = { module = "org.slf4j:slf4j-simple", version.ref = "slf4j" } +kotlin-logging = { module = "io.github.oshai:kotlin-logging-jvm", version.ref = "kotlinLogging" } +flyway-core = { module = "org.flywaydb:flyway-core", version.ref = "flyway" } +flyway-postgresql = { module = "org.flywaydb:flyway-database-postgresql", version.ref = "flyway" } +postgresql = { module = "org.postgresql:postgresql", version.ref = "postgresql" } +jooq = { module = "org.jooq:jooq", version.ref = "jooq" } +java-jwt = { module = "com.auth0:java-jwt", version.ref = "javaJwt" } +argon2-jvm = { module = "de.mkammerer:argon2-jvm", version.ref = "argon2" } +kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" } + +[plugins] +kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } +kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } +shadow = { id = "com.github.johnrengelman.shadow", version.ref = "shadow" } +jooq = { id = "nu.studer.jooq", version.ref = "jooqPlugin" } diff --git a/gradle/test-libs.versions.toml b/gradle/test-libs.versions.toml new file mode 100644 index 0000000..e1d285a --- /dev/null +++ b/gradle/test-libs.versions.toml @@ -0,0 +1,19 @@ +[versions] +kotlin = "2.1.20" +ktor = "3.1.2" +mockk = "1.13.17" +testcontainers = "1.20.6" +kover = "0.9.1" +versions = "0.52.0" + +[libraries] +kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test-junit5", version.ref = "kotlin" } +ktor-server-tests = { module = "io.ktor:ktor-server-test-host", version.ref = "ktor" } +mockk = { module = "io.mockk:mockk", version.ref = "mockk" } +testcontainers = { module = "org.testcontainers:testcontainers", version.ref = "testcontainers" } +testcontainers-junit = { module = "org.testcontainers:junit-jupiter", version.ref = "testcontainers" } +testcontainers-postgresql = { module = "org.testcontainers:postgresql", version.ref = "testcontainers" } + +[plugins] +kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" } +versions = { id = "com.github.ben-manes.versions", version.ref = "versions" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 94113f2..37f853b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/settings.gradle.kts b/settings.gradle.kts index 2a54873..95a8845 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -6,71 +6,13 @@ include(":Backend:web-api") include(":Backend:security") plugins { - id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0" + id("org.gradle.toolchains.foojay-resolver-convention") version "0.9.0" } dependencyResolutionManagement { versionCatalogs { - val kotlin = "2.1.0-RC" - val mockk = "1.13.13" - val ktor = "3.0.1" - val logback = "1.5.12" - val shadow = "8.1.1" - val kotlinxDatetime = "0.6.1" - val kotlinLogging = "6.0.9" - val flyway = "10.20.1" - val postgresql = "42.7.4" - val jooq = "3.19.8" - val jooqPlugin = "8.2.1" - val kover = "0.8.3" - val testcontainers = "1.20.3" - val javaJwt = "4.4.0" // Equal to java-jwt-version from https://github.com/ktorio/ktor/blob/main/gradle/libs.versions.toml - val slf4j = "2.0.13" - val argon2 = "2.11" - val versions = "0.51.0" - - create("libs") { - library("ktor-server-core", "io.ktor", "ktor-server-core-jvm").version(ktor) - library("ktor-server-host-common", "io.ktor", "ktor-server-host-common-jvm").version(ktor) - library("ktor-server-auto-head-response", "io.ktor", "ktor-server-auto-head-response-jvm").version(ktor) - library("ktor-server-call-logging", "io.ktor", "ktor-server-call-logging").version(ktor) - library("ktor-server-content-negotiation", "io.ktor", "ktor-server-content-negotiation-jvm").version(ktor) - library("ktor-server-cors", "io.ktor", "ktor-server-cors-jvm").version(ktor) - library("ktor-serialization-kotlinx-json", "io.ktor", "ktor-serialization-kotlinx-json-jvm").version(ktor) - library("ktor-server-netty", "io.ktor", "ktor-server-netty-jvm").version(ktor) - library("ktor-client-content-negotiation", "io.ktor", "ktor-client-content-negotiation").version(ktor) - library("ktor-server-auth", "io.ktor", "ktor-server-auth").version(ktor) - library("ktor-server-auth-jwt", "io.ktor", "ktor-server-auth-jwt").version(ktor) - library("ktor-server-status-pages", "io.ktor", "ktor-server-status-pages").version(ktor) - library("kotlinx-datetime", "org.jetbrains.kotlinx", "kotlinx-datetime-jvm").version(kotlinxDatetime) - library("logback", "ch.qos.logback", "logback-classic").version(logback) - library("slf4j", "org.slf4j", "slf4j-simple").version(slf4j) - library("kotlin-logging", "io.github.oshai", "kotlin-logging-jvm").version(kotlinLogging) - library("flyway-core", "org.flywaydb", "flyway-core").version(flyway) - library("flyway-postgresql", "org.flywaydb", "flyway-database-postgresql").version(flyway) - library("postgresql", "org.postgresql", "postgresql").version(postgresql) - library("jooq", "org.jooq", "jooq").version(jooq) - library("java-jwt", "com.auth0", "java-jwt").version(javaJwt) - library("argon2-jvm-nolibs", "de.mkammerer", "argon2-jvm-nolibs").version(argon2) - library("argon2-jvm", "de.mkammerer", "argon2-jvm").version(argon2) - library("kotlin-reflect", "org.jetbrains.kotlin", "kotlin-reflect").version(kotlin) - - version("jooq", jooq) - - plugin("kotlin-jvm", "org.jetbrains.kotlin.jvm").version(kotlin) - plugin("kotlin-serialization", "org.jetbrains.kotlin.plugin.serialization").version(kotlin) - plugin("shadow", "com.github.johnrengelman.shadow").version(shadow) - plugin("jooq", "nu.studer.jooq").version(jooqPlugin) - plugin("kover", "org.jetbrains.kotlinx.kover").version(kover) - plugin("versions", "com.github.ben-manes.versions").version(versions) - } create("testLibs") { - library("kotlin-test", "org.jetbrains.kotlin", "kotlin-test-junit5").version(kotlin) - library("ktor-server-tests", "io.ktor", "ktor-server-test-host").version(ktor) - library("mockk", "io.mockk", "mockk").version(mockk) - library("testcontainers", "org.testcontainers", "testcontainers").version(testcontainers) - library("testcontainers-junit", "org.testcontainers", "junit-jupiter").version(testcontainers) - library("testcontainers-postgresql", "org.testcontainers", "postgresql").version(testcontainers) + from(files("gradle/test-libs.versions.toml")) } } }