From e8d27f85f2d424cd22d1dbede213c29112ea453f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amalie=20Mans=C3=A5ker?= Date: Fri, 4 Aug 2023 15:04:01 +0200 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20=20Refaktorere=20tester=20?= =?UTF-8?q?og=20kode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Hege Haavaldsen --- .../helse/sprik/db/FeilmeldingRepository.kt | 23 +- .../no/nav/helse/sprik/modell/Feilmelding.kt | 2 +- .../no/nav/helse/sprik/FeilmeldingTest.kt | 129 +++++++--- frontend/yarn.lock | 239 ++++++++++++------ 4 files changed, 273 insertions(+), 120 deletions(-) diff --git a/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt b/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt index 66c3ca8..0b7430f 100644 --- a/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt +++ b/backend/src/main/kotlin/no/nav/helse/sprik/db/FeilmeldingRepository.kt @@ -25,16 +25,15 @@ class FeilmeldingRepository { it[FeilmeldingTable.dato] = feilmelding.dato it[FeilmeldingTable.arbeidsstatus] = feilmelding.arbeidsstatus it[FeilmeldingTable.haster] = feilmelding.haster - - if (feilmelding.aktorid != null){ - it[FeilmeldingTable.aktorid] = feilmelding.aktorid + feilmelding.aktorid?.also { aktorid -> + it[FeilmeldingTable.aktorid] = aktorid } } } } } - private fun radTilFeilmelding(rad: ResultRow) = Feilmelding( + internal fun radTilFeilmelding(rad: ResultRow) = Feilmelding( id = rad[id], tittel = rad[tittel], beskrivelse = rad[beskrivelse], @@ -50,7 +49,7 @@ class FeilmeldingRepository { } fun hentSokteFeilmeldinger(sokeord: String): List = transaction { - val sok = "%${sokeord.lowercase()}%" + val sok = "%${sokeord.lowercase().trim()}%" FeilmeldingTable.select( (FeilmeldingTable.tittel.lowerCase() like sok) @@ -60,14 +59,12 @@ class FeilmeldingRepository { } fun oppdaterFeilmelding(feilmelding: Feilmelding) = transaction { - val id = feilmelding.id - if (id != null) { - FeilmeldingTable.update({ FeilmeldingTable.id eq id }) { - it[FeilmeldingTable.tittel] = feilmelding.tittel - it[FeilmeldingTable.beskrivelse] = feilmelding.beskrivelse - it[FeilmeldingTable.arbeidsstatus] = feilmelding.arbeidsstatus - it[FeilmeldingTable.haster] = feilmelding.haster - } + checkNotNull(feilmelding.id) { "Id kan ikke være null når vi skal oppdatere feilmelding" } + FeilmeldingTable.update({ FeilmeldingTable.id eq feilmelding.id }) { + it[FeilmeldingTable.tittel] = feilmelding.tittel + it[FeilmeldingTable.beskrivelse] = feilmelding.beskrivelse + it[FeilmeldingTable.arbeidsstatus] = feilmelding.arbeidsstatus + it[FeilmeldingTable.haster] = feilmelding.haster } } diff --git a/backend/src/main/kotlin/no/nav/helse/sprik/modell/Feilmelding.kt b/backend/src/main/kotlin/no/nav/helse/sprik/modell/Feilmelding.kt index 04c09fc..1382151 100644 --- a/backend/src/main/kotlin/no/nav/helse/sprik/modell/Feilmelding.kt +++ b/backend/src/main/kotlin/no/nav/helse/sprik/modell/Feilmelding.kt @@ -13,7 +13,7 @@ import java.time.LocalDateTime * Objekt for feilmeldinger i Sprik * */ @Serializable -class Feilmelding( +data class Feilmelding( val id: Int?, val tittel: String, val beskrivelse: String, diff --git a/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt b/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt index 7e7ba5f..06b03ee 100644 --- a/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt +++ b/backend/src/test/kotlin/no/nav/helse/sprik/FeilmeldingTest.kt @@ -8,20 +8,30 @@ import no.nav.helse.sprik.modell.Feilmelding import org.jetbrains.exposed.sql.deleteAll import org.jetbrains.exposed.sql.selectAll import org.jetbrains.exposed.sql.transactions.transaction -import org.junit.jupiter.api.AfterEach -import org.junit.jupiter.api.BeforeAll -import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.* import org.junit.jupiter.api.Test -import org.junit.jupiter.api.TestInstance import java.time.LocalDateTime import kotlin.test.assertEquals import kotlin.test.assertFalse +import kotlin.test.assertNull import org.jetbrains.exposed.sql.Database as ExposedDatabase @TestInstance(TestInstance.Lifecycle.PER_CLASS) class FeilmeldingTest { private val database = Database(dbconfig()).configureFlyway() private val feilmeldingRepository = FeilmeldingRepository() + private companion object { + val feilmelding = Feilmelding( + null, + "Test", + "Testesen", + LocalDateTime.of(2023,1,1,8,0), + 0, + true, + null, + null + ) + } fun getId() = transaction { FeilmeldingTable.selectAll().single()[FeilmeldingTable.id] @@ -32,12 +42,6 @@ class FeilmeldingTest { ExposedDatabase.connect(database.dataSource) } - @BeforeEach - fun lagreFeilmelding() { - val feilmelding = Feilmelding(null, "Test", "Testesen", LocalDateTime.of(2023,1,1,8,0), 0, true, null, null) - feilmeldingRepository.lagre(feilmelding) - } - @AfterEach fun wipe() { transaction { @@ -45,9 +49,9 @@ class FeilmeldingTest { } } - @Test fun `Sett opp testdatabasen riktig`(){ + feilmeldingRepository.lagre(feilmelding) transaction { assertEquals(1, FeilmeldingTable.selectAll().map { it @@ -56,59 +60,94 @@ class FeilmeldingTest { } @Test - fun `Lagrer feilmelding i databasen`() { + fun `Lagrer feilmelding uten aktørid i databasen`() { + feilmeldingRepository.lagre(feilmelding) transaction { - val actual = FeilmeldingTable.selectAll().single() - assertEquals("Test", actual[FeilmeldingTable.tittel]) - assertEquals("Testesen", actual[FeilmeldingTable.beskrivelse]) - assertEquals(LocalDateTime.of(2023, 1, 1, 8, 0), actual[FeilmeldingTable.dato]) - assertEquals(1, actual[FeilmeldingTable.id]) + val forventetFeilmelding = Feilmelding( + getId(), + "Test", + "Testesen", + LocalDateTime.of(2023,1,1,8,0), + 0, + true, + null, + null + ) + val faktiskFeilmelding = feilmeldingRepository.radTilFeilmelding(FeilmeldingTable.selectAll().single()) + assertEquals(forventetFeilmelding, faktiskFeilmelding) } } + @Test + fun `Lagrer feilmelding med aktørid i databasen`() { + feilmeldingRepository.lagre(feilmelding.copy(aktorid = 12345678)) + transaction { + val forventetFeilmelding = Feilmelding( + getId(), + "Test", + "Testesen", + LocalDateTime.of(2023,1,1,8,0), + 0, + true, + null, + 12345678 + ) + val faktiskFeilmelding = feilmeldingRepository.radTilFeilmelding(FeilmeldingTable.selectAll().single()) + assertEquals(forventetFeilmelding, faktiskFeilmelding) + } + } + + @Test fun `Henter alle feilmeldinger i databasen`() { + feilmeldingRepository.lagre(feilmelding) + feilmeldingRepository.lagre(feilmelding) transaction { val resultat: List = feilmeldingRepository.hentAlleFeilmeldinger() - val actual = FeilmeldingTable.selectAll() - assertEquals(actual.map { it }.size, resultat.size) - assertEquals("Test", resultat[0].tittel) - assertEquals("Testesen", resultat[0].beskrivelse) - assertEquals(LocalDateTime.of(2023, 1, 1, 8, 0), resultat[0].dato) + val forventet = FeilmeldingTable.selectAll().map { it } + assertEquals(forventet.size, resultat.size) } } @Test fun `Henter feilmeldinger som matcher søk`() { + feilmeldingRepository.lagre(feilmelding) val sokeresultat: List = feilmeldingRepository.hentSokteFeilmeldinger("Test") assertEquals(1, sokeresultat.size) - assertEquals("Test", sokeresultat[0].tittel) - assertEquals("Testesen", sokeresultat[0].beskrivelse) } @Test - fun `Henter feilmeldinger som har søkestreng som substreng`() { + fun `Henter alle feilmeldinger som har søkestreng som substreng`() { + feilmeldingRepository.lagre(feilmelding) + feilmeldingRepository.lagre(feilmelding.copy(tittel = "Heste")) val sokeresultat: List = feilmeldingRepository.hentSokteFeilmeldinger("este") - assertEquals(1, sokeresultat.size) - assertEquals("Test", sokeresultat[0].tittel) - assertEquals("Testesen", sokeresultat[0].beskrivelse) + assertEquals(2, sokeresultat.size) } @Test fun `Finner ingen feilmeldinger som matcher søk`() { + feilmeldingRepository.lagre(feilmelding) val sokeresultat: List = feilmeldingRepository.hentSokteFeilmeldinger("abrakadabra") assertEquals(0, sokeresultat.size) } @Test fun `Søk er ikke case sensitivt`() { + feilmeldingRepository.lagre(feilmelding) val sokeresultat: List = feilmeldingRepository.hentSokteFeilmeldinger("test") assertEquals(1, sokeresultat.size) - assertEquals("Test", sokeresultat[0].tittel) - assertEquals("Testesen", sokeresultat[0].beskrivelse) } + + @Test + fun `Søk er ikke mellomrom-sensitiv`() { + feilmeldingRepository.lagre(feilmelding) + val sokeresultat: List = feilmeldingRepository.hentSokteFeilmeldinger("Test ") + assertEquals(1, sokeresultat.size) + } + @Test fun `Oppdaterer en feilmelding`() { + feilmeldingRepository.lagre(feilmelding) val oppdatertFeilmelding = Feilmelding(getId(), "Oppdatert", "Oppdatert feil", LocalDateTime.of(2023, 1, 1, 8, 0), 1, false, null, null) feilmeldingRepository.oppdaterFeilmelding(oppdatertFeilmelding) val actualOppdatert = transaction { FeilmeldingTable.selectAll().single() } @@ -118,10 +157,36 @@ class FeilmeldingTest { assertEquals(1, actualOppdatert[FeilmeldingTable.arbeidsstatus]) } + @Test + fun `Prøver å oppdatere feilmelding uten id`() { + feilmeldingRepository.lagre(feilmelding) + val oppdatertFeilmelding = Feilmelding(null, "Oppdatert", "Oppdatert feil", LocalDateTime.of(2023, 1, 1, 8, 0), 1, false, null, null) + assertThrows { + feilmeldingRepository.oppdaterFeilmelding(oppdatertFeilmelding) + } + } + + @Test + fun `Kommentar er tom når feilmelding opprettes`() { + feilmeldingRepository.lagre(feilmelding) + val initiellKommentar = transaction { FeilmeldingTable.selectAll().single()[FeilmeldingTable.kommentar] } + assertNull(initiellKommentar) + } + @Test fun `Oppdaterer feilmeldingskommentar`() { + feilmeldingRepository.lagre(feilmelding) feilmeldingRepository.oppdaterKommentar(getId(), "Feilen fikses nå!") - val actual = transaction { FeilmeldingTable.selectAll().single() } - assertEquals("Feilen fikses nå!", actual[FeilmeldingTable.kommentar]) + val oppdatertKommentar = transaction { FeilmeldingTable.selectAll().single()[FeilmeldingTable.kommentar] } + assertEquals("Feilen fikses nå!", oppdatertKommentar) + } + + @Test + fun `Ny kommentar skal overskrive gammel`() { + feilmeldingRepository.lagre(feilmelding) + feilmeldingRepository.oppdaterKommentar(getId(), "Initiell kommentar") + feilmeldingRepository.oppdaterKommentar(getId(), "Oppdatert kommentar") + val oppdatertKommentar = transaction { FeilmeldingTable.selectAll().single()[FeilmeldingTable.kommentar] } + assertEquals("Oppdatert kommentar", oppdatertKommentar) } } \ No newline at end of file diff --git a/frontend/yarn.lock b/frontend/yarn.lock index d3d698d..e6bf167 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -32,7 +32,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz" integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.22.5": +"@babel/core@^7.22.5": version "7.22.9" resolved "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz" integrity sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w== @@ -281,11 +281,116 @@ debug "^3.1.0" lodash.once "^4.1.1" +"@esbuild/android-arm64@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.14.tgz#d86197e6ff965a187b2ea2704915f596a040ed4b" + integrity sha512-rZ2v+Luba5/3D6l8kofWgTnqE+qsC/L5MleKIKFyllHTKHrNBMqeRCnZI1BtRx8B24xMYxeU32iIddRQqMsOsg== + +"@esbuild/android-arm@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.14.tgz#ed59310c0e6ec6df8b17e363d33a954ecf870f4f" + integrity sha512-blODaaL+lngG5bdK/t4qZcQvq2BBqrABmYwqPPcS5VRxrCSGHb9R/rA3fqxh7R18I7WU4KKv+NYkt22FDfalcg== + +"@esbuild/android-x64@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.14.tgz#e01b387f1db3dd2596a44e8c577aa2609750bc82" + integrity sha512-qSwh8y38QKl+1Iqg+YhvCVYlSk3dVLk9N88VO71U4FUjtiSFylMWK3Ugr8GC6eTkkP4Tc83dVppt2n8vIdlSGg== + "@esbuild/darwin-arm64@0.18.14": version "0.18.14" resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.14.tgz" integrity sha512-9Hl2D2PBeDYZiNbnRKRWuxwHa9v5ssWBBjisXFkVcSP5cZqzZRFBUWEQuqBHO4+PKx4q4wgHoWtfQ1S7rUqJ2Q== +"@esbuild/darwin-x64@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.14.tgz#bc1884d9f812647e2078fa4c46e4bffec53c7c09" + integrity sha512-ZnI3Dg4ElQ6tlv82qLc/UNHtFsgZSKZ7KjsUNAo1BF1SoYDjkGKHJyCrYyWjFecmXpvvG/KJ9A/oe0H12odPLQ== + +"@esbuild/freebsd-arm64@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.14.tgz#1fa876f627536b5037f4aed90545ccc330fd509b" + integrity sha512-h3OqR80Da4oQCIa37zl8tU5MwHQ7qgPV0oVScPfKJK21fSRZEhLE4IIVpmcOxfAVmqjU6NDxcxhYaM8aDIGRLw== + +"@esbuild/freebsd-x64@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.14.tgz#effaa4c5d7bab695b5e6fae459eaf49121fbc7c3" + integrity sha512-ha4BX+S6CZG4BoH9tOZTrFIYC1DH13UTCRHzFc3GWX74nz3h/N6MPF3tuR3XlsNjMFUazGgm35MPW5tHkn2lzQ== + +"@esbuild/linux-arm64@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.14.tgz#24bb4b1836fe7900e1ffda78aa6875a4eb500e3a" + integrity sha512-IXORRe22In7U65NZCzjwAUc03nn8SDIzWCnfzJ6t/8AvGx5zBkcLfknI+0P+hhuftufJBmIXxdSTbzWc8X/V4w== + +"@esbuild/linux-arm@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.14.tgz#7f3490320a4627f4c850a8613385bdf3ffb82285" + integrity sha512-5+7vehI1iqru5WRtJyU2XvTOvTGURw3OZxe3YTdE9muNNIdmKAVmSHpB3Vw2LazJk2ifEdIMt/wTWnVe5V98Kg== + +"@esbuild/linux-ia32@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.14.tgz#91f1e82f92ffaff8d72f9d90a0f209022529031a" + integrity sha512-BfHlMa0nibwpjG+VXbOoqJDmFde4UK2gnW351SQ2Zd4t1N3zNdmUEqRkw/srC1Sa1DRBE88Dbwg4JgWCbNz/FQ== + +"@esbuild/linux-loong64@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.14.tgz#cd5cb806af6361578800af79919c5cfd53401a17" + integrity sha512-j2/Ex++DRUWIAaUDprXd3JevzGtZ4/d7VKz+AYDoHZ3HjJzCyYBub9CU1wwIXN+viOP0b4VR3RhGClsvyt/xSw== + +"@esbuild/linux-mips64el@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.14.tgz#c635b6c0b8b4f9b4bff3aaafad59fa8cc07b354a" + integrity sha512-qn2+nc+ZCrJmiicoAnJXJJkZWt8Nwswgu1crY7N+PBR8ChBHh89XRxj38UU6Dkthl2yCVO9jWuafZ24muzDC/A== + +"@esbuild/linux-ppc64@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.14.tgz#9b2bb80b7e30667a81ffbcddb74ad8e79330cc94" + integrity sha512-aGzXzd+djqeEC5IRkDKt3kWzvXoXC6K6GyYKxd+wsFJ2VQYnOWE954qV2tvy5/aaNrmgPTb52cSCHFE+Z7Z0yg== + +"@esbuild/linux-riscv64@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.14.tgz#9520d34a4ecbf404e56f4cebdcc686c83b66babc" + integrity sha512-8C6vWbfr0ygbAiMFLS6OPz0BHvApkT2gCboOGV76YrYw+sD/MQJzyITNsjZWDXJwPu9tjrFQOVG7zijRzBCnLw== + +"@esbuild/linux-s390x@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.14.tgz#3987e30f807b8faf20815b2b2f0a4919084d4e7c" + integrity sha512-G/Lf9iu8sRMM60OVGOh94ZW2nIStksEcITkXdkD09/T6QFD/o+g0+9WVyR/jajIb3A0LvBJ670tBnGe1GgXMgw== + +"@esbuild/linux-x64@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.14.tgz#51c727dc7045c47ab8c08fe6c09cda3e170d99f3" + integrity sha512-TBgStYBQaa3EGhgqIDM+ECnkreb0wkcKqL7H6m+XPcGUoU4dO7dqewfbm0mWEQYH3kzFHrzjOFNpSAVzDZRSJw== + +"@esbuild/netbsd-x64@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.14.tgz#4677bf88b489d5ffe1b5f0abbb85812996455479" + integrity sha512-stvCcjyCQR2lMTroqNhAbvROqRjxPEq0oQ380YdXxA81TaRJEucH/PzJ/qsEtsHgXlWFW6Ryr/X15vxQiyRXVg== + +"@esbuild/openbsd-x64@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.14.tgz#939902897e533162450f69266f32ef1325ba98fd" + integrity sha512-apAOJF14CIsN5ht1PA57PboEMsNV70j3FUdxLmA2liZ20gEQnfTG5QU0FhENo5nwbTqCB2O3WDsXAihfODjHYw== + +"@esbuild/sunos-x64@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.14.tgz#a50721d47b93586249bd63250bd4b7496fc9957b" + integrity sha512-fYRaaS8mDgZcGybPn2MQbn1ZNZx+UXFSUoS5Hd2oEnlsyUcr/l3c6RnXf1bLDRKKdLRSabTmyCy7VLQ7VhGdOQ== + +"@esbuild/win32-arm64@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.14.tgz#d8531d370e6fd0e0e40f40e016f996bbe4fd5ebf" + integrity sha512-1c44RcxKEJPrVj62XdmYhxXaU/V7auELCmnD+Ri+UCt+AGxTvzxl9uauQhrFso8gj6ZV1DaORV0sT9XSHOAk8Q== + +"@esbuild/win32-ia32@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.14.tgz#dcbf75e4e65d2921cd4be14ed67cec7360440e46" + integrity sha512-EXAFttrdAxZkFQmpvcAQ2bywlWUsONp/9c2lcfvPUhu8vXBBenCXpoq9YkUvVP639ld3YGiYx0YUQ6/VQz3Maw== + +"@esbuild/win32-x64@0.18.14": + version "0.18.14" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.14.tgz#43f66032e0f189b6f394d4dbc903a188bb0c969f" + integrity sha512-K0QjGbcskx+gY+qp3v4/940qg8JitpXbdxFhRDA1aYoNaPff88+aEwoq45aqJ+ogpxQxmU0ZTjgnrQD/w8iiUg== + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" @@ -410,16 +515,16 @@ resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.15" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - "@jridgewell/sourcemap-codec@1.4.14": version "1.4.14" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.18" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz" @@ -475,7 +580,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -689,7 +794,7 @@ resolved "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz" integrity sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q== -"@types/node@*", "@types/node@^14.14.31", "@types/node@>= 14": +"@types/node@*", "@types/node@^14.14.31": version "14.18.53" resolved "https://registry.npmjs.org/@types/node/-/node-14.18.53.tgz" integrity sha512-soGmOpVBUq+gaBMwom1M+krC/NNbWlosh4AtGA03SyWNDiqSKtwp7OulO1M6+mg8YkHMvJ/y0AkCeO8d1hNb7A== @@ -711,7 +816,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^17.0.30 || ^18.0.0", "@types/react@^18.2.14": +"@types/react@*", "@types/react@^18.2.14": version "18.2.15" resolved "https://registry.npmjs.org/@types/react/-/react-18.2.15.tgz" integrity sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA== @@ -780,7 +885,7 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.61.0": +"@typescript-eslint/parser@^5.61.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz" integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== @@ -863,7 +968,7 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.9.0: +acorn@^8.9.0: version "8.10.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== @@ -984,7 +1089,7 @@ asn1@~0.2.3: dependencies: safer-buffer "~2.1.0" -assert-plus@^1.0.0, assert-plus@1.0.0: +assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== @@ -1031,11 +1136,6 @@ aws4@^1.8.0: resolved "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz" integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== -"axe-core@^3 || ^4": - version "4.7.2" - resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz" - integrity sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g== - axios@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz" @@ -1097,7 +1197,7 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.21.5, browserslist@^4.21.9, "browserslist@>= 4.21.0": +browserslist@^4.21.5, browserslist@^4.21.9: version "4.21.9" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz" integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== @@ -1258,16 +1358,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + colord@^2.9.3: version "2.9.3" resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" @@ -1374,7 +1474,7 @@ cypress-slow-down@^1.2.1: dependencies: cypress-plugin-config "^1.0.0" -"cypress@^10 || ^11 || ^12", cypress@^12.17.2: +cypress@^12.17.2: version "12.17.2" resolved "https://registry.npmjs.org/cypress/-/cypress-12.17.2.tgz" integrity sha512-hxWAaWbqQBzzMuadSGSuQg5PDvIGOovm6xm0hIfpCVcORsCAj/gF2p0EvfnJ4f+jK2PCiDgP6D2eeE9/FK4Mjg== @@ -1429,7 +1529,7 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -date-fns@^2.28.0, date-fns@2.29.3: +date-fns@2.29.3: version "2.29.3" resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz" integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== @@ -1535,7 +1635,7 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enquirer@^2.3.6, "enquirer@>= 2.3.0 < 3": +enquirer@^2.3.6: version "2.3.6" resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -1628,7 +1728,7 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz" integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== -eslint@*, "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", eslint@^8.44.0, eslint@>=7: +eslint@^8.44.0: version "8.45.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz" integrity sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw== @@ -1769,16 +1869,16 @@ extract-zip@2.0.1: optionalDependencies: "@types/yauzl" "^2.9.1" -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" @@ -1974,18 +2074,6 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@7.1.6: version "7.1.6" resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" @@ -1998,6 +2086,18 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + global-dirs@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz" @@ -2169,16 +2269,16 @@ inherits@2: resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@^1.3.5: - version "1.3.8" - resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - ini@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" @@ -2620,16 +2720,16 @@ minimist@^1.2.8: resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - ms@2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + mz@^2.7.0: version "2.7.0" resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" @@ -2879,16 +2979,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.0.0, postcss@^8.2.14, postcss@^8.4.21, postcss@^8.4.23, postcss@>=8.0.9: - version "8.4.26" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz" - integrity sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw== - dependencies: - nanoid "^3.3.6" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -postcss@^8.1.0, postcss@8.4.6: +postcss@8.4.6: version "8.4.6" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz" integrity sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA== @@ -2897,7 +2988,7 @@ postcss@^8.1.0, postcss@8.4.6: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.3.3, postcss@^8.4.25: +postcss@^8.4.23, postcss@^8.4.25: version "8.4.26" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz" integrity sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw== @@ -2934,16 +3025,16 @@ prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.13.1" -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - proxy-from-env@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz" integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A== +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + psl@^1.1.28: version "1.9.0" resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" @@ -2984,7 +3075,7 @@ react-day-picker@8.3.4: resolved "https://registry.npmjs.org/react-day-picker/-/react-day-picker-8.3.4.tgz" integrity sha512-UuCbfZ69DhQmd+UhEv8nCPp5PxMk7ioNTuOLMlU0X7q3wd7o8TKDdsjduQoeBYTPTMS3LFdbA1qqbrIpRHo/Vg== -"react-dom@^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18", "react-dom@^16.8 || ^17.0 || ^18.0", react-dom@^18.2.0, react-dom@>=16.8, react-dom@>=16.8.0: +react-dom@^18.2.0: version "18.2.0" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== @@ -3037,7 +3128,7 @@ react-router@6.14.2: dependencies: "@remix-run/router" "1.7.2" -"react@^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18", "react@^16.11.0 || ^17.0.0 || ^18.0.0", "react@^16.8 || ^17.0 || ^18.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.0 || ^18.0.0", react@^18.2.0, react@>=16.8, react@>=16.8.0: +react@^18.2.0: version "18.2.0" resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== @@ -3608,7 +3699,7 @@ type-fest@^1.0.1, type-fest@^1.2.1, type-fest@^1.2.2: resolved "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz" integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== -typescript@^5.0.2, "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta": +typescript@^5.0.2: version "5.1.6" resolved "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz" integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== @@ -3670,7 +3761,7 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vite@^4.2.0, vite@^4.4.0: +vite@^4.4.0: version "4.4.4" resolved "https://registry.npmjs.org/vite/-/vite-4.4.4.tgz" integrity sha512-4mvsTxjkveWrKDJI70QmelfVqTm+ihFAb6+xf4sjEU2TmUCTlVX87tmg/QooPEMQb/lM9qGHT99ebqPziEd3wg==