diff --git a/backend/build.sbt b/backend/build.sbt index 8c7b0389..1e9eabb5 100644 --- a/backend/build.sbt +++ b/backend/build.sbt @@ -15,7 +15,7 @@ ThisBuild / semanticdbEnabled := true val utils = (project in file("utils")) .settings(Settings.common) .settings( - libraryDependencies ++= Dependencies.zio ++ Dependencies.scalatest ++ Dependencies.metrics + libraryDependencies ++= Dependencies.cats ++ Dependencies.zio ++ Dependencies.scalatest ++ Dependencies.metrics ) val circeUtils = (project in file("circe-utils")) @@ -67,7 +67,7 @@ val mockingbird = (project in file("mockingbird")) "com.lihaoyi" %% "scalatags" % "0.9.1", "tf.tofu" %% "derevo-circe" % Versions.derevo, "org.webjars.npm" % "swagger-ui-dist" % "3.32.5", - "eu.timepit" %% "fs2-cron-core" % "0.2.2", + "eu.timepit" %% "fs2-cron-cron4s" % "0.9.0", "com.softwaremill.sttp.client4" %% "zio" % Versions.sttp, "com.softwaremill.sttp.client4" %% "circe" % Versions.sttp, "org.apache.tika" % "tika-core" % "2.1.0", @@ -78,7 +78,10 @@ val mockingbird = (project in file("mockingbird")) "com.github.os72" % "protobuf-dynamic" % "1.0.1", "com.github.geirolz" %% "advxml-core" % "2.5.1", "com.github.geirolz" %% "advxml-xpath" % "2.5.1", - "io.estatico" %% "newtype" % "0.4.4" + "io.estatico" %% "newtype" % "0.4.4", + "org.mozilla" % "rhino" % "1.7.14", + "org.graalvm.polyglot" % "js" % "23.1.2", + "org.slf4j" % "slf4j-api" % "1.7.30" % Provided ), Compile / unmanagedResourceDirectories += file("../frontend/dist") ) @@ -90,9 +93,9 @@ val mockingbird = (project in file("mockingbird")) ) /* - Отдельный подпроект был создан ради того, чтобы не отключать coursier во всём проекте. - См. https://github.com/coursier/coursier/issues/2016 - Так как netty-tranport-epoll больше не используется можно перенести код отсюда в mockingbird + A separate subproject was created to avoid disabling coursier throughout the entire project. + See https://github.com/coursier/coursier/issues/2016. + Since netty-transport-epoll is no longer used, the code from here can be moved to mockingbird. */ lazy val `mockingbird-api` = (project in file("mockingbird-api")) .enablePlugins(BuildInfoPlugin) @@ -140,7 +143,6 @@ lazy val `mockingbird-native` = (project in file("mockingbird-native")) Compile / packageDoc / mappings := Seq(), GraalVMNativeImage / mainClass := Some("ru.tinkoff.tcb.mockingbird.Mockingbird"), GraalVMNativeImage / graalVMNativeImageOptions ++= Seq( - "-J-Xmx6144m", // Required to fit native-image runtime heap in Standard GitHub-hosted runners "-H:+StaticExecutableWithDynamicLibC", "--gc=G1" ).filter(_ => dockerize.value), @@ -194,6 +196,7 @@ val examples = (project in file("examples")) ).flatten, libraryDependencies ++= Seq( "dev.zio" %% "zio-cli" % "0.5.0", + "org.typelevel" %% "cats-effect" % "3.5.4" ), Test / parallelExecution := false, ) diff --git a/backend/circe-utils/src/main/scala/ru/tinkoff/tcb/utils/circe/optics/JsonOptic.scala b/backend/circe-utils/src/main/scala/ru/tinkoff/tcb/utils/circe/optics/JsonOptic.scala index fb05269d..f98eef96 100644 --- a/backend/circe-utils/src/main/scala/ru/tinkoff/tcb/utils/circe/optics/JsonOptic.scala +++ b/backend/circe-utils/src/main/scala/ru/tinkoff/tcb/utils/circe/optics/JsonOptic.scala @@ -19,7 +19,7 @@ final case class JsonOptic private[optics] (private val jsonPath: Seq[PathPart]) def set(v: Json): Json => Json = jsonPath.foldRight[Json => Json](_ => v)((part, f) => modifyPart(v)(part)(f)) /** - * Если передан Some(..) - обновляет поддерево, если передан None - удаляет существующее + * Updates subtress if arg is Some(..), removes subtree otherwise */ def setOpt(vo: Option[Json]): Json => Json = vo match { case Some(j) => set(j) diff --git a/backend/circe-utils/src/main/scala/ru/tinkoff/tcb/utils/circe/package.scala b/backend/circe-utils/src/main/scala/ru/tinkoff/tcb/utils/circe/package.scala index 12405fb3..01c17423 100644 --- a/backend/circe-utils/src/main/scala/ru/tinkoff/tcb/utils/circe/package.scala +++ b/backend/circe-utils/src/main/scala/ru/tinkoff/tcb/utils/circe/package.scala @@ -22,7 +22,7 @@ package object circe { } object JsonNull { - def unapply(arg: Json): Option[Unit] = arg.asNull + def unapply(arg: Json): Boolean = arg.isNull } object JsonDocument { @@ -53,8 +53,8 @@ package object circe { if (baseArr.length >= patchArr.length) Json.fromValues((baseArr zip patchArr).map(mrgPair.tupled)) else Json.fromValues(baseArr.zipAll(patchArr, Json.Null, patchArr.last).map(mrgPair.tupled)) - case (p, JsonNull(())) if arraySubvalues => p - case (_, p) => p + case (p, JsonNull()) if arraySubvalues => p + case (_, p) => p } implicit class JsonOps(private val json: Json) extends AnyVal { @@ -71,20 +71,20 @@ package object circe { transformKeys(in => "_([a-z\\d])".r.replaceAllIn(in, _.group(1).toUpperCase)).result /** - * Производит слияние двух json объектов + * Merges two Json objects * * json1 :+ json2 * - * В случае совпадения значений по определённому ключу приоритетными являются значения из json1 + * In case of conflicts values from json1 take precedence */ @inline def :+(other: Json): Json = merge(other, json, false) /** - * Производит слияние двух json объектов + * Merges two Json objects * * json1 +: json2 * - * В случае совпадения значений по определённому ключу приоритетными являются значения из json2 + * In case of conflicts values from json2 take precedence */ @inline def +:(other: Json): Json = merge(other, json, false) diff --git a/backend/dataAccess/src/main/scala/ru/tinkoff/tcb/bson/package.scala b/backend/dataAccess/src/main/scala/ru/tinkoff/tcb/bson/package.scala index c343be2e..78e1111f 100644 --- a/backend/dataAccess/src/main/scala/ru/tinkoff/tcb/bson/package.scala +++ b/backend/dataAccess/src/main/scala/ru/tinkoff/tcb/bson/package.scala @@ -33,7 +33,7 @@ package object bson { private type PartialEndo2[A, B] = PartialFunction[(A, B), (A, B)] /* - Экстракторы + Extractors */ object BUndef { @@ -108,7 +108,7 @@ package object bson { } /* - Расширения + Extensions */ implicit final class BsonDocumentObjExt(private val doc: BsonDocument.type) extends AnyVal { @@ -123,20 +123,20 @@ package object bson { @inline def decodeOpt[T: BsonDecoder]: Option[T] = decodeAs[T].toOption /** - * Производит слияние двух bson значений + * Merges two bson values * * bson1 :+ bson2 * - * В случае совпадения значений по определённому ключу приоритетными являются значения из bson1 + * In case of conflicts values from bson1 take precedence */ @inline def :+(other: BsonValue): BsonValue = merge(other, bv, false) /** - * Производит слияние двух bson значений + * Merges two bson values * * bson1 :+ bson2 * - * В случае совпадения значений по определённому ключу приоритетными являются значения из bson2 + * In case of conflicts values from bson2 take precedence */ @inline def +:(other: BsonValue): BsonValue = merge(other, bv, false) } diff --git a/backend/edsl/src/main/scala/ru/tinkoff/tcb/mockingbird/edsl/ExampleSet.scala b/backend/edsl/src/main/scala/ru/tinkoff/tcb/mockingbird/edsl/ExampleSet.scala index e0fcdbcd..1b0ac0a8 100644 --- a/backend/edsl/src/main/scala/ru/tinkoff/tcb/mockingbird/edsl/ExampleSet.scala +++ b/backend/edsl/src/main/scala/ru/tinkoff/tcb/mockingbird/edsl/ExampleSet.scala @@ -5,156 +5,13 @@ import org.scalactic.source import ru.tinkoff.tcb.mockingbird.edsl.model.* -/** - * ==Описание набора примеров== - * - * `ExampleSet` предоставляет DSL для описания примеров взаимодействия с Mockingbird со стороны внешнего - * приложения/пользователя через его API. Описанные примеры потом можно в Markdown описание последовательности действий - * с примерами HTTP запросов и ответов на них или сгенерировать тесты для scalatest. За это отвечают интерпретаторы DSL - * [[ru.tinkoff.tcb.mockingbird.edsl.interpreter.MarkdownGenerator MarkdownGenerator]] и - * [[ru.tinkoff.tcb.mockingbird.edsl.interpreter.AsyncScalaTestSuite AsyncScalaTestSuite]] соответственно. - * - * Описание набора примеров может выглядеть так: - * - * {{{ - * package ru.tinkoff.tcb.mockingbird.examples - * - * import ru.tinkoff.tcb.mockingbird.edsl.ExampleSet - * import ru.tinkoff.tcb.mockingbird.edsl.model.* - * import ru.tinkoff.tcb.mockingbird.edsl.model.Check.* - * import ru.tinkoff.tcb.mockingbird.edsl.model.HttpMethod.* - * import ru.tinkoff.tcb.mockingbird.edsl.model.ValueMatcher.syntax.* - * - * class CatsFacts[HttpResponseR] extends ExampleSet[HttpResponseR] { - * - * override val name = "Примеры использования ExampleSet" - * - * example("Получение случайного факта о котиках")( - * for { - * _ <- describe("Отправить GET запрос") - * resp <- sendHttp( - * method = Get, - * path = "/fact", - * headers = Seq("X-CSRF-TOKEN" -> "unEENxJqSLS02rji2GjcKzNLc0C0ySlWih9hSxwn") - * ) - * _ <- describe("Ответ содержит случайный факт полученный с сервера") - * _ <- checkHttp( - * resp, - * HttpResponseExpected( - * code = Some(CheckInteger(200)), - * body = Some( - * CheckJsonObject( - * "fact" -> CheckJsonString("There are approximately 100 breeds of cat.".sample), - * "length" -> CheckJsonNumber(42.sample) - * ) - * ), - * headers = Seq("Content-Type" -> CheckString("application/json")) - * ) - * ) - * } yield () - * ) - * } - * }}} - * - * Дженерик параметр `HttpResponseR` нужен так результат выполнения HTTP запроса зависит от интерпретатора DSL. - * - * Переменная `name` - общий заголовок для примеров внутри набора, при генерации Markdown файла будет добавлен в самое - * начало как заголовок первого уровня. - * - * Метод `example` позволяет добавить пример к набору. Вначале указывается название примера, как первый набор - * аргументов. При генерации тестов это будет именем теста, а при генерации Markdown будет добавлено как заголовок - * второго уровня, затем описывается сам пример. Последовательность действий описывается при помощи монады - * [[ru.tinkoff.tcb.mockingbird.edsl.model.Example Example]]. - * - * `ExampleSet` предоставляет следующие действия: - * - [[describe]] - добавить текстовое описание. - * - [[sendHttp]] - исполнить HTTP запрос с указанными параметрами, возвращает результат запроса. - * - [[checkHttp]] - проверить, что результат запроса отвечает указанным ожиданиям, возвращает извлеченные из ответа - * данные на основании проверок. ''Если предполагается использовать какие-то части ответа по ходу описания примера, - * то необходимо для них задать ожидания, иначе они будут отсутствовать в возвращаемом объекте.'' - * - * Для описания ожиданий используются проверки [[model.Check$]]. Некоторые проверки принимают как параметр - * [[model.ValueMatcher ValueMatcher]]. Данный трейт тип представлен двумя реализациями - * [[model.ValueMatcher.AnyValue AnyValue]] и [[model.ValueMatcher.FixedValue FixedValue]]. Первая описывает - * произвольное значение определенного типа, т.е. проверки значения не производится. Вторая задает конкретное ожидаемое - * значение. - * - * Для упрощения создания значений типа [[model.ValueMatcher ValueMatcher]] добавлены имплиситы в объекте - * [[model.ValueMatcher.syntax ValueMatcher.syntax]]. Они добавляют неявную конвертацию значений в тип - * [[model.ValueMatcher.FixedValue FixedValue]], а так же методы `sample` и `fixed` для создания - * [[model.ValueMatcher.AnyValue AnyValue]] и [[model.ValueMatcher.FixedValue FixedValue]] соответственно. Благодаря - * этому можно писать: - * {{{ - * CheckString("some sample".sample) // вместо CheckString(AnyValue("some sample")) - * CheckString("some fixed string") // вместо CheckString(FixedValue("some fixed string")) - * }}} - * - * ==Генерации markdown документа из набора примеров== - * - * {{{ - * package ru.tinkoff.tcb.mockingbird.examples - * - * import sttp.client3.* - * - * import ru.tinkoff.tcb.mockingbird.edsl.interpreter.MarkdownGenerator - * - * object CatsFactsMd { - * def main(args: Array[String]): Unit = { - * val mdg = MarkdownGenerator(baseUri = uri"https://catfact.ninja") - * val set = new CatsFacts[MarkdownGenerator.HttpResponseR]() - * println(mdg.generate(set)) - * } - * } - * }}} - * - * Здесь создается интерпретатор [[ru.tinkoff.tcb.mockingbird.edsl.interpreter.MarkdownGenerator MarkdownGenerator]] для - * генерации markdown документа из инстанса `ExampleSet`. Как параметр, конструктору передается хост со схемой который - * будет подставлен в качестве примера в документ. - * - * Как упоминалось ранее, тип ответа от HTTP сервера зависит от интерпретатора DSL, поэтому при создании `CatsFacts` - * параметром передается тип `MarkdownGenerator.HttpResponseR`. - * - * ==Генерация тестов из набора примеров== - * {{{ - * package ru.tinkoff.tcb.mockingbird.examples - * - * import sttp.client3.* - * - * import ru.tinkoff.tcb.mockingbird.edsl.interpreter.AsyncScalaTestSuite - * - * class CatsFactsSuite extends AsyncScalaTestSuite { - * override val baseUri = uri"https://catfact.ninja" - * val set = new CatsFacts[HttpResponseR]() - * generateTests(set) - * } - * }}} - * - * Для генерации тестов нужно создать класс и унаследовать его от - * [[ru.tinkoff.tcb.mockingbird.edsl.interpreter.AsyncScalaTestSuite AsyncScalaTestSuite]]. После чего в переопределить - * значение `baseUri` и в конструкторе вызвать метод `generateTests` передав в него набор примеров. В качестве дженерик - * параметра для типа HTTP ответа, в создаваемый инстанс набора примеров надо передать тип - * [[ru.tinkoff.tcb.mockingbird.edsl.interpreter.AsyncScalaTestSuite.HttpResponseR AsyncScalaTestSuite.HttpResponseR]] - * - * Пример запуска тестов: - * {{{ - * [info] CatsFactsSuite: - * [info] - Получение случайного факта о котиках - * [info] + Отправить GET запрос - * [info] + Ответ содержит случайный факт полученный с сервера - * [info] Run completed in 563 milliseconds. - * [info] Total number of tests run: 1 - * [info] Suites: completed 1, aborted 0 - * [info] Tests: succeeded 1, failed 0, canceled 0, ignored 0, pending 0 - * [info] All tests passed. - * }}} - */ trait ExampleSet[HttpResponseR] { private var examples_ : Vector[ExampleDescription] = Vector.empty final private[edsl] def examples: Vector[ExampleDescription] = examples_ /** - * Заглавие набора примеров. + * Title of the example set. */ def name: String @@ -162,30 +19,30 @@ trait ExampleSet[HttpResponseR] { examples_ = examples_ :+ ExampleDescription(name, body, pos) /** - * Выводит сообщение при помощи `info` при генерации тестов или добавляет текстовый блок при генерации Markdown. + * Prints a message using info during test generation or adds a text block during Markdown generation. * @param text - * текст сообщения + * The message text */ final def describe(text: String)(implicit pos: source.Position): Example[Unit] = liftF[Step, Unit](Describe(text, pos)) /** - * В тестах, выполняет HTTP запрос с указанными параметрами или добавляет в Markdown пример запроса, который можно - * исполнить командой `curl`. + * In tests, makes an HTTP request with the specified parameters or adds a sample request to the Markdown, which can + * be executed with the curl command. * * @param method - * используемый HTTP метод. + * HTTP method used. * @param path - * путь до ресурса без схемы и хоста. + * path to the resource without the scheme and host. * @param body - * тело запроса как текст. + * request body as text.. * @param headers - * заголовки, который будут переданы вместе с запросом. + * request headers to send. * @param query - * URL параметры запроса + * URL query parameters. * @return - * возвращает объект представляющий собой результат исполнения запроса, конкретный тип зависит от интерпретатора - * DSL. Использовать возвращаемое значение можно только передав в метод [[checkHttp]]. + * Returns an object representing the result of the request execution; the specific type depends on the DSL + * interpreter. The return value can only be used by passing it to the [[checkHttp]] method. */ final def sendHttp( method: HttpMethod, @@ -199,18 +56,18 @@ trait ExampleSet[HttpResponseR] { liftF[Step, HttpResponseR](SendHttp[HttpResponseR](HttpRequest(method, path, body, headers, query), pos)) /** - * В тестах, проверяет, что полученный HTTP ответ соответствует ожиданиям. При генерации Markdown вставляет ожидаемый - * ответ опираясь на указанные ожидания. Если никакие ожидания не указана, то ничего добавлено не будет. + * In tests, verifies that the received HTTP response matches the expectations. When generating Markdown, inserts the + * expected response based on the specified expectations. If no expectations are specified, nothing will be added. * * @param response - * результат исполнения [[sendHttp]], тип зависит от интерпретатора DSL. + * the result of executing [[sendHttp]], the type depends on the DSL interpreter. * @param expects - * ожидания предъявляемые к результату HTTP запроса. Ожидания касаются кода ответа, тела запроса и заголовков - * полеченных от сервера. + * expectations placed on the result of the HTTP request. Expectations concern the response code, request body, and + * headers received from the server. * @return - * возвращает разобранный ответ от сервера. При генерации Markdown, так как реального ответа от сервера нет, то - * формирует ответ на основании переданных ожиданий от ответа. В Markdown добавляется информация только от том, для - * чего была указана проверка. + * returns the parsed response from the server. When generating Markdown, since there is no actual response from the + * server, it constructs a response based on the provided response expectations. Only information relevant to the + * specified checks is added to the Markdown. */ final def checkHttp(response: HttpResponseR, expects: HttpResponseExpected)(implicit pos: source.Position diff --git a/backend/edsl/src/main/scala/ru/tinkoff/tcb/mockingbird/edsl/interpreter/AsyncScalaTestSuite.scala b/backend/edsl/src/main/scala/ru/tinkoff/tcb/mockingbird/edsl/interpreter/AsyncScalaTestSuite.scala index 61d9938b..c46397d1 100644 --- a/backend/edsl/src/main/scala/ru/tinkoff/tcb/mockingbird/edsl/interpreter/AsyncScalaTestSuite.scala +++ b/backend/edsl/src/main/scala/ru/tinkoff/tcb/mockingbird/edsl/interpreter/AsyncScalaTestSuite.scala @@ -21,14 +21,13 @@ import ru.tinkoff.tcb.mockingbird.edsl.model.Check.* import ru.tinkoff.tcb.mockingbird.edsl.model.ValueMatcher.* /** - * Базовый трейт для генерации набора тестов по набору примеров - * [[ru.tinkoff.tcb.mockingbird.edsl.ExampleSet ExampleSet]]. + * Base trait for generating a set of tests from an [[ru.tinkoff.tcb.mockingbird.edsl.ExampleSet ExampleSet]]. * - * Трейт наследуется от `AsyncFunSuiteLike` из фреймоврка [[https://www.scalatest.org/ ScalaTest]], поэтому внутри можно - * как дописать дополнительные тесты, так и использовать - * [[https://www.scalatest.org/user_guide/sharing_fixtures#beforeAndAfter BeforeAndAfter]] и/или - * [[https://www.scalatest.org/user_guide/sharing_fixtures#composingFixtures BeforeAndAfterEach]] для управления - * поднятием необходимого для исполнения тестов окружения, в том числе используя + * This trait inherits from AsyncFunSuiteLike in the [[https://www.scalatest.org/ ScalaTest]] framework, so you can add + * additional tests inside it or use + * [[https://www.scalatest.org/user_guide/sharing_fixtures#beforeAndAfter BeforeAndAfter]] and/or + * [[https://www.scalatest.org/user_guide/sharing_fixtures#composingFixtures BeforeAndAfterEach]] to manage the setup of + * the necessary environment for executing tests, including using * [[https://github.com/testcontainers/testcontainers-scala testcontainers-scala]]. */ trait AsyncScalaTestSuite extends AsyncFunSuiteLike { @@ -40,12 +39,12 @@ trait AsyncScalaTestSuite extends AsyncFunSuiteLike { private[interpreter] def sttpbackend: SttpBackend[Future] = sttpbackend_ /** - * URI относительно которого будут разрешаться пути используемые в примерах + * URI relative to which paths used in examples will be resolved */ def baseUri: Uri /** - * Сгенерировать тесты из набора примеров. + * Generate tests from the set of examples. */ protected def generateTests(es: ExampleSet[HttpResponseR]): Unit = es.examples.foreach { desc => diff --git a/backend/edsl/src/main/scala/ru/tinkoff/tcb/mockingbird/edsl/interpreter/MarkdownGenerator.scala b/backend/edsl/src/main/scala/ru/tinkoff/tcb/mockingbird/edsl/interpreter/MarkdownGenerator.scala index e1a8fb53..4b3f49d8 100644 --- a/backend/edsl/src/main/scala/ru/tinkoff/tcb/mockingbird/edsl/interpreter/MarkdownGenerator.scala +++ b/backend/edsl/src/main/scala/ru/tinkoff/tcb/mockingbird/edsl/interpreter/MarkdownGenerator.scala @@ -68,10 +68,10 @@ object MarkdownGenerator { } /** - * Интерпретатор DSL создающий markdown документ с описанием примера. + * DSL interpreter creating a markdown document with an example description. * * @param baseUri - * URI относительно которого будут разрешаться пути используемые в примерах + * URI relative to which paths used in examples will be resolved. */ final class MarkdownGenerator(baseUri: Uri) { import MarkdownGenerator.HttpResponseR @@ -82,12 +82,12 @@ final class MarkdownGenerator(baseUri: Uri) { private[interpreter] type W[A] = Writer[Vector[Markdown], A] /** - * Сгенерировать markdown документ из переданного набора примеров. + * Generate a markdown document from the provided set of examples. * * @param set - * набор примеров + * examples set * @return - * строка содержащая markdown документ. + * A string containing a markdown document. */ def generate(set: ExampleSet[HttpResponseR]): String = { val tags = for { @@ -125,16 +125,16 @@ final class MarkdownGenerator(baseUri: Uri) { case CheckHttp(_, HttpResponseExpected(code, body, headers), _) => val bodyStr = body.map(_.show) val cb = Vector( - code.map(c => s"Код ответа: ${c.matcher.show}\n"), + code.map(c => s"Response code: ${c.matcher.show}\n"), headers.nonEmpty.option { - headers.map { case (k, v) => s"$k: '${v.matcher.show}'" }.mkString("Заголовки ответа:\n", "\n", "\n") + headers.map { case (k, v) => s"$k: '${v.matcher.show}'" }.mkString("Response headers:\n", "\n", "\n") }, - bodyStr.map("Тело ответа:\n" ++ _ ++ "\n"), + bodyStr.map("Response body:\n" ++ _ ++ "\n"), ).flatten.mkString("\n") Writer( Vector( - p("Ответ:"), + p("Response:"), codeBlock(cb) ), HttpResponse( diff --git a/backend/edsl/src/main/scala/ru/tinkoff/tcb/mockingbird/edsl/model/Check.scala b/backend/edsl/src/main/scala/ru/tinkoff/tcb/mockingbird/edsl/model/Check.scala index faf1b9d3..fe6078ac 100644 --- a/backend/edsl/src/main/scala/ru/tinkoff/tcb/mockingbird/edsl/model/Check.scala +++ b/backend/edsl/src/main/scala/ru/tinkoff/tcb/mockingbird/edsl/model/Check.scala @@ -1,23 +1,25 @@ package ru.tinkoff.tcb.mockingbird.edsl.model + import io.circe.Json sealed trait ValueMatcher[T] extends Product with Serializable object ValueMatcher { /** - * Показывает, что ожидается конкретное значение типа `T`, в случае несовпадения сгенерированный тест упадет с - * ошибкой. + * Indicates that a specific value of type 'T' is expected, and if there is a mismatch, the generated test will fail + * with an error. * * @param value - * значение используемое для сравнения и отображения при генерации примера ответа от сервера в markdown. + * The value used for comparison and display when generating an example server response in markdown. */ final case class FixedValue[T](value: T) extends ValueMatcher[T] /** - * Показывает, что ожидается любое значение типа `T`. + * Indicates that any value of type 'T' is expected. * * @param example - * Это значение будет отображено в markdown документе при генерации в описании примера ответа от сервера. + * This value will be displayed in the markdown document when generated in the description of the example server + * response. */ final case class AnyValue[T](example: T) extends ValueMatcher[T] @@ -41,10 +43,10 @@ sealed trait Check extends Product with Serializable object Check { /** - * Соответствует любому значению. + * Corresponds to any value * * @param example - * значение, которое будет использоваться как пример при генерации Markdown. + * The value that will be used as an example when generating Markdown. * @group CheckCommon */ final case class CheckAny(example: String) extends Check @@ -60,35 +62,37 @@ object Check { final case class CheckInteger(matcher: ValueMatcher[Long]) extends Check /** - * Показывает, что ожидается JSON, реализации этого трейта позволяют детальнее описать ожидания. + * Indicates that JSON is expected. Implementations of this trait allow for a more detailed description of + * expectations. * @group CheckJson */ sealed trait CheckJson extends Check /** - * Значение null + * null value * @group CheckJson */ final case object CheckJsonNull extends CheckJson /** - * Любой валидный JSON. + * Any valid JSON. * * @constructor * @param example - * значение, которое будет использоваться как пример при генерации Markdown. + * The value that will be used as an example when generating Markdown. * @group CheckJson */ final case class CheckJsonAny(example: Json) extends CheckJson /** - * JSON объект с указанными полями, объект с которым производится сравнение может содержать дополнительные поля. + * A JSON object with the specified fields. The object being compared with may contain additional fields. * @group CheckJson */ final case class CheckJsonObject(fields: (String, CheckJson)*) extends CheckJson /** - * Массив с указанными элементами, важен порядок. Проверяемы массив может содержать в конце дополнительные элементы. + * An array with the specified elements, the order is important. The array being checked may contain additional + * elements at the end. * @group CheckJson */ final case class CheckJsonArray(items: CheckJson*) extends CheckJson diff --git a/backend/edsl/src/test/scala/ru/tinkoff/tcb/mockingbird/edsl/interpreter/AsyncScalaTestSuiteWholeTest.scala b/backend/edsl/src/test/scala/ru/tinkoff/tcb/mockingbird/edsl/interpreter/AsyncScalaTestSuiteWholeTest.scala index 25395c94..c68c140f 100644 --- a/backend/edsl/src/test/scala/ru/tinkoff/tcb/mockingbird/edsl/interpreter/AsyncScalaTestSuiteWholeTest.scala +++ b/backend/edsl/src/test/scala/ru/tinkoff/tcb/mockingbird/edsl/interpreter/AsyncScalaTestSuiteWholeTest.scala @@ -44,12 +44,12 @@ class AsyncScalaTestSuiteWholeTest (mockI .apply(_: String, _: Option[Any])(_: source.Position)) - .expects("Отправить GET запрос", *, *) + .expects("Send a GET request", *, *) .once() (mockI .apply(_: String, _: Option[Any])(_: source.Position)) - .expects("Ответ содержит случайный факт полученный с сервера", *, *) + .expects("The response contains a random fact obtained from the server", *, *) .twice() mockInformer = mockI.some @@ -74,7 +74,7 @@ class AsyncScalaTestSuiteWholeTest } override protected def afterAll(): Unit = { - calledTests shouldBe Vector("fake", "Получение случайного факта о котиках") + calledTests shouldBe Vector("fake", "Getting a random fact about kittens") super.afterAll() } diff --git a/backend/edsl/src/test/scala/ru/tinkoff/tcb/mockingbird/edsl/interpreter/MarkdownGeneratorSuite.scala b/backend/edsl/src/test/scala/ru/tinkoff/tcb/mockingbird/edsl/interpreter/MarkdownGeneratorSuite.scala index 50c0ce28..e53d3e00 100644 --- a/backend/edsl/src/test/scala/ru/tinkoff/tcb/mockingbird/edsl/interpreter/MarkdownGeneratorSuite.scala +++ b/backend/edsl/src/test/scala/ru/tinkoff/tcb/mockingbird/edsl/interpreter/MarkdownGeneratorSuite.scala @@ -114,15 +114,15 @@ class MarkdownGeneratorSuite extends AnyFunSuite with Matchers { val obtains = markdown(mds).md val expected = raw""" - |Ответ: + |Response: |``` - |Код ответа: 418 + |Response code: 418 | - |Заголовки ответа: + |Response headers: |Content-Type: 'application/json' |token: 'token-example' | - |Тело ответа: + |Response body: |{ | "foo" : [ | ], @@ -142,10 +142,10 @@ class MarkdownGeneratorSuite extends AnyFunSuite with Matchers { val mdg = MarkdownGenerator(uri"https://catfact.ninja") val set = new CatsFacts[MarkdownGenerator.HttpResponseR]() mdg.generate(set) shouldBe - """# Примеры использования ExampleSet - |## Получение случайного факта о котиках + """# Examples of using ExampleSet + |## Getting a random fact about kittens | - |Отправить GET запрос + |Send a GET request |``` |curl \ | --request GET \ @@ -154,16 +154,16 @@ class MarkdownGeneratorSuite extends AnyFunSuite with Matchers { | |``` | - |Ответ содержит случайный факт полученный с сервера + |The response contains a random fact obtained from the server | - |Ответ: + |Response: |``` - |Код ответа: 200 + |Response code: 200 | - |Заголовки ответа: + |Response headers: |Content-Type: 'application/json' | - |Тело ответа: + |Response body: |{ | "fact" : "There are approximately 100 breeds of cat.", | "length" : 42.0 diff --git a/backend/edsl/src/test/scala/ru/tinkoff/tcb/mockingbird/examples/CatsFacts.scala b/backend/edsl/src/test/scala/ru/tinkoff/tcb/mockingbird/examples/CatsFacts.scala index 6a4a1e09..7dd81ca2 100644 --- a/backend/edsl/src/test/scala/ru/tinkoff/tcb/mockingbird/examples/CatsFacts.scala +++ b/backend/edsl/src/test/scala/ru/tinkoff/tcb/mockingbird/examples/CatsFacts.scala @@ -8,17 +8,17 @@ import ru.tinkoff.tcb.mockingbird.edsl.model.ValueMatcher.syntax.* class CatsFacts[HttpResponseR] extends ExampleSet[HttpResponseR] { - override val name = "Примеры использования ExampleSet" + override val name = "Examples of using ExampleSet" - example("Получение случайного факта о котиках")( + example("Getting a random fact about kittens")( for { - _ <- describe("Отправить GET запрос") + _ <- describe("Send a GET request") resp <- sendHttp( method = Get, path = "/fact", headers = Seq("X-CSRF-TOKEN" -> "unEENxJqSLS02rji2GjcKzNLc0C0ySlWih9hSxwn") ) - _ <- describe("Ответ содержит случайный факт полученный с сервера") + _ <- describe("The response contains a random fact obtained from the server") _ <- checkHttp( resp, HttpResponseExpected( diff --git a/backend/examples/src/main/scala/ru/tinkoff/tcb/mockingbird/examples/BasicHttpStub.scala b/backend/examples/src/main/scala/ru/tinkoff/tcb/mockingbird/examples/BasicHttpStub.scala index 1a4d935f..11be8a99 100644 --- a/backend/examples/src/main/scala/ru/tinkoff/tcb/mockingbird/examples/BasicHttpStub.scala +++ b/backend/examples/src/main/scala/ru/tinkoff/tcb/mockingbird/examples/BasicHttpStub.scala @@ -10,17 +10,13 @@ import ru.tinkoff.tcb.utils.circe.optics.* class BasicHttpStub[HttpResponseR] extends ExampleSet[HttpResponseR] { import ValueMatcher.syntax.* - val name = "Базовые примеры работы с HTTP заглушками" + val name = "Basic examples of working with HTTP stubs" - example("Persistent, ephemeral и countdown HTTP заглушки") { + example("Persistent, ephemeral, and countdown HTTP stubs") { for { - // TODO: подумать можно ли описать какие-то пререквизиты, чтобы в тестах - // автоматически их проверять и возможно исполнять. Например, проверить - // и создать сервис, если его нет, запустить сервис до которого будет - // mockingbird проксировать запрос и т.п. - _ <- describe("Предполагается, что в mockingbird есть сервис `alpha`.") + _ <- describe("It is assumed that in mockingbird there is a service `alpha`.") - _ <- describe("Создаем заглушку в скоупе `persistent`.") + _ <- describe("Creating a stub in the persistent `scope`.") resp <- sendHttp( method = HttpMethod.Post, path = "/api/internal/mockingbird/v2/stub", @@ -57,7 +53,7 @@ class BasicHttpStub[HttpResponseR] extends ExampleSet[HttpResponseR] { ) ) - _ <- describe("Проверяем созданную заглушку.") + _ <- describe("Checking the created stub.") resp <- sendHttp( method = HttpMethod.Get, path = "/api/mockingbird/exec/alpha/handler1", @@ -73,7 +69,7 @@ class BasicHttpStub[HttpResponseR] extends ExampleSet[HttpResponseR] { ) ) - _ <- describe("Для этого же пути, создаем заглушку в скоупе `ephemeral`.") + _ <- describe("For the same path, creating a stub in the `ephemeral` scope.") resp <- sendHttp( method = HttpMethod.Post, path = "/api/internal/mockingbird/v2/stub", @@ -111,7 +107,7 @@ class BasicHttpStub[HttpResponseR] extends ExampleSet[HttpResponseR] { ) idEphemeral = parser.parse(r.body.get).toOption.flatMap((JLens \ "id").getOpt).flatMap(_.asString).get - _ <- describe("И создаем заглушку в скоупе `countdown` с `times` равным 2.") + _ <- describe("And creating a stub in the `countdown` scope with `times` equal to 2.") resp <- sendHttp( method = HttpMethod.Post, path = "/api/internal/mockingbird/v2/stub", @@ -150,18 +146,15 @@ class BasicHttpStub[HttpResponseR] extends ExampleSet[HttpResponseR] { ) _ <- describe( - """Заданные заглушки отличаются возвращаемыми ответами, а именно содержимым `body` и `code`, - | в целом они могут быть как и полностью одинаковыми так и иметь больше различий. - | Скоупы заглушек в порядке убывания приоритета: Countdown, Ephemeral, Persistent""".stripMargin + """The specified stubs differ in the responses they return, namely the contents of `body` and `code`, + | in general, they can be either completely identical or have more differences. + | The scopes of stubs in descending order of priority: Countdown, Ephemeral, Persistent""".stripMargin ) _ <- describe( - """Так как заглушка `countdown` была создана с `times` равным двум, то следующие два - |запроса вернут указанное в ней содержимое.""".stripMargin + """Since the countdown stub was created with `times` equal to two, the next two + |requests will return the specified content.""".stripMargin ) - // TODO: при генерации Markdown будет дважды добавлен запрос и ожидаемый ответ, - // может стоит добавить действие Repeat, чтобы при генерации Markdown в документе - // указывалось бы, что данное действие повторяется N раз. _ <- Seq .fill(2)( for { @@ -184,8 +177,8 @@ class BasicHttpStub[HttpResponseR] extends ExampleSet[HttpResponseR] { .sequence _ <- describe( - """Последующие запросы будут возвращать содержимое заглушки `ephemeral`. Если бы её не было, - |то вернулся бы ответ от заглушки `persistent`.""".stripMargin + """Subsequent requests will return the content of the `ephemeral` stub. If it didn't exist, + |the response from the `persistent` stub would be returned..""".stripMargin ) resp <- sendHttp( method = HttpMethod.Get, @@ -202,8 +195,8 @@ class BasicHttpStub[HttpResponseR] extends ExampleSet[HttpResponseR] { ) ) - _ <- describe("""Чтобы получить теперь ответ от `persistent` заглушки нужно или дождаться, когда истекут - |сутки с момента её создания или просто удалить `ephemeral` заглушку.""".stripMargin) + _ <- describe("""Now to get a response from the `persistent` stub, one must either wait until a day has passed + |since its creation or simply delete the `ephemeral` stub.""".stripMargin) resp <- sendHttp( method = HttpMethod.Delete, path = s"/api/internal/mockingbird/v2/stub/$idEphemeral", @@ -222,7 +215,7 @@ class BasicHttpStub[HttpResponseR] extends ExampleSet[HttpResponseR] { ) ) - _ <- describe("После удаления `ephemeral` заглушки, при запросе вернется результат заглушки `persistent`") + _ <- describe("After deleting the `ephemeral` stub, a request will return the result of the `persistent` stub.") resp <- sendHttp( method = HttpMethod.Get, path = "/api/mockingbird/exec/alpha/handler1", @@ -240,22 +233,22 @@ class BasicHttpStub[HttpResponseR] extends ExampleSet[HttpResponseR] { } yield () } - example("Использование параметров пути в HTTP заглушках") { + example("Using path parameters in HTTP stubs") { for { _ <- describe( - """Заглушка может выбираться в том числе и на основании регулярного выражения - |в пути, это может быть не очень эффективно с точки зрения поиска такой заглушки. - |Поэтому без необходимости, лучше не использовать этот механизм.""".stripMargin + """A stub can also be selected based on a regular expression in the path, + |which can be inefficient in terms of searching for such a stub. + |Therefore, without necessity, it's better not to use this mechanism.""".stripMargin ) - _ <- describe("Предполагается, что в mockingbird есть сервис `alpha`.") + _ <- describe("It is assumed that in mockingbird there is a service `alpha`.") _ <- describe( - """Скоуп в котором создаются заглушки не важен. В целом скоуп влияет только - |на приоритет заглушек. В данном случае заглушка создается в скоупе `countdown`. - |В отличие от предыдущих примеров, здесь для указания пути для срабатывания - |заглушки используется поле `pathPattern`, вместо `path`. Так же, ответ который - |формирует заглушка не статичный, а зависит от параметров пути.""".stripMargin + """The scope in which stubs are created does not matter. In general, the scope only affects + |the priority of the stubs. In this case, the stub is created in the `countdown` scope. + |Unlike previous examples, here the `pathPattern` field is used to specify the path for triggering + |the stub, instead of `path`. Also, the response that + |the stub generates is not static but depends on the path parameters.""".stripMargin ) resp <- sendHttp( @@ -300,8 +293,8 @@ class BasicHttpStub[HttpResponseR] extends ExampleSet[HttpResponseR] { ) _ <- describe( - """Теперь сделаем несколько запросов, который приведут к срабатыванию этой заглшки, - |чтобы увидеть, что результат действительно зависит от пути.""".stripMargin + """Now let's make several requests that will trigger this stub, + |to see that the result really depends on the path.""".stripMargin ) resp <- sendHttp( method = HttpMethod.Get, diff --git a/backend/examples/src/main/scala/ru/tinkoff/tcb/mockingbird/examples/HttpStubWithState.scala b/backend/examples/src/main/scala/ru/tinkoff/tcb/mockingbird/examples/HttpStubWithState.scala index 4aa720a9..54bc40a0 100644 --- a/backend/examples/src/main/scala/ru/tinkoff/tcb/mockingbird/examples/HttpStubWithState.scala +++ b/backend/examples/src/main/scala/ru/tinkoff/tcb/mockingbird/examples/HttpStubWithState.scala @@ -11,18 +11,18 @@ import ru.tinkoff.tcb.utils.circe.optics.* class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { - val name = "Использование хранимого состояние в HTTP заглушках" + val name = "Utilizing persistent state in HTTP stubs" - example("Создать, получить и обновить хранимое состояние") { + example("Create, retrieve, and update stored state") { for { - _ <- describe("Предполагается, что в mockingbird есть сервис `alpha`.") - _ <- describe("""Для работы с состоянием у HTTP заглушки есть две секции: `persist` и `state`. - |Секция `persist` отвечает за сохранение состояния для последующего доступа к - |нему. А секция `state` содержит предикаты для поиска состояния. Если указана - |только секция `persist`, то каждый раз при срабатывании заглушки в БД будет - |записываться новое состояние. А если указаны обе секции, то найденное состояние - |будет перезаписано. Состояние - это JSON объект.""".stripMargin) - _ <- describe("""В качестве примера, будем хранить как состояние JSON объект вида: + _ <- describe("It is assumed that in mockingbird there is a service `alpha`.") + _ <- describe("""For working with state in the HTTP stub, there are two sections: `persist` and `state`. + |The `persist` section is responsible for saving the state for subsequent access to + |it. The `state` section contains predicates for searching for the state. If only + |the `persist` section is specified, then each time the stub is triggered, a new state will be + |recorded in the database. If both sections are specified, the found state + |will be overwritten. The state is a JSON object.""".stripMargin) + _ <- describe(""" As an example, we will store as the state a JSON object of the form: |```json |{ | "id": "o1", @@ -30,8 +30,8 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { | "version": 1 |} |``` - |И дополнительно сохранять время создания и модификации.""".stripMargin) - _ <- describe("Для первоначального создания состояния создадим следующую заглушку.") + |And additionally save the creation and modification time.""".stripMargin) + _ <- describe("To initially create the state, we create the following stub.") resp <- sendHttp( method = Post, path = "/api/internal/mockingbird/v2/stub", @@ -68,7 +68,7 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { | } | }, | "seed": { - | "timestamp": "%{now(yyyy-MM-dd'T'HH:mm:ss.nn'Z')}" + | "timestamp": "%{now(\"yyyy-MM-dd'T'HH:mm:ss.nn'Z'\")}" | } |}""".stripMargin.some, headers = Seq("Content-Type" -> "application/json"), @@ -84,18 +84,18 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { ) ) _ <- describe( - """Данная заглушка делает следующее: - | * Проверяет, что тело запроса - это JSON объект содержащий как минимум одно - | поле `id`. - | * В секции `seed` создается переменная `timestamp` в которую записывается - | текущее время. - | * Секция `persist` описывает объект, который будет сохранен как состояние. - | Данные, которые пришли в теле запроса записываются в поле `_data`, в добавок, - | в поле `created` записывает текущее время. - | * В ответе возвращаются полученные данные и временная метка.""".stripMargin + """This stub does the following: + | * Checks that the request body is a JSON object containing at least one + | field `id`. + | * In the `seed` section, a `timestamp` variable is created in which + | the current time is recorded. + | * The `persist` section describes the object that will be saved as the state. + | The data that came in the request body are recorded in the `_data` field, in addition, + | the `created` field records the current time. + | * The response returns the received data and the timestamp.""".stripMargin ) _ <- describe( - """В итоге в Mockingbird состояние будет записано как: + """As a result, in Mockingbird the state will be recorded as: |```json |{ | "_data": { @@ -109,9 +109,9 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { |""".stripMargin ) _ <- describe( - """Добавим заглушку для модификации состояния, она будет похожей на предыдущую, - |но будет иметь секцию `state` для поиска уже существующего состояния, а в секции - |`persist` будет поле `modified` вместо `created`.""".stripMargin + """We add a stub for modifying the state, similar to the previous one, + |but it has a state section for searching for an existing state, + |and in the `persist` section, it has a `modified` field instead of `created`.""".stripMargin ) resp <- sendHttp( method = Post, @@ -152,7 +152,7 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { | "_data.id": {"==": "${id}"} | }, | "seed": { - | "timestamp": "%{now(yyyy-MM-dd'T'HH:mm:ss.nn'Z')}" + | "timestamp": "%{now(\"yyyy-MM-dd'T'HH:mm:ss.nn'Z'\")}" | } |}""".stripMargin.some, headers = Seq("Content-Type" -> "application/json"), @@ -168,30 +168,30 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { ) ) _ <- describe( - """Для обновления состояния принимаем такие же данные, как и для создания нового. - |В секции `state` поля из тела запроса доступны сразу, без дополнительных, - |поэтому просто пишем, имя поля `${id}`, в отличии от секций `response` - |и `persist`, где доступ к данным запроса осуществляется через переменную `req`. - |В случае, если используются именованные параметры пути в `pathPattern`, - |то доступ к ним из секции `state` осуществляется через переменную `__segments`.""".stripMargin + """To update the state, we accept the same data as for creating a new one. + |In the `state` section, fields from the request body are available immediately, + |without additional, so we just write the field name `${id}`, unlike in the `response` + |and `persist` sections, where access to request data is through the `req` variable. + |If named path parameters are used in `pathPattern`, + |then access to them from the `state` section is through the `__segments` variable.""".stripMargin ) _ <- describe( - """При обновлении состояния, поля перечисленные в секции `persist` дописываются - |к тем, что уже есть в найденном состоянии. В случае если поле уже существует, то - |оно будет перезаписано. Стоит обратить внимание каким образом дописывается - |временная метка `modified`. Она указана как `meta.modified`, такой синтаксис - |позволяет перезаписывать не весь объект, а только его часть или добавлять - |в него новые поля.""".stripMargin + """When updating the state, the fields listed in the `persist` section are appended + |to those already in the found state. In case a field already exists, it + |will be overwritten. Pay attention to how the modified `timestamp` is appended. + |It is indicated as `meta.modified`, this syntax + |allows overwriting not the entire object, but only part of it or adding + |new fields to it.""".stripMargin ) _ <- describe( - """При выборе между двух заглушек, заглушка для которой выполнилось условие поиска - |хранимого состояние, т.е. существует состояние удовлетворяющее критериям - |указанным в секции `state`, имеет больший приоритет, чем заглушка без условий - |выбора состояний. Поэтому первая заглушка будет срабатывать когда в БД ещё нет - |хранимого состояния с указанным `id`, а вторая когда такое состояние уже есть. """.stripMargin - ) - _ <- describe("""Теперь создадим заглушку для получения хранимого состояния. Получать состояние - |будем отправляя POST запрос с JSON содержащим поле `id`: + """When choosing between two stubs, the stub for which the search condition + |for the stored state is met, i.e., there exists a state meeting the criteria + |specified in the `state` section, has a higher priority than a stub without conditions + |for selecting states. Therefore, the first stub will be triggered when there is no + |stored state with the specified `id` in the database, and the second when such a state already exists.""".stripMargin + ) + _ <- describe("""Now we create a stub for retrieving the stored state. We will retrieve the state + |by sending a POST request with JSON containing the `id` field: |```json |{ | "id": "o1" @@ -241,7 +241,7 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { ).some ) ) - _ <- describe("Теперь попробуем вызвать заглушку, записывающую новое состояние.") + _ <- describe("Now let's try to invoke the stub that writes a new state.") resp <- sendHttp( method = Post, path = "/api/mockingbird/exec/alpha/state1", @@ -270,7 +270,7 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { ) o1v1 = checked.body.flatMap(b => parser.parse(b).toOption).get o1v1created = (JLens \ "meta" \ "created").getOpt(o1v1).flatMap(_.asString).get - _ <- describe("А теперь получить состояние") + _ <- describe("And now retrieve the state") resp <- sendHttp( method = Post, path = "/api/mockingbird/exec/alpha/state1/get", @@ -293,8 +293,8 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { ) ) _ <- describe( - """Теперь модифицируем состояние, изменив значение поля `version` и добавив новое - |поле `description`. Поле `name` опустим.""".stripMargin + """Now we modify the state, changing the value of the `version` field + |and adding a new field `description`. We will omit the `name` field.""".stripMargin ) resp <- sendHttp( method = Post, @@ -330,7 +330,7 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { ) o1v2 = checked.body.flatMap(b => parser.parse(b).toOption).get o1v2modified = (JLens \ "meta" \ "modified").getOpt(o1v2).flatMap(_.asString).get - _ <- describe("И снова запросим состояние объекта `o1`") + _ <- describe("And again, we request the state of object `o1`") resp <- sendHttp( method = Post, path = "/api/mockingbird/exec/alpha/state1/get", @@ -354,15 +354,15 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { ) ) _ <- describe( - """Ответ изменился, мы видим новые поля. Так как поле `data` перезаписывалось - |целиком, то поле `name` исчезло, в то время как в объекте `meta` - |модифицировалось только поле `modified`, поэтому, хотя поле `created` не указано - |в секции `persist` заглушки обновляющей сосотояние, оно отсталось.""".stripMargin + """The response changed, we see new fields. Since the `data` field was completely overwritten, + |the `name` field disappeared, while in the `meta` object, + |only the modified field was `modified`, so although the `created` field is not mentioned + |in the `persist` section of the stub updating the state, it remained.""".stripMargin ) _ <- describe( - """Если попробовать вызвать заглушку читающую состояние объекта которого нет, - |то Mockingbird вернет ошибку, в котрой будет сказано, что не найдено подходящие - |заглушки.""".stripMargin + """If we try to invoke the stub for reading the state of an object that does not exist, + |Mockingbird will return an error, stating that no suitable + |stubs were found.""".stripMargin ) resp <- sendHttp( method = Post, @@ -374,35 +374,35 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { HttpResponseExpected( code = CheckInteger(400).some, body = CheckString( - "ru.tinkoff.tcb.mockingbird.error.StubSearchError: Не удалось подобрать заглушку для [Post] /alpha/state1/get" + "ru.tinkoff.tcb.mockingbird.error.StubSearchError: Can't find any stub for [Post] /alpha/state1/get" ).some ) ) _ <- describe( - """Для решения подобной проблемы, надо создать вторую заглушку с таким же `path`, - |но с незаполненным `state`. Тогда, в случае отсутствия искомого состояния, будет - |отрабатывать она. Это аналогично тому как мы создали заглушку для записи нового - |состояния и заглушку для его обновления.""".stripMargin + """To solve such a problem, one should create a second stub with the same `path`, + |but with an empty `state`. Then, in the absence of the searched state, it + |will be triggered. This is similar to how we created a stub for writing a new + |state and a stub for its update.""".stripMargin ) } yield () } - example("Несколько состояний подходящих под условие поиска") { + example("Multiple states matching the search condition") { for { _ <- describe( - """В предыдущем примере было рассмотрено создание и модификация состояния, - |для этого было создано две соответствующие заглушки. Важно помнить, что если - |секция `state` не указана, а указана только секция `persist`, то в БД **всегда** - |создается новый объект состояния. При это заглушка с заполненным полем `state` - |будет выбрана только в том случае, если в результате поиска по заданным - |параметрам из БД вернулся строго один объект с состоянием.""".stripMargin + """In the previous example, creating and modifying a state was discussed, + |for which two corresponding stubs were created. It is important to remember that if + |the `state` section is not specified, and only the `persist` section is, then in the database **always** + |a new state object is created. Meanwhile, a stub with a filled `state` + |field will be selected only in the case that, as a result of the search by specified + |parameters, exactly one state object is returned from the database.""".stripMargin ) _ <- describe( - """**ВНИМАНИЕ!** Функции удаления состояний в Mockingbird нет. Неосторожная работа - |с состояниями может привести к неработоспособности заглушек и придется удалять - |данные напрямую из БД.""".stripMargin + """**ATTENTION!** There is no function to delete states in Mockingbird. Careless work + |with states can lead to the inoperability of stubs, and it will be necessary to delete + |data directly from the database.""".stripMargin ) - _ <- describe("Для демонстрации этого создадим новые заглушки для записи и чтения состояния.") + _ <- describe("To demonstrate this, we will create new stubs for writing and reading a state.") resp <- sendHttp( method = Post, path = "/api/internal/mockingbird/v2/stub", @@ -471,7 +471,7 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { resp, HttpResponseExpected(code = CheckInteger(200).some) ) - _ <- describe("Вызовем заглушку для записи состояния") + _ <- describe("We call the stub for writing a state") resp <- sendHttp( method = Post, path = "/api/mockingbird/exec/alpha/state2", @@ -488,7 +488,7 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { body = CheckString("OK").some, ) ) - _ <- describe("Теперь попробуем его получить.") + _ <- describe("Now let's try to retrieve it.") resp <- sendHttp( method = Post, path = "/api/mockingbird/exec/alpha/state2/get", @@ -497,7 +497,7 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { |}""".stripMargin.some, headers = Seq("Content-Type" -> "application/json"), ) - _ <- describe("Тут всё хорошо и мы получили то, что записали.") + _ <- describe("Here everything is fine, and we got what we wrote.") _ <- checkHttp( resp, HttpResponseExpected( @@ -508,7 +508,7 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { ).some, ) ) - _ <- describe("Теперь еще раз отправим объект с таким же `bad_id`") + _ <- describe("Now we send the object with the same `bad_id` again") resp <- sendHttp( method = Post, path = "/api/mockingbird/exec/alpha/state2", @@ -525,7 +525,7 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { body = CheckString("OK").some, ) ) - _ <- describe("И снова попробуем его получить.") + _ <- describe("And try to retrieve it again.") resp <- sendHttp( method = Post, path = "/api/mockingbird/exec/alpha/state2/get", @@ -534,17 +534,17 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { |}""".stripMargin.some, headers = Seq("Content-Type" -> "application/json"), ) - _ <- describe("А вот тут уже ошибка") + _ <- describe("And here we encounter an error") _ <- checkHttp( resp, HttpResponseExpected( code = CheckInteger(400).some, body = CheckString( - "ru.tinkoff.tcb.mockingbird.error.StubSearchError: Для одной или нескольких заглушек найдено более одного подходящего состояния" + "ru.tinkoff.tcb.mockingbird.error.StubSearchError: For one or more stubs, multiple suitable states were found" ).some, ) ) - _ <- describe("Для проверки состояний подходящих для под заданное условие, можно выполнить следующий запрос.") + _ <- describe("To check for states that fit the given condition, one can perform the following request.") resp <- sendHttp( method = Post, path = "/api/internal/mockingbird/fetchStates", @@ -555,7 +555,7 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { |}""".stripMargin.some, headers = Seq("Content-Type" -> "application/json"), ) - _ <- describe("В результате будет два объекта") + _ <- describe("As a result, there will be two objects") _ <- checkHttp( resp, HttpResponseExpected( @@ -585,9 +585,9 @@ class HttpStubWithState[HttpResponseR] extends ExampleSet[HttpResponseR] { ) ) _ <- describe( - """Ручка `/api/internal/mockingbird/fetchStates` возвращает состояния в том виде - |как они хранятся в БД, присутствуют поля `id`, `created`, а записанное состояние - |хранится в поле `data`.""".stripMargin + """The `/api/internal/mockingbird/fetchStates` endpoint returns states as + |they are stored in the database, with fields `id`, `created`, and the recorded state + |stored in the `data` field.""".stripMargin ) } yield () } diff --git a/backend/examples/src/test/scala/ru/tinkoff/tcb/mockingbird/examples/BaseSuite.scala b/backend/examples/src/test/scala/ru/tinkoff/tcb/mockingbird/examples/BaseSuite.scala index 55bf2823..f6747cdb 100644 --- a/backend/examples/src/test/scala/ru/tinkoff/tcb/mockingbird/examples/BaseSuite.scala +++ b/backend/examples/src/test/scala/ru/tinkoff/tcb/mockingbird/examples/BaseSuite.scala @@ -22,7 +22,7 @@ trait BaseSuite extends AsyncScalaTestSuite with TestContainerForAll { override val containerDef: DockerComposeContainer.Def = DockerComposeContainer.Def( - new File("./compose-test.yml"), + new File("../compose-test.yml"), exposedServices = Seq( ExposedService("mockingbird", 9000, 1), ExposedService("mockingbird", 8228, 1, Wait.forLogMessage(".*\"App started\".*", 1)), diff --git a/backend/mockingbird-api/src/main/scala/ru/tinkoff/tcb/mockingbird/Mockingbird.scala b/backend/mockingbird-api/src/main/scala/ru/tinkoff/tcb/mockingbird/Mockingbird.scala index 32163e25..b0ab4670 100644 --- a/backend/mockingbird-api/src/main/scala/ru/tinkoff/tcb/mockingbird/Mockingbird.scala +++ b/backend/mockingbird-api/src/main/scala/ru/tinkoff/tcb/mockingbird/Mockingbird.scala @@ -50,6 +50,8 @@ import ru.tinkoff.tcb.mockingbird.stream.EphemeralCleaner import ru.tinkoff.tcb.mockingbird.stream.EventSpawner import ru.tinkoff.tcb.mockingbird.stream.SDFetcher import ru.tinkoff.tcb.utils.metrics.makeRegistry +import ru.tinkoff.tcb.utils.resource.readStr +import ru.tinkoff.tcb.utils.sandboxing.GraalJsSandbox object Mockingbird extends scala.App { type FL = WLD & ServerConfig & PublicHttp & EventSpawner & ResourceManager & EphemeralCleaner & GrpcRequestHandler @@ -138,6 +140,9 @@ object Mockingbird extends scala.App { scopedBackend <- HttpClientZioBackend.scopedUsingClient(httpClient) } yield scopedBackend }, + (ZLayer.service[ServerConfig].project(_.sandbox) ++ ZLayer.fromZIO( + ZIO.attempt(readStr("prelude.js")).map(Option(_)) + )) >>> GraalJsSandbox.live, mongoLayer, aesEncoder, collection(_.stub) >>> HttpStubDAOImpl.live, @@ -179,11 +184,14 @@ object Mockingbird extends scala.App { .provide( ZLayer.succeed(requestContext), Tracing.live, + MockingbirdConfiguration.server, MockingbirdConfiguration.mongo, MockingbirdConfiguration.tracing, mongoLayer, collection(_.state) >>> PersistentStateDAOImpl.live, collection(_.grpcStub) >>> GrpcStubDAOImpl.live, + (ZLayer.service[ServerConfig].project(_.sandbox) ++ ZLayer + .fromZIO(ZIO.attempt(readStr("prelude.js")).map(Option(_)))) >>> GraalJsSandbox.live, GrpcStubResolverImpl.live, GrpcRequestHandlerImpl.live ) diff --git a/backend/mockingbird-api/src/main/scala/ru/tinkoff/tcb/mockingbird/api/admin/package.scala b/backend/mockingbird-api/src/main/scala/ru/tinkoff/tcb/mockingbird/api/admin/package.scala index e127e0cf..cbbe1af9 100644 --- a/backend/mockingbird-api/src/main/scala/ru/tinkoff/tcb/mockingbird/api/admin/package.scala +++ b/backend/mockingbird-api/src/main/scala/ru/tinkoff/tcb/mockingbird/api/admin/package.scala @@ -49,21 +49,21 @@ package object admin { .in("fetchStates") .in(jsonBody[SearchRequest]) .out(jsonBody[Vector[PersistentState]]) - .summary("Выборка состояний по предикату") + .summary("Fetch states by predicate") val testXPath: Endpoint[Unit, XPathTestRequest, Throwable, String, Any] = basicTest.post .in("testXpath") .in(jsonBody[XPathTestRequest]) .out(stringBody) - .summary("Тестирование работоспособности XPath-выражения") + .summary("Test XPath expression") private val tryStub: PublicEndpoint[ExecInputB, Throwable, SID[ HttpStub ], Any] = basicTest .in("tryStub") - .summary("Проверка резолвинга HTTP заглушки") + .summary("Test HTTP stub resolution") .in(execInput) .in( binaryBody(RawBodyType.ByteArrayBody)[Option[String]] @@ -93,7 +93,7 @@ package object admin { .in("tryScenario") .in(jsonBody[ScenarioResolveRequest]) .out(jsonBody[SID[Scenario]]) - .summary("Проверка резолвинга сценария") + .summary("Test scenario resolution") private val basicV2 = basic.in("v2").tag("setup v2") @@ -102,19 +102,19 @@ package object admin { val fetchServices: Endpoint[Unit, Unit, Throwable, Vector[Service], Any] = serviceBase.get .out(jsonBody[Vector[Service]]) - .summary("Получение списка сервисов") + .summary("Get service list") val createService: Endpoint[Unit, CreateServiceRequest, Throwable, OperationResult[String], Any] = serviceBase.post .in(jsonBody[CreateServiceRequest]) .out(jsonBody[OperationResult[String]]) - .summary("Создание сервиса") + .summary("Create service") val getService: Endpoint[Unit, String, Throwable, Option[Service], Any] = serviceBase.get .in(path[String].name("suffix")) .out(jsonBody[Option[Service]]) - .summary("Получение сервиса по суффиксу") + .summary("Get service by suffix") private val stubBase = basicV2.in("stub") @@ -126,32 +126,32 @@ package object admin { .in(query[Option[String]]("service")) .in(query[List[String]]("labels")) .out(jsonBody[Vector[HttpStub]]) - .summary("Получение списка заглушек") + .summary("Get stub list") val createHttpStub: Endpoint[Unit, CreateStubRequest, Throwable, OperationResult[SID[HttpStub]], Any] = stubBase.post .in(jsonBody[CreateStubRequest]) .out(jsonBody[OperationResult[SID[HttpStub]]]) - .summary("Создание HTTP мока") + .summary("Create HTTP mock") val getStub: Endpoint[Unit, SID[HttpStub], Throwable, Option[HttpStub], Any] = stubBase.get .in(path[SID[HttpStub]].name("id")) .out(jsonBody[Option[HttpStub]]) - .summary("Получение заглушки по id") + .summary("Get stub by id") val updateStub: Endpoint[Unit, (SID[HttpStub], UpdateStubRequest), Throwable, OperationResult[SID[HttpStub]], Any] = stubBase.patch .in(path[SID[HttpStub]].name("id")) .in(jsonBody[UpdateStubRequest]) .out(jsonBody[OperationResult[SID[HttpStub]]]) - .summary("Обновление заглушки по id") + .summary("Update stub by id") val deleteStub: Endpoint[Unit, SID[HttpStub], Throwable, OperationResult[String], Any] = stubBase.delete .in(path[SID[HttpStub]].name("id")) .out(jsonBody[OperationResult[String]]) - .summary("Удаление HTTP мока") + .summary("Delete HTTP mock") private val scenarioBase = basicV2.in("scenario") @@ -163,19 +163,19 @@ package object admin { .in(query[Option[String]]("service")) .in(query[List[String]]("labels")) .out(jsonBody[Vector[Scenario]]) - .summary("Получение списка сценариев") + .summary("Get scenario list") val createScenario: Endpoint[Unit, CreateScenarioRequest, Throwable, OperationResult[SID[Scenario]], Any] = scenarioBase.post .in(jsonBody[CreateScenarioRequest]) .out(jsonBody[OperationResult[SID[Scenario]]]) - .summary("Создание событийного мока") + .summary("Create scenario") val getScenario: Endpoint[Unit, SID[Scenario], Throwable, Option[Scenario], Any] = scenarioBase.get .in(path[SID[Scenario]].name("id")) .out(jsonBody[Option[Scenario]]) - .summary("Получение сценария по id") + .summary("Get scenario by id") val updateScenario : Endpoint[Unit, (SID[Scenario], UpdateScenarioRequest), Throwable, OperationResult[SID[Scenario]], Any] = @@ -183,13 +183,13 @@ package object admin { .in(path[SID[Scenario]].name("id")) .in(jsonBody[UpdateScenarioRequest]) .out(jsonBody[OperationResult[SID[Scenario]]]) - .summary("Обновление сценария по id") + .summary("Update scenario id") val deleteScenario: Endpoint[Unit, SID[Scenario], Throwable, OperationResult[String], Any] = scenarioBase.delete .in(path[SID[Scenario]].name("id")) .out(jsonBody[OperationResult[String]]) - .summary("Удаление сценария") + .summary("Delete scenario") private val labelBase = basicV2.in("label") @@ -232,20 +232,20 @@ package object admin { sourceConfBase.get .in(query[Option[String Refined NonEmpty]]("service")) .out(jsonBody[Vector[SourceDTO]]) - .summary("Получение списка конфигураций источников") + .summary("Get source configurations") val getSourceConfiguration = sourceConfBase.get .in(path[SID[SourceConfiguration]].name("name")) .out(jsonBody[Option[SourceConfiguration]]) - .summary("Получение конфигурации источника по имени") + .summary("Get source by name") val createSourceConf : Endpoint[Unit, CreateSourceConfigurationRequest, Throwable, OperationResult[SID[SourceConfiguration]], Any] = sourceConfBase.post .in(jsonBody[CreateSourceConfigurationRequest]) .out(jsonBody[OperationResult[SID[SourceConfiguration]]]) - .summary("Создание конфигурации источника") + .summary("Create source") val updateSourceConf : Endpoint[Unit, (SID[SourceConfiguration], UpdateSourceConfigurationRequest), Throwable, OperationResult[ @@ -255,13 +255,13 @@ package object admin { .in(path[SID[SourceConfiguration]].name("name")) .in(jsonBody[UpdateSourceConfigurationRequest]) .out(jsonBody[OperationResult[SID[SourceConfiguration]]]) - .summary("Обновление конфигурации по name") + .summary("Update source by name name") val deleteSourceConf: Endpoint[Unit, SID[SourceConfiguration], Throwable, OperationResult[String], Any] = sourceConfBase.delete .in(path[SID[SourceConfiguration]].name("name")) .out(jsonBody[OperationResult[String]]) - .summary("Удаление конфигурации") + .summary("Delete source") private val destinationConfBase = basicV3.in("destination") @@ -270,13 +270,13 @@ package object admin { destinationConfBase.get .in(query[Option[String Refined NonEmpty]]("service")) .out(jsonBody[Vector[DestinationDTO]]) - .summary("Получение списка конфигураций назначений") + .summary("Get destinations list") val getDestinationConfiguration = destinationConfBase.get .in(path[SID[DestinationConfiguration]].name("name")) .out(jsonBody[Option[DestinationConfiguration]]) - .summary("Получение конфигурации назначения по имени") + .summary("Get destination by name") val createDestinationConf: Endpoint[Unit, CreateDestinationConfigurationRequest, Throwable, OperationResult[ SID[DestinationConfiguration] @@ -284,7 +284,7 @@ package object admin { destinationConfBase.post .in(jsonBody[CreateDestinationConfigurationRequest]) .out(jsonBody[OperationResult[SID[DestinationConfiguration]]]) - .summary("Создание конфигурации источника") + .summary("Create destination") val updateDestinationConf: Endpoint[ Unit, @@ -299,5 +299,5 @@ package object admin { .in(path[SID[DestinationConfiguration]].name("name")) .in(jsonBody[UpdateDestinationConfigurationRequest]) .out(jsonBody[OperationResult[SID[DestinationConfiguration]]]) - .summary("Обновление конфигурации по name") + .summary("Update destination by name") } diff --git a/backend/mockingbird-api/src/main/scala/ru/tinkoff/tcb/mockingbird/codec/package.scala b/backend/mockingbird-api/src/main/scala/ru/tinkoff/tcb/mockingbird/codec/package.scala index e48d95ea..ec70dc1c 100644 --- a/backend/mockingbird-api/src/main/scala/ru/tinkoff/tcb/mockingbird/codec/package.scala +++ b/backend/mockingbird-api/src/main/scala/ru/tinkoff/tcb/mockingbird/codec/package.scala @@ -38,7 +38,7 @@ package object codec { case BinaryResponse(_, _, body, _) => body.asArray case EmptyResponse(_, _, _) => Array.empty /** - * все *ProxyResponse преобразуются в RawResponse внутри [[PublicApiHandler]] (методы *proxyRequest) + * all *ProxyResponse are converted into RawResponse inside [[PublicApiHandler]] (see *proxyRequest methods) */ case ProxyResponse(_, _, _) => throw new UnsupportedOperationException() case JsonProxyResponse(_, _, _, _) => throw new UnsupportedOperationException() diff --git a/backend/mockingbird-native/src/main/resources/META-INF/native-image/ru.tinkoff.tcb/mockingbird/jni-config.json b/backend/mockingbird-native/src/main/resources/META-INF/native-image/ru.tinkoff.tcb/mockingbird/jni-config.json index b74e0001..4761a198 100644 --- a/backend/mockingbird-native/src/main/resources/META-INF/native-image/ru.tinkoff.tcb/mockingbird/jni-config.json +++ b/backend/mockingbird-native/src/main/resources/META-INF/native-image/ru.tinkoff.tcb/mockingbird/jni-config.json @@ -121,6 +121,10 @@ "name":"java.lang.Boolean", "methods":[{"name":"getBoolean","parameterTypes":["java.lang.String"] }] }, +{ + "name":"java.lang.Class", + "methods":[{"name":"getClassLoader","parameterTypes":[] }] +}, { "name":"java.lang.ClassLoader", "methods":[{"name":"getPlatformClassLoader","parameterTypes":[] }, {"name":"loadClass","parameterTypes":["java.lang.String"] }] @@ -167,6 +171,9 @@ "name":"java.nio.channels.ClosedChannelException", "methods":[{"name":"","parameterTypes":[] }] }, +{ + "name":"jdk.internal.loader.ClassLoaders$AppClassLoader" +}, { "name":"jdk.internal.loader.ClassLoaders$PlatformClassLoader" }, diff --git a/backend/mockingbird-native/src/main/resources/META-INF/native-image/ru.tinkoff.tcb/mockingbird/reflect-config.json b/backend/mockingbird-native/src/main/resources/META-INF/native-image/ru.tinkoff.tcb/mockingbird/reflect-config.json index 4ceab65e..e715d45d 100644 --- a/backend/mockingbird-native/src/main/resources/META-INF/native-image/ru.tinkoff.tcb/mockingbird/reflect-config.json +++ b/backend/mockingbird-native/src/main/resources/META-INF/native-image/ru.tinkoff.tcb/mockingbird/reflect-config.json @@ -185,6 +185,9 @@ { "name":"io.grpc.census.InternalCensusTracingAccessor" }, +{ + "name":"io.grpc.okhttp.OkHttpServerProvider" +}, { "name":"io.micrometer.core.instrument.DistributionSummary$Builder", "queryAllPublicMethods":true @@ -553,11 +556,19 @@ }, { "name":"java.lang.Boolean", - "fields":[{"name":"TYPE"}] + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "queryAllDeclaredMethods": true, + "queryAllPublicMethods" : true }, { "name":"java.lang.Byte", - "fields":[{"name":"TYPE"}] + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "queryAllDeclaredMethods": true, + "queryAllPublicMethods" : true }, { "name":"java.lang.Character", @@ -572,25 +583,49 @@ }, { "name":"java.lang.Double", - "fields":[{"name":"TYPE"}] + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "queryAllDeclaredMethods": true, + "queryAllPublicMethods" : true }, { "name":"java.lang.Exception" }, { "name":"java.lang.Float", - "fields":[{"name":"TYPE"}] + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "queryAllDeclaredMethods": true, + "queryAllPublicMethods" : true }, { "name":"java.lang.IllegalArgumentException" }, { "name":"java.lang.Integer", - "fields":[{"name":"TYPE"}] + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "queryAllDeclaredMethods": true, + "queryAllPublicMethods" : true }, { "name":"java.lang.Long", - "fields":[{"name":"TYPE"}] + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "queryAllDeclaredMethods": true, + "queryAllPublicMethods" : true +}, +{ + "name":"java.lang.Math", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "queryAllDeclaredMethods": true, + "queryAllPublicMethods" : true }, { "name":"java.lang.Module", @@ -614,11 +649,19 @@ }, { "name":"java.lang.Short", - "fields":[{"name":"TYPE"}] + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "queryAllDeclaredMethods": true, + "queryAllPublicMethods" : true }, { "name":"java.lang.String", - "fields":[{"name":"TYPE"}] + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "queryAllDeclaredMethods": true, + "queryAllPublicMethods" : true }, { "name":"java.lang.Thread", @@ -663,10 +706,20 @@ "methods":[{"name":"getInputArguments","parameterTypes":[] }, {"name":"getName","parameterTypes":[] }] }, { - "name":"java.math.BigDecimal" + "name":"java.math.BigDecimal", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "queryAllDeclaredMethods": true, + "queryAllPublicMethods" : true }, { - "name":"java.math.BigInteger" + "name":"java.math.BigInteger", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "queryAllDeclaredMethods": true, + "queryAllPublicMethods" : true }, { "name":"java.net.InetAddress", @@ -762,12 +815,68 @@ { "name":"java.time.Instant" }, +{ + "name":"java.time.LocalDate", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "queryAllDeclaredMethods": true, + "queryAllPublicMethods" : true +}, +{ + "name":"java.time.LocalDateTime", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "queryAllDeclaredMethods": true, + "queryAllPublicMethods" : true +}, +{ + "name":"java.time.format.DateTimeFormatter", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "queryAllDeclaredMethods": true, + "queryAllPublicMethods" : true +}, { "name":"java.util.Date" }, +{ + "name":"java.util.List", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "queryAllDeclaredMethods": true, + "queryAllPublicMethods" : true +}, +{ + "name":"java.util.Map", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "queryAllDeclaredMethods": true, + "queryAllPublicMethods" : true +}, { "name":"java.util.PropertyPermission" }, +{ + "name":"java.util.Random", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "queryAllDeclaredMethods": true, + "queryAllPublicMethods" : true +}, +{ + "name":"java.util.Set", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "queryAllDeclaredMethods": true, + "queryAllPublicMethods" : true +}, { "name":"java.util.concurrent.ForkJoinTask", "fields":[{"name":"aux"}, {"name":"status"}] @@ -812,6 +921,14 @@ "name":"jdk.internal.misc.Unsafe", "methods":[{"name":"getUnsafe","parameterTypes":[] }] }, +{ + "name":"org.graalvm.polyglot.io.IOHelper", + "fields":[{"name":"ACCESS"}] +}, +{ + "name":"org.graalvm.polyglot.management.Management", + "fields":[{"name":"ACCESS"}] +}, { "name":"org.slf4j.Logger" }, @@ -972,6 +1089,10 @@ "name":"sun.security.rsa.RSASignature$SHA256withRSA", "methods":[{"name":"","parameterTypes":[] }] }, +{ + "name":"sun.security.ssl.KeyManagerFactoryImpl$SunX509", + "methods":[{"name":"","parameterTypes":[] }] +}, { "name":"sun.security.ssl.SSLContextImpl", "fields":[{"name":"trustManager"}] diff --git a/backend/mockingbird-native/src/main/resources/META-INF/native-image/ru.tinkoff.tcb/mockingbird/resource-config.json b/backend/mockingbird-native/src/main/resources/META-INF/native-image/ru.tinkoff.tcb/mockingbird/resource-config.json index 340f204d..8dcc415d 100644 --- a/backend/mockingbird-native/src/main/resources/META-INF/native-image/ru.tinkoff.tcb/mockingbird/resource-config.json +++ b/backend/mockingbird-native/src/main/resources/META-INF/native-image/ru.tinkoff.tcb/mockingbird/resource-config.json @@ -6,10 +6,16 @@ "pattern":"\\Qcats/data/Chain$.class\\E" }, { "pattern":"\\Qcats/effect/concurrent/Ref$SyncRef.class\\E" + }, { + "pattern":"\\Qcats/instances/ListInstances$$anon$1.class\\E" }, { "pattern":"\\Qcats/instances/VectorInstances$$anon$1.class\\E" }, { "pattern":"\\Qcats/syntax/ApplicativeErrorOps$.class\\E" + }, { + "pattern":"\\Qcom/oracle/truffle/js/lang/JavaScriptLanguage.class\\E" + }, { + "pattern":"\\Qcom/oracle/truffle/regex/RegexLanguage.class\\E" }, { "pattern":"\\Qeu/timepit/fs2cron/package$.class\\E" }, { diff --git a/backend/mockingbird/src/main/resources/application.conf b/backend/mockingbird/src/main/resources/application.conf index 374adceb..fa8a37ce 100644 --- a/backend/mockingbird/src/main/resources/application.conf +++ b/backend/mockingbird/src/main/resources/application.conf @@ -19,7 +19,8 @@ ru.tinkoff.tcb { port = 8228 allowedOrigins = [ "http://localhost", - "http://localhost:3000" + "http://localhost:3000", + "http://localhost:8228" ] } diff --git a/backend/mockingbird/src/main/resources/prelude.js b/backend/mockingbird/src/main/resources/prelude.js new file mode 100644 index 00000000..bb872b78 --- /dev/null +++ b/backend/mockingbird/src/main/resources/prelude.js @@ -0,0 +1,61 @@ +function randomInt(lbound, rbound) { + if (typeof rbound === "undefined") + return Math.floor(Math.random() * lbound); + var min = Math.ceil(lbound); + var max = Math.floor(rbound); + return Math.floor(Math.random() * (max - min) + min); +} + +function randomLong(lbound, rbound) { + return randomInt(lbound, rbound); +} + +function randomString(param1, param2, param3) { + if (typeof param2 === "undefined" || typeof param3 === "undefined") { + var result = ''; + var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + var charactersLength = characters.length; + for ( var i = 0; i < param1; i++ ) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)); + } + return result; + } + + var result = ''; + var charactersLength = param1.length; + for ( var i = 0; i < randomInt(param2, param3); i++ ) { + result += param1.charAt(Math.floor(Math.random() * charactersLength)); + } + return result; +} + +function randomNumericString(length) { + return randomString('0123456789', length, length + 1); +} + +// https://stackoverflow.com/a/8809472/3819595 +function UUID() { // Public Domain/MIT + var d = new Date().getTime();//Timestamp + var d2 = ((typeof performance !== 'undefined') && performance.now && (performance.now()*1000)) || 0;//Time in microseconds since page-load or 0 if unsupported + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = Math.random() * 16;//random number between 0 and 16 + if(d > 0){//Use timestamp until depleted + r = (d + r)%16 | 0; + d = Math.floor(d/16); + } else {//Use microseconds since page-load if supported + r = (d2 + r)%16 | 0; + d2 = Math.floor(d2/16); + } + return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16); + }); +} + +function now(pattern) { + var format = java.time.format.DateTimeFormatter.ofPattern(pattern); + return java.time.LocalDateTime.now().format(format); +} + +function today(pattern) { + var format = java.time.format.DateTimeFormatter.ofPattern(pattern); + return java.time.LocalDate.now().format(format); +} \ No newline at end of file diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/AdminApiHandler.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/AdminApiHandler.scala index 4f86a040..18dbc013 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/AdminApiHandler.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/AdminApiHandler.scala @@ -77,7 +77,7 @@ final class AdminApiHandler( _ <- ZIO.when(service1.isEmpty && service2.isEmpty)( ZIO.fail( ValidationError( - Vector(s"Не удалось подобрать сервис для ${body.path.orElse(body.pathPattern.map(_.regex)).getOrElse("")}") + Vector(s"Can't find service for ${body.path.orElse(body.pathPattern.map(_.regex)).getOrElse("")}") ) ) ) @@ -95,7 +95,10 @@ final class AdminApiHandler( candidates2 = candidates1.filter(_.state == body.state) _ <- ZIO.when(candidates2.nonEmpty)( ZIO.fail( - DuplicationError("Существует заглушка(-ки), полностью совпадающая по условиям и типу", candidates2.map(_.id)) + DuplicationError( + "There exists a stub or stubs that match completely in terms of conditions and type", + candidates2.map(_.id) + ) ) ) now <- ZIO.clockWith(_.instant) @@ -119,7 +122,7 @@ final class AdminApiHandler( _ <- ZIO.when(service.isEmpty)( ZIO.fail( ValidationError( - Vector(s"Сервис ${body.service} не существует") + Vector(s"Service ${body.service} does not exist") ) ) ) @@ -135,7 +138,7 @@ final class AdminApiHandler( _ <- ZIO.when(candidates2.nonEmpty)( ZIO.fail( DuplicationError( - "Существует сценарий(и), полностью совпадающий по источнику, условиям и типу", + "There exist scenario(s) that match completely in terms of source, conditions, and type", candidates2.map(_.id) ) ) @@ -162,7 +165,7 @@ final class AdminApiHandler( _ <- ZIO.when(candidates.nonEmpty)( ZIO.fail( DuplicationError( - s"Существует сервис(ы), имеющий суффикс ${body.suffix.value}", + s"There exist service(s) that have a suffix ${body.suffix.value}", candidates.map(_.name) ) ) @@ -198,7 +201,7 @@ final class AdminApiHandler( _ <- Tracing.update(_.addToPayload("path" -> path, "method" -> method.entryName)) (stub, _) <- f(Scope.Countdown) .filterOrElse(_.isDefined)(f(Scope.Ephemeral).filterOrElse(_.isDefined)(f(Scope.Persistent))) - .someOrFail(StubSearchError(s"Не удалось подобрать заглушку для [$method] $path")) + .someOrFail(StubSearchError(s"Cant find a stub for [$method] $path")) } yield stub.id } @@ -208,7 +211,7 @@ final class AdminApiHandler( for { (scenario, _) <- f(Scope.Countdown) .filterOrElse(_.isDefined)(f(Scope.Ephemeral).filterOrElse(_.isDefined)(f(Scope.Persistent))) - .someOrFail(ScenarioSearchError(s"Не удалось подобрать сценарий для сообщения из ${body.source}")) + .someOrFail(ScenarioSearchError(s"Can't find any scenario for the message from ${body.source}")) } yield scenario.id } @@ -298,7 +301,7 @@ final class AdminApiHandler( _ <- ZIO.when(service1.isEmpty && service2.isEmpty)( ZIO.fail( ValidationError( - Vector(s"Не удалось подобрать сервис для ${body.path.orElse(body.pathPattern.map(_.regex)).getOrElse("")}") + Vector(s"Can't find a service for ${body.path.orElse(body.pathPattern.map(_.regex)).getOrElse("")}") ) ) ) @@ -317,7 +320,10 @@ final class AdminApiHandler( candidates2 = candidates1.filter(_.state == body.state) _ <- ZIO.when(candidates2.nonEmpty)( ZIO.fail( - DuplicationError("Существует заглушка(-ки), полностью совпадающая по условиям и типу", candidates2.map(_.id)) + DuplicationError( + "There exists a stub or stubs that match completely in terms of conditions and type", + candidates2.map(_.id) + ) ) ) now <- ZIO.clockWith(_.instant) @@ -344,7 +350,7 @@ final class AdminApiHandler( _ <- ZIO.when(service.isEmpty)( ZIO.fail( ValidationError( - Vector(s"Сервис ${body.service} не существует") + Vector(s"Service ${body.service} does not exist") ) ) ) @@ -361,7 +367,7 @@ final class AdminApiHandler( _ <- ZIO.when(candidates2.nonEmpty)( ZIO.fail( DuplicationError( - "Существует сценарий(и), полностью совпадающий по источнику, условиям и типу", + "There exist scenario(s) that match completely in terms of source, conditions, and type", candidates2.map(_.id) ) ) @@ -422,7 +428,7 @@ final class AdminApiHandler( _ <- ZIO.when(service.isEmpty)( ZIO.fail( ValidationError( - Vector(s"Сервис ${body.service} не существует") + Vector(s"Service ${body.service} does not exist") ) ) ) @@ -443,7 +449,10 @@ final class AdminApiHandler( .filter(_.state == body.state) _ <- ZIO.when(candidates.nonEmpty)( ZIO.fail( - DuplicationError("Существует заглушка(-ки), полностью совпадающая по условиям и типу", candidates.map(_.id)) + DuplicationError( + "There exists a stub or stubs that match completely in terms of conditions and type", + candidates.map(_.id) + ) ) ) responseSchema <- protobufSchemaResolver.parseDefinitionFrom(responseSchemaBytes) @@ -494,7 +503,7 @@ final class AdminApiHandler( _ <- ZIO.when(service.isEmpty)( ZIO.fail( ValidationError( - Vector(s"Сервис ${body.service} не существует") + Vector(s"Service ${body.service} does not exist") ) ) ) @@ -502,7 +511,7 @@ final class AdminApiHandler( _ <- ZIO.when(candidate.nonEmpty)( ZIO.fail( DuplicationError( - "Существует конфигурация, полностью совпадающая по имени", + "There exists a configuration that matches completely by name", candidate.map(_.name).toVector ) ) @@ -519,7 +528,7 @@ final class AdminApiHandler( ZIO.fail(ex) } .catchSome { case NonFatal(ex) => - log.errorCause("Ошибка при инициализации", ex) + log.errorCause("Initialization error", ex) } .forkDaemon } yield if (res > 0) OperationResult("success", sourceConf.name) else OperationResult("nothing inserted") @@ -533,7 +542,7 @@ final class AdminApiHandler( _ <- ZIO.when(service.isEmpty)( ZIO.fail( ValidationError( - Vector(s"Сервис ${body.service} не существует") + Vector(s"Service ${body.service} does not exist") ) ) ) @@ -550,14 +559,14 @@ final class AdminApiHandler( ZIO.fail(ex) } .catchSome { case NonFatal(ex) => - log.errorCause("Ошибка при деинициализации", ex) + log.errorCause("Error during deinitialization", ex) } *> ZIO .foreachDiscard(confPatch.init.map(_.toVector).getOrElse(Vector.empty))(rm.execute) .catchSomeDefect { case NonFatal(ex) => ZIO.fail(ex) } .catchSome { case NonFatal(ex) => - log.errorCause("Ошибка при инициализации", ex) + log.errorCause("Initialization error", ex) }).forkDaemon } yield if (res.successful) OperationResult("success", confPatch.name) else OperationResult("nothing changed") @@ -571,7 +580,7 @@ final class AdminApiHandler( _ <- ZIO.when(scenarios.nonEmpty)( ZIO.fail( ValidationError( - Vector(s"Сценарии ${scenarios.mkString(",")} используют источник ${name}") + Vector(s"Scenarios ${scenarios.mkString(",")} are using source ${name}") ) ) ) @@ -579,18 +588,18 @@ final class AdminApiHandler( _ <- ZIO.when(source.isEmpty)( ZIO.fail( ValidationError( - Vector(s"Конфигурация $name не существует") + Vector(s"Configuration of name $name does not exist") ) ) ) - _ <- sourceDAO.deleteById(name) // TODO: удалять в транзакции + _ <- sourceDAO.deleteById(name) // TODO: delete in transaction _ <- ZIO .foreachDiscard(source.get.shutdown.map(_.toVector).getOrElse(Vector.empty))(rm.execute) .catchSomeDefect { case NonFatal(ex) => ZIO.fail(ex) } .catchSome { case NonFatal(ex) => - log.errorCause("Ошибка при деинициализации", ex) + log.errorCause("Error during deinitialization", ex) } .forkDaemon } yield OperationResult("success", None) @@ -621,7 +630,7 @@ final class AdminApiHandler( _ <- ZIO.when(service.isEmpty)( ZIO.fail( ValidationError( - Vector(s"Сервис ${body.service} не существует") + Vector(s"Service ${body.service} does not exist") ) ) ) @@ -629,7 +638,7 @@ final class AdminApiHandler( _ <- ZIO.when(candidate.nonEmpty)( ZIO.fail( DuplicationError( - "Существует конфигурация, полностью совпадающая по имени", + "There exists a configuration that matches completely by name", candidate.map(_.name).toVector ) ) @@ -646,7 +655,7 @@ final class AdminApiHandler( ZIO.fail(ex) } .catchSome { case NonFatal(ex) => - log.errorCause("Ошибка при инициализации", ex) + log.errorCause("Initialization error", ex) } .forkDaemon } yield if (res > 0) OperationResult("success", destinationConf.name) else OperationResult("nothing inserted") @@ -660,7 +669,7 @@ final class AdminApiHandler( _ <- ZIO.when(service.isEmpty)( ZIO.fail( ValidationError( - Vector(s"Сервис ${body.service} не существует") + Vector(s"Service ${body.service} does not exist") ) ) ) @@ -677,14 +686,14 @@ final class AdminApiHandler( ZIO.fail(ex) } .catchSome { case NonFatal(ex) => - log.errorCause("Ошибка при деинициализации", ex) + log.errorCause("Error during deinitialization", ex) } *> ZIO .foreachDiscard(confPatch.init.map(_.toVector).getOrElse(Vector.empty))(rm.execute) .catchSomeDefect { case NonFatal(ex) => ZIO.fail(ex) } .catchSome { case NonFatal(ex) => - log.errorCause("Ошибка при инициализации", ex) + log.errorCause("Initialization error", ex) }).forkDaemon } yield if (res.successful) OperationResult("success", confPatch.name) else OperationResult("nothing changed") } diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/PublicApiHandler.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/PublicApiHandler.scala index 7c365099..35f10659 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/PublicApiHandler.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/PublicApiHandler.scala @@ -43,8 +43,10 @@ import ru.tinkoff.tcb.mockingbird.model.XmlProxyResponse import ru.tinkoff.tcb.mockingbird.scenario.CallbackEngine import ru.tinkoff.tcb.mockingbird.scenario.ScenarioEngine import ru.tinkoff.tcb.protocol.log.* +import ru.tinkoff.tcb.utils.any.* import ru.tinkoff.tcb.utils.circe.optics.JsonOptic import ru.tinkoff.tcb.utils.regex.* +import ru.tinkoff.tcb.utils.sandboxing.GraalJsSandbox import ru.tinkoff.tcb.utils.transformation.json.* import ru.tinkoff.tcb.utils.transformation.string.* import ru.tinkoff.tcb.utils.transformation.xml.* @@ -58,6 +60,7 @@ final class PublicApiHandler( stateDAO: PersistentStateDAO[Task], resolver: StubResolver, engine: CallbackEngine, + implicit val jsSandbox: GraalJsSandbox, private val httpBackend: SttpBackend[Task], proxyConfig: ProxyConfig ) { @@ -77,9 +80,9 @@ final class PublicApiHandler( _ <- Tracing.update(_.addToPayload("path" -> path, "method" -> method.entryName)) (stub, stateOp) <- f(Scope.Countdown) .filterOrElse(_.isDefined)(f(Scope.Ephemeral).filterOrElse(_.isDefined)(f(Scope.Persistent))) - .someOrFail(StubSearchError(s"Не удалось подобрать заглушку для [$method] $path")) + .someOrFail(StubSearchError(s"Can't find any stub for [$method] $path")) _ <- Tracing.update(_.addToPayload("name" -> stub.name)) - seed = stub.seed.map(_.eval) + seed = stub.seed.map(_.eval.useAsIs) srb = SimpleRequestBody.subset.getOption(body).map(_.value) bodyJson = stub.request.extractJson(body) bodyXml = stub.request.extractXML(body) @@ -126,11 +129,15 @@ final class PublicApiHandler( ) case _ => ZIO.succeed( - if (stub.response.isTemplate) { - HttpStubResponse.jsonBody - .updateF(_.substitute(data).substitute(xdata)) - .andThen(HttpStubResponse.xmlBody.updateF(_.substitute(data).substitute(xdata)))(stub.response) - } else stub.response + stub.response + .applyIf(_.isTemplate)( + HttpStubResponse.jsonBody + .updateF(_.substitute(data).map(_.substitute(xdata)).use(_.pure[Id])) + .andThen(HttpStubResponse.xmlBody.updateF(_.substitute(data).map(_.substitute(xdata)).useAsIs)) + ) + .applyIf(HttpStubResponse.headers.getOption(_).exists(_.values.exists(_.isTemplate)))( + HttpStubResponse.headers.updateF(_.view.mapValues(_.substitute(data, xdata)).toMap) + ) ) } _ <- ZIO.when(stub.scope == Scope.Countdown)(stubDAO.updateById(stub.id, prop[HttpStub](_.times).inc(-1))) @@ -141,7 +148,7 @@ final class PublicApiHandler( ZIO.fail(ex) } .catchSome { case NonFatal(ex) => - log.errorCause("Ошибка при выполнении колбэка", ex) + log.errorCause("Error during callback execution", ex) } .forkDaemon ) @@ -243,7 +250,7 @@ final class PublicApiHandler( .filterNot(h => proxyConfig.excludedResponseHeaders(h.name)) .map(h => h.name -> h.value) .toMap, - jsonResponse.patch(data, patch).noSpaces, + jsonResponse.patch(data, patch).use(_.noSpaces), delay ) case Left(error) => @@ -318,8 +325,9 @@ object PublicApiHandler { ssd <- ZIO.service[PersistentStateDAO[Task]] resolver <- ZIO.service[StubResolver] engine <- ZIO.service[ScenarioEngine] + jsSandbox <- ZIO.service[GraalJsSandbox] sttpClient <- ZIO.service[SttpBackend[Task]] proxyCfg <- ZIO.service[ProxyConfig] - } yield new PublicApiHandler(hsd, ssd, resolver, engine, sttpClient, proxyCfg) + } yield new PublicApiHandler(hsd, ssd, resolver, engine, jsSandbox, sttpClient, proxyCfg) } } diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/StubResolver.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/StubResolver.scala index 2c11f2e3..9b63c892 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/StubResolver.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/StubResolver.scala @@ -28,8 +28,13 @@ import ru.tinkoff.tcb.predicatedsl.Keyword import ru.tinkoff.tcb.utils.circe.optics.JsonOptic import ru.tinkoff.tcb.utils.id.SID import ru.tinkoff.tcb.utils.regex.* +import ru.tinkoff.tcb.utils.sandboxing.GraalJsSandbox -final class StubResolver(stubDAO: HttpStubDAO[Task], stateDAO: PersistentStateDAO[Task]) { +final class StubResolver( + stubDAO: HttpStubDAO[Task], + stateDAO: PersistentStateDAO[Task], + implicit val jsSandbox: GraalJsSandbox +) { private val log = MDCLogging.`for`[WLD](this) private type StateSpec = Map[JsonOptic, Map[Keyword.Json, Json]] @@ -45,7 +50,7 @@ final class StubResolver(stubDAO: HttpStubDAO[Task], stateDAO: PersistentStateDA ): RIO[WLD, Option[(HttpStub, Option[PersistentState])]] = ( for { - _ <- log.info("Поиск заглушек для запроса {} типа {}", path, scope) + _ <- log.info("Searching stubs for request to {} of type {}", path, scope) pathPatternExpr = Expression[HttpStub]( None, "$expr" -> BsonDocument( @@ -66,29 +71,32 @@ final class StubResolver(stubDAO: HttpStubDAO[Task], stateDAO: PersistentStateDA ) candidates0 <- stubDAO.findChunk(condition, 0, Int.MaxValue) _ <- ZIO.when(candidates0.isEmpty)( - log.info("Не найдены обработчики для запроса {} типа {}", path, scope) *> ZIO.fail(EarlyReturn) + log.info("Can't find any handler for {} of type {}", path, scope) *> ZIO.fail(EarlyReturn) ) - _ <- log.info("Кандидаты: {}", candidates0.map(_.id)) + _ <- log.info("Candidates are: {}", candidates0.map(_.id)) candidates1 = candidates0.filter(_.request.checkQueryParams(queryObject)) _ <- ZIO.when(candidates1.isEmpty)( log.warn( - "После проверки query параметров не осталось кандидатов, проверьте параметры: {}", + "After checking query parameters, there are no candidates left. Please verify the parameters: {}", queryObject.noSpaces ) *> ZIO.fail(EarlyReturn) ) - _ <- log.info("После проверки query параметров: {}", candidates1.map(_.id)) + _ <- log.info("After query parameters check: {}", candidates1.map(_.id)) candidates2 = candidates1.filter(_.request.checkHeaders(headers)) _ <- ZIO.when(candidates2.isEmpty)( - log.warn("После проверки заголовков не осталось кандидатов, проверьте заголовки: {}", headers) *> + log.warn("After checking headers, there are no candidates left. Please verify the headers: {}", headers) *> ZIO.fail(EarlyReturn) ) - _ <- log.info("После проверки заголовков: {}", candidates2.map(_.id)) + _ <- log.info("After headers check: {}", candidates2.map(_.id)) candidates3 = candidates2.filter(_.request.checkBody(body)) _ <- ZIO.when(candidates3.isEmpty)( - log.warn("После проверки тела запроса не осталось кандидатов, проверьте тело запроса: {}", body) *> + log.warn( + "After checking the request body, there are no candidates left. Please verify the request body: {}", + body + ) *> ZIO.fail(EarlyReturn) ) - _ <- log.info("После валидации тела: {}", candidates3.map(_.id)) + _ <- log.info("After body check: {}", candidates3.map(_.id)) candidates4 <- candidates3.traverse { stubc => val bodyJson = stubc.request.extractJson(body) val bodyXml = stubc.request.extractXML(body) @@ -111,20 +119,20 @@ final class StubResolver(stubDAO: HttpStubDAO[Task], stateDAO: PersistentStateDA ) } _ <- ZIO.when(candidates4.exists(_._2.size > 1))( - log.error("Для одной или нескольких заглушек найдено более одного подходящего состояния") *> - ZIO.fail(StubSearchError("Для одной или нескольких заглушек найдено более одного подходящего состояния")) + log.error("For one or more stubs, multiple suitable states were found") *> + ZIO.fail(StubSearchError("For one or more stubs, multiple suitable states were found")) ) _ <- ZIO.when(candidates4.count(_._2.nonEmpty) > 1)( - log.error("Для более чем одной заглушки нашлось подходящее состояние") *> - ZIO.fail(StubSearchError("Для более чем одной заглушки нашлось подходящее состояние")) + log.error("For more than one stub, suitable states were found") *> + ZIO.fail(StubSearchError("For more than one stub, suitable states were found")) ) _ <- ZIO.when(candidates4.size > 1 && candidates4.forall(c => c._1.state.isDefined && c._2.isEmpty))( - log.error("Ни для одной заглушки не найдено подходящего состояния") *> - ZIO.fail(StubSearchError("Ни для одной заглушки не найдено подходящего состояния")) + log.error("No suitable state found for any stub") *> + ZIO.fail(StubSearchError("No suitable state found for any stub")) ) _ <- ZIO.when(candidates4.size > 1 && candidates4.forall(_._1.state.isEmpty))( - log.error("Найдено более одной не требующей состояния заглушки") *> - ZIO.fail(StubSearchError("Найдено более одной не требующей состояния заглушки")) + log.error("More than one stateless stub found") *> + ZIO.fail(StubSearchError("More than one stateless stub found")) ) res = candidates4.find(_._2.size == 1) orElse candidates4.find(_._1.state.isEmpty) } yield res.map { case (stub, states) => stub -> states.headOption } @@ -144,19 +152,20 @@ final class StubResolver(stubDAO: HttpStubDAO[Task], stateDAO: PersistentStateDA private def findStates(id: SID[?], spec: StateSpec): RIO[WLD, Vector[PersistentState]] = for { - _ <- log.info("Поиск state для {} по условию {}", id, spec.renderJson.noSpaces) + _ <- log.info("Searching state for {} by condition {}", id, spec.renderJson.noSpaces) states <- stateDAO.findBySpec(spec) _ <- - if (states.nonEmpty) log.info("Найдены состояния для {}: {}", id, states.map(_.id)) - else log.info("Не найдено подходящих состояний для {}", id) + if (states.nonEmpty) log.info("Found states for {}: {}", id, states.map(_.id)) + else log.info("Unable to find suitable states for {}", id) } yield states } object StubResolver { val live = ZLayer { for { - hsd <- ZIO.service[HttpStubDAO[Task]] - ssd <- ZIO.service[PersistentStateDAO[Task]] - } yield new StubResolver(hsd, ssd) + hsd <- ZIO.service[HttpStubDAO[Task]] + ssd <- ZIO.service[PersistentStateDAO[Task]] + jsSandbox <- ZIO.service[GraalJsSandbox] + } yield new StubResolver(hsd, ssd, jsSandbox) } } diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/CreateDestinationConfigurationRequest.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/CreateDestinationConfigurationRequest.scala index 3b8e6a9f..5babc310 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/CreateDestinationConfigurationRequest.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/CreateDestinationConfigurationRequest.scala @@ -16,16 +16,16 @@ import ru.tinkoff.tcb.utils.id.SID @derive(decoder, encoder, schema) final case class CreateDestinationConfigurationRequest( - @description("Уникальное название конфигурации") + @description("Unique configuration name") name: SID[DestinationConfiguration], - @description("Описание конфигурации") + @description("Configuration description") description: String, service: String, - @description("Спецификация запроса") + @description("Request specification") request: EventDestinationRequest, - @description("Спецификация инициализатора") + @description("Initializer specification") init: Option[NonEmptyVector[ResourceRequest]], - @description("Спецификация деинициализатора") + @description("Finalizer specification") shutdown: Option[NonEmptyVector[ResourceRequest]] ) diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/CreateScenarioRequest.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/CreateScenarioRequest.scala index 89121820..d6a2058b 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/CreateScenarioRequest.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/CreateScenarioRequest.scala @@ -29,29 +29,29 @@ import ru.tinkoff.tcb.utils.id.SID @derive(decoder, encoder, schema) final case class CreateScenarioRequest( - @description("Тип конфигурации") + @description("Scope") scope: Scope, - @description("Количество возможных срабатываний. Имеет смысл только для scope=countdown") + @description("The number of possible triggers. Only relevant for scope=countdown") times: Option[Int Refined NonNegative] = Some(refineMV(1)), service: String Refined NonEmpty, - @description("Имя сценария, отображается в логах, полезно для отладки") + @description("Scenario name (shown in logs, handy for debugging)") name: String Refined NonEmpty, - @description("Имя источника событий") + @description("Event source name") source: SID[SourceConfiguration], seed: Option[Json], - @description("Спецификация события") + @description("Event specification") input: ScenarioInput, - @description("Предикат для поиска состояния") + @description("State search predicate") state: Option[Map[JsonOptic, Map[Keyword.Json, Json]]], - @description("Данные, записываемые в базу") + @description("Persisted data") persist: Option[Map[JsonOptic, Json]], - @description("Имя назначения ответа") + @description("Destination name") destination: Option[SID[DestinationConfiguration]], - @description("Спецификация ответа") + @description("Response specification") output: Option[ScenarioOutput], - @description("Спецификация колбека") + @description("Callback specification") callback: Option[Callback], - @description("Тэги") + @description("Tags") labels: Seq[String] = Seq.empty ) object CreateScenarioRequest { diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/CreateSourceConfigurationRequest.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/CreateSourceConfigurationRequest.scala index 26ef473c..1421dcd7 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/CreateSourceConfigurationRequest.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/CreateSourceConfigurationRequest.scala @@ -17,18 +17,18 @@ import ru.tinkoff.tcb.utils.id.SID @derive(decoder, encoder, schema) final case class CreateSourceConfigurationRequest( - @description("Уникальное название конфигурации") + @description("Unique configuration name") name: SID[SourceConfiguration], - @description("Описание конфигурации") + @description("Configuration description") description: String, service: String, - @description("Спецификация запроса") + @description("Request specification") request: EventSourceRequest, - @description("Спецификация инициализатора") + @description("Initializer specification") init: Option[NonEmptyVector[ResourceRequest]], - @description("Спецификация деинициализатора") + @description("Finalizer specification") shutdown: Option[NonEmptyVector[ResourceRequest]], - @description("Спецификации триггеров реинициализации") + @description("Reinitialization triggers specification") reInitTriggers: Option[NonEmptyVector[ResponseSpec]] ) diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/CreateStubRequest.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/CreateStubRequest.scala index 6fff036d..4280ca0c 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/CreateStubRequest.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/CreateStubRequest.scala @@ -29,29 +29,29 @@ import ru.tinkoff.tcb.utils.circe.optics.JsonOptic @derive(encoder, decoder, schema) final case class CreateStubRequest( - @description("Тип конфигурации") + @description("Scope") scope: Scope, - @description("Количество возможных срабатываний. Имеет смысл только для scope=countdown") + @description("The number of possible triggers. Only relevant for scope=countdown") times: Option[Int Refined NonNegative] = Some(refineMV(1)), - @description("Название мока") + @description("Mock name") name: String Refined NonEmpty, - @description("HTTP метод") + @description("HTTP method") method: HttpMethod, - @description("Суффикс пути, по которому срабатывает мок") + @description("The path suffix where the mock triggers") path: Option[String Refined NonEmpty], pathPattern: Option[Regex], seed: Option[Json], - @description("Предикат для поиска состояния") + @description("State search predicate") state: Option[Map[JsonOptic, Map[Keyword.Json, Json]]], - @description("Спецификация запроса") + @description("Request specification") request: HttpStubRequest, - @description("Данные, записываемые в базу") + @description("Persisted data") persist: Option[Map[JsonOptic, Json]], - @description("Спецификация ответа") + @description("Response specification") response: HttpStubResponse, - @description("Спецификация колбека") + @description("Callback specification") callback: Option[Callback], - @description("Тэги") + @description("Tags") labels: Seq[String] = Seq.empty ) object CreateStubRequest { diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/UpdateDestinationConfigurationRequest.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/UpdateDestinationConfigurationRequest.scala index 380394cd..d111ca05 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/UpdateDestinationConfigurationRequest.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/UpdateDestinationConfigurationRequest.scala @@ -15,14 +15,14 @@ import ru.tinkoff.tcb.protocol.schema.* @derive(decoder, encoder, schema) final case class UpdateDestinationConfigurationRequest( - @description("Описание конфигурации") + @description("Configuration description") description: String, service: String, - @description("Спецификация запроса") + @description("Request specification") request: EventDestinationRequest, - @description("Спецификация инициализатора") + @description("Initializer specification") init: Option[NonEmptyVector[ResourceRequest]], - @description("Спецификация деинициализатора") + @description("Finalizer specification") shutdown: Option[NonEmptyVector[ResourceRequest]], ) diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/UpdateScenarioRequest.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/UpdateScenarioRequest.scala index c80ba9c6..363f8fa7 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/UpdateScenarioRequest.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/UpdateScenarioRequest.scala @@ -33,29 +33,29 @@ import ru.tinkoff.tcb.utils.id.SID @derive(decoder, encoder, schema) final case class UpdateScenarioRequest( - @description("Тип конфигурации") + @description("Scope") scope: Scope, - @description("Количество возможных срабатываний. Имеет смысл только для scope=countdown") + @description("The number of possible triggers. Only relevant for scope=countdown") times: Option[Int Refined NonNegative] = Some(refineMV(1)), service: String Refined NonEmpty, - @description("Имя сценария, отображается в логах, полезно для отладки") + @description("Scenario name (shown in logs, handy for debugging)") name: String Refined NonEmpty, - @description("Имя источника событий") + @description("Event source name") source: SID[SourceConfiguration], seed: Option[Json], - @description("Спецификация события") + @description("Event specification") input: ScenarioInput, - @description("Предикат для поиска состояния") + @description("State search predicate") state: Option[Map[JsonOptic, Map[Keyword.Json, Json]]], - @description("Данные, записываемые в базу") + @description("Persisted data") persist: Option[Map[JsonOptic, Json]], - @description("Имя назначения ответа") + @description("Destination name") destination: Option[SID[DestinationConfiguration]], - @description("Спецификация ответа") + @description("Response specification") output: Option[ScenarioOutput], - @description("Спецификация колбека") + @description("Callback specification") callback: Option[Callback], - @description("Тэги") + @description("Tags") labels: Seq[String] ) object UpdateScenarioRequest { diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/UpdateSourceConfigurationRequest.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/UpdateSourceConfigurationRequest.scala index 349a89bb..e3812325 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/UpdateSourceConfigurationRequest.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/UpdateSourceConfigurationRequest.scala @@ -16,16 +16,16 @@ import ru.tinkoff.tcb.protocol.schema.* @derive(decoder, encoder, schema) final case class UpdateSourceConfigurationRequest( - @description("Описание конфигурации") + @description("Configuration description") description: String, service: String, - @description("Спецификация запроса") + @description("Request specification") request: EventSourceRequest, - @description("Спецификация инициализатора") + @description("Initializer specification") init: Option[NonEmptyVector[ResourceRequest]], - @description("Спецификация деинициализатора") + @description("Finalizer specification") shutdown: Option[NonEmptyVector[ResourceRequest]], - @description("Спецификации триггеров реинициализации") + @description("Reinitialization triggers specification") reInitTriggers: Option[NonEmptyVector[ResponseSpec]] ) diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/UpdateStubRequest.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/UpdateStubRequest.scala index da8639ad..ffa5c3dc 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/UpdateStubRequest.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/request/UpdateStubRequest.scala @@ -34,29 +34,29 @@ import ru.tinkoff.tcb.utils.id.SID @derive(decoder, encoder, schema) final case class UpdateStubRequest( - @description("Тип конфигурации") + @description("Scope") scope: Scope, - @description("Количество возможных срабатываний. Имеет смысл только для scope=countdown") + @description("The number of possible triggers. Only relevant for scope=countdown") times: Option[Int Refined NonNegative] = Some(refineMV(1)), - @description("Название мока") + @description("Mock name") name: String Refined NonEmpty, - @description("HTTP метод") + @description("HTTP method") method: HttpMethod, - @description("Суффикс пути, по которому срабатывает мок") + @description("The path suffix where the mock triggers") path: Option[String Refined NonEmpty], pathPattern: Option[Regex], seed: Option[Json], - @description("Предикат для поиска состояния") + @description("State search predicate") state: Option[Map[JsonOptic, Map[Keyword.Json, Json]]], - @description("Спецификация запроса") + @description("Request specification") request: HttpStubRequest, - @description("Данные, записываемые в базу") + @description("Persisted data") persist: Option[Map[JsonOptic, Json]], - @description("Спецификация ответа") + @description("Response specification") response: HttpStubResponse, - @description("Спецификация колбека") + @description("Callback specification") callback: Option[Callback], - @description("Тэги") + @description("Tags") labels: Seq[String] ) object UpdateStubRequest { diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/config/Configuration.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/config/Configuration.scala index 198de8c1..66ffeedf 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/config/Configuration.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/config/Configuration.scala @@ -8,7 +8,15 @@ import net.ceedubs.ficus.Ficus.* import net.ceedubs.ficus.readers.ArbitraryTypeReader.* import net.ceedubs.ficus.readers.EnumerationReader.* -final case class ServerConfig(interface: String, port: Int, allowedOrigins: Seq[String], healthCheckRoute: Option[String]) +final case class JsSandboxConfig(allowedClasses: Set[String] = Set()) + +final case class ServerConfig( + interface: String, + port: Int, + allowedOrigins: Seq[String], + healthCheckRoute: Option[String], + sandbox: JsSandboxConfig +) final case class SecurityConfig(secret: String) diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/error/EarlyReturn.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/error/EarlyReturn.scala index 36d5ae6e..69980163 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/error/EarlyReturn.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/error/EarlyReturn.scala @@ -1,4 +1,4 @@ package ru.tinkoff.tcb.mockingbird.error -//TODO: заменить все использования на Selective функторы +//TODO: replace all occurrences with selective functors case object EarlyReturn extends Exception diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/error/ValidationError.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/error/ValidationError.scala index c76fe9c4..1a5f57dc 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/error/ValidationError.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/error/ValidationError.scala @@ -1,3 +1,3 @@ package ru.tinkoff.tcb.mockingbird.error -final case class ValidationError(fails: Vector[String]) extends Exception(s"Ошибки валидации: ${fails.mkString(",")}") +final case class ValidationError(fails: Vector[String]) extends Exception(s"Validation error: ${fails.mkString(",")}") diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/grpc/GrpcRequestHandler.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/grpc/GrpcRequestHandler.scala index 066a5212..ee3ad047 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/grpc/GrpcRequestHandler.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/grpc/GrpcRequestHandler.scala @@ -22,14 +22,18 @@ import ru.tinkoff.tcb.mockingbird.model.GProxyResponse import ru.tinkoff.tcb.mockingbird.model.PersistentState import ru.tinkoff.tcb.mockingbird.model.Scope import ru.tinkoff.tcb.protocol.log.* +import ru.tinkoff.tcb.utils.sandboxing.GraalJsSandbox import ru.tinkoff.tcb.utils.transformation.json.* trait GrpcRequestHandler { def exec(bytes: Array[Byte]): RIO[WLD & RequestContext, Array[Byte]] } -class GrpcRequestHandlerImpl(stateDAO: PersistentStateDAO[Task], stubResolver: GrpcStubResolver) - extends GrpcRequestHandler { +class GrpcRequestHandlerImpl( + stateDAO: PersistentStateDAO[Task], + stubResolver: GrpcStubResolver, + implicit val jsSandbox: GraalJsSandbox +) extends GrpcRequestHandler { override def exec(bytes: Array[Byte]): RIO[WLD & RequestContext, Array[Byte]] = for { context <- ZIO.service[RequestContext] @@ -38,9 +42,9 @@ class GrpcRequestHandlerImpl(stateDAO: PersistentStateDAO[Task], stubResolver: G _ <- Tracing.update(_.addToPayload("service" -> grpcServiceName)) (stub, req, stateOp) <- f(Scope.Countdown) .filterOrElse(_.isDefined)(f(Scope.Ephemeral).filterOrElse(_.isDefined)(f(Scope.Persistent))) - .someOrFail(StubSearchError(s"Не удалось подобрать заглушку для $grpcServiceName")) + .someOrFail(StubSearchError(s"Can't find any stub for $grpcServiceName")) _ <- Tracing.update(_.addToPayload("name" -> stub.name)) - seed = stub.seed.map(_.eval) + seed = stub.seed.map(_.eval.useAsIs) state <- ZIO.fromOption(stateOp).orElse(PersistentState.fresh) data = Json.obj( "req" := req, @@ -58,13 +62,13 @@ class GrpcRequestHandlerImpl(stateDAO: PersistentStateDAO[Task], stubResolver: G response <- stub.response match { case FillResponse(rdata, delay) => ZIO.when(delay.isDefined)(ZIO.sleep(Duration.fromScala(delay.get))) *> - ZIO.attemptBlocking(responseSchema.parseFromJson(rdata.substitute(data), stub.responseClass)) + ZIO.attemptBlocking(responseSchema.parseFromJson(rdata.substitute(data).useAsIs, stub.responseClass)) case GProxyResponse(endpoint, patch, delay) => for { _ <- ZIO.when(delay.isDefined)(ZIO.sleep(Duration.fromScala(delay.get))) binaryResp <- proxyCall(endpoint, bytes) jsonResp <- responseSchema.convertMessageToJson(binaryResp, stub.responseClass) - patchedJsonResp = jsonResp.patch(data, patch) + patchedJsonResp = jsonResp.patch(data, patch).useAsIs patchedBinaryResp = responseSchema.parseFromJson(patchedJsonResp, stub.responseClass) } yield patchedBinaryResp } @@ -97,8 +101,8 @@ class GrpcRequestHandlerImpl(stateDAO: PersistentStateDAO[Task], stubResolver: G } object GrpcRequestHandlerImpl { - val live: URLayer[PersistentStateDAO[Task] & GrpcStubResolver, GrpcRequestHandlerImpl] = - ZLayer.fromFunction(new GrpcRequestHandlerImpl(_, _)) + val live: URLayer[PersistentStateDAO[Task] & GrpcStubResolver & GraalJsSandbox, GrpcRequestHandlerImpl] = + ZLayer.fromFunction(new GrpcRequestHandlerImpl(_, _, _)) } object GrpcRequestHandler { diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/grpc/GrpcStubresolver.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/grpc/GrpcStubresolver.scala index 39de791b..31d72498 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/grpc/GrpcStubresolver.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/grpc/GrpcStubresolver.scala @@ -23,6 +23,7 @@ import ru.tinkoff.tcb.mockingbird.model.Scope import ru.tinkoff.tcb.predicatedsl.Keyword import ru.tinkoff.tcb.utils.circe.optics.JsonOptic import ru.tinkoff.tcb.utils.id.SID +import ru.tinkoff.tcb.utils.sandboxing.GraalJsSandbox trait GrpcStubResolver { def findStubAndState(service: String, request: Array[Byte])( @@ -30,7 +31,11 @@ trait GrpcStubResolver { ): RIO[WLD, Option[(GrpcStub, Json, Option[PersistentState])]] } -class GrpcStubResolverImpl(stubDAO: GrpcStubDAO[Task], stateDAO: PersistentStateDAO[Task]) extends GrpcStubResolver { +class GrpcStubResolverImpl( + stubDAO: GrpcStubDAO[Task], + stateDAO: PersistentStateDAO[Task], + implicit val jsSandbox: GraalJsSandbox +) extends GrpcStubResolver { private type StateSpec = Map[JsonOptic, Map[Keyword.Json, Json]] @@ -68,20 +73,20 @@ class GrpcStubResolverImpl(stubDAO: GrpcStubDAO[Task], stateDAO: PersistentState ) } _ <- ZIO.when(candidates.exists(_._2.size > 1))( - log.error("Для одной или нескольких заглушек найдено более одного подходящего состояния") *> - ZIO.fail(StubSearchError("Для одной или нескольких заглушек найдено более одного подходящего состояния")) + log.error("For one or more stubs, multiple suitable states were found") *> + ZIO.fail(StubSearchError("For one or more stubs, multiple suitable states were found")) ) _ <- ZIO.when(candidates.count(_._2.nonEmpty) > 1)( - log.error("Для более чем одной заглушки нашлось подходящее состояние") *> - ZIO.fail(StubSearchError("Для более чем одной заглушки нашлось подходящее состояние")) + log.error("For more than one stub, suitable states were found") *> + ZIO.fail(StubSearchError("For more than one stub, suitable states were found")) ) _ <- ZIO.when(candidates.size > 1 && candidates.forall(c => c._1.state.isDefined && c._2.isEmpty))( - log.error("Ни для одной заглушки не найдено подходящего состояния") *> - ZIO.fail(StubSearchError("Ни для одной заглушки не найдено подходящего состояния")) + log.error("No suitable state found for any stub") *> + ZIO.fail(StubSearchError("No suitable state found for any stub")) ) _ <- ZIO.when(candidates.size > 1 && candidates.forall(_._1.state.isEmpty))( - log.error("Найдено более одной не требующей состояния заглушки") *> - ZIO.fail(StubSearchError("Найдено более одной не требующей состояния заглушки")) + log.error("More than one stateless stub found") *> + ZIO.fail(StubSearchError("More than one stateless stub found")) ) res = candidates.find(_._2.size == 1) orElse candidates.find(_._1.state.isEmpty) } yield res.map { case (stub, states) => @@ -95,7 +100,7 @@ class GrpcStubResolverImpl(stubDAO: GrpcStubDAO[Task], stateDAO: PersistentState ) .catchSome { case e @ (_: InvalidProtocolBufferException | ParsingFailure(_, _)) => log.infoCause( - "Ошибка разбора gRPC запроса {} для заглушки {}", + "Failed to parse gRPC request {} for stub {}", e, stub.requestClass, stub.id @@ -104,7 +109,7 @@ class GrpcStubResolverImpl(stubDAO: GrpcStubDAO[Task], stateDAO: PersistentState } .tapError(e => log.errorCause( - "Ошибка разбора gRPC запроса {} для заглушки {}", + "Failed to parse gRPC request {} for stub {}", e, stub.requestClass, stub.id @@ -114,20 +119,21 @@ class GrpcStubResolverImpl(stubDAO: GrpcStubDAO[Task], stateDAO: PersistentState private def findStates(id: SID[GrpcStub], spec: StateSpec): RIO[WLD, Vector[PersistentState]] = for { - _ <- log.info("Поиск state для {} по условию {}", id, spec.renderJson.noSpaces) + _ <- log.info("Searching for state for {} based on condition {}", id, spec.renderJson.noSpaces) states <- stateDAO.findBySpec(spec) _ <- - if (states.nonEmpty) log.info("Найдены состояния для {}: {}", id, states.map(_.id)) - else log.info("Не найдено подходящих состояний для {}", id) + if (states.nonEmpty) log.info("States found for {}: {}", id, states.map(_.id)) + else log.info("No suitable states found for {}", id) } yield states } object GrpcStubResolverImpl { - val live: URLayer[GrpcStubDAO[Task] & PersistentStateDAO[Task], GrpcStubResolver] = + val live: URLayer[GrpcStubDAO[Task] & PersistentStateDAO[Task] & GraalJsSandbox, GrpcStubResolver] = ZLayer { for { - gsd <- ZIO.service[GrpcStubDAO[Task]] - psd <- ZIO.service[PersistentStateDAO[Task]] - } yield new GrpcStubResolverImpl(gsd, psd) + gsd <- ZIO.service[GrpcStubDAO[Task]] + psd <- ZIO.service[PersistentStateDAO[Task]] + jsSandbox <- ZIO.service[GraalJsSandbox] + } yield new GrpcStubResolverImpl(gsd, psd, jsSandbox) } } diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/grpc/Method.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/grpc/Method.scala index 50fbc39d..63447745 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/grpc/Method.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/grpc/Method.scala @@ -9,7 +9,7 @@ import io.grpc.MethodDescriptor.Marshaller object Method { /* - Универсальный маршаллер, который не меняет поток байтов + Universal marshaller that does not alter byte stream */ final case class ByteMarshaller() extends Marshaller[Array[Byte]] { override def stream(value: Array[Byte]): InputStream = new ByteArrayInputStream(value) diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/misc/Substitute.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/misc/Substitute.scala index 480e5a91..e51c7c05 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/misc/Substitute.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/misc/Substitute.scala @@ -6,19 +6,24 @@ import cats.tagless.finalAlg import io.circe.Json import kantan.xpath.Node as KNode +import ru.tinkoff.tcb.utils.sandboxing.GraalJsSandbox import ru.tinkoff.tcb.utils.transformation.json.* import ru.tinkoff.tcb.utils.transformation.xml.* /** - * Свидетельство того, что B можно подставить в A + * "Proof that B can be substituted into A */ @finalAlg trait Substitute[A, B] { def substitute(a: A, b: B): A } object Substitute { - implicit val jsonSJson: Substitute[Json, Json] = (a: Json, b: Json) => a.substitute(b) - implicit val jsonSNode: Substitute[Json, KNode] = (a: Json, b: KNode) => a.substitute(b) - implicit val nodeSJson: Substitute[Node, Json] = (a: Node, b: Json) => a.substitute(b) - implicit val nodeSnode: Substitute[Node, KNode] = (a: Node, b: KNode) => a.substitute(b) + implicit def jsonSJson(implicit sandbox: GraalJsSandbox): Substitute[Json, Json] = (a: Json, b: Json) => + a.substitute(b).useAsIs + implicit def jsonSNode(implicit sandbox: GraalJsSandbox): Substitute[Json, KNode] = (a: Json, b: KNode) => + a.substitute(b) + implicit def nodeSJson(implicit sandbox: GraalJsSandbox): Substitute[Node, Json] = (a: Node, b: Json) => + a.substitute(b).useAsIs + implicit def nodeSnode(implicit sandbox: GraalJsSandbox): Substitute[Node, KNode] = (a: Node, b: KNode) => + a.substitute(b) } diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/CallbackChecker.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/CallbackChecker.scala index ca6f8e0a..f991f48f 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/CallbackChecker.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/CallbackChecker.scala @@ -17,16 +17,18 @@ trait CallbackChecker { case Some(value) => value match { case MessageCallback(dest, _, mcallback, _) => - (destinations(dest) !? Vector(s"$dest не настроен")) ++ checkCallback(mcallback, destinations) + (destinations(dest) !? Vector( + s"The field ${nameOf[MessageCallback](_.destination)} must be filled" + )) ++ checkCallback(mcallback, destinations) case HttpCallback(_, rm, p, hcallback, _) => (rm, p) match { case Some(_) <*> None => - s"Поле ${nameOf[HttpCallback](_.responseMode)} должно быть заполнено ТОЛЬКО при наличии ${nameOf[HttpCallback](_.persist)}" +: checkCallback( + s"The field ${nameOf[HttpCallback](_.responseMode)} must be filled in ONLY if ${nameOf[HttpCallback](_.persist)} is present" +: checkCallback( hcallback, destinations ) case None <*> Some(_) => - s"Поле ${nameOf[HttpCallback](_.responseMode)} должно быть заполнено при наличии ${nameOf[HttpCallback](_.persist)}" +: checkCallback( + s"The field ${nameOf[HttpCallback](_.responseMode)} must be filled in if ${nameOf[HttpCallback](_.persist)} is present" +: checkCallback( hcallback, destinations ) diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/Extractor.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/Extractor.scala index 5fd38845..87b1e771 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/Extractor.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/Extractor.scala @@ -33,7 +33,6 @@ sealed trait XmlExtractor { } object XmlExtractor { val types: Map[String, String] = Map( - nameOfType[XMLCDataExtractor] -> "xcdata", nameOfType[JsonCDataExtractor] -> "jcdata", ).withDefault(identity) @@ -43,25 +42,9 @@ object XmlExtractor { /** * @param prefix - * Путь до CDATA + * Path to CDATA * @param path - * Путь внутри CDATA - */ -@derive(decoder, encoder) -final case class XMLCDataExtractor(prefix: Xpath, path: Xpath) extends XmlExtractor { - def apply(node: Node): Either[XPathError, Json] = - node - .evalXPath[String](prefix.toXPathExpr) - .flatMap(_.trim().asNode) - .flatMap(_.evalXPath[String](path.toXPathExpr)) - .map(Json.fromString) -} - -/** - * @param prefix - * Путь до CDATA - * @param path - * Путь внутри CDATA + * Path inside CDATA */ @derive(decoder, encoder) final case class JsonCDataExtractor(prefix: Xpath, path: JsonOptic) extends XmlExtractor { diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/GrpcStub.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/GrpcStub.scala index 42514065..a281e239 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/GrpcStub.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/GrpcStub.scala @@ -108,7 +108,7 @@ object GrpcStub { } yield () private val stateNonEmpty: Rule[GrpcStub] = - _.state.exists(_.isEmpty).valueOrZero(Vector("Предикат state не может быть пустым")) + _.state.exists(_.isEmpty).valueOrZero(Vector("The state predicate cannot be empty")) val validationRules: Rule[GrpcStub] = Vector(stateNonEmpty).reduce(_ |+| _) } diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/HttpStub.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/HttpStub.scala index dae1e61e..4dcd5782 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/HttpStub.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/HttpStub.scala @@ -35,34 +35,34 @@ import ru.tinkoff.tcb.validation.Rule @derive(bsonDecoder, bsonEncoder, encoder, decoder, schema) final case class HttpStub( @BsonKey("_id") - @description("id мока") + @description("Mock id") id: SID[HttpStub], - @description("Время создания мока") + @description("Mock creation time") created: Instant, - @description("Тип конфигурации") + @description("Scope") scope: Scope, - @description("Количество возможных срабатываний. Имеет смысл только для scope=countdown") + @description("The number of possible triggers. Only relevant for scope=countdown") times: Option[Int Refined NonNegative], serviceSuffix: String, - @description("Название мока") + @description("Mock name") name: String Refined NonEmpty, - @description("HTTP метод") + @description("HTTP method") method: HttpMethod, - @description("Суффикс пути, по которому срабатывает мок") + @description("The path suffix where the mock triggers") path: Option[String Refined NonEmpty], pathPattern: Option[Regex], seed: Option[Json], - @description("Предикат для поиска состояния") + @description("State search predicate") state: Option[Map[JsonOptic, Map[Keyword.Json, Json]]], - @description("Спецификация запроса") + @description("Request specification") request: HttpStubRequest, - @description("Данные, записываемые в базу") + @description("Persisted data") persist: Option[Map[JsonOptic, Json]], - @description("Спецификация ответа") + @description("Response specification") response: HttpStubResponse, - @description("Спецификация колбека") + @description("Callback specification") callback: Option[Callback], - @description("Тэги") + @description("tags") labels: Seq[String] ) @@ -70,24 +70,24 @@ object HttpStub extends CallbackChecker { private val pathOrPattern: Rule[HttpStub] = stub => (stub.path, stub.pathPattern) match { case Some(_) <*> None | None <*> Some(_) => Vector.empty - case Some(_) <*> Some(_) => Vector("Может быть указан путь либо шаблон пути") - case None <*> None => Vector("Должен быть указан путь либо шаблон пути") + case Some(_) <*> Some(_) => Vector("A path or path pattern may be specified") + case None <*> None => Vector("A path or path pattern must be specified") } private val stateNonEmpty: Rule[HttpStub] = - _.state.exists(_.isEmpty).valueOrZero(Vector("Предикат state не может быть пустым")) + _.state.exists(_.isEmpty).valueOrZero(Vector("The state predicate cannot be empty")) private val persistNonEmpty: Rule[HttpStub] = - _.persist.exists(_.isEmpty).valueOrZero(Vector("Спецификация persist не может быть пустой")) + _.persist.exists(_.isEmpty).valueOrZero(Vector("The persist specification cannot be empty")) private val jsonProxyReq: Rule[HttpStub] = stub => (stub.request, stub.response) match { case (JsonRequest(_, _, _) | JLensRequest(_, _, _), JsonProxyResponse(_, _, _, _)) => Vector.empty case (_, JsonProxyResponse(_, _, _, _)) => - Vector(s"${nameOfType[JsonProxyResponse]} может использоваться только совместно с ${nameOfType[JsonRequest]} или ${nameOfType[JLensRequest]}") + Vector(s"${nameOfType[JsonProxyResponse]} can only be used together with ${nameOfType[JsonRequest]} or ${nameOfType[JLensRequest]}") case (XmlRequest(_, _, _, _, _) | XPathRequest(_, _, _, _, _), XmlProxyResponse(_, _, _, _)) => Vector.empty case (_, XmlProxyResponse(_, _, _, _)) => - Vector(s"${nameOfType[XmlProxyResponse]} может использоваться только совместно с ${nameOfType[XmlRequest]} или ${nameOfType[XPathRequest]}") + Vector(s"${nameOfType[XmlProxyResponse]} can only be used together with ${nameOfType[XmlRequest]} or ${nameOfType[XPathRequest]}") case _ => Vector.empty } @@ -97,7 +97,7 @@ object HttpStub extends CallbackChecker { stub.response match { case EmptyResponse(_, _, _) => Vector.empty case _ => - Vector(s"Коды ответов 204 и 304 могут использоваться только с mode '${HttpStubResponse.modes(nameOfType[EmptyResponse])}'") + Vector(s"Response codes 204 and 304 can only be used with mode '${HttpStubResponse.modes(nameOfType[EmptyResponse])}'") } case _ => Vector.empty } diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/HttpStubResponse.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/HttpStubResponse.scala index a16900a9..11a21e8f 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/HttpStubResponse.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/HttpStubResponse.scala @@ -61,6 +61,15 @@ object HttpStubResponse { implicit val customConfiguration: TapirConfig = TapirConfig.default.withDiscriminator("mode").copy(toEncodedName = modes) + val headers: Property[HttpStubResponse, Map[String, String]] = + Vector( + EmptyResponse.prism >> EmptyResponse.headers, + RawResponse.prism >> RawResponse.headers, + JsonResponse.prism >> JsonResponse.headers, + XmlResponse.prism >> XmlResponse.headers, + BinaryResponse.prism >> BinaryResponse.headers + ).reduce[Property[HttpStubResponse, Map[String, String]]](_ orElse _) + val jsonBody: Property[HttpStubResponse, Json] = JsonResponse.prism >> JsonResponse.body val xmlBody: Property[HttpStubResponse, Node] = XmlResponse.prism >> XmlResponse.body @@ -75,6 +84,12 @@ final case class EmptyResponse( val isTemplate: Boolean = false } +object EmptyResponse { + val prism: Subset[HttpStubResponse, EmptyResponse] = GenSubset[HttpStubResponse, EmptyResponse] + + val headers: Contains[EmptyResponse, Map[String, String]] = GenContains[EmptyResponse](_.headers) +} + @derive(decoder, encoder) final case class RawResponse( code: HttpStatusCode, @@ -85,6 +100,12 @@ final case class RawResponse( val isTemplate: Boolean = false } +object RawResponse { + val prism: Subset[HttpStubResponse, RawResponse] = GenSubset[HttpStubResponse, RawResponse] + + val headers: Contains[RawResponse, Map[String, String]] = GenContains[RawResponse](_.headers) +} + final case class JsonResponse( code: HttpStatusCode, headers: Map[String, String], @@ -98,6 +119,8 @@ object JsonResponse { val body: Contains[JsonResponse, Json] = GenContains[JsonResponse](_.body) + val headers: Contains[JsonResponse, Map[String, String]] = GenContains[JsonResponse](_.headers) + implicit val jrEncoder: Encoder.AsObject[JsonResponse] = Encoder.forProduct4( nameOf[JsonResponse](_.code), @@ -134,6 +157,8 @@ object XmlResponse { override def extract(s: XmlResponse): Node = s.node } + val headers: Contains[XmlResponse, Map[String, String]] = GenContains[XmlResponse](_.headers) + implicit val xrEncoder: Encoder.AsObject[XmlResponse] = Encoder.forProduct4( nameOf[XmlResponse](_.code), @@ -163,6 +188,8 @@ final case class BinaryResponse( object BinaryResponse { val prism: Subset[HttpStubResponse, BinaryResponse] = GenSubset[HttpStubResponse, BinaryResponse] + + val headers: Contains[BinaryResponse, Map[String, String]] = GenContains[BinaryResponse](_.headers) } @derive(decoder, encoder) diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/Scenario.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/Scenario.scala index 1ac74e59..9c742774 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/Scenario.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/Scenario.scala @@ -32,33 +32,33 @@ import ru.tinkoff.tcb.validation.Rule @derive(bsonDecoder, bsonEncoder, encoder, decoder, schema) final case class Scenario( @BsonKey("_id") - @description("id мока") + @description("Scenario id") id: SID[Scenario], - @description("Время создания мока") + @description("Scenario creation time") created: Instant, - @description("Тип конфигурации") + @description("Scope") scope: Scope, - @description("Количество возможных срабатываний. Имеет смысл только для scope=countdown") + @description("The number of possible triggers. Only relevant for scope=countdown") times: Option[Int Refined NonNegative], service: String Refined NonEmpty, - @description("Имя сценария, отображается в логах, полезно для отладки") + @description("Scenario name (shown in logs, handy for debugging)") name: String Refined NonEmpty, - @description("Имя источника событий") + @description("Event source name") source: SID[SourceConfiguration], seed: Option[Json], - @description("Спецификация события") + @description("Event specification") input: ScenarioInput, - @description("Предикат для поиска состояния") + @description("State search predicate") state: Option[Map[JsonOptic, Map[Keyword.Json, Json]]], - @description("Данные, записываемые в базу") + @description("Persisted data") persist: Option[Map[JsonOptic, Json]], - @description("Имя назначения ответа") + @description("Destination name") destination: Option[SID[DestinationConfiguration]], - @description("Спецификация ответа") + @description("Response specification") output: Option[ScenarioOutput], - @description("Спецификация колбека") + @description("Callback specification") callback: Option[Callback], - @description("Тэги") + @description("Tags") labels: Seq[String] ) @@ -68,26 +68,26 @@ object Scenario extends CallbackChecker { case Some(_) <*> Some(_) | None <*> None => Vector.empty case None <*> Some(_) => Vector( - s"Поле ${nameOf[Scenario](_.destination)} должно быть заполнено при наличии ${nameOf[Scenario](_.output)}" + s"The field ${nameOf[Scenario](_.destination)} must be filled in if ${nameOf[Scenario](_.output)} is present" ) case Some(_) <*> None => Vector( - s"Поле ${nameOf[Scenario](_.destination)} должно быть заполнено ТОЛЬКО при наличии ${nameOf[Scenario](_.output)}" + s"The field ${nameOf[Scenario](_.destination)} must be filled in ONLY if ${nameOf[Scenario](_.output)} is present" ) } private def checkSourceId(sources: Set[SID[SourceConfiguration]]): Rule[Scenario] = - (s: Scenario) => sources(s.source) !? Vector(s"${s.source} не настроен") + (s: Scenario) => sources(s.source) !? Vector(s"${s.source} is not configured") private def checkDestinationId(destinations: Set[SID[DestinationConfiguration]]): Rule[Scenario] = (s: Scenario) => - s.destination.map(destinations).getOrElse(true) !? Vector(s"${s.destination.getOrElse("")} не настроен") + s.destination.map(destinations).getOrElse(true) !? Vector(s"${s.destination.getOrElse("")} is not configured") private val stateNonEmpty: Rule[Scenario] = - _.state.exists(_.isEmpty).valueOrZero(Vector("Предикат state не может быть пустым")) + _.state.exists(_.isEmpty).valueOrZero(Vector("The state predicate cannot be empty.")) private val persistNonEmpty: Rule[Scenario] = - _.persist.exists(_.isEmpty).valueOrZero(Vector("Спецификация persist не может быть пустой")) + _.persist.exists(_.isEmpty).valueOrZero(Vector("The persist specification cannot be empty")) def validationRules( sources: Set[SID[SourceConfiguration]], diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/resource/ResourceManager.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/resource/ResourceManager.scala index 27b843b4..86ea2c09 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/resource/ResourceManager.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/resource/ResourceManager.scala @@ -82,7 +82,7 @@ final class ResourceManager( .mapError { case Right(err) => err case Left(err) => - ResourceManagementError(s"Запрос на ${req.url.asString} завершился ошибкой ($err)") + ResourceManagementError(s"The request to ${req.url.asString} ended with an error ($err)") } def reinitialize(sourceId: SID[SourceConfiguration]): URIO[WLD, Unit] = diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/scenario/ScenarioEngine.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/scenario/ScenarioEngine.scala index fdfa158c..284bdc94 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/scenario/ScenarioEngine.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/scenario/ScenarioEngine.scala @@ -43,6 +43,7 @@ import ru.tinkoff.tcb.mockingbird.model.XmlOutput import ru.tinkoff.tcb.mockingbird.stream.SDFetcher import ru.tinkoff.tcb.protocol.log.* import ru.tinkoff.tcb.utils.id.SID +import ru.tinkoff.tcb.utils.sandboxing.GraalJsSandbox import ru.tinkoff.tcb.utils.transformation.json.* import ru.tinkoff.tcb.utils.transformation.string.* import ru.tinkoff.tcb.utils.transformation.xml.* @@ -63,6 +64,7 @@ final class ScenarioEngine( stateDAO: PersistentStateDAO[Task], resolver: ScenarioResolver, fetcher: SDFetcher, + implicit val jsSandbox: GraalJsSandbox, private val httpBackend: SttpBackend[Task] ) extends CallbackEngine { private val log = MDCLogging.`for`[WLD](this) @@ -72,12 +74,12 @@ final class ScenarioEngine( for { _ <- Tracing.update(_.addToPayload(("source" -> source))) - _ <- log.info("Получено сообщение из {}", source) + _ <- log.info("Got message from {}", source) (scenario, stateOp) <- f(Scope.Countdown) .filterOrElse(_.isDefined)(f(Scope.Ephemeral).filterOrElse(_.isDefined)(f(Scope.Persistent))) - .someOrFail(ScenarioSearchError(s"Не удалось подобрать сценарий для сообщения из $source")) - _ <- log.info("Выполнение сценария '{}'", scenario.name) - seed = scenario.seed.map(_.eval) + .someOrFail(ScenarioSearchError(s"Failed to match a scenario for the message from $source")) + _ <- log.info("Executing scenario '{}'", scenario.name) + seed = scenario.seed.map(_.eval.useAsIs) bodyJson = scenario.input.extractJson(message) bodyXml = scenario.input.extractXML(message) state <- ZIO.fromOption(stateOp).orElse(PersistentState.fresh) @@ -95,7 +97,7 @@ final class ScenarioEngine( .fold(ZIO.attempt(()))(_.traverse_(stateDAO.createIndexForDataField)) dests <- fetcher.getDestinations _ <- ZIO.when(scenario.destination.isDefined && !dests.exists(_.name == scenario.destination.get))( - ZIO.fail(ScenarioExecError(s"Не сконфигурирован destination с именем ${scenario.destination.get}")) + ZIO.fail(ScenarioExecError(s"Destination with the name ${scenario.destination.get} is not configured")) ) destOut = scenario.destination.flatMap(dn => dests.find(_.name == dn)) zip scenario.output _ <- ZIO.when(destOut.isDefined) { @@ -119,10 +121,10 @@ final class ScenarioEngine( case MessageCallback(destinationId, output, callback, delay) => for { _ <- ZIO.when(delay.isDefined)(ZIO.sleep(Duration.fromScala(delay.get))) - _ <- log.info("Выполняется MessageCallback с destinationId={}", destinationId) + _ <- log.info("Executing MessageCallback with destinationId={}", destinationId) dests <- fetcher.getDestinations _ <- ZIO.when(!dests.exists(_.name == destinationId))( - ZIO.fail(CallbackError(s"Не сконфигурирован destination с именем ${destinationId}")) + ZIO.fail(CallbackError(s"Destination with the name $destinationId is not configured")) ) destination = dests.find(_.name == destinationId).get _ <- sendTo(destination, output, data, xdata) @@ -132,23 +134,24 @@ final class ScenarioEngine( for { _ <- ZIO.when(delay.isDefined)(ZIO.sleep(Duration.fromScala(delay.get))) requestUrl = request.url.value.substitute(data, xdata) - _ <- log.info("Выполняется HttpCallback на {}", requestUrl) + _ <- log.info("Executing HttpCallback to {}", requestUrl) res <- basicRequest .headers(request.headers) .method(Method(request.method.entryName), uri"$requestUrl") .pipe(r => request match { - case JsonCallbackRequest(_, _, _, body) => r.body(body.substitute(data).substitute(xdata).noSpaces) + case JsonCallbackRequest(_, _, _, body) => + r.body(body.substitute(data).map(_.substitute(xdata)).use(_.noSpaces)) case XMLCallbackRequest(_, _, _, body) => - r.body(body.toNode.substitute(data).substitute(xdata).mkString) + r.body(body.toNode.substitute(data).map(_.substitute(xdata)).use(_.mkString)) case _ => r } ) .response(asString) .send(httpBackend) - .filterOrElseWith(_.isSuccess)(r => ZIO.fail(CallbackError(s"$requestUrl ответил ошибкой: $r"))) - bodyStr = res.body.getOrElse(throw new UnsupportedOperationException("Не может быть")) + .filterOrElseWith(_.isSuccess)(r => ZIO.fail(CallbackError(s"$requestUrl responded with error: $r"))) + bodyStr = res.body.getOrElse(throw new UnsupportedOperationException("Can't happen")) jsonBody = responseMode .contains(CallbackResponseMode.Json) @@ -176,30 +179,33 @@ final class ScenarioEngine( out match { case RawOutput(payload, _) => payload case JsonOutput(payload, _, isT) => - if (isT) payload.substitute(data).substitute(xdata).noSpaces else payload.noSpaces + if (isT) payload.substitute(data).map(_.substitute(xdata)).use(_.noSpaces) else payload.noSpaces case XmlOutput(payload, _, isT) => - if (isT) payload.toNode.substitute(data).substitute(xdata).mkString else payload.asString + if (isT) payload.toNode.substitute(data).map(_.substitute(xdata)).use(_.mkString) else payload.asString } ) } { drb => val bodyJson = out match { - case RawOutput(payload, _) => Json.fromString(payload) - case JsonOutput(payload, _, isT) => if (isT) payload.substitute(data).substitute(xdata) else payload + case RawOutput(payload, _) => Json.fromString(payload) + case JsonOutput(payload, _, isT) => + if (isT) payload.substitute(data).map(_.substitute(xdata)).useAsIs else payload case XmlOutput(payload, _, isT) => if (isT) - Json.fromString(payload.toNode.substitute(data).substitute(xdata).mkString) + Json.fromString(payload.toNode.substitute(data).map(_.substitute(xdata)).use(_.mkString)) else Json.fromString(payload.asString) } rt.body( - drb.substitute( - if (dest.request.stringifybody.contains(true)) Json.obj("_message" := bodyJson.noSpaces) - else if (dest.request.encodeBase64.contains(true)) - Json.obj( - "_message" := bodyJson.asString.map(b64Enc).getOrElse(b64Enc(bodyJson.noSpaces)) - ) - else Json.obj("_message" := bodyJson) - ) + drb + .substitute( + if (dest.request.stringifybody.contains(true)) Json.obj("_message" := bodyJson.noSpaces) + else if (dest.request.encodeBase64.contains(true)) + Json.obj( + "_message" := bodyJson.asString.map(b64Enc).getOrElse(b64Enc(bodyJson.noSpaces)) + ) + else Json.obj("_message" := bodyJson) + ) + .useAsIs ) } ) @@ -208,9 +214,9 @@ final class ScenarioEngine( .response(asString) .send(httpBackend) .filterOrElseWith(_.isSuccess)(r => - ZIO.fail(ScenarioExecError(s"Destination ${dest.name} ответил ошибкой: $r")) + ZIO.fail(ScenarioExecError(s"Destination ${dest.name} responded with error: $r")) ) *> - log.info("Отправлен ответ в {}", dest.name) + log.info("Response sent to {}", dest.name) private def b64Enc(s: String): String = new String(Base64.getEncoder.encode(s.getBytes(Charset.defaultCharset())), Charset.defaultCharset()) @@ -223,7 +229,8 @@ object ScenarioEngine { psd <- ZIO.service[PersistentStateDAO[Task]] resolver <- ZIO.service[ScenarioResolver] fetcher <- ZIO.service[SDFetcher] + jsSandbox <- ZIO.service[GraalJsSandbox] sttpClient <- ZIO.service[SttpBackend[Task]] - } yield new ScenarioEngine(sd, psd, resolver, fetcher, sttpClient) + } yield new ScenarioEngine(sd, psd, resolver, fetcher, jsSandbox, sttpClient) } } diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/scenario/ScenarioResolver.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/scenario/ScenarioResolver.scala index f0f30d02..f151cc00 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/scenario/ScenarioResolver.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/scenario/ScenarioResolver.scala @@ -24,8 +24,13 @@ import ru.tinkoff.tcb.mockingbird.model.SourceConfiguration import ru.tinkoff.tcb.predicatedsl.Keyword import ru.tinkoff.tcb.utils.circe.optics.JsonOptic import ru.tinkoff.tcb.utils.id.SID +import ru.tinkoff.tcb.utils.sandboxing.GraalJsSandbox -class ScenarioResolver(scenarioDAO: ScenarioDAO[Task], stateDAO: PersistentStateDAO[Task]) { +class ScenarioResolver( + scenarioDAO: ScenarioDAO[Task], + stateDAO: PersistentStateDAO[Task], + implicit val jsSandbox: GraalJsSandbox +) { private val log = MDCLogging.`for`[WLD](this) private type StateSpec = Map[JsonOptic, Map[Keyword.Json, Json]] @@ -34,7 +39,7 @@ class ScenarioResolver(scenarioDAO: ScenarioDAO[Task], stateDAO: PersistentState scope: Scope ): RIO[WLD, Option[(Scenario, Option[PersistentState])]] = (for { - _ <- log.info("Поиск сценариев для источника {} типа {}", source, scope) + _ <- log.info("Searching for scenarios for source {} of type {}", source, scope) condition0 = prop[Scenario](_.source) === source && prop[Scenario](_.scope) === scope condition = (scope == Scope.Countdown).fold( condition0 && prop[Scenario](_.times) > Option(refineMV[NonNegative](0)), @@ -42,16 +47,17 @@ class ScenarioResolver(scenarioDAO: ScenarioDAO[Task], stateDAO: PersistentState ) scenarios0 <- scenarioDAO.findChunk(condition, 0, Int.MaxValue) _ <- ZIO.when(scenarios0.isEmpty)( - log.info("Не найдены обработчики для источника {} типа {}", source, scope) *> + log.info("No handlers found for source {} of type {}", source, scope) *> ZIO.fail(EarlyReturn) ) - _ <- log.info("Кандидаты: {}", scenarios0.map(_.id)) + _ <- log.info("Candidates are: {}", scenarios0.map(_.id)) scenarios1 = scenarios0.filter(_.input.checkMessage(message)) _ <- ZIO.when(scenarios1.isEmpty)( - log.warn("После валидации сообщения не осталось кандидатов, проверьте сообщение: {}", message) *> + log + .warn("After validating the message, there are no candidates left. Please verify the message: {}", message) *> ZIO.fail(EarlyReturn) ) - _ <- log.info("После валидации сообщения: {}", scenarios1.map(_.id)) + _ <- log.info("After message validation: {}", scenarios1.map(_.id)) scenarios2 <- scenarios1.traverse { scenc => val bodyJson = scenc.input.extractJson(message) val bodyXml = scenc.input.extractXML(message) @@ -62,22 +68,22 @@ class ScenarioResolver(scenarioDAO: ScenarioDAO[Task], stateDAO: PersistentState ) } _ <- ZIO.when(scenarios2.exists(_._2.size > 1))( - log.error("Для одного или нескольких сценариев найдено более одного подходящего состояния") *> + log.error("For one or more scenarios, multiple suitable states were found") *> ZIO.fail( - ScenarioSearchError("Для одного или нескольких сценариев найдено более одного подходящего состояния") + ScenarioSearchError("For one or more scenarios, multiple suitable states were found") ) ) _ <- ZIO.when(scenarios2.count(_._2.nonEmpty) > 1)( - log.error("Для более чем одного сценария нашлось подходящее состояние") *> - ZIO.fail(ScenarioSearchError("Для более чем одного сценария нашлось подходящее состояние")) + log.error("For more than one scenario, suitable states were found") *> + ZIO.fail(ScenarioSearchError("For more than one scenario, suitable states were found")) ) _ <- ZIO.when(scenarios2.size > 1 && scenarios2.forall(c => c._1.state.isDefined && c._2.isEmpty))( - log.error("Ни для одного сценария не найдено подходящего состояния") *> - ZIO.fail(ScenarioSearchError("Ни для одного сценария не найдено подходящего состояния")) + log.error("No suitable states found for any scenario") *> + ZIO.fail(ScenarioSearchError("No suitable states found for any scenario")) ) _ <- ZIO.when(scenarios2.size > 1 && scenarios2.forall(_._1.state.isEmpty))( - log.error("Найдено более одного не требующего состояния сценария") *> - ZIO.fail(ScenarioSearchError("Найдено более одного не требующего состояния сценария")) + log.error("More than one stateless scenario found") *> + ZIO.fail(ScenarioSearchError("More than one stateless scenario found")) ) res = scenarios2.find(_._2.size == 1) orElse scenarios2.find(_._1.state.isEmpty) } yield res.map { case (scenario, states) => scenario -> states.headOption }).catchSome { case EarlyReturn => @@ -93,19 +99,20 @@ class ScenarioResolver(scenarioDAO: ScenarioDAO[Task], stateDAO: PersistentState private def findStates(id: SID[?], spec: StateSpec): RIO[WLD, Vector[PersistentState]] = for { - _ <- log.info("Поиск state для {} по условию {}", id, spec.renderJson.noSpaces) + _ <- log.info("Searching for state for {} based on condition {}", id, spec.renderJson.noSpaces) states <- stateDAO.findBySpec(spec) _ <- - if (states.nonEmpty) log.info("Найдены состояния для {}: {}", id, states.map(_.id)) - else log.info("Не найдено подходящих состояний для {}", id) + if (states.nonEmpty) log.info("States found for {}: {}", id, states.map(_.id)) + else log.info("No suitable states found for {}", id) } yield states } object ScenarioResolver { val live = ZLayer { for { - sd <- ZIO.service[ScenarioDAO[Task]] - ssd <- ZIO.service[PersistentStateDAO[Task]] - } yield new ScenarioResolver(sd, ssd) + sd <- ZIO.service[ScenarioDAO[Task]] + ssd <- ZIO.service[PersistentStateDAO[Task]] + jsSandbox <- ZIO.service[GraalJsSandbox] + } yield new ScenarioResolver(sd, ssd, jsSandbox) } } diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/stream/EphemeralCleaner.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/stream/EphemeralCleaner.scala index b9327f1a..90b7ac28 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/stream/EphemeralCleaner.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/stream/EphemeralCleaner.scala @@ -1,13 +1,12 @@ package ru.tinkoff.tcb.mockingbird.stream -import eu.timepit.fs2cron.awakeEveryCron +import eu.timepit.fs2cron.cron4s.Cron4sScheduler import eu.timepit.refined.* import eu.timepit.refined.numeric.* import fs2.Stream import tofu.logging.Logging import tofu.logging.impl.ZUniversalLogging import zio.interop.catz.* -import zio.interop.catz.implicits.* import ru.tinkoff.tcb.criteria.* import ru.tinkoff.tcb.criteria.Typed.* @@ -20,7 +19,9 @@ import ru.tinkoff.tcb.mockingbird.model.Scope final class EphemeralCleaner(stubDAO: HttpStubDAO[Task], scenarioDAO: ScenarioDAO[Task]) { private val log: Logging[UIO] = new ZUniversalLogging(this.getClass.getName) - private val trigger = awakeEveryCron[Task](midnight) + private val cronScheduler = Cron4sScheduler.systemDefault[Task] + + private val trigger = cronScheduler.awakeEvery(midnight) private val secondsInDay = 60 * 60 * 24 diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/stream/EventSpawner.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/stream/EventSpawner.scala index ff4f6f89..3a8886dc 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/stream/EventSpawner.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/stream/EventSpawner.scala @@ -11,7 +11,6 @@ import mouse.boolean.* import sttp.client4.{Backend as SttpBackend, *} import sttp.model.Method import zio.interop.catz.* -import zio.interop.catz.implicits.* import ru.tinkoff.tcb.logging.MDCLogging import ru.tinkoff.tcb.mockingbird.api.Tracing @@ -87,7 +86,7 @@ final class EventSpawner( .fromEither(response.body) .mapError[Exception](err => (if (reInit) SourceFault(_) else EventProcessingError(_))( - s"Запрос на ${req.url.asString} завершился ошибкой ($err)" + s"The request to ${req.url.asString} ended with an error ($err)" ) ) processed <- ZIO.fromEither { @@ -112,7 +111,7 @@ final class EventSpawner( res <- fetch(sourceConf.request, sourceConf.reInitTriggers.map(_.toVector).orEmpty) .mapError[Exception](SpawnError(sourceConf.name, _)) neRes = res.filter(_.nonEmpty) - _ <- ZIO.when(neRes.nonEmpty)(log.info(s"Отправлено в обработку: ${neRes.length}")) + _ <- ZIO.when(neRes.nonEmpty)(log.info(s"Sent for processing: ${neRes.length}")) _ <- ZIO .validateDiscard(neRes) { engine.perform(sourceConf.name, _) @@ -145,17 +144,17 @@ final class EventSpawner( case SpawnError(sid, SourceFault(_)) => rm.reinitialize(sid.asInstanceOf[SID[SourceConfiguration]]) case EventProcessingError(err) => - log.warn(s"Ошибка при обработке события: $err") + log.warn(s"Error processing the event: $err") case ScenarioExecError(err) => - log.warn(s"Ошибка при выполнении сценария: $err") + log.warn(s"Error executing the scenario: $err") case ScenarioSearchError(err) => - log.warn(s"Ошибка при поиске сценария: $err") + log.warn(s"Error searching for the scenario: $err") case CallbackError(err) => - log.warn(s"Ошибка при выполнении колбэка: $err") + log.warn(s"Error executing the callback: $err") case SpawnError(sid, err) => - log.errorCause(s"Ошибка при получении события из {}", err, sid) + log.errorCause(s"Error retrieving event from {}", err, sid) case NonFatal(t) => - log.errorCause("Ошибка при получении события", t) + log.errorCause("Error retrieving event", t) } } diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/stream/SDFetcher.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/stream/SDFetcher.scala index b81b624d..e569ed9c 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/stream/SDFetcher.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/stream/SDFetcher.scala @@ -5,7 +5,6 @@ import scala.util.control.NonFatal import fs2.Stream import zio.interop.catz.* -import zio.interop.catz.implicits.* import ru.tinkoff.tcb.logging.MDCLogging import ru.tinkoff.tcb.mockingbird.api.WLD @@ -30,9 +29,9 @@ final class SDFetcher( .awakeEvery[RIO[WLD, *]](eventConfig.reloadInterval) .evalMap(_ => sourceDAO.getAll) .evalTap(sourceCache.set) - .evalMap(srcs => log.info("Получены источники: {}", srcs.map(_.name))) + .evalMap(srcs => log.info("Sources received: {}", srcs.map(_.name))) .handleErrorWith { case NonFatal(t) => - Stream.eval(log.errorCause("Ошибка при загрузке источников", t)) ++ + Stream.eval(log.errorCause("Error loading sources", t)) ++ Stream.sleep[RIO[WLD, *]](eventConfig.reloadInterval) ++ reloadSrc } @@ -42,9 +41,9 @@ final class SDFetcher( .awakeEvery[RIO[WLD, *]](eventConfig.reloadInterval) .evalMap(_ => destinationDAO.getAll) .evalTap(destionationCache.set) - .evalMap(dsts => log.info("Получены приёмники: {}", dsts.map(_.name))) + .evalMap(dsts => log.info("Destinations received: {}", dsts.map(_.name))) .handleErrorWith { case NonFatal(t) => - Stream.eval(log.errorCause("Ошибка при загрузке приёмников", t)) ++ + Stream.eval(log.errorCause("Error loading destinations", t)) ++ Stream.sleep[RIO[WLD, *]](eventConfig.reloadInterval) ++ reloadDest } diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/predicatedsl/Keyword.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/predicatedsl/Keyword.scala index cc800e52..0125ed9d 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/predicatedsl/Keyword.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/predicatedsl/Keyword.scala @@ -41,7 +41,6 @@ object Keyword case object AllIn extends Keyword("&[_]", "$all") with JsonKeyword with FormKeyword case object Cdata extends Keyword("cdata", "") with XmlKeyword case object JCdata extends Keyword("jcdata", "") with XmlKeyword - case object XCdata extends Keyword("xcdata", "") with XmlKeyword val values = findValues diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/predicatedsl/xml/XmlPredicate.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/predicatedsl/xml/XmlPredicate.scala index 297ac11a..e70114a6 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/predicatedsl/xml/XmlPredicate.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/predicatedsl/xml/XmlPredicate.scala @@ -68,7 +68,7 @@ object XmlPredicate { /** * @param description - * Имеет вид: {"/xpath": ] + * Looks like: {"/xpath": ] * @return */ def apply( @@ -154,26 +154,6 @@ object XmlPredicate { } yield jpred) .leftMap(NonEmptyList.one) .map(jpred => (op: Option[Node]) => op.exists(_.evalXPath[Json](xp"self::node()").map(jpred).getOrElse(false))) - case (XCdata, spec) => - Validated - .fromEither(for { - xspec <- spec - .as[Map[Xpath, Map[Keyword.Xml, Json]]] - .leftMap(_ => kwd.asInstanceOf[Keyword] -> spec) - xpred <- XmlPredicate(xspec).toEither.leftMap(errs => - kwd.asInstanceOf[Keyword] -> Json.fromString(errs.toList.mkString(", ")) - ) - } yield xpred) - .leftMap(NonEmptyList.one) - .map(xpred => - (op: Option[Node]) => - op.exists( - _.evalXPath[String](xp"self::node()") - .flatMap(_.trim().asNode) - .map(xpred) - .getOrElse(false) - ) - ) case (kwd, j) => Validated.invalidNel(kwd -> j) } diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/sandboxing/CodeRunner.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/sandboxing/CodeRunner.scala new file mode 100644 index 00000000..9f0e0ce9 --- /dev/null +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/sandboxing/CodeRunner.scala @@ -0,0 +1,9 @@ +package ru.tinkoff.tcb.utils.sandboxing + +import scala.util.Try + +import io.circe.Json + +trait CodeRunner { + def eval(code: String): Try[Json] +} diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/sandboxing/GraalJsSandbox.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/sandboxing/GraalJsSandbox.scala new file mode 100644 index 00000000..f5c7a0d7 --- /dev/null +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/sandboxing/GraalJsSandbox.scala @@ -0,0 +1,67 @@ +package ru.tinkoff.tcb.utils.sandboxing + +import scala.util.Try +import scala.util.chaining.* + +import org.graalvm.polyglot.* + +import ru.tinkoff.tcb.mockingbird.config.JsSandboxConfig +import ru.tinkoff.tcb.utils.resource.Resource +import ru.tinkoff.tcb.utils.sandboxing.conversion.* + +class GraalJsSandbox( + jsSandboxConfig: JsSandboxConfig, + prelude: Option[String] = None +) { + private val allowedClasses = GraalJsSandbox.DefaultAccess ++ jsSandboxConfig.allowedClasses + private val preludeSource = prelude.map(Source.create("js", _)) + + def makeRunner(environment: Map[String, GValue] = Map.empty): Resource[CodeRunner] = + Resource + .lean( + Context + .newBuilder("js") + .allowHostAccess(HostAccess.ALL) + .allowHostClassLookup((t: String) => allowedClasses(t)) + .option("engine.WarnInterpreterOnly", "false") + .build() + .tap { context => + context.getBindings("js").pipe { bindings => + for ((key, value) <- environment.view.mapValues(_.unwrap)) + bindings.putMember(key, value) + } + preludeSource.foreach(context.eval) + } + )(_.close()) + .map(ctx => (code: String) => Try(ctx.value.eval("js", code)).flatMap(_.toJson)) +} + +object GraalJsSandbox { + val live: URLayer[Option[String] & JsSandboxConfig, GraalJsSandbox] = ZLayer { + for { + sandboxConfig <- ZIO.service[JsSandboxConfig] + prelude <- ZIO.service[Option[String]] + } yield new GraalJsSandbox(sandboxConfig, prelude) + } + + val DefaultAccess: Set[String] = Set( + "java.lang.Byte", + "java.lang.Boolean", + "java.lang.Double", + "java.lang.Float", + "java.lang.Integer", + "java.lang.Long", + "java.lang.Math", + "java.lang.Short", + "java.lang.String", + "java.math.BigDecimal", + "java.math.BigInteger", + "java.time.LocalDate", + "java.time.LocalDateTime", + "java.time.format.DateTimeFormatter", + "java.util.List", + "java.util.Map", + "java.util.Random", + "java.util.Set" + ) +} diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/sandboxing/conversion/package.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/sandboxing/conversion/package.scala new file mode 100644 index 00000000..e787c995 --- /dev/null +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/sandboxing/conversion/package.scala @@ -0,0 +1,97 @@ +package ru.tinkoff.tcb.utils.sandboxing + +import java.lang as jl +import scala.jdk.CollectionConverters.* +import scala.util.Failure +import scala.util.Success +import scala.util.Try + +import alleycats.std.map.* +import io.circe.Json +import io.circe.JsonNumber +import io.circe.JsonObject +import io.estatico.newtype.macros.newtype +import io.estatico.newtype.ops.* +import org.graalvm.polyglot.Value +import org.graalvm.polyglot.proxy.* + +package object conversion { + @newtype class GValue(val unwrap: AnyRef) + object GValue { + private[conversion] def apply(anyRef: AnyRef): GValue = anyRef.coerce + } + + val circe2js: Json.Folder[GValue] = new Json.Folder[GValue] { + override def onNull: GValue = GValue(null) + + override def onBoolean(value: Boolean): GValue = GValue(jl.Boolean.valueOf(value)) + + override def onNumber(value: JsonNumber): GValue = + GValue(value.toLong.map(jl.Long.valueOf).getOrElse(jl.Float.valueOf(value.toFloat))) + + override def onString(value: String): GValue = GValue(value) + + override def onArray(value: Vector[Json]): GValue = GValue(new ProxyArray { + override def get(index: Long): AnyRef = value(index.toInt).foldWith(circe2js).unwrap + override def set(index: Long, value: Value): Unit = throw new UnsupportedOperationException() + override def getSize: Long = value.size + }) + + override def onObject(value: JsonObject): GValue = GValue(new ProxyObject { + override def getMember(key: String): AnyRef = value.apply(key).map(_.foldWith(circe2js).unwrap).orNull + override def getMemberKeys: AnyRef = new ProxyArray { + private val keys = value.keys.toVector + override def get(index: Long): AnyRef = keys(index.toInt) + override def set(index: Long, value: Value): Unit = throw new UnsupportedOperationException() + override def getSize: Long = keys.size + } + override def hasMember(key: String): Boolean = value.keys.exists(_ == key) + override def putMember(key: String, value: Value): Unit = throw new UnsupportedOperationException() + }) + } + + implicit class ValueConverter(private val value: Value) extends AnyVal { + def toJson: Try[Json] = + value match { + case v if v.isNull => Success(Json.Null) + case v if v.isBoolean => Success(if (v.asBoolean()) Json.True else Json.False) + case v if v.isNumber && (v.fitsInByte() || v.fitsInShort() || v.fitsInInt()) => Success(Json.fromInt(v.asInt())) + case v if v.isNumber && v.fitsInLong() => Success(Json.fromLong(v.asLong())) + case v if v.isNumber && v.fitsInBigInteger() => Success(Json.fromBigInt(v.asBigInteger())) + case v if v.isNumber && v.fitsInFloat() => Success(Json.fromFloatOrNull(v.asFloat())) + case v if v.isNumber && v.fitsInDouble() => Success(Json.fromDoubleOrNull(v.asDouble())) + case v if v.isString => Success(Json.fromString(v.asString())) + case v if v.hasArrayElements => + Vector.tabulate(v.getArraySize.toInt)(v.getArrayElement(_)).traverse(_.toJson).map(Json.fromValues) + case v if v.hasMembers => + v.getMemberKeys.asScala.map(k => k -> v.getMember(k)).toMap.traverse(_.toJson).map(Json.fromFields) + case v if v.isException => Try(v.throwException()).asInstanceOf[Try[Nothing]] + case other => Failure(new IllegalArgumentException(s"Unsupported value: ${printValueFlags(other)}")) + } + } + + private def printValueFlags(value: Value): String = + Map( + "isBoolean" -> value.isBoolean, + "isDate" -> value.isDate, + "isDuration" -> value.isDuration, + "isException" -> value.isException, + "isHostObject" -> value.isHostObject, + "isInstant" -> value.isInstant, + "isIterator" -> value.isIterator, + "isMetaObject" -> value.isMetaObject, + "isNativePointer" -> value.isNativePointer, + "isNull" -> value.isNull, + "isNumber" -> value.isNumber, + "isProxyObject" -> value.isProxyObject, + "isString" -> value.isString, + "isTime" -> value.isTime, + "isTimeZone" -> value.isTimeZone, + "hasArrayElements" -> value.hasArrayElements, + "hasBufferElements" -> value.hasBufferElements, + "hasHashEntries" -> value.hasHashEntries, + "hasIterator" -> value.hasIterator, + "hasMembers" -> value.hasMembers, + "hasMetaParents" -> value.hasMetaParents + ).filter(_._2).keySet.mkString("{", ", ", "}") +} diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/transformation/json/package.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/transformation/json/package.scala index f35c249c..f68fc8f3 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/transformation/json/package.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/transformation/json/package.scala @@ -1,17 +1,21 @@ package ru.tinkoff.tcb.utils.transformation +import scala.util.Failure +import scala.util.Success import scala.util.control.TailCalls import scala.util.control.TailCalls.TailRec import io.circe.Json import io.circe.JsonNumber as JNumber import kantan.xpath.* -import mouse.boolean.* import ru.tinkoff.tcb.utils.circe.* import ru.tinkoff.tcb.utils.circe.optics.JsonOptic import ru.tinkoff.tcb.utils.json.json2StringFolder import ru.tinkoff.tcb.utils.regex.OneOrMore +import ru.tinkoff.tcb.utils.resource.Resource +import ru.tinkoff.tcb.utils.sandboxing.GraalJsSandbox +import ru.tinkoff.tcb.utils.sandboxing.conversion.circe2js import ru.tinkoff.tcb.utils.transformation.xml.nodeTemplater package object json { @@ -28,24 +32,35 @@ package object json { } } - def jsonTemplater(values: Json): PartialFunction[String, Json] = { - case JOptic(None, optic) if optic.validate(values) => - optic.get(values) - case JOptic(Some(":"), optic) if optic.validate(values) => - optic.get(values).pipe(j => castToString.applyOrElse(j, (_: Json) => j)) - case JOptic(Some("~"), optic) if optic.validate(values) => - optic.get(values).pipe(j => castFromString.applyOrElse(j, (_: Json) => j)) - case str @ JORxs() => - Json.fromString( - JORx.replaceSomeIn( - str, - m => - JsonOptic - .fromPathString(m.group(2)) - .getOpt(values) - .map(_.foldWith(json2StringFolder)) - ) - ) + def jsonTemplater(values: Json)(implicit sandbox: GraalJsSandbox): Resource[PartialFunction[String, Json]] = { + lazy val jsData = values.asObject.map(_.toMap.view.mapValues(_.foldWith(circe2js)).toMap).getOrElse(Map()) + + sandbox.makeRunner(jsData).map[PartialFunction[String, Json]] { runner => + { + case JOptic(None, optic) if optic.validate(values) => + optic.get(values) + case JOptic(Some(":"), optic) if optic.validate(values) => + optic.get(values).pipe(j => castToString.applyOrElse(j, (_: Json) => j)) + case JOptic(Some("~"), optic) if optic.validate(values) => + optic.get(values).pipe(j => castFromString.applyOrElse(j, (_: Json) => j)) + case str @ JORxs() => + Json.fromString( + JORx.replaceSomeIn( + str, + m => + JsonOptic + .fromPathString(m.group(2)) + .getOpt(values) + .map(_.foldWith(json2StringFolder)) + ) + ) + case CodeRx(code) => + runner.eval(code) match { + case Success(value) => value + case Failure(exception) => throw exception + } + } + } } implicit final class JsonTransformations(private val j: Json) extends AnyVal { @@ -54,7 +69,8 @@ package object json { false, _ => false, _ => false, - str => JORx.findFirstIn(str).isDefined || FunRx.findFirstIn(str).isDefined || SubstRx.findFirstIn(str).isDefined, + str => + JORx.findFirstIn(str).isDefined || CodeRx.findFirstIn(str).isDefined || SubstRx.findFirstIn(str).isDefined, _.exists(_.isTemplate), _.values.exists(_.isTemplate) ) @@ -72,8 +88,8 @@ package object json { def transformValues(f: PartialFunction[Json, Json]): TailRec[Json] = transformValues(j => f.applyOrElse(j, (_: Json) => j)) - def substitute(values: Json): Json = - jsonTemplater(values).pipe { templater => + def substitute(values: Json)(implicit sandbox: GraalJsSandbox): Resource[Json] = + jsonTemplater(values).map { templater => transformValues { case js @ JsonString(str) => templater.applyOrElse(str, (_: String) => js) }.result @@ -86,29 +102,18 @@ package object json { }.result } - def eval: Json = - transformValues { case js @ JsonString(str) => - str - .foldTemplate( - Json.fromString, - Json.fromInt, - Json.fromLong - ) - .orElse { - FunRx - .findFirstIn(str) - .isDefined - .option( - FunRx - .replaceSomeIn(str, m => m.matched.foldTemplate(identity, _.toString(), _.toString())) - ) - .map(Json.fromString) + def eval(implicit sandbox: GraalJsSandbox): Resource[Json] = + sandbox.makeRunner().map { runner => + transformValues { case JsonString(CodeRx(code)) => + runner.eval(code) match { + case Success(value) => value + case Failure(exception) => throw exception } - .getOrElse(js) - }.result + }.result + } - def patch(values: Json, schema: Map[JsonOptic, String]): Json = - jsonTemplater(values).pipe { templater => + def patch(values: Json, schema: Map[JsonOptic, String])(implicit sandbox: GraalJsSandbox): Resource[Json] = + jsonTemplater(values).map { templater => schema.foldLeft(j) { case (acc, (optic, defn)) => templater.lift.apply(defn).fold(acc)(optic.set(_)(acc)) } diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/transformation/package.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/transformation/package.scala index c3a87bb2..0d2b5d25 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/transformation/package.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/transformation/package.scala @@ -1,57 +1,8 @@ package ru.tinkoff.tcb.utils -import java.time.LocalDate -import java.time.LocalDateTime -import java.util.UUID -import scala.util.Random import scala.util.matching.Regex -import ru.tinkoff.tcb.utils.time.* - package object transformation { - val SubstRx: Regex = """\$\{(.*?)\}""".r - val FunRx: Regex = """%\{.*?\}""".r - - val RandStr: Regex = """%\{randomString\((\d+)\)\}""".r - val RandAlphabetStr: Regex = """%\{randomString\(\"(.*?)\",\s*(\d+),\s*(\d+)\)\}""".r - val RandNumStr: Regex = """%\{randomNumericString\((\d+)\)\}""".r - val RandInt: Regex = """%\{randomInt\((\d+)\)\}""".r - val RandIntInterval: Regex = """%\{randomInt\((\d+),\s*(\d+)\)\}""".r - val RandLong: Regex = """%\{randomLong\((\d+)\)\}""".r - val RandLongInterval: Regex = """%\{randomLong\((\d+),\s*(\d+)\)\}""".r - val RandUUID: Regex = """%\{UUID\}""".r - - val Today: Regex = """%\{today\((.*?)\)\}""".r - val Now: Regex = """%\{now\((.*?)\)\}""".r - - implicit final class TemplateTransformations(private val template: String) extends AnyVal { - def foldTemplate[T](foldString: String => T, foldInt: Int => T, foldLong: Long => T): Option[T] = - template match { - case RandStr(len) => - Some(foldString(Random.alphanumeric.take(len.toInt).mkString)) - case RandAlphabetStr(alphabet, minLen, maxLen) => - Some( - foldString( - List.fill(Random.between(minLen.toInt, maxLen.toInt))(alphabet(Random.nextInt(alphabet.length))).mkString - ) - ) - case RandNumStr(len) => - Some(foldString(Seq.fill(len.toInt)(Random.nextInt(10)).mkString)) - case RandInt(max) => - Some(foldInt(Random.nextInt(max.toInt))) - case RandIntInterval(min, max) => - Some(foldInt(Random.between(min.toInt, max.toInt))) - case RandLong(max) => - Some(foldLong(Random.nextLong(max.toLong))) - case RandLongInterval(min, max) => - Some(foldLong(Random.between(min.toLong, max.toLong))) - case RandUUID() => - Some(foldString(UUID.randomUUID().toString)) - case Today(Formatter(fmt)) => - Some(foldString(LocalDate.now().format(fmt))) - case Now(Formatter(fmt)) => - Some(foldString(LocalDateTime.now().format(fmt))) - case _ => None - } - } + val SubstRx: Regex = """\$\{(.+?)\}""".r + val CodeRx: Regex = """%\{(.+?)\}""".r } diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/transformation/string/package.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/transformation/string/package.scala index 6d4aac3c..10dcf832 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/transformation/string/package.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/transformation/string/package.scala @@ -3,18 +3,22 @@ package ru.tinkoff.tcb.utils.transformation import io.circe.Json import kantan.xpath.Node +import ru.tinkoff.tcb.utils.sandboxing.GraalJsSandbox import ru.tinkoff.tcb.utils.transformation.json.* package object string { implicit final class StringTransformations(private val s: String) extends AnyVal { - def substitute(jvalues: Json, xvalues: Node): String = - if (s.contains("${") && s.contains("}")) - Json.fromString(s).substitute(jvalues).substitute(xvalues).asString.getOrElse(s) + def isTemplate: Boolean = + CodeRx.findFirstIn(s).isDefined || SubstRx.findFirstIn(s).isDefined + + def substitute(jvalues: Json, xvalues: Node)(implicit sandbox: GraalJsSandbox): String = + if (SubstRx.findFirstIn(s).isDefined || CodeRx.findFirstIn(s).isDefined) + Json.fromString(s).substitute(jvalues).map(_.substitute(xvalues)).useAsIs.asString.getOrElse(s) else s - def substitute(values: Json): String = - if (s.contains("${") && s.contains("}")) - Json.fromString(s).substitute(values).asString.getOrElse(s) + def substitute(values: Json)(implicit sandbox: GraalJsSandbox): String = + if (SubstRx.findFirstIn(s).isDefined || CodeRx.findFirstIn(s).isDefined) + Json.fromString(s).substitute(values).useAsIs.asString.getOrElse(s) else s } } diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/transformation/xml/package.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/transformation/xml/package.scala index e46b238e..89921da9 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/transformation/xml/package.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/transformation/xml/package.scala @@ -1,7 +1,7 @@ package ru.tinkoff.tcb.utils.transformation -import java.util.UUID -import scala.util.Random +import scala.util.Failure +import scala.util.Success import scala.util.Try import scala.util.control.TailCalls import scala.util.control.TailCalls.TailRec @@ -21,6 +21,8 @@ import kantan.xpath.implicits.* import ru.tinkoff.tcb.utils.json.json2StringFolder import ru.tinkoff.tcb.utils.regex.OneOrMore +import ru.tinkoff.tcb.utils.resource.Resource +import ru.tinkoff.tcb.utils.sandboxing.GraalJsSandbox import ru.tinkoff.tcb.utils.transformation.json.jsonTemplater import ru.tinkoff.tcb.xpath.* @@ -48,13 +50,13 @@ package object xml { elem.attributes.exists(attr => attr.value match { case Seq(Text(SubstRx(Xexpr(_)))) => true - case Seq(Text(FunRx())) => true + case Seq(Text(CodeRx(_))) => true case Seq(Text(SubstRxs())) => true case _ => false } ) || elem.child.exists(_.isTemplate) case Text(SubstRx(Xexpr(_))) => true - case Text(FunRx()) => true + case Text(CodeRx(_)) => true case Text(SubstRxs()) => true case _ => false } @@ -101,8 +103,8 @@ package object xml { }.result } - def substitute(values: Json): Node = - jsonTemplater(values).pipe { templater => + def substitute(values: Json)(implicit sandbox: GraalJsSandbox): Resource[Node] = + jsonTemplater(values).map { templater => transform { case elem: Elem => elem.attributes.foldLeft(elem)((e, attr) => @@ -119,36 +121,28 @@ package object xml { }.result } - def eval: Node = - transform { - case Text(RandStr(len)) => - Text(Random.alphanumeric.take(len.toInt).mkString) - case Text(RandAlphabetStr(alphabet, minLen, maxLen)) => - Text( - List.fill(Random.between(minLen.toInt, maxLen.toInt))(alphabet(Random.nextInt(alphabet.length))).mkString - ) - case Text(RandInt(max)) => - Text(Random.nextInt(max.toInt).toString) - case Text(RandIntInterval(min, max)) => - Text(Random.between(min.toInt, max.toInt).toString) - case Text(RandLong(max)) => - Text(Random.nextLong(max.toLong).toString) - case Text(RandLongInterval(min, max)) => - Text(Random.between(min.toLong, max.toLong).toString) - case Text(RandUUID()) => - Text(UUID.randomUUID().toString) - }.result + def eval(implicit sandbox: GraalJsSandbox): Resource[Node] = + sandbox.makeRunner().map { runner => + transform { case tx @ Text(CodeRx(code)) => + runner.eval(code) match { + case Success(value) => Text(value.foldWith(json2StringFolder)) + case Failure(exception) => throw exception + } + }.result + } def inlineXmlFromCData: Node = transform { case PCData(XCData(xml)) => xml }.result - def patchFromValues(jValues: Json, xValues: Node, schema: Map[XmlZoom, String]): Node = { - val jt = jsonTemplater(jValues) - val nt = nodeTemplater({xValues}) - - schema + def patchFromValues(jValues: Json, xValues: Node, schema: Map[XmlZoom, String])(implicit + sandbox: GraalJsSandbox + ): Resource[Node] = + for { + jt <- jsonTemplater(jValues) + nt = nodeTemplater({xValues}) + } yield schema .foldLeft({n}: Node) { case (acc, (zoom, defn)) => defn match { case jp if jt.isDefinedAt(jp) => @@ -165,6 +159,5 @@ package object xml { } } .pipe(_.child.head) - } } } diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/xml/SafeXML.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/xml/SafeXML.scala index 6d78b076..1e8f5494 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/xml/SafeXML.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/xml/SafeXML.scala @@ -11,7 +11,7 @@ import org.xml.sax.ext.DefaultHandler2 import org.xml.sax.ext.LexicalHandler /* - Хак с обработкой CDATA принадлежит перу славного индуса Kolmar + CDATA processing hack by Kolmar https://stackoverflow.com/a/35483778 */ object SafeXML extends XMLLoader[Elem] { diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/xml/package.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/xml/package.scala index 6fd4234f..b07b5e71 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/xml/package.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/xml/package.scala @@ -41,8 +41,7 @@ package object xml { Encoder.encodeString.coerce /* - Для ускорения чтения здесь не производится валидация, - предполагается, что данные записаны уже провалидированными + Validation is not performed here to speed up reading */ implicit val xmlStringBsonDecoder: BsonDecoder[XMLString] = BsonDecoder[String].coerce diff --git a/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/predicatedsl/xml/XmlPredicateSpec.scala b/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/predicatedsl/xml/XmlPredicateSpec.scala index 9f1de24b..94cecd74 100644 --- a/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/predicatedsl/xml/XmlPredicateSpec.scala +++ b/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/predicatedsl/xml/XmlPredicateSpec.scala @@ -224,22 +224,4 @@ class XmlPredicateSpec extends AnyFunSuite with Matchers with EitherValues { sut.map(_(xml(""" """))) shouldBe Some(false) sut.map(_(xml(""" """))) shouldBe Some(false) } - - test("Check CDATA with XML") { - val spec = Json.obj( - "/xml" := Json.obj( - "xcdata" := Json.obj( - "/f" := Json.obj( - "==" := 42 - ) - ) - ) - ) - - val sut = XmlPredicate(spec.as[Map[Xpath, Map[Keyword.Xml, Json]]].value).toOption - - sut.map(_(xml(""" 42]]> """))) shouldBe Some(true) - sut.map(_(xml(""" 43]]> """))) shouldBe Some(false) - sut.map(_(xml(""" 42 """))) shouldBe Some(false) - } } diff --git a/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/utils/sandboxing/GraalJsSandboxSpec.scala b/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/utils/sandboxing/GraalJsSandboxSpec.scala new file mode 100644 index 00000000..0a4b1bcf --- /dev/null +++ b/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/utils/sandboxing/GraalJsSandboxSpec.scala @@ -0,0 +1,61 @@ +package ru.tinkoff.tcb.utils.sandboxing + +import io.circe.Json +import org.graalvm.polyglot.PolyglotException +import org.scalatest.TryValues +import org.scalatest.funsuite.AnyFunSuite +import org.scalatest.matchers.should.Matchers + +import ru.tinkoff.tcb.mockingbird.config.JsSandboxConfig +import ru.tinkoff.tcb.utils.sandboxing.conversion.circe2js + +class GraalJsSandboxSpec extends AnyFunSuite with Matchers with TryValues { + private val sandbox = new GraalJsSandbox(new JsSandboxConfig()) + + test("Eval literals") { + sandbox.makeRunner().use(_.eval("[1, \"test\", true]")).success.value shouldBe Json.arr( + Json.fromInt(1), + Json.fromString("test"), + Json.True + ) + + sandbox.makeRunner().use(_.eval("var res = {'a': {'b': 'c'}}; res")).success.value shouldBe Json.obj( + "a" -> Json.obj("b" -> Json.fromString("c")) + ) + } + + test("Eval simple arithmetics") { + sandbox.makeRunner().use(_.eval("1 + 2")).success.value shouldBe Json.fromInt(3) + } + + test("Java classes are inaccessible") { + sandbox + .makeRunner() + .use(_.eval("java.lang.System.out.println('hello');")) + .failure + .exception shouldBe a[PolyglotException] + } + + test("Eval with context") { + sandbox + .makeRunner(Map("a" -> Json.fromInt(1), "b" -> Json.fromInt(2)).view.mapValues(_.foldWith(circe2js)).toMap) + .use(_.eval("a + b")) + .success + .value shouldBe Json.fromInt(3) + } + + test("Evaluations should not have shared data") { + sandbox.makeRunner().use(_.eval("a = 42;")).success + sandbox.makeRunner().use(_.eval("a")).failure.exception shouldBe a[PolyglotException] + } + + test("Get value from provided map") { + sandbox + .makeRunner(Map("m" -> Json.obj("f1" -> Json.fromString("hello"))).view.mapValues(_.foldWith(circe2js)).toMap) + .use(_.eval("m.f1")) + .success + .value shouldBe Json.fromString( + "hello" + ) + } +} diff --git a/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/utils/transformation/json/JsEvalSpec.scala b/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/utils/transformation/json/JsEvalSpec.scala new file mode 100644 index 00000000..0e526e53 --- /dev/null +++ b/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/utils/transformation/json/JsEvalSpec.scala @@ -0,0 +1,76 @@ +package ru.tinkoff.tcb.utils.transformation.json + +import java.security.MessageDigest + +import io.circe.Json +import io.circe.syntax.* +import org.scalatest.TryValues +import org.scalatest.funsuite.AnyFunSuite +import org.scalatest.matchers.should.Matchers + +import ru.tinkoff.tcb.mockingbird.config.JsSandboxConfig +import ru.tinkoff.tcb.utils.sandboxing.GraalJsSandbox +import ru.tinkoff.tcb.utils.sandboxing.conversion.circe2js + +class JsEvalSpec extends AnyFunSuite with Matchers with TryValues { + test("Simple expressions") { + val sandbox = new GraalJsSandbox(JsSandboxConfig()) + + val data = Json.obj("a" := Json.obj("b" := 42, "c" := "test", "d" := 1 :: 2 :: Nil, "e" := Json.obj("f" := "g"))) + + val res = sandbox + .makeRunner(Map("req" -> data).view.mapValues(_.foldWith(circe2js)).toMap) + .use(_.eval("req.a.b")) + + res.success.value shouldBe Json.fromInt(42) + + val res2 = sandbox + .makeRunner(Map("req" -> data).view.mapValues(_.foldWith(circe2js)).toMap) + .use(_.eval("req.a.c")) + + res2.success.value shouldBe Json.fromString("test") + + val res3 = sandbox + .makeRunner(Map("req" -> data).view.mapValues(_.foldWith(circe2js)).toMap) + .use(_.eval("req.a.d")) + + res3.success.value shouldBe Json.arr(Json.fromInt(1), Json.fromInt(2)) + + val res4 = sandbox + .makeRunner(Map("req" -> data).view.mapValues(_.foldWith(circe2js)).toMap) + .use(_.eval("req.a.d[0]")) + + res4.success.value shouldBe Json.fromInt(1) + + val res5 = sandbox + .makeRunner(Map("req" -> data).view.mapValues(_.foldWith(circe2js)).toMap) + .use(_.eval("req.a.e.f")) + + res5.success.value shouldBe Json.fromString("g") + + val res6 = sandbox + .makeRunner(Map("req" -> data).view.mapValues(_.foldWith(circe2js)).toMap) + .use(_.eval("req.a.e")) + + res6.success.value shouldBe Json.obj("f" := "g") + } + + test("JS functions") { + val aesSandbox = new GraalJsSandbox(JsSandboxConfig(Set("java.security.MessageDigest"))) + + val etalon = + Json.fromValues(MessageDigest.getInstance("SHA-1").digest("abc".getBytes).map(_.toInt).map(Json.fromInt)) + + // https://stackoverflow.com/a/22861911/3819595 + val res = aesSandbox + .makeRunner() + .use( + _.eval( + """var md = java.security.MessageDigest.getInstance("SHA-1"); + |md.digest('abc'.split('').map(c => c.charCodeAt(0)));""".stripMargin + ) + ) + + res.success.value shouldBe etalon + } +} diff --git a/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/utils/transformation/json/JsonTransformationsSpec.scala b/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/utils/transformation/json/JsonTransformationsSpec.scala index bf7ee0bb..f6c4d25b 100644 --- a/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/utils/transformation/json/JsonTransformationsSpec.scala +++ b/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/utils/transformation/json/JsonTransformationsSpec.scala @@ -10,12 +10,17 @@ import org.scalatest.OptionValues import org.scalatest.funsuite.AnyFunSuite import org.scalatest.matchers.should.Matchers +import ru.tinkoff.tcb.mockingbird.config.JsSandboxConfig import ru.tinkoff.tcb.utils.circe.* import ru.tinkoff.tcb.utils.circe.optics.JLens import ru.tinkoff.tcb.utils.circe.optics.JsonOptic +import ru.tinkoff.tcb.utils.resource.readStr +import ru.tinkoff.tcb.utils.sandboxing.GraalJsSandbox class JsonTransformationsSpec extends AnyFunSuite with Matchers with OptionValues { test("Fill template") { + implicit val sandbox: GraalJsSandbox = new GraalJsSandbox(JsSandboxConfig()) + val template = Json.obj( "description" := "${description}", "topic" := "${extras.topic}", @@ -28,6 +33,18 @@ class JsonTransformationsSpec extends AnyFunSuite with Matchers with OptionValue template.isTemplate shouldBe true + val template2 = Json.obj( + "description" := "%{description}", + "topic" := "%{extras.topic}", + "comment" := "%{extras.comments[0].text}", + "meta" := Json.obj( + "field1" := "%{extras.fields[0]}" + ), + "composite" := "%{extras.topic + ': ' + description}" + ) + + template2.isTemplate shouldBe true + val values = Json.obj( "description" := "Some description", "extras" := Json.obj( @@ -39,9 +56,7 @@ class JsonTransformationsSpec extends AnyFunSuite with Matchers with OptionValue values.isTemplate shouldBe false - val sut = template.substitute(values) - - sut shouldBe Json.obj( + val expected = Json.obj( "description" := "Some description", "topic" := "Main topic", "comment" := "First nah!", @@ -50,27 +65,41 @@ class JsonTransformationsSpec extends AnyFunSuite with Matchers with OptionValue ), "composite" := "Main topic: Some description" ) + + val sut = template.substitute(values).useAsIs + + sut shouldBe expected + + val sut2 = template2.substitute(values).useAsIs + + sut2 shouldBe expected } test("Absent fields") { + implicit val sandbox: GraalJsSandbox = new GraalJsSandbox(JsSandboxConfig()) + val template = Json.obj( "value" := "${description}" ) - val sut = template.substitute(Json.obj()) + val sut = template.substitute(Json.obj()).useAsIs sut shouldBe template } test("Substitute object") { + implicit val sandbox: GraalJsSandbox = new GraalJsSandbox(JsSandboxConfig()) + val template = Json.obj("value" := "${message}") - val sut = template.substitute(Json.obj("message" := Json.obj("peka" := "name"))) + val sut = template.substitute(Json.obj("message" := Json.obj("peka" := "name"))).useAsIs sut shouldBe Json.obj("value" := Json.obj("peka" := "name")) } test("Convert to string") { + implicit val sandbox: GraalJsSandbox = new GraalJsSandbox(JsSandboxConfig()) + val template = Json.obj( "a" := "$:{b1}", "b" := "$:{b2}", @@ -85,7 +114,7 @@ class JsonTransformationsSpec extends AnyFunSuite with Matchers with OptionValue "n" := 45.99 ) - val sut = template.substitute(values) + val sut = template.substitute(values).useAsIs sut shouldBe Json.obj( "a" := "true", @@ -95,6 +124,8 @@ class JsonTransformationsSpec extends AnyFunSuite with Matchers with OptionValue } test("Convert from string") { + implicit val sandbox: GraalJsSandbox = new GraalJsSandbox(JsSandboxConfig()) + val template = Json.obj( "a" := "$~{b1}", "b" := "$~{b2}", @@ -109,7 +140,7 @@ class JsonTransformationsSpec extends AnyFunSuite with Matchers with OptionValue "n" := "45.99" ) - val sut = template.substitute(values) + val sut = template.substitute(values).useAsIs sut shouldBe Json.obj( "a" := true, @@ -139,18 +170,23 @@ class JsonTransformationsSpec extends AnyFunSuite with Matchers with OptionValue } test("Failover test") { + implicit val sandbox: GraalJsSandbox = new GraalJsSandbox(JsSandboxConfig()) + Json.Null.substitute(Json.Null) Json.Null.substitute(Json.obj()) Json.obj().substitute(Json.Null) Json.obj().substitute(Json.obj()) } - test("Simple eval") { + test("JavaScript eval") { val datePattern = "yyyy-MM-dd" val dFormatter = DateTimeFormatter.ofPattern(datePattern) val pattern = "yyyy-MM-dd'T'HH:mm:ss" val formatter = DateTimeFormatter.ofPattern(pattern) + val prelude = readStr("prelude.js") + implicit val sandbox: GraalJsSandbox = new GraalJsSandbox(JsSandboxConfig(), prelude = Option(prelude)) + val template = Json.obj( "a" := "%{randomString(10)}", "ai" := "%{randomString(\"ABCDEF1234567890\", 4, 6)}", @@ -158,14 +194,12 @@ class JsonTransformationsSpec extends AnyFunSuite with Matchers with OptionValue "bi" := "%{randomInt(3, 8)}", "c" := "%{randomLong(5)}", "ci" := "%{randomLong(3, 8)}", - "d" := "%{UUID}", - "e" := s"%{now($pattern)}", - "f" := s"%{today($datePattern)}" + "d" := "%{UUID()}", + "e" := s"%{now(\"$pattern\")}", + "f" := s"%{today('$datePattern')}" ) - template.isTemplate shouldBe true - - val res = template.eval + val res = template.eval.useAsIs (res \\ "a").headOption.flatMap(_.asString).value should have length 10 @@ -199,18 +233,23 @@ class JsonTransformationsSpec extends AnyFunSuite with Matchers with OptionValue } test("Formatted eval") { + val prelude = readStr("prelude.js") + implicit val sandbox: GraalJsSandbox = new GraalJsSandbox(JsSandboxConfig(), prelude = Option(prelude)) + val template = Json.obj( - "fmt" := "%{randomInt(10)}: %{randomLong(10)} | %{randomString(12)}" + "fmt" := "%{randomInt(10) + ': ' + randomLong(10) + ' | ' + randomString(12)}" ) template.isTemplate shouldBe true - val res = template.eval + val res = template.eval.useAsIs (res \\ "fmt").headOption.flatMap(_.asString).value should have length 19 } test("Json patcher") { + implicit val sandbox: GraalJsSandbox = new GraalJsSandbox(JsSandboxConfig()) + val target = Json.obj( "f1" := "v1", "a2" := "e1" :: "e2" :: "e3" :: Nil, @@ -228,7 +267,7 @@ class JsonTransformationsSpec extends AnyFunSuite with Matchers with OptionValue JsonOptic.fromPathString("o3.client") -> "${name} ${surname}" ) - val sut = target.patch(source, schema) + val sut = target.patch(source, schema).useAsIs sut.get(JLens \ "a2" \ 4).asString.value shouldBe "nondesc" sut.get(JLens \ "o3" \ "client").asString.value shouldBe "Peka Kekovsky" diff --git a/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/utils/transformation/string/StringTransformationsSpec.scala b/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/utils/transformation/string/StringTransformationsSpec.scala new file mode 100644 index 00000000..d63fd781 --- /dev/null +++ b/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/utils/transformation/string/StringTransformationsSpec.scala @@ -0,0 +1,40 @@ +package ru.tinkoff.tcb.utils.transformation.string + +import io.circe.Json +import io.circe.syntax.* +import kantan.xpath.XmlSource +import org.scalatest.TryValues +import org.scalatest.funsuite.AnyFunSuite +import org.scalatest.matchers.should.Matchers + +import ru.tinkoff.tcb.mockingbird.config.JsSandboxConfig +import ru.tinkoff.tcb.utils.sandboxing.GraalJsSandbox + +class StringTransformationsSpec extends AnyFunSuite with Matchers with TryValues { + private def xml(str: String) = XmlSource[String].asUnsafeNode(str) + + test("Substitute JSON") { + implicit val sandbox: GraalJsSandbox = new GraalJsSandbox(JsSandboxConfig()) + + "${a}" substitute (Json.obj("a" := "test")) shouldBe "test" + } + + test("Substitute XML") { + implicit val sandbox: GraalJsSandbox = new GraalJsSandbox(JsSandboxConfig()) + + "${/a}".substitute(Json.Null, xml("test")) shouldBe "test" + } + + test("isTemplate test") { + "".isTemplate shouldBe false + "{}".isTemplate shouldBe false + "${}".isTemplate shouldBe false + "${a}".isTemplate shouldBe true + "${a.b}".isTemplate shouldBe true + "${a.[0]}".isTemplate shouldBe true + "${a.[0].b}".isTemplate shouldBe true + + "%{}".isTemplate shouldBe false + "%{var a = 1}".isTemplate shouldBe true + } +} diff --git a/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/utils/transformation/xml/XmlTransformationSpec.scala b/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/utils/transformation/xml/XmlTransformationSpec.scala index e1b8b07e..476c2359 100644 --- a/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/utils/transformation/xml/XmlTransformationSpec.scala +++ b/backend/mockingbird/src/test/scala/ru/tinkoff/tcb/utils/transformation/xml/XmlTransformationSpec.scala @@ -1,5 +1,6 @@ package ru.tinkoff.tcb.utils.transformation.xml +import java.util.UUID import scala.xml.Node import advxml.transform.XmlZoom @@ -10,6 +11,9 @@ import kantan.xpath.XmlSource import org.scalatest.funsuite.AnyFunSuite import org.scalatest.matchers.should.Matchers +import ru.tinkoff.tcb.mockingbird.config.JsSandboxConfig +import ru.tinkoff.tcb.utils.resource.readStr +import ru.tinkoff.tcb.utils.sandboxing.GraalJsSandbox import ru.tinkoff.tcb.utils.xml.SafeXML class XmlTransformationSpec extends AnyFunSuite with Matchers { @@ -38,6 +42,8 @@ class XmlTransformationSpec extends AnyFunSuite with Matchers { } test("Fill template from JSON") { + implicit val sandbox: GraalJsSandbox = new GraalJsSandbox(JsSandboxConfig()) + val template: Node = ${{root.tag1}}${{root.tag2}}${{root.tag1}}_${{root.tag2}} @@ -50,12 +56,15 @@ class XmlTransformationSpec extends AnyFunSuite with Matchers { ) ) - val sut = template.substitute(data) + val sut = template.substitute(data).useAsIs sut shouldBe test42test_42 } test("Eval template") { + val prelude = readStr("prelude.js") + implicit val sandbox: GraalJsSandbox = new GraalJsSandbox(JsSandboxConfig(), prelude = Option(prelude)) + val template: Node = %{{randomString(10)}} @@ -64,12 +73,12 @@ class XmlTransformationSpec extends AnyFunSuite with Matchers { %{{randomInt(3, 8)}} %{{randomLong(5)}} %{{randomLong(3, 8)}} - %{{UUID}} + %{{UUID()}} template.isTemplate shouldBe true - val res = template.eval + val res = template.eval.useAsIs (res \ "tag1").text should have length 10 @@ -86,6 +95,8 @@ class XmlTransformationSpec extends AnyFunSuite with Matchers { (res \ "tag3i").text.toLong should be >= 3L (res \ "tag3i").text.toLong should be < 8L + + noException should be thrownBy UUID.fromString((res \ "tag4").text) } test("Inline CDATA") { @@ -103,6 +114,8 @@ class XmlTransformationSpec extends AnyFunSuite with Matchers { } test("XML patcher") { + implicit val sandbox: GraalJsSandbox = new GraalJsSandbox(JsSandboxConfig()) + val target: Node = test @@ -125,7 +138,7 @@ class XmlTransformationSpec extends AnyFunSuite with Matchers { XmlZoom.fromXPath("/root/second").toOption.get -> "${/data/value}" ) - val sut = target.patchFromValues(source, xSource, schema) + val sut = target.patchFromValues(source, xSource, schema).useAsIs info(sut.toString()) diff --git a/backend/project/Dependencies.scala b/backend/project/Dependencies.scala index 98176221..6123ab73 100644 --- a/backend/project/Dependencies.scala +++ b/backend/project/Dependencies.scala @@ -25,12 +25,12 @@ object Dependencies { "cats-kernel" ).map("org.typelevel" %% _ % Versions.cats) - val catsTagless = Seq("org.typelevel" %% "cats-tagless-macros" % "0.12") + val catsTagless = Seq("org.typelevel" %% "cats-tagless-macros" % "0.15.0") val zio = Seq( "dev.zio" %% "zio" % Versions.zio, "dev.zio" %% "zio-managed" % Versions.zio, - "dev.zio" %% "zio-interop-cats" % "22.0.0.0", + "dev.zio" %% "zio-interop-cats" % "23.1.0.1", "dev.zio" %% "zio-interop-twitter" % "21.2.0.2.2", "dev.zio" %% "zio-test" % Versions.zio % Test, "dev.zio" %% "zio-test-sbt" % Versions.zio % Test diff --git a/backend/project/Settings.scala b/backend/project/Settings.scala index 5144532a..37297469 100644 --- a/backend/project/Settings.scala +++ b/backend/project/Settings.scala @@ -46,21 +46,21 @@ object Settings { java.lang.Runtime.getRuntime.availableProcessors().toString, "-Ycache-plugin-class-loader:last-modified", "-Ycache-macro-class-loader:last-modified", - prelude(), // стандартные импорты + zio + prelude(), // standart imports + zio "-Ymacro-annotations", "-Xsource:3", "-Vimplicits", "-Vtype-diffs", - // далее настройки предупреждений - "-Wconf:any:wv", // отображает категория warning'а для nowarn (https://www.scala-lang.org/2021/01/12/configuring-and-suppressing-warnings.html) + // warning settings + "-Wconf:any:wv", // shows warning categories for nowarn (https://www.scala-lang.org/2021/01/12/configuring-and-suppressing-warnings.html) "-Wunused:imports", "-Wunused:privates", "-Wunused:synthetics", "-Xlint:_", - "-Xlint:-byname-implicit", // выкинут из-за бага в скале https://github.com/scala/bug/issues/12072 - "-Xlint:-unused", // частично включается через Wunused иначе ругается на макросы - "-Xlint:-missing-interpolator", // ругается на строки для mongo запросов - "-Xlint:-type-parameter-shadow", // слишком много случаев + "-Xlint:-byname-implicit", // disabled due to scala bug https://github.com/scala/bug/issues/12072 + "-Xlint:-unused", // partially enabled via Wunused otherwise is false-positive in macros + "-Xlint:-missing-interpolator", // false-positive on mongo request + "-Xlint:-type-parameter-shadow", // too many occurrences "-Ywarn-unused:imports", "-Ywarn-value-discard", "-Ywarn-dead-code", @@ -80,17 +80,17 @@ object Settings { ), missinglinkExcludedDependencies ++= Seq( moduleFilter(organization = "ch.qos.logback", name = "logback-core" | "logback-classic"), - // missinglink некорректно обрабатывает scope optional + // missinglink does not correctly handle optional scope moduleFilter(organization = "org.mongodb", name = "mongodb-driver-core" | "mongodb-driver-reactivestreams"), moduleFilter(organization = "io.netty"), - // там что-то ужасное, артефакт использует классы из зависимостей, которых нет в pom.xml + // something awful here, artifact uses classes from dependencies, which are absent in pom.xml moduleFilter(organization = "io.projectreactor", name = "reactor-core") ), missinglinkIgnoreDestinationPackages ++= Seq( - // optional зависимость в bson + // optional dependency in bson IgnoredPackage("org.slf4j"), IgnoredPackage("ch.qos.logback"), - // optional в vertx-core + // optional dependency in vertx-core IgnoredPackage("com.fasterxml.jackson.databind"), IgnoredPackage("io.vertx.core.json.jackson"), IgnoredPackage("io.netty.handler.codec.haproxy"), @@ -98,7 +98,8 @@ object Settings { IgnoredPackage("io.netty.channel.epoll") ), dockerize := ciEnabled, - testFrameworks += new TestFramework("zio.test.sbt.ZTestFramework") + testFrameworks += new TestFramework("zio.test.sbt.ZTestFramework"), + Test / fork := true ) def docker( diff --git a/backend/project/Versions.scala b/backend/project/Versions.scala index 2326c86f..e9050807 100644 --- a/backend/project/Versions.scala +++ b/backend/project/Versions.scala @@ -1,9 +1,9 @@ object Versions { - val cats = "2.7.0" + val cats = "2.10.0" val mongoScalaDriver = "4.4.0" val tapir = "1.9.2" val derevo = "0.13.0" - val graalvm = "22.2.0" + val graalvm = "22.3.0" val micrometer = "1.8.5" val glass = "0.2.1" val sttp = "4.0.0-M9" diff --git a/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/any/package.scala b/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/any/package.scala new file mode 100644 index 00000000..584d0df0 --- /dev/null +++ b/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/any/package.scala @@ -0,0 +1,8 @@ +package ru.tinkoff.tcb.utils + +package object any { + implicit class AnyExtensionOps[T](private val t: T) extends AnyVal { + @inline def applyIf(condition: T => Boolean)(fun: T => T): T = + if (condition(t)) fun(t) else t + } +} diff --git a/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/lazy/Lazy.scala b/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/lazy/Lazy.scala new file mode 100644 index 00000000..e07f4122 --- /dev/null +++ b/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/lazy/Lazy.scala @@ -0,0 +1,16 @@ +package ru.tinkoff.tcb.utils.`lazy` + +final class Lazy[T](compute: () => T) { + private var wasEvaluated: Boolean = false + + lazy val value: T = { + wasEvaluated = true + compute() + } + + def isComputed: Boolean = wasEvaluated +} + +object Lazy { + def apply[T](t: => T): Lazy[T] = new Lazy[T](() => t) +} diff --git a/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/map/package.scala b/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/map/package.scala index 6b5aa715..e016950a 100644 --- a/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/map/package.scala +++ b/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/map/package.scala @@ -4,7 +4,7 @@ package object map { implicit class MapOps[K, V](map: Map[K, V]) { /** - * Добавляет ключ если значение Some(..) + * Adds a key is the value is Some(..) */ @inline def +?(kv: (K, Option[V])): Map[K, V] = kv._2.fold(map)(v => map + (kv._1 -> v)) diff --git a/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/resource/Resource.scala b/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/resource/Resource.scala new file mode 100644 index 00000000..58b5e0d8 --- /dev/null +++ b/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/resource/Resource.scala @@ -0,0 +1,55 @@ +package ru.tinkoff.tcb.utils.resource + +import ru.tinkoff.tcb.utils.`lazy`.Lazy + +/* + Initial implementation was taken from + https://bszwej.medium.com/composable-resource-management-in-scala-ce902bda48b2 + */ + +trait Resource[R] { + def use[U](f: R => U): U + + def useAsIs: R = use(identity) +} + +object Resource { + def make[R](acquire: => R)(close: R => Unit): Resource[R] = + new Resource[R] { + override def use[U](f: R => U): U = { + val resource = acquire + try + f(resource) + finally + close(resource) + } + } + + def lean[R](acquire: => R)(close: R => Unit): Resource[Lazy[R]] = + new Resource[Lazy[R]] { + override def use[U](f: Lazy[R] => U): U = { + val resource = Lazy(acquire) + try + f(resource) + finally + if (resource.isComputed) + close(resource.value) + } + } + + implicit val resourceMonad: Monad[Resource] = + new Monad[Resource] with StackSafeMonad[Resource] { + override def pure[R](r: R): Resource[R] = Resource.make(r)(_ => ()) + + override def map[A, B](r: Resource[A])(mapping: A => B): Resource[B] = + new Resource[B] { + override def use[U](f: B => U): U = r.use(a => f(mapping(a))) + } + + override def flatMap[A, B](r: Resource[A])(mapping: A => Resource[B]): Resource[B] = + new Resource[B] { + override def use[U](f: B => U): U = + r.use(res1 => mapping(res1).use(res2 => f(res2))) + } + } +} diff --git a/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/resource/package.scala b/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/resource/package.scala new file mode 100644 index 00000000..d97eb85c --- /dev/null +++ b/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/resource/package.scala @@ -0,0 +1,8 @@ +package ru.tinkoff.tcb.utils + +import scala.io.Source +import scala.util.Using + +package object resource { + def readStr(fileName: String): String = Using.resource(Source.fromResource(fileName))(_.mkString) +} diff --git a/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/string/package.scala b/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/string/package.scala index 62e20b46..e2a69514 100644 --- a/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/string/package.scala +++ b/backend/utils/src/main/scala/ru/tinkoff/tcb/utils/string/package.scala @@ -6,7 +6,7 @@ package object string { implicit class ExtStringOps(private val text: String) extends AnyVal { /** - * Конвертирует camelCase в camel_case + * Converts camelCase into camel_case */ def camel2Underscore: String = text.drop(1).foldLeft(text.headOption.map(ch => s"${ch.toLower}") getOrElse "") { @@ -15,13 +15,13 @@ package object string { } /** - * Конвертирует snake_case в snakeCase + * Converts snake_case into snakeCase */ def underscore2Camel: String = camelize(text) /** - * Конвертирует snake_case в SnakeCase + * Converts snake_case into SnakeCase */ def underscore2UpperCamel: String = pascalize(text) diff --git a/backend/utils/src/test/scala/ru/tinkoff/tcb/utils/lazy/LazySpec.scala b/backend/utils/src/test/scala/ru/tinkoff/tcb/utils/lazy/LazySpec.scala new file mode 100644 index 00000000..e8dff396 --- /dev/null +++ b/backend/utils/src/test/scala/ru/tinkoff/tcb/utils/lazy/LazySpec.scala @@ -0,0 +1,19 @@ +package ru.tinkoff.tcb.utils.`lazy` + +import org.scalatest.funsuite.AnyFunSuite +import org.scalatest.matchers.should.Matchers + +class LazySpec extends AnyFunSuite with Matchers { + test("laziness test") { + var wasTouched = false + + val sut = Lazy { wasTouched = true; 42 } + + wasTouched shouldBe false + sut.isComputed shouldBe false + + sut.value shouldBe 42 + wasTouched shouldBe true + sut.isComputed shouldBe true + } +} diff --git a/configuration.md b/configuration.md index ffb91e30..6af73373 100644 --- a/configuration.md +++ b/configuration.md @@ -1,199 +1,197 @@ -# Конфигурация mockingbird - -Mockingbird конфигурируется посредством файла secrets.conf, имеющего следующий вид: - -``` -{ - "secrets": { - "server": { - "allowedOrigins": [ - "http://localhost", - "http://localhost:3000", - ... - ], - "healthCheckRoute": "/ready" - }, - "security": { - "secret": ".." - }, - "mongodb": { - "uri": "mongodb://.." - }, - "proxy": { - "excludedRequestHeaders": [..], - "excludedResponseHeaders": [..], - "insecureHosts": [..], - "logOutgoingRequests": false, - "proxyServer": { - "type": "http" | "socks", - "type": "..", - "port": "..", - "nonProxy": ["..", ...], - "onlyProxy": ["..", ...], - "auth": { - "user": "..", - "password": ".." - } - } - }, - "tracing": { - "required": [..], - "incomingHeaders": {}, - "outcomingHeaders": {} - } - } -} -``` - -### Секция server - -Здесь указыватся ориджены для CORS. Эти настройки влияют на работоспособность UI Mockingbird, а также swagger-ui - -healthCheckRoute - необязательный параметр, позволяет настроить эндпоинт, всегда отдающий 200 OK, полезно для healthcheck - -### Секция security - -Обязательная секция. Здесь указывается secret - ключ шифрования для конфигураций source и destination. -Рекомендуется использовать достаточно длинный ключ (от 40 символов) - -### Секция mongodb - -Обязательная секция. Здесь указывается uri для подключения к mongodb, которую будет использовать mockingbird. -Здесь же можно переопределить названия коллекций, которые будет создавать mockingbird (в примере перечислены все возможные поля со значениями по-умолчанию, не обязательно указывать все): - -``` -{ - "secrets": { - "mongodb": { - "uri": "mongodb://..", - "collections": { - "stub": "mockingbirdStubs", - "state": "mockingbirdStates", - "scenario": "mockingbirdScenarios", - "service": "mockingbirdServices", - "label": "mockingbirdLabels", - "grpcStub": "mockingbirdGrpcStubs" - } - } - } -} -``` - -### Секция proxy - -В данной секции можно указать заголовки, которые mockingbird будет отбрасывать при работе в режимах proxy и json-proxy - -Пример типовой конфигурации: - -``` -{ - "secrets": { - "proxy": { - "excludedRequestHeaders": ["Host", "HOST", "User-Agent", "user-agent"], - "excludedResponseHeaders": ["transfer-encoding"], - "insecureHosts": [ - "some.host" - ], - "logOutgoingRequests": false - } - } -} -``` - -В поле insecureHosts можно указать список хостов, для которых не будет выполняться проверка сертификатов. Это может быть полезно -для случаев развёртывания во внутренней инфраструктуре. - -Флаг logOutgoingRequests позволяет включить логирование запросов к удаленному серверу, когда http заглушка работет в режиме прокси. Запрос пишется в лог в виде команды curl с заголовками и телом запроса. - -Так-же в этой секции можно указать настройки прокси сервера. Эти настройки влияют на ВСЕ http запросы, которые делаем mockingbird, т.е.: -- запросы к внешнему серверу с proxy моках -- запросы в source и destination (включая init/shutdown) - -Назначения полей: -- type - тип прокси сервера -- host - хост -- port - порт -- nonProxy - (опционально) перечень доменов (масок доменов), запросы к которым НЕ НУЖНО проксировать -- onlyProxy - (опционально) перечень доменов (масок доменов), запросы к которым НУЖНО проксировать. -Если указать одновременно nonProxy и onlyProxy, то nonProxy будет иметь приоритет -- auth - (опционально) параметры авторизации - -Можно указывать как домены, так и маски: "localhost", "*.local", "127.*" - -### Секция tracing - -Данная секция описывает какие поля будут фигурировать в логах и в заголовках ответа. - -Пример конфигурации: - -``` -{ - "secrets": { - "tracing": { - "required": ["correlationId", "traceId"], - "incomingHeaders": { - "X-Trace-ID": "traceId", - "X-Request-ID": "traceId" - }, - "outcomingHeaders": { - "correlationId": "X-Correlation-ID", - "traceId": "X-Trace-ID" - } - } - } -} -``` - -Поле `required` - массив строковых значений, ключи которые будут добавлены к логам, в качестве значений будут сгенерированы UUID. - -Поле `incomingHeaders` - указывает какие заголовки будут извлечены из входящих запросов и в какие поля логов будут записаны значения. Извлечение заголовков делается без учета регистра, т.е. `X-Trace-Id` и `x-trace-id` эквиваленты. - -Поле `outcomingHeaders` задает значения каких полей трасировки из будут возвращены в заголовках ответа. - -В приведенном выше примере, для полей указанных в поле `required` будут сгенерированы UUID. Из запросов извлекаются значения заголовков `X-Trace-ID` и `X-Request-ID`. Значения записываются в поле с именем `traceId`. Значение поля `traceId` будет или сгенерировано, или взято из соотвествующего заголовка запроса. В случае, если оба заголовка присуствуют в запросе, то одно значение перепишет другое, порядок обработки заголовков неопределен. К ответам мокингберда будут добавлены заголовки `X-Correlation-ID` и `X-Trace-ID`. Если какое-то поле трасировки только указано в секциях `incomingHeaders` и `outcomingHeaders`, то в заголовках ответа оно будет добавлено лишь в том случае, если было в запросе. Все значения полей трассировки добавляются к логам, при условии наличия значений. - -Конфигурация поле трасировки по-умолчанию следующая: -``` -{ - "tracing": { - "required": ["correlationId"], - "incomingHeaders": {}, - "outcomingHeaders": { - "correlationId": "X-Correlation-ID", - } - } -} -``` - - -### Custom Fields в JSON логах - -Необходимо описать свой `logback.xml` файл и передать его в приложение через VM Options как `-Dlogback.configurationFile=...`. - -Пример конфигурации со своими полями, в значении `customFields` можно использовать интерполяцию переменных окружения: - -```xml - - - - - - - - UTF-8 - - {"env":"${ENV}","inst":"${HOSTNAME}","system":"mockingbird"} - - - - - - - - - - - - - -``` \ No newline at end of file +# Mockingbird Configuration + +Mockingbird is configured via the secrets.conf file, which has the following structure: + +``` +{ + "secrets": { + "server": { + "allowedOrigins": [ + "http://localhost", + "http://localhost:3000", + ... + ], + "healthCheckRoute": "/ready" + }, + "security": { + "secret": ".." + }, + "mongodb": { + "uri": "mongodb://.." + }, + "proxy": { + "excludedRequestHeaders": [..], + "excludedResponseHeaders": [..], + "insecureHosts": [..], + "logOutgoingRequests": false, + "proxyServer": { + "type": "http" | "socks", + "type": "..", + "port": "..", + "nonProxy": ["..", ...], + "onlyProxy": ["..", ...], + "auth": { + "user": "..", + "password": ".." + } + } + }, + "tracing": { + "required": [..], + "incomingHeaders": {}, + "outcomingHeaders": {} + } + } +} +``` + +### Server Section + +This section specifies origins for CORS. These settings affect the functionality of UI Mockingbird as well as swagger-ui. + +healthCheckRoute - an optional parameter that allows configuring an endpoint always returning 200 OK, useful for health checks. + +### Security Section + +Mandatory section. Here the secret is specified - the encryption key for the configurations of source and destination. +It is recommended to use a sufficiently long key (at least 40 characters). + +### MongoDB Section + +Mandatory section. Here the URI for connecting to MongoDB is specified, which Mockingbird will use. +Here you can also override the names of collections that Mockingbird will create (all possible fields with default values are listed in the example, it is not necessary to specify all). + +``` +{ + "secrets": { + "mongodb": { + "uri": "mongodb://..", + "collections": { + "stub": "mockingbirdStubs", + "state": "mockingbirdStates", + "scenario": "mockingbirdScenarios", + "service": "mockingbirdServices", + "label": "mockingbirdLabels", + "grpcStub": "mockingbirdGrpcStubs" + } + } + } +} +``` + +### Proxy Section + +In this section, you can specify headers that Mockingbird will discard when operating in proxy and json-proxy modes. + +Example of a typical configuration: + +``` +{ + "secrets": { + "proxy": { + "excludedRequestHeaders": ["Host", "HOST", "User-Agent", "user-agent"], + "excludedResponseHeaders": ["transfer-encoding"], + "insecureHosts": [ + "some.host" + ], + "logOutgoingRequests": false + } + } +} +``` + +In the insecureHosts field, you can specify a list of hosts for which certificate validation will not be performed. This can be useful for deployments within internal infrastructure. + +The logOutgoingRequests flag allows enabling logging of requests to the remote server when the HTTP mock is operating in proxy mode. The request is logged in the form of a curl command with headers and request body. + +Also, in this section, you can specify proxy server settings. These settings affect ALL HTTP requests made by Mockingbird, including: + +- requests to external servers with proxy mocks +- requests to source and destination (including init/shutdown) + +Field purposes: +- type - proxy server type +- host - host +- port - port +- nonProxy - (optional) a list of domains (domain masks) to which requests DO NOT need to be proxied +- onlyProxy - (optional) a list of domains (domain masks) to which requests NEED to be proxied. + If both nonProxy and onlyProxy are specified simultaneously, nonProxy will take precedence. +- auth - (optional) authentication parameters + +Both domains and masks can be specified: "localhost", ".local", "127." + +### Tracing Section + +This section describes which fields will appear in the logs and in the response headers. + +Example configuration: + +``` +{ + "secrets": { + "tracing": { + "required": ["correlationId", "traceId"], + "incomingHeaders": { + "X-Trace-ID": "traceId", + "X-Request-ID": "traceId" + }, + "outcomingHeaders": { + "correlationId": "X-Correlation-ID", + "traceId": "X-Trace-ID" + } + } + } +} +``` + +The `required` field is an array of string values, the keys of which will be added to the logs, and UUIDs will be generated as values. + +The `incomingHeaders` field specifies which headers will be extracted from incoming requests and into which log fields the values will be written. Header extraction is case-insensitive, meaning `X-Trace-Id` and `x-trace-id` are equivalent. + +The `outcomingHeaders` field sets the values of which tracing fields will be returned in the response headers. + +In the example provided above, UUIDs will be generated for the fields specified in the `required` field. Values of the `X-Trace-ID` and `X-Request-ID` headers are extracted from requests and written into a field named `traceId`. The value of the `traceId` field will either be generated or taken from the corresponding request header. If both headers are present in the request, one value will overwrite the other; the order of header processing is undefined. Mockingbird responses will include the headers `X-Correlation-ID` and `X-Trace-ID`. If a tracing field is only specified in the `incomingHeaders` and `outcomingHeaders` sections, it will be added to the response headers only if it was present in the request. All tracing field values are added to the logs, provided there are values available. + +Default tracing configuration is as follows: +``` +{ + "tracing": { + "required": ["correlationId"], + "incomingHeaders": {}, + "outcomingHeaders": { + "correlationId": "X-Correlation-ID", + } + } +} +``` +### Custom Fields in JSON Logs + +To describe your `logback.xml` file and pass it to the application via VM Options, use `-Dlogback.configurationFile=...`. + +Below is an example configuration with custom fields. In the `customFields` value, you can use environment variable interpolation: + +```xml + + + + + + + + UTF-8 + + {"env":"${ENV}","inst":"${HOSTNAME}","system":"mockingbird"} + + + + + + + + + + + + + +``` diff --git a/configuration_ru.md b/configuration_ru.md new file mode 100644 index 00000000..ffb91e30 --- /dev/null +++ b/configuration_ru.md @@ -0,0 +1,199 @@ +# Конфигурация mockingbird + +Mockingbird конфигурируется посредством файла secrets.conf, имеющего следующий вид: + +``` +{ + "secrets": { + "server": { + "allowedOrigins": [ + "http://localhost", + "http://localhost:3000", + ... + ], + "healthCheckRoute": "/ready" + }, + "security": { + "secret": ".." + }, + "mongodb": { + "uri": "mongodb://.." + }, + "proxy": { + "excludedRequestHeaders": [..], + "excludedResponseHeaders": [..], + "insecureHosts": [..], + "logOutgoingRequests": false, + "proxyServer": { + "type": "http" | "socks", + "type": "..", + "port": "..", + "nonProxy": ["..", ...], + "onlyProxy": ["..", ...], + "auth": { + "user": "..", + "password": ".." + } + } + }, + "tracing": { + "required": [..], + "incomingHeaders": {}, + "outcomingHeaders": {} + } + } +} +``` + +### Секция server + +Здесь указыватся ориджены для CORS. Эти настройки влияют на работоспособность UI Mockingbird, а также swagger-ui + +healthCheckRoute - необязательный параметр, позволяет настроить эндпоинт, всегда отдающий 200 OK, полезно для healthcheck + +### Секция security + +Обязательная секция. Здесь указывается secret - ключ шифрования для конфигураций source и destination. +Рекомендуется использовать достаточно длинный ключ (от 40 символов) + +### Секция mongodb + +Обязательная секция. Здесь указывается uri для подключения к mongodb, которую будет использовать mockingbird. +Здесь же можно переопределить названия коллекций, которые будет создавать mockingbird (в примере перечислены все возможные поля со значениями по-умолчанию, не обязательно указывать все): + +``` +{ + "secrets": { + "mongodb": { + "uri": "mongodb://..", + "collections": { + "stub": "mockingbirdStubs", + "state": "mockingbirdStates", + "scenario": "mockingbirdScenarios", + "service": "mockingbirdServices", + "label": "mockingbirdLabels", + "grpcStub": "mockingbirdGrpcStubs" + } + } + } +} +``` + +### Секция proxy + +В данной секции можно указать заголовки, которые mockingbird будет отбрасывать при работе в режимах proxy и json-proxy + +Пример типовой конфигурации: + +``` +{ + "secrets": { + "proxy": { + "excludedRequestHeaders": ["Host", "HOST", "User-Agent", "user-agent"], + "excludedResponseHeaders": ["transfer-encoding"], + "insecureHosts": [ + "some.host" + ], + "logOutgoingRequests": false + } + } +} +``` + +В поле insecureHosts можно указать список хостов, для которых не будет выполняться проверка сертификатов. Это может быть полезно +для случаев развёртывания во внутренней инфраструктуре. + +Флаг logOutgoingRequests позволяет включить логирование запросов к удаленному серверу, когда http заглушка работет в режиме прокси. Запрос пишется в лог в виде команды curl с заголовками и телом запроса. + +Так-же в этой секции можно указать настройки прокси сервера. Эти настройки влияют на ВСЕ http запросы, которые делаем mockingbird, т.е.: +- запросы к внешнему серверу с proxy моках +- запросы в source и destination (включая init/shutdown) + +Назначения полей: +- type - тип прокси сервера +- host - хост +- port - порт +- nonProxy - (опционально) перечень доменов (масок доменов), запросы к которым НЕ НУЖНО проксировать +- onlyProxy - (опционально) перечень доменов (масок доменов), запросы к которым НУЖНО проксировать. +Если указать одновременно nonProxy и onlyProxy, то nonProxy будет иметь приоритет +- auth - (опционально) параметры авторизации + +Можно указывать как домены, так и маски: "localhost", "*.local", "127.*" + +### Секция tracing + +Данная секция описывает какие поля будут фигурировать в логах и в заголовках ответа. + +Пример конфигурации: + +``` +{ + "secrets": { + "tracing": { + "required": ["correlationId", "traceId"], + "incomingHeaders": { + "X-Trace-ID": "traceId", + "X-Request-ID": "traceId" + }, + "outcomingHeaders": { + "correlationId": "X-Correlation-ID", + "traceId": "X-Trace-ID" + } + } + } +} +``` + +Поле `required` - массив строковых значений, ключи которые будут добавлены к логам, в качестве значений будут сгенерированы UUID. + +Поле `incomingHeaders` - указывает какие заголовки будут извлечены из входящих запросов и в какие поля логов будут записаны значения. Извлечение заголовков делается без учета регистра, т.е. `X-Trace-Id` и `x-trace-id` эквиваленты. + +Поле `outcomingHeaders` задает значения каких полей трасировки из будут возвращены в заголовках ответа. + +В приведенном выше примере, для полей указанных в поле `required` будут сгенерированы UUID. Из запросов извлекаются значения заголовков `X-Trace-ID` и `X-Request-ID`. Значения записываются в поле с именем `traceId`. Значение поля `traceId` будет или сгенерировано, или взято из соотвествующего заголовка запроса. В случае, если оба заголовка присуствуют в запросе, то одно значение перепишет другое, порядок обработки заголовков неопределен. К ответам мокингберда будут добавлены заголовки `X-Correlation-ID` и `X-Trace-ID`. Если какое-то поле трасировки только указано в секциях `incomingHeaders` и `outcomingHeaders`, то в заголовках ответа оно будет добавлено лишь в том случае, если было в запросе. Все значения полей трассировки добавляются к логам, при условии наличия значений. + +Конфигурация поле трасировки по-умолчанию следующая: +``` +{ + "tracing": { + "required": ["correlationId"], + "incomingHeaders": {}, + "outcomingHeaders": { + "correlationId": "X-Correlation-ID", + } + } +} +``` + + +### Custom Fields в JSON логах + +Необходимо описать свой `logback.xml` файл и передать его в приложение через VM Options как `-Dlogback.configurationFile=...`. + +Пример конфигурации со своими полями, в значении `customFields` можно использовать интерполяцию переменных окружения: + +```xml + + + + + + + + UTF-8 + + {"env":"${ENV}","inst":"${HOSTNAME}","system":"mockingbird"} + + + + + + + + + + + + + +``` \ No newline at end of file diff --git a/deployment.md b/deployment.md index 33cf1416..3a6a370f 100644 --- a/deployment.md +++ b/deployment.md @@ -1,60 +1,60 @@ -# Руководство по инсталляции mockingbird - -Требования к окружению: -- mongodb версии 4.2 и выше. В целом mockingbird запустится и с 3.x, но как минимум не будут работать моки с pathPattern -- 512 MB памяти для контейнера (абсолютный минимум в районе 300 MB) - -mockingbird доступен в двух вариантах -- native приложение - -`ghcr.io/tinkoff/mockingbird:-native` - -Рекомендуемый образ для большинства случаев. Представляет собой скомпилированное в native-image с помощью GraalVM Scala приложение - -- образ на классической JVM - -`ghcr.io/tinkoff/mockingbird:` - -Для обоих вариантов: HTTP порт 8228, GRPC порт 9000 - -## mockingbird-native - -При запуске образа нужно передать в CMD параметры. Типовой набор, с которого можно начать: - -`-server -Xms256m -Xmx256m -XX:MaxDirectMemorySize=128m -Dconfig.file=/opt/mockingbird-native/qa.conf -Dlog.level=DEBUG -Dlog4j.formatMsgNoLookups=true` - -Так-же необходимо примонтировать по пути `/opt/mockingbird-native/conf/secrets.conf` файл конфигурации mockingbird. -Минимальная конфигурация выглядит следующим образом: - -``` -{ - "secrets": { - "server": { - "allowedOrigins": [ - "*" - ] - }, - "mongodb": { - "uri": "mongodb://.." - }, - "security": { - "secret": ".." - } - } -} -``` -Подробнее о secrets.conf можно узнать из [руководства по настройке](configuration.md) - -Логи приложение пишет в /opt/log/mockingbird-native - -## mockingbird - -Этот образ содержит приложение на классической JVM, поэтому параметры передаются через переменную окружения JAVA_OPTS. -Пример типовых настроек - -`-server -XX:+AlwaysActAsServerClassMachine -Xms256m -Xmx256m -XX:MaxMetaspaceSize=256m -XX:MaxDirectMemorySize=128m -XX:ReservedCodeCacheSize=128m -XX:+PerfDisableSharedMem -Dconfig.resource=qa.conf -Dlog.level=DEBUG -Dlog4j.formatMsgNoLookups=true` - -Так-же необходимо примонтировать по пути `/opt/mockingbird/conf/secrets.conf` файл конфигурации mockingbird. -Формат и содержимое `/opt/mockingbird/conf/secrets.conf` полностью идентичны оному для mockingbird-native - -Логи приложение пишет в /opt/log/mockingbird +# Mockingbird Installation Guide + +Environment requirements: +- MongoDB version 4.2 or higher. In general, mockingbird will run on 3.x, but at least mocks with pathPattern won't work. +- 512 MB of memory for the container (the absolute minimum is around 300 MB). + +mockingbird is available in two variants: +- native application + +`ghcr.io/tinkoff/mockingbird:-native` + +The recommended image for most cases. It is a Scala application compiled into a native image using GraalVM. + +- image on classic JVM + +`ghcr.io/tinkoff/mockingbird:` + +For both variants: HTTP port 8228, GRPC port 9000. + +## mockingbird-native + +When launching the image, parameters need to be passed in CMD. A typical set to start with is: + +`-server -Xms256m -Xmx256m -XX:MaxDirectMemorySize=128m -Dconfig.file=/opt/mockingbird-native/qa.conf -Dlog.level=DEBUG -Dlog4j.formatMsgNoLookups=true` + +Also, the mockingbird configuration file needs to be mounted at the path `/opt/mockingbird-native/conf/secrets.conf`. +The minimal configuration looks like this: + +``` +{ + "secrets": { + "server": { + "allowedOrigins": [ + "*" + ] + }, + "mongodb": { + "uri": "mongodb://.." + }, + "security": { + "secret": ".." + } + } +} +``` +More about `secrets.conf` can be learned from the [configuration guide](configuration.md). + +The application logs to /opt/log/mockingbird-native. + +## mockingbird + +This image contains the application on the classic JVM, so parameters are passed through the JAVA_OPTS environment variable. +Example of typical settings: + +`-server -XX:+AlwaysActAsServerClassMachine -Xms256m -Xmx256m -XX:MaxMetaspaceSize=256m -XX:MaxDirectMemorySize=128m -XX:ReservedCodeCacheSize=128m -XX:+PerfDisableSharedMem -Dconfig.resource=qa.conf -Dlog.level=DEBUG -Dlog4j.formatMsgNoLookups=true` + +Also, the mockingbird configuration file needs to be mounted at the path `/opt/mockingbird/conf/secrets.conf`. +The format and contents of `/opt/mockingbird/conf/secrets.conf` are fully identical to those for mockingbird-native. + +The application logs to /opt/log/mockingbird. \ No newline at end of file diff --git a/deployment_ru.md b/deployment_ru.md new file mode 100644 index 00000000..33cf1416 --- /dev/null +++ b/deployment_ru.md @@ -0,0 +1,60 @@ +# Руководство по инсталляции mockingbird + +Требования к окружению: +- mongodb версии 4.2 и выше. В целом mockingbird запустится и с 3.x, но как минимум не будут работать моки с pathPattern +- 512 MB памяти для контейнера (абсолютный минимум в районе 300 MB) + +mockingbird доступен в двух вариантах +- native приложение + +`ghcr.io/tinkoff/mockingbird:-native` + +Рекомендуемый образ для большинства случаев. Представляет собой скомпилированное в native-image с помощью GraalVM Scala приложение + +- образ на классической JVM + +`ghcr.io/tinkoff/mockingbird:` + +Для обоих вариантов: HTTP порт 8228, GRPC порт 9000 + +## mockingbird-native + +При запуске образа нужно передать в CMD параметры. Типовой набор, с которого можно начать: + +`-server -Xms256m -Xmx256m -XX:MaxDirectMemorySize=128m -Dconfig.file=/opt/mockingbird-native/qa.conf -Dlog.level=DEBUG -Dlog4j.formatMsgNoLookups=true` + +Так-же необходимо примонтировать по пути `/opt/mockingbird-native/conf/secrets.conf` файл конфигурации mockingbird. +Минимальная конфигурация выглядит следующим образом: + +``` +{ + "secrets": { + "server": { + "allowedOrigins": [ + "*" + ] + }, + "mongodb": { + "uri": "mongodb://.." + }, + "security": { + "secret": ".." + } + } +} +``` +Подробнее о secrets.conf можно узнать из [руководства по настройке](configuration.md) + +Логи приложение пишет в /opt/log/mockingbird-native + +## mockingbird + +Этот образ содержит приложение на классической JVM, поэтому параметры передаются через переменную окружения JAVA_OPTS. +Пример типовых настроек + +`-server -XX:+AlwaysActAsServerClassMachine -Xms256m -Xmx256m -XX:MaxMetaspaceSize=256m -XX:MaxDirectMemorySize=128m -XX:ReservedCodeCacheSize=128m -XX:+PerfDisableSharedMem -Dconfig.resource=qa.conf -Dlog.level=DEBUG -Dlog4j.formatMsgNoLookups=true` + +Так-же необходимо примонтировать по пути `/opt/mockingbird/conf/secrets.conf` файл конфигурации mockingbird. +Формат и содержимое `/opt/mockingbird/conf/secrets.conf` полностью идентичны оному для mockingbird-native + +Логи приложение пишет в /opt/log/mockingbird diff --git a/examples/basic_http_stub.md b/examples/basic_http_stub.md index 7233a396..9dea9c91 100644 --- a/examples/basic_http_stub.md +++ b/examples/basic_http_stub.md @@ -1,9 +1,9 @@ -# Базовые примеры работы с HTTP заглушками -## Persistent, ephemeral и countdown HTTP заглушки +# Basic examples of working with HTTP stubs +## Persistent, ephemeral, and countdown HTTP stubs -Предполагается, что в mockingbird есть сервис `alpha`. +It is assumed that in mockingbird there is a service `alpha`. -Создаем заглушку в скоупе `persistent`. +Creating a stub in the persistent `scope`. ``` curl \ --request POST \ @@ -30,11 +30,11 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 -Тело ответа: +Response body: { "status" : "success", "id" : "29dfd29e-d684-462e-8676-94dbdd747e30" @@ -42,7 +42,7 @@ curl \ ``` -Проверяем созданную заглушку. +Checking the created stub. ``` curl \ --request GET \ @@ -50,19 +50,19 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 451 +Response code: 451 -Заголовки ответа: +Response headers: Content-Type: 'text/plain' -Тело ответа: +Response body: persistent scope ``` -Для этого же пути, создаем заглушку в скоупе `ephemeral`. +For the same path, creating a stub in the `ephemeral` scope. ``` curl \ --request POST \ @@ -89,11 +89,11 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 -Тело ответа: +Response body: { "status" : "success", "id" : "13da7ef2-650e-4a54-9dca-377a1b1ca8b9" @@ -101,7 +101,7 @@ curl \ ``` -И создаем заглушку в скоупе `countdown` с `times` равным 2. +And creating a stub in the `countdown` scope with `times` equal to 2. ``` curl \ --request POST \ @@ -129,11 +129,11 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 -Тело ответа: +Response body: { "status" : "success", "id" : "09ec1cb9-4ca0-4142-b796-b94a24d9df29" @@ -141,12 +141,12 @@ curl \ ``` -Заданные заглушки отличаются возвращаемыми ответами, а именно содержимым `body` и `code`, - в целом они могут быть как и полностью одинаковыми так и иметь больше различий. - Скоупы заглушек в порядке убывания приоритета: Countdown, Ephemeral, Persistent +The specified stubs differ in the responses they return, namely the contents of `body` and `code`, + in general, they can be either completely identical or have more differences. + The scopes of stubs in descending order of priority: Countdown, Ephemeral, Persistent -Так как заглушка `countdown` была создана с `times` равным двум, то следующие два -запроса вернут указанное в ней содержимое. +Since the countdown stub was created with `times` equal to two, the next two +requests will return the specified content. ``` curl \ --request GET \ @@ -154,14 +154,14 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 429 +Response code: 429 -Заголовки ответа: +Response headers: Content-Type: 'text/plain' -Тело ответа: +Response body: countdown scope ``` @@ -172,20 +172,20 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 429 +Response code: 429 -Заголовки ответа: +Response headers: Content-Type: 'text/plain' -Тело ответа: +Response body: countdown scope ``` -Последующие запросы будут возвращать содержимое заглушки `ephemeral`. Если бы её не было, -то вернулся бы ответ от заглушки `persistent`. +Subsequent requests will return the content of the `ephemeral` stub. If it didn't exist, +the response from the `persistent` stub would be returned.. ``` curl \ --request GET \ @@ -193,20 +193,20 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 -Заголовки ответа: +Response headers: Content-Type: 'text/plain' -Тело ответа: +Response body: ephemeral scope ``` -Чтобы получить теперь ответ от `persistent` заглушки нужно или дождаться, когда истекут -сутки с момента её создания или просто удалить `ephemeral` заглушку. +Now to get a response from the `persistent` stub, one must either wait until a day has passed +since its creation or simply delete the `ephemeral` stub. ``` curl \ --request DELETE \ @@ -215,11 +215,11 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 -Тело ответа: +Response body: { "status" : "success", "id" : null @@ -227,7 +227,7 @@ curl \ ``` -После удаления `ephemeral` заглушки, при запросе вернется результат заглушки `persistent` +After deleting the `ephemeral` stub, a request will return the result of the `persistent` stub. ``` curl \ --request GET \ @@ -235,30 +235,30 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 451 +Response code: 451 -Заголовки ответа: +Response headers: Content-Type: 'text/plain' -Тело ответа: +Response body: persistent scope ``` -## Использование параметров пути в HTTP заглушках +## Using path parameters in HTTP stubs -Заглушка может выбираться в том числе и на основании регулярного выражения -в пути, это может быть не очень эффективно с точки зрения поиска такой заглушки. -Поэтому без необходимости, лучше не использовать этот механизм. +A stub can also be selected based on a regular expression in the path, +which can be inefficient in terms of searching for such a stub. +Therefore, without necessity, it's better not to use this mechanism. -Предполагается, что в mockingbird есть сервис `alpha`. +It is assumed that in mockingbird there is a service `alpha`. -Скоуп в котором создаются заглушки не важен. В целом скоуп влияет только -на приоритет заглушек. В данном случае заглушка создается в скоупе `countdown`. -В отличие от предыдущих примеров, здесь для указания пути для срабатывания -заглушки используется поле `pathPattern`, вместо `path`. Так же, ответ который -формирует заглушка не статичный, а зависит от параметров пути. +The scope in which stubs are created does not matter. In general, the scope only affects +the priority of the stubs. In this case, the stub is created in the `countdown` scope. +Unlike previous examples, here the `pathPattern` field is used to specify the path for triggering +the stub, instead of `path`. Also, the response that +the stub generates is not static but depends on the path parameters. ``` curl \ --request POST \ @@ -290,11 +290,11 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 -Тело ответа: +Response body: { "status" : "success", "id" : "c8c9d92f-192e-4fe3-8a09-4c9b69802603" @@ -302,8 +302,8 @@ curl \ ``` -Теперь сделаем несколько запросов, который приведут к срабатыванию этой заглшки, -чтобы увидеть, что результат действительно зависит от пути. +Now let's make several requests that will trigger this stub, +to see that the result really depends on the path. ``` curl \ --request GET \ @@ -311,14 +311,14 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 -Заголовки ответа: +Response headers: Content-Type: 'application/json' -Тело ответа: +Response body: { "static_field" : "Fixed part of reponse", "obj" : "alpha", @@ -333,14 +333,14 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 -Заголовки ответа: +Response headers: Content-Type: 'application/json' -Тело ответа: +Response body: { "static_field" : "Fixed part of reponse", "obj" : "beta", diff --git a/examples/http_stub_with_state.md b/examples/http_stub_with_state.md index d47a16fc..920694eb 100644 --- a/examples/http_stub_with_state.md +++ b/examples/http_stub_with_state.md @@ -1,16 +1,16 @@ -# Использование хранимого состояние в HTTP заглушках -## Создать, получить и обновить хранимое состояние +# Utilizing persistent state in HTTP stubs +## Create, retrieve, and update stored state -Предполагается, что в mockingbird есть сервис `alpha`. +It is assumed that in mockingbird there is a service `alpha`. -Для работы с состоянием у HTTP заглушки есть две секции: `persist` и `state`. -Секция `persist` отвечает за сохранение состояния для последующего доступа к -нему. А секция `state` содержит предикаты для поиска состояния. Если указана -только секция `persist`, то каждый раз при срабатывании заглушки в БД будет -записываться новое состояние. А если указаны обе секции, то найденное состояние -будет перезаписано. Состояние - это JSON объект. +For working with state in the HTTP stub, there are two sections: `persist` and `state`. +The `persist` section is responsible for saving the state for subsequent access to +it. The `state` section contains predicates for searching for the state. If only +the `persist` section is specified, then each time the stub is triggered, a new state will be +recorded in the database. If both sections are specified, the found state +will be overwritten. The state is a JSON object. -В качестве примера, будем хранить как состояние JSON объект вида: + As an example, we will store as the state a JSON object of the form: ```json { "id": "o1", @@ -18,9 +18,9 @@ "version": 1 } ``` -И дополнительно сохранять время создания и модификации. +And additionally save the creation and modification time. -Для первоначального создания состояния создадим следующую заглушку. +To initially create the state, we create the following stub. ``` curl \ --request POST \ @@ -59,17 +59,17 @@ curl \ } }, "seed": { - "timestamp": "%{now(yyyy-MM-dd\'T\'HH:mm:ss.nn\'Z\')}" + "timestamp": "%{now(\"yyyy-MM-dd\'T\'HH:mm:ss.nn\'Z\'\")}" } }' ``` -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 -Тело ответа: +Response body: { "status" : "success", "id" : "98f393d3-07f0-403e-9043-150bf5c5b4bc" @@ -77,17 +77,17 @@ curl \ ``` -Данная заглушка делает следующее: - * Проверяет, что тело запроса - это JSON объект содержащий как минимум одно - поле `id`. - * В секции `seed` создается переменная `timestamp` в которую записывается - текущее время. - * Секция `persist` описывает объект, который будет сохранен как состояние. - Данные, которые пришли в теле запроса записываются в поле `_data`, в добавок, - в поле `created` записывает текущее время. - * В ответе возвращаются полученные данные и временная метка. +This stub does the following: + * Checks that the request body is a JSON object containing at least one + field `id`. + * In the `seed` section, a `timestamp` variable is created in which + the current time is recorded. + * The `persist` section describes the object that will be saved as the state. + The data that came in the request body are recorded in the `_data` field, in addition, + the `created` field records the current time. + * The response returns the received data and the timestamp. -В итоге в Mockingbird состояние будет записано как: +As a result, in Mockingbird the state will be recorded as: ```json { "_data": { @@ -100,9 +100,9 @@ curl \ ``` -Добавим заглушку для модификации состояния, она будет похожей на предыдущую, -но будет иметь секцию `state` для поиска уже существующего состояния, а в секции -`persist` будет поле `modified` вместо `created`. +We add a stub for modifying the state, similar to the previous one, +but it has a state section for searching for an existing state, +and in the `persist` section, it has a `modified` field instead of `created`. ``` curl \ --request POST \ @@ -144,17 +144,17 @@ curl \ "_data.id": {"==": "${id}"} }, "seed": { - "timestamp": "%{now(yyyy-MM-dd\'T\'HH:mm:ss.nn\'Z\')}" + "timestamp": "%{now(\"yyyy-MM-dd\'T\'HH:mm:ss.nn\'Z\'\")}" } }' ``` -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 -Тело ответа: +Response body: { "status" : "success", "id" : "11b57bcc-ecee-445d-ad56-106b6ba706c7" @@ -162,28 +162,28 @@ curl \ ``` -Для обновления состояния принимаем такие же данные, как и для создания нового. -В секции `state` поля из тела запроса доступны сразу, без дополнительных, -поэтому просто пишем, имя поля `${id}`, в отличии от секций `response` -и `persist`, где доступ к данным запроса осуществляется через переменную `req`. -В случае, если используются именованные параметры пути в `pathPattern`, -то доступ к ним из секции `state` осуществляется через переменную `__segments`. +To update the state, we accept the same data as for creating a new one. +In the `state` section, fields from the request body are available immediately, +without additional, so we just write the field name `${id}`, unlike in the `response` +and `persist` sections, where access to request data is through the `req` variable. +If named path parameters are used in `pathPattern`, +then access to them from the `state` section is through the `__segments` variable. -При обновлении состояния, поля перечисленные в секции `persist` дописываются -к тем, что уже есть в найденном состоянии. В случае если поле уже существует, то -оно будет перезаписано. Стоит обратить внимание каким образом дописывается -временная метка `modified`. Она указана как `meta.modified`, такой синтаксис -позволяет перезаписывать не весь объект, а только его часть или добавлять -в него новые поля. +When updating the state, the fields listed in the `persist` section are appended +to those already in the found state. In case a field already exists, it +will be overwritten. Pay attention to how the modified `timestamp` is appended. +It is indicated as `meta.modified`, this syntax +allows overwriting not the entire object, but only part of it or adding +new fields to it. -При выборе между двух заглушек, заглушка для которой выполнилось условие поиска -хранимого состояние, т.е. существует состояние удовлетворяющее критериям -указанным в секции `state`, имеет больший приоритет, чем заглушка без условий -выбора состояний. Поэтому первая заглушка будет срабатывать когда в БД ещё нет -хранимого состояния с указанным `id`, а вторая когда такое состояние уже есть. +When choosing between two stubs, the stub for which the search condition +for the stored state is met, i.e., there exists a state meeting the criteria +specified in the `state` section, has a higher priority than a stub without conditions +for selecting states. Therefore, the first stub will be triggered when there is no +stored state with the specified `id` in the database, and the second when such a state already exists. -Теперь создадим заглушку для получения хранимого состояния. Получать состояние -будем отправляя POST запрос с JSON содержащим поле `id`: +Now we create a stub for retrieving the stored state. We will retrieve the state +by sending a POST request with JSON containing the `id` field: ```json { "id": "o1" @@ -226,11 +226,11 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 -Тело ответа: +Response body: { "status" : "success", "id" : "da6b4458-596b-4db9-8943-0cea96bbba33" @@ -238,7 +238,7 @@ curl \ ``` -Теперь попробуем вызвать заглушку, записывающую новое состояние. +Now let's try to invoke the stub that writes a new state. ``` curl \ --request POST \ @@ -252,11 +252,11 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 -Тело ответа: +Response body: { "new" : { "id" : "o1", @@ -270,7 +270,7 @@ curl \ ``` -А теперь получить состояние +And now retrieve the state ``` curl \ --request POST \ @@ -280,11 +280,11 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 -Тело ответа: +Response body: { "data" : { "id" : "o1", @@ -298,8 +298,8 @@ curl \ ``` -Теперь модифицируем состояние, изменив значение поля `version` и добавив новое -поле `description`. Поле `name` опустим. +Now we modify the state, changing the value of the `version` field +and adding a new field `description`. We will omit the `name` field. ``` curl \ --request POST \ @@ -313,11 +313,11 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 -Тело ответа: +Response body: { "old" : { "id" : "o1", @@ -337,7 +337,7 @@ curl \ ``` -И снова запросим состояние объекта `o1` +And again, we request the state of object `o1` ``` curl \ --request POST \ @@ -347,11 +347,11 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 -Тело ответа: +Response body: { "data" : { "id" : "o1", @@ -366,14 +366,14 @@ curl \ ``` -Ответ изменился, мы видим новые поля. Так как поле `data` перезаписывалось -целиком, то поле `name` исчезло, в то время как в объекте `meta` -модифицировалось только поле `modified`, поэтому, хотя поле `created` не указано -в секции `persist` заглушки обновляющей сосотояние, оно отсталось. +The response changed, we see new fields. Since the `data` field was completely overwritten, +the `name` field disappeared, while in the `meta` object, +only the modified field was `modified`, so although the `created` field is not mentioned +in the `persist` section of the stub updating the state, it remained. -Если попробовать вызвать заглушку читающую состояние объекта которого нет, -то Mockingbird вернет ошибку, в котрой будет сказано, что не найдено подходящие -заглушки. +If we try to invoke the stub for reading the state of an object that does not exist, +Mockingbird will return an error, stating that no suitable +stubs were found. ``` curl \ --request POST \ @@ -383,33 +383,33 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 400 +Response code: 400 -Тело ответа: -ru.tinkoff.tcb.mockingbird.error.StubSearchError: Не удалось подобрать заглушку для [Post] /alpha/state1/get +Response body: +ru.tinkoff.tcb.mockingbird.error.StubSearchError: Could not find stub for [Post] /alpha/state1/get ``` -Для решения подобной проблемы, надо создать вторую заглушку с таким же `path`, -но с незаполненным `state`. Тогда, в случае отсутствия искомого состояния, будет -отрабатывать она. Это аналогично тому как мы создали заглушку для записи нового -состояния и заглушку для его обновления. -## Несколько состояний подходящих под условие поиска +To solve such a problem, one should create a second stub with the same `path`, +but with an empty `state`. Then, in the absence of the searched state, it +will be triggered. This is similar to how we created a stub for writing a new +state and a stub for its update. +## Multiple states matching the search condition -В предыдущем примере было рассмотрено создание и модификация состояния, -для этого было создано две соответствующие заглушки. Важно помнить, что если -секция `state` не указана, а указана только секция `persist`, то в БД **всегда** -создается новый объект состояния. При это заглушка с заполненным полем `state` -будет выбрана только в том случае, если в результате поиска по заданным -параметрам из БД вернулся строго один объект с состоянием. +In the previous example, creating and modifying a state was discussed, +for which two corresponding stubs were created. It is important to remember that if +the `state` section is not specified, and only the `persist` section is, then in the database **always** +a new state object is created. Meanwhile, a stub with a filled `state` +field will be selected only in the case that, as a result of the search by specified +parameters, exactly one state object is returned from the database. -**ВНИМАНИЕ!** Функции удаления состояний в Mockingbird нет. Неосторожная работа -с состояниями может привести к неработоспособности заглушек и придется удалять -данные напрямую из БД. +**ATTENTION!** There is no function to delete states in Mockingbird. Careless work +with states can lead to the inoperability of stubs, and it will be necessary to delete +data directly from the database. -Для демонстрации этого создадим новые заглушки для записи и чтения состояния. +To demonstrate this, we will create new stubs for writing and reading a state. ``` curl \ --request POST \ @@ -443,9 +443,9 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 ``` ``` @@ -481,13 +481,13 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 ``` -Вызовем заглушку для записи состояния +We call the stub for writing a state ``` curl \ --request POST \ @@ -500,16 +500,16 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 -Тело ответа: +Response body: OK ``` -Теперь попробуем его получить. +Now let's try to retrieve it. ``` curl \ --request POST \ @@ -521,13 +521,13 @@ curl \ ``` -Тут всё хорошо и мы получили то, что записали. +Here everything is fine, and we got what we wrote. -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 -Тело ответа: +Response body: { "bad_id" : "bad1", "version" : 1.0 @@ -535,7 +535,7 @@ curl \ ``` -Теперь еще раз отправим объект с таким же `bad_id` +Now we send the object with the same `bad_id` again ``` curl \ --request POST \ @@ -548,16 +548,16 @@ curl \ ``` -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 -Тело ответа: +Response body: OK ``` -И снова попробуем его получить. +And try to retrieve it again. ``` curl \ --request POST \ @@ -569,18 +569,18 @@ curl \ ``` -А вот тут уже ошибка +And here we encounter an error -Ответ: +Response: ``` -Код ответа: 400 +Response code: 400 -Тело ответа: -ru.tinkoff.tcb.mockingbird.error.StubSearchError: Для одной или нескольких заглушек найдено более одного подходящего состояния +Response body: +ru.tinkoff.tcb.mockingbird.error.StubSearchError: For one or more stubs, multiple suitable states were found ``` -Для проверки состояний подходящих для под заданное условие, можно выполнить следующий запрос. +To check for states that fit the given condition, one can perform the following request. ``` curl \ --request POST \ @@ -594,13 +594,13 @@ curl \ ``` -В результате будет два объекта +As a result, there will be two objects -Ответ: +Response: ``` -Код ответа: 200 +Response code: 200 -Тело ответа: +Response body: [ { "id" : "7d81f74b-968b-4737-8ebe-b0592d4fb89b", @@ -626,6 +626,6 @@ curl \ ``` -Ручка `/api/internal/mockingbird/fetchStates` возвращает состояния в там виде -как они хранятся в БД, присутствуют поля `id`, `created`, а записанное состояние -хранится в поле `data`. +The `/api/internal/mockingbird/fetchStates` endpoint returns states as +they are stored in the database, with fields `id`, `created`, and the recorded state +stored in the `data` field. diff --git a/frontend/.tramvai-migrate-applied.json b/frontend/.tramvai-migrate-applied.json index 285c40b7..c8a55cfc 100644 --- a/frontend/.tramvai-migrate-applied.json +++ b/frontend/.tramvai-migrate-applied.json @@ -1 +1 @@ -{"package":{"module-render":{"migrations":["2-async-universal-to-lazy.js"]}}} +{"package":{"module-render":{"migrations":["2-async-universal-to-lazy.js"]},"module-router":{"migrations":["1-link-from-module.js"]},"cli":{"migrations":["d2023-02-01b-tramvai-config-refactoring.js"]}}} diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 18787c4f..9976558a 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -12,26 +12,29 @@ "@tabler/icons-react": "2.14.0", "@tinkoff/request-plugin-cache-deduplicate": "0.8.9", "@tinkoff/request-plugin-cache-memory": "0.8.16", - "@tinkoff/url": "0.8.4", - "@tramvai/cli": "2.40.0", - "@tramvai/core": "2.40.0", - "@tramvai/module-client-hints": "2.40.0", - "@tramvai/module-common": "2.40.0", - "@tramvai/module-error-interceptor": "2.40.0", - "@tramvai/module-page-render-mode": "2.40.0", - "@tramvai/module-render": "2.40.0", - "@tramvai/module-router": "2.40.0", - "@tramvai/module-sentry": "2.40.0", - "@tramvai/module-seo": "2.40.0", - "@tramvai/module-server": "2.40.0", - "@tramvai/react": "2.40.0", - "@tramvai/state": "2.40.0", - "@tramvai/tokens-render": "2.40.0", - "@tramvai/tokens-router": "2.40.0", + "@tinkoff/url": "0.8.6", + "@tramvai/cli": "2.160.1", + "@tramvai/core": "2.160.1", + "@tramvai/module-client-hints": "2.160.1", + "@tramvai/module-common": "2.160.1", + "@tramvai/module-error-interceptor": "2.160.1", + "@tramvai/module-page-render-mode": "2.160.1", + "@tramvai/module-render": "2.160.1", + "@tramvai/module-router": "2.160.1", + "@tramvai/module-sentry": "2.160.1", + "@tramvai/module-seo": "2.160.1", + "@tramvai/module-server": "2.160.1", + "@tramvai/react": "2.160.1", + "@tramvai/state": "2.160.1", + "@tramvai/tokens-render": "2.160.1", + "@tramvai/tokens-router": "2.160.1", + "i18next": "23.10.0", + "i18next-browser-languagedetector": "7.2.0", "postcss-nested": "6.0.0", "react": "17.0.1", "react-dom": "17.0.1", "react-hook-form": "7.22.5", + "react-i18next": "14.0.5", "typescript": "4.9.3", "uuid": "9.0.0" }, @@ -510,6 +513,25 @@ "react": "^16.8.0 || >=17.0.0" } }, + "node_modules/@akashbabu/lfu-cache": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@akashbabu/lfu-cache/-/lfu-cache-1.0.2.tgz", + "integrity": "sha512-1gh4vC6XEJKtNmyY6YIJbXz6vtvHvCF9phSMUTojyxmn+KWLq63QdXyJh//n6H4uYQfRZGjLcbwRp0Q969dAIg==", + "dependencies": { + "@akashbabu/node-dll": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@akashbabu/node-dll": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@akashbabu/node-dll/-/node-dll-2.0.2.tgz", + "integrity": "sha512-MSZY+1BN5dXbMi7MVnTzPje9JkTw8Yu9vjWFkAoobXa++w0b23qXVgdjerWfXO7FrbAsWPb2dieEufD67GtsNQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -522,6 +544,22 @@ "node": ">=6.0.0" } }, + "node_modules/@apideck/better-ajv-errors": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, "node_modules/@babel/cli": { "version": "7.19.3", "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.19.3.tgz", @@ -559,44 +597,45 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.0.tgz", - "integrity": "sha512-Gt9jszFJYq7qzXVK4slhc6NzJXnOVmRECWcVjF/T23rNXD9NtWQ0W3qxdg+p9wWIB+VQw3GYV/U2Ha9bRTfs4w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.6.tgz", - "integrity": "sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==", - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.6", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helpers": "^7.19.4", - "@babel/parser": "^7.19.6", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.6", - "@babel/types": "^7.19.4", - "convert-source-map": "^1.7.0", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -606,6 +645,11 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, "node_modules/@babel/eslint-parser": { "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", @@ -641,12 +685,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.0.tgz", - "integrity": "sha512-GUPcXxWibClgmYJuIwC2Bc2Lg+8b9VjaJ+HlNdACEVt+Wlr1eoU1OPZjZRm7Hzl0gaTsUZNQfeihvZJhG7oc3w==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dependencies": { - "@babel/types": "^7.20.0", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { @@ -654,9 +699,9 @@ } }, "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -667,69 +712,69 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-builder-react-jsx": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.19.0.tgz", - "integrity": "sha512-xvrbORmJ13lWrqyMErk4vczhXNNWdOSg1BZ+R/7D34SjDjToR5g3M5UpD6MyUekstI50qAHLWA1j7w5o1WK2Pw==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/types": "^7.19.0" + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dependencies": { - "@babel/compat-data": "^7.20.0", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "yallist": "^3.0.2" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", - "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", + "version": "7.23.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz", + "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -739,12 +784,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -770,115 +816,103 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dependencies": { - "@babel/types": "^7.18.6" - }, + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", "dependencies": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz", - "integrity": "sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.19.4", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.6", - "@babel/types": "^7.19.4" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -888,111 +922,111 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", - "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dependencies": { - "@babel/types": "^7.19.4" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "dependencies": { - "@babel/types": "^7.20.0" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dependencies": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.0.tgz", - "integrity": "sha512-aGMjYraN0zosCEthoGLdqot1oRsmxVTQRHadsUPz5QM44Zej2PYRz7XiDE7GqnkZnNtLbOuxqoZw42vkU7+XEQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", + "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", "dependencies": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.0", - "@babel/types": "^7.20.0" + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -1000,9 +1034,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.0.tgz", - "integrity": "sha512-G9VgAhEaICnz8iiJeGJQyVl6J2nTjbW0xeisva0PK6XcKsga7BIaqm4ZF8Rg1Wbaqmy6znspNqhPaPkyukujzg==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1011,11 +1045,11 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1025,13 +1059,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -1040,29 +1074,27 @@ "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-external-helpers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.18.6.tgz", - "integrity": "sha512-wNqc87qjLvsD1PIMQBzLn1bMuTlGzqLzM/1VGQ22Wm51cbCWS9k71ydp5iZS4hjwQNuTWSn/xbZkkusNENwtZg==", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", - "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", + "node_modules/@babel/plugin-external-helpers": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.18.6.tgz", + "integrity": "sha512-wNqc87qjLvsD1PIMQBzLn1bMuTlGzqLzM/1VGQ22Wm51cbCWS9k71ydp5iZS4hjwQNuTWSn/xbZkkusNENwtZg==", "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1086,22 +1118,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, "node_modules/@babel/plugin-proposal-decorators": { "version": "7.20.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.0.tgz", @@ -1120,21 +1136,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-proposal-export-default-from": { "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz", @@ -1150,51 +1151,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", @@ -1243,21 +1199,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-proposal-optional-chaining": { "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", @@ -1274,31 +1215,10 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "engines": { "node": ">=6.9.0" }, @@ -1306,21 +1226,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", @@ -1408,11 +1313,11 @@ } }, "node_modules/@babel/plugin-syntax-flow": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz", - "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz", + "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1422,11 +1327,11 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1435,6 +1340,31 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", @@ -1447,11 +1377,11 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1555,11 +1485,11 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1568,28 +1498,27 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1598,12 +1527,45 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", + "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1613,11 +1575,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.0.tgz", - "integrity": "sha512-sXOohbpHZSk7GjxK9b3dKB7CfqUD5DwOH+DggKzOQ7TXYP+RCSbRykfjQmn/zq+rBjycVRtLf9pYhAaEJA786w==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1626,19 +1588,49 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", - "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.19.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, "engines": { @@ -1649,11 +1641,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -1663,11 +1656,11 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.0.tgz", - "integrity": "sha512-1dIhvZfkDVx/zn2S1aFwlruspTt4189j7fEkH0Y0VyuDM6bQt7bD6kLcz3l4IlLG+e5OReaBz9ROAbttRtUHqA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1677,12 +1670,12 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1692,11 +1685,26 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1706,12 +1714,27 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1721,12 +1744,12 @@ } }, "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz", - "integrity": "sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz", + "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-flow": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-flow": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -1736,11 +1759,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1750,13 +1774,28 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1766,11 +1805,26 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { "node": ">=6.9.0" @@ -1780,11 +1834,11 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1794,12 +1848,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1809,13 +1863,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1825,14 +1879,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", + "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.19.1" + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1842,12 +1896,12 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1857,12 +1911,12 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1872,11 +1926,59 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "dependencies": { + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -1886,12 +1988,43 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1901,11 +2034,11 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1914,12 +2047,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1928,12 +2062,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-constant-elements": { - "version": "7.18.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.12.tgz", - "integrity": "sha512-Q99U9/ttiu+LMnRU8psd23HhvwXmKWDQIpocm0JKaICcZHnw+mdQbHm6xnSy7dOl8I5PELakYtNBubNQlBXbZw==", + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { "node": ">=6.9.0" @@ -1942,12 +2079,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", - "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1956,13 +2093,26 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-inline-elements": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-inline-elements/-/plugin-transform-react-inline-elements-7.18.6.tgz", - "integrity": "sha512-uo3yD1EXhDxmk1Y/CeFDdHS5t22IOUBooLPFOrrjfpYmDM9Vg61xbIaWeWkbYQ7Aq0zMf30/FfKoQgFwyqw6Bg==", + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.23.3.tgz", + "integrity": "sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==", "dependencies": { - "@babel/helper-builder-react-jsx": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", + "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1972,15 +2122,15 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", - "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.19.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" }, "engines": { "node": ">=6.9.0" @@ -1990,11 +2140,11 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", - "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.18.6" + "@babel/plugin-transform-react-jsx": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2004,12 +2154,12 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", - "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", + "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2019,12 +2169,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" }, "engines": { "node": ">=6.9.0" @@ -2034,11 +2184,11 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2067,11 +2217,11 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2081,12 +2231,12 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2096,11 +2246,11 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2110,11 +2260,11 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2124,11 +2274,11 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2138,13 +2288,14 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.0.tgz", - "integrity": "sha512-xOAsAFaun3t9hCwZ13Qe7gq423UgMZ6zAgmLxeGGapFqlT/X3L5qT2btjiVLlFn7gWtMaVyceS5VxGAuKbgizw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz", + "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-typescript": "^7.20.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -2154,11 +2305,26 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2168,12 +2334,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2182,38 +2348,42 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.4.tgz", - "integrity": "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==", + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", "dependencies": { - "@babel/compat-data": "^7.19.4", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.19.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.19.4", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.9.tgz", + "integrity": "sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==", + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.18.6", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -2223,45 +2393,61 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.19.4", - "@babel/plugin-transform-classes": "^7.19.0", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.19.4", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.0", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.19.4", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.9", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.9", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -2270,14 +2456,65 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/preset-env/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", + "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.5.0", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/preset-flow": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.18.6.tgz", - "integrity": "sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.23.3.tgz", + "integrity": "sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-flow-strip-types": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-flow-strip-types": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -2287,31 +2524,29 @@ } }, "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/preset-react": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", - "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", + "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-react-display-name": "^7.18.6", - "@babel/plugin-transform-react-jsx": "^7.18.6", - "@babel/plugin-transform-react-jsx-development": "^7.18.6", - "@babel/plugin-transform-react-pure-annotations": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.23.3", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -2321,13 +2556,15 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", - "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", + "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-typescript": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -2337,14 +2574,14 @@ } }, "node_modules/@babel/register": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.18.9.tgz", - "integrity": "sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.23.7.tgz", + "integrity": "sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==", "dependencies": { "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", "make-dir": "^2.1.0", - "pirates": "^4.0.5", + "pirates": "^4.0.6", "source-map-support": "^0.5.16" }, "engines": { @@ -2426,12 +2663,17 @@ "node": ">=6" } }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + }, "node_modules/@babel/runtime": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.0.tgz", - "integrity": "sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", "dependencies": { - "regenerator-runtime": "^0.13.10" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" @@ -2449,33 +2691,38 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, "node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.0.tgz", - "integrity": "sha512-5+cAXQNARgjRUK0JWu2UBwja4JLSO/rBMPJzpsKb+oBF5xlUuCfljQepS4XypBQoiigL0VQjTZy6WiONtUdScQ==", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.0", - "@babel/types": "^7.20.0", - "debug": "^4.1.0", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -2483,12 +2730,12 @@ } }, "node_modules/@babel/types": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.0.tgz", - "integrity": "sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2646,7 +2893,7 @@ "version": "0.4.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "devOptional": true, + "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", @@ -2662,11 +2909,27 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", - "devOptional": true, + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -2681,16 +2944,22 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "devOptional": true, + "dev": true, "engines": { "node": ">= 4" } }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">=10" }, @@ -2699,53 +2968,33 @@ } }, "node_modules/@fastify/accept-negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-1.0.0.tgz", - "integrity": "sha512-4R/N2KfYeld7A5LGkai+iUFMahXcxxYbDp+XS2B1yuL3cdmZLJ9TlCnNzT3q5xFTqsYm0GPpinLUwfSwjcVjyA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-1.1.0.tgz", + "integrity": "sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==", "engines": { "node": ">=14" } }, "node_modules/@fastify/ajv-compiler": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.3.1.tgz", - "integrity": "sha512-IRnids8lblQ8e1i8h4JLyfJmebXE+ohcj8x8X/+Ew6ZB4H0Ui05z5YL6q5FOcl0zItVpu4adRzeyVNNUwmduIg==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.5.0.tgz", + "integrity": "sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==", "dependencies": { "ajv": "^8.11.0", "ajv-formats": "^2.1.1", "fast-uri": "^2.0.0" } }, - "node_modules/@fastify/ajv-compiler/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@fastify/ajv-compiler/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, "node_modules/@fastify/compress": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@fastify/compress/-/compress-6.1.1.tgz", - "integrity": "sha512-uwgomk59nAWKR2WqXugyn3tXzRJqlBaGCzXHb4ZnKA3sxA9G/JWZSAd6GEF29mJucTLi32iZaFZRAwf7O8bJMg==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@fastify/compress/-/compress-6.5.0.tgz", + "integrity": "sha512-AqUOK714jY7qkzbQbS4zyI4yNFgnRoOJ3eH/oV1T9f5fFdPDRdrFxm5de1ya5n+as4bvitjwU9EY7zvtT9pI2A==", "dependencies": { - "@fastify/accept-negotiator": "^1.0.0", - "fastify-plugin": "^4.0.0", + "@fastify/accept-negotiator": "^1.1.0", + "fastify-plugin": "^4.5.0", "into-stream": "^6.0.0", - "mime-db": "^1.51.0", - "minipass": "^3.1.6", + "mime-db": "^1.52.0", + "minipass": "^7.0.2", "peek-stream": "^1.1.3", "pump": "^3.0.0", "pumpify": "^2.0.1" @@ -2768,45 +3017,70 @@ "node": ">= 0.6" } }, - "node_modules/@fastify/deepmerge": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.1.0.tgz", - "integrity": "sha512-E8Hfdvs1bG6u0N4vN5Nty6JONUfTdOciyD5rn8KnEsLKIenvOVcr210BQR9t34PRkNyjqnMLGk3e0BsaxRdL+g==" - }, "node_modules/@fastify/error": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.0.0.tgz", - "integrity": "sha512-dPRyT40GiHRzSCll3/Jn2nPe25+E1VXc9tDwRAIKwFCxd5Np5wzgz1tmooWG3sV0qKgrBibihVoCna2ru4SEFg==" + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.4.1.tgz", + "integrity": "sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==" }, "node_modules/@fastify/fast-json-stringify-compiler": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.1.0.tgz", - "integrity": "sha512-cTKBV2J9+u6VaKDhX7HepSfPSzw+F+TSd+k0wzifj4rG+4E5PjSFJCk19P8R6tr/72cuzgGd+mbB3jFT6lvAgw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz", + "integrity": "sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==", "dependencies": { - "fast-json-stringify": "^5.0.0" + "fast-json-stringify": "^5.7.0" } }, "node_modules/@fastify/formbody": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@fastify/formbody/-/formbody-7.3.0.tgz", - "integrity": "sha512-4uHTS7wH0mkUoltk4wyJ966rs/TQP0BNDSCtyqRMy7p5adGg+5ERbYue/zGh/qI9yLDPN0K98u7Fw+lLEmBZJQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@fastify/formbody/-/formbody-7.4.0.tgz", + "integrity": "sha512-H3C6h1GN56/SMrZS8N2vCT2cZr7mIHzBHzOBa5OPpjfB/D6FzP9mMpE02ZzrFX0ANeh0BAJdoXKOF2e7IbV+Og==", "dependencies": { "fast-querystring": "^1.0.0", "fastify-plugin": "^4.0.0" } }, + "node_modules/@fastify/merge-json-schemas": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz", + "integrity": "sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + } + }, + "node_modules/@fastify/send": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@fastify/send/-/send-2.1.0.tgz", + "integrity": "sha512-yNYiY6sDkexoJR0D8IDy3aRP3+L4wdqCpvx5WP+VtEU58sn7USmKynBzDQex5X42Zzvw2gNzzYgP90UfWShLFA==", + "dependencies": { + "@lukeed/ms": "^2.0.1", + "escape-html": "~1.0.3", + "fast-decode-uri-component": "^1.0.1", + "http-errors": "2.0.0", + "mime": "^3.0.0" + } + }, + "node_modules/@fastify/send/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/@fastify/static": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@fastify/static/-/static-6.5.0.tgz", - "integrity": "sha512-WEk6iqgejA6ivjkvbJ47A+uMci225z5lZwLXCXZS3ZYR/kYje1gzzarkKKGL6TWpBw6smkOzxA7dfEoY0347Nw==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@fastify/static/-/static-6.12.0.tgz", + "integrity": "sha512-KK1B84E6QD/FcQWxDI2aiUCwHxMJBI1KeCUzm1BwYpPY1b742+jeKruGHP2uOluuM6OkBPI8CIANrXcCRtC2oQ==", "dependencies": { "@fastify/accept-negotiator": "^1.0.0", + "@fastify/send": "^2.0.0", "content-disposition": "^0.5.3", "fastify-plugin": "^4.0.0", "glob": "^8.0.1", - "p-limit": "^3.1.0", - "readable-stream": "^4.0.0", - "send": "^0.18.0" + "p-limit": "^3.1.0" } }, "node_modules/@fastify/static/node_modules/brace-expansion": { @@ -2818,9 +3092,9 @@ } }, "node_modules/@fastify/static/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2836,9 +3110,9 @@ } }, "node_modules/@fastify/static/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -2902,7 +3176,7 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "devOptional": true, + "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.0", "debug": "^4.1.1", @@ -2916,25 +3190,25 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "devOptional": true + "dev": true }, "node_modules/@jest/schemas": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", - "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dependencies": { - "@sinclair/typebox": "^0.24.1" + "@sinclair/typebox": "^0.27.8" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/types": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", - "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dependencies": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -3038,18 +3312,18 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" } }, "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -3065,12 +3339,12 @@ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@loadable/component": { @@ -3117,6 +3391,14 @@ "react": ">=16.3.0" } }, + "node_modules/@lukeed/ms": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@lukeed/ms/-/ms-2.0.2.tgz", + "integrity": "sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==", + "engines": { + "node": ">=8" + } + }, "node_modules/@mantine/core": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/@mantine/core/-/core-6.0.5.tgz", @@ -3157,11 +3439,6 @@ "react-dom": ">=16.8.0" } }, - "node_modules/@mantine/styles/node_modules/csstype": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", - "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" - }, "node_modules/@mantine/utils": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/@mantine/utils/-/utils-6.0.5.tgz", @@ -3171,9 +3448,58 @@ } }, "node_modules/@mdn/browser-compat-data": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.2.1.tgz", - "integrity": "sha512-EWUguj2kd7ldmrF9F+vI5hUOralPd+sdsUnYbRy33vZTuZkduC1shE9TtEMEjAQwyfyMb4ole5KtjF8MsnQOlA==" + "version": "5.5.11", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.5.11.tgz", + "integrity": "sha512-4o1ZaGmvqoDx3QLyEAcZvGDKmdVXLB0aiANuPDumgue/7iH67KUBsKejLX7wrdxEdyNYfXUKtjFQYhGwVUBXGw==" + }, + "node_modules/@module-federation/node": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@module-federation/node/-/node-0.15.1.tgz", + "integrity": "sha512-8js1qdVnZ1rLz0cKyo9mdz/vPQqExirmdL3k9cJaP/qlHuQIhimzpisC148RQSI7kSTu1kuzLW23FkmdcjBOhA==", + "dependencies": { + "@module-federation/utilities": "1.8.0", + "encoding": "^0.1.13", + "node-fetch": "^2.6.7" + }, + "peerDependencies": { + "next": "^12||^13", + "react": "^16||^17||^18", + "react-dom": "^16||^17||^18", + "webpack": "^5.40.0" + }, + "peerDependenciesMeta": { + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@module-federation/utilities": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@module-federation/utilities/-/utilities-1.8.0.tgz", + "integrity": "sha512-qKbZF+SU7jfAt+q1kRUNxU1jzHErRyIP77DA+yCYCJaagWaFuz0Hmud8Yr6n/mQ1WJgQeh+gmNA0ad75koKopQ==", + "peerDependencies": { + "next": "^12 || ^13", + "react": "^16 || ^17 || ^18", + "react-dom": "^16 || ^17 || ^18", + "webpack": "^5.40.0" + }, + "peerDependenciesMeta": { + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } }, "node_modules/@mrmlnc/readdir-enhanced": { "version": "2.2.1", @@ -3240,9 +3566,9 @@ } }, "node_modules/@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.8.tgz", - "integrity": "sha512-wxXRwf+IQ6zvHSJZ+5T2RQNEsq+kx4jKRXfFvdt3nBIUzJUAvXEFsUeoaohDe/Kr84MTjGwcuIUPNcstNJORsA==", + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", + "integrity": "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==", "dependencies": { "ansi-html-community": "^0.0.8", "common-path-prefix": "^3.0.0", @@ -3250,7 +3576,7 @@ "error-stack-parser": "^2.0.6", "find-up": "^5.0.0", "html-entities": "^2.1.0", - "loader-utils": "^2.0.0", + "loader-utils": "^2.0.4", "schema-utils": "^3.0.0", "source-map": "^0.7.3" }, @@ -3261,7 +3587,7 @@ "@types/webpack": "4.x || 5.x", "react-refresh": ">=0.10.0 <1.0.0", "sockjs-client": "^1.4.0", - "type-fest": ">=0.17.0 <4.0.0", + "type-fest": ">=0.17.0 <5.0.0", "webpack": ">=4.43.0 <6.0.0", "webpack-dev-server": "3.x || 4.x", "webpack-hot-middleware": "2.x", @@ -3289,9 +3615,9 @@ } }, "node_modules/@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" + "version": "1.0.0-next.24", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz", + "integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==" }, "node_modules/@radix-ui/number": { "version": "1.0.0", @@ -3424,6 +3750,28 @@ "react": "^16.8 || ^17.0 || ^18.0" } }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, "node_modules/@rollup/plugin-json": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", @@ -3435,6 +3783,37 @@ "rollup": "^1.20.0 || ^2.0.0" } }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, "node_modules/@rollup/plugin-typescript": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.5.0.tgz", @@ -3601,16 +3980,35 @@ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, "node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz", - "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3621,11 +4019,11 @@ } }, "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.5.0.tgz", - "integrity": "sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3636,11 +4034,11 @@ } }, "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.5.0.tgz", - "integrity": "sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3651,11 +4049,11 @@ } }, "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz", - "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3666,11 +4064,11 @@ } }, "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz", - "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3681,11 +4079,11 @@ } }, "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz", - "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3696,11 +4094,11 @@ } }, "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz", - "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3711,9 +4109,9 @@ } }, "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz", - "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", "engines": { "node": ">=12" }, @@ -3726,21 +4124,21 @@ } }, "node_modules/@svgr/babel-preset": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz", - "integrity": "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", - "@svgr/babel-plugin-remove-jsx-attribute": "*", - "@svgr/babel-plugin-remove-jsx-empty-expression": "*", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1", - "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1", - "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1", - "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1", - "@svgr/babel-plugin-transform-svg-component": "^6.5.1" + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3751,18 +4149,18 @@ } }, "node_modules/@svgr/core": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz", - "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "dependencies": { - "@babel/core": "^7.19.6", - "@svgr/babel-preset": "^6.5.1", - "@svgr/plugin-jsx": "^6.5.1", + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.1" + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3780,80 +4178,89 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@svgr/core/node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "node_modules/@svgr/core/node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/@svgr/core/node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/@svgr/core/node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/@svgr/core/node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" } }, "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz", - "integrity": "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", "dependencies": { - "@babel/types": "^7.20.0", + "@babel/types": "^7.21.3", "entities": "^4.4.0" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", - "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/@svgr/plugin-jsx": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz", - "integrity": "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", "dependencies": { - "@babel/core": "^7.19.6", - "@svgr/babel-preset": "^6.5.1", - "@svgr/hast-util-to-babel-ast": "^6.5.1", + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", "svg-parser": "^2.0.4" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { - "@svgr/core": "^6.0.0" + "@svgr/core": "*" } }, "node_modules/@svgr/plugin-svgo": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz", - "integrity": "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", "dependencies": { - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "svgo": "^2.8.0" + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", @@ -3863,71 +4270,39 @@ "@svgr/core": "*" } }, - "node_modules/@svgr/plugin-svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/@svgr/plugin-svgo/node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@svgr/plugin-svgo/node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/@svgr/webpack": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.5.1.tgz", - "integrity": "sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", + "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", "dependencies": { - "@babel/core": "^7.19.6", - "@babel/plugin-transform-react-constant-elements": "^7.18.12", - "@babel/preset-env": "^7.19.4", + "@babel/core": "^7.21.3", + "@babel/plugin-transform-react-constant-elements": "^7.21.3", + "@babel/preset-env": "^7.20.2", "@babel/preset-react": "^7.18.6", - "@babel/preset-typescript": "^7.18.6", - "@svgr/core": "^6.5.1", - "@svgr/plugin-jsx": "^6.5.1", - "@svgr/plugin-svgo": "^6.5.1" + "@babel/preset-typescript": "^7.21.0", + "@svgr/core": "8.1.0", + "@svgr/plugin-jsx": "8.1.0", + "@svgr/plugin-svgo": "8.1.0" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { "type": "github", "url": "https://github.com/sponsors/gregberge" } }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@tabler/icons": { "version": "2.14.0", "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-2.14.0.tgz", @@ -3954,43 +4329,51 @@ } }, "node_modules/@tinkoff/browser-cookies": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@tinkoff/browser-cookies/-/browser-cookies-2.0.4.tgz", - "integrity": "sha512-R98AvSWwK6fxPc0wWO2lF1jBIJQbhRNQJBRMPXZzoyMWLs0xvFdwZifwer4twGuQoQj59BDDuUHfEuAyOi8C4w==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@tinkoff/browser-cookies/-/browser-cookies-2.0.8.tgz", + "integrity": "sha512-OW78tbVxZEPm+p7HdrRNOc0FhcPSm9j3315d/2yQ38QJvvzsVBWlSGW69NxZ9wISAoJh0vAEsz6hIfOsvyq3Ng==", "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@tinkoff/browser-timings": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@tinkoff/browser-timings/-/browser-timings-0.10.4.tgz", - "integrity": "sha512-0ptJ+ggp2eLFleTkR/NmKEBxBAQpEEOX6KwN8i3SgfAMljtF9ROJTzCxxNb51Y+cvNHzUq4Xr0AEc2JtZMtHJg==" + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/@tinkoff/browser-timings/-/browser-timings-0.10.6.tgz", + "integrity": "sha512-5atO/zY6kFekzk/7R2959IqDLrFiMZs04nRasg9d9E4GWZAD7CnpldLBVZ9hFzGR770Ay+Tufts2CAnbYZbLlw==" }, "node_modules/@tinkoff/browserslist-config": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@tinkoff/browserslist-config/-/browserslist-config-0.2.4.tgz", - "integrity": "sha512-sE6Tf1VrILpNJNYTdEQAomtgkF2aP9sPs41u0MP8frgH9ezXxw+ahMuZCLvaE7+q+Xrqq+nDPGed5gD0SmBPvw==" + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@tinkoff/browserslist-config/-/browserslist-config-0.2.7.tgz", + "integrity": "sha512-bLf0T3Tp+0aQc19hjYUUA8aa2/bfkbZsol8GzhGFImlwy+MWe/iYhc0PXD2C69cfYBpJynuzshNwyKfbPlinTw==" }, "node_modules/@tinkoff/dippy": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@tinkoff/dippy/-/dippy-0.8.9.tgz", - "integrity": "sha512-fG6hTgc23qTLD36PwaJ7IAdlqIvYBhSN+LqrEugtnPH9FwizUn+zglIBECBU8HOZ1SeSKjT5dxgNRUC+u9yNHg==", + "version": "0.8.16", + "resolved": "https://registry.npmjs.org/@tinkoff/dippy/-/dippy-0.8.16.tgz", + "integrity": "sha512-TnhUnD3e5z40p91F2wAJSRb5zaRGiV7/I9yIKuwzEgwjTLbDJevkXsJ1Wqg3tfxK+v+lhNvxzLUJPfkXlRqYGw==", "dependencies": { "tslib": "^2.4.0" } }, + "node_modules/@tinkoff/env-validators": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@tinkoff/env-validators/-/env-validators-0.1.6.tgz", + "integrity": "sha512-uFA9i3LDYkkMxzK29OBRTb7teXq1hH+EaS+HlBsXRIzDxB4fkpj7ngk6C80FhAaUffVec3MkPDgUAghM0YIOjw==", + "dependencies": { + "@tinkoff/utils": "^2.2.0" + } + }, "node_modules/@tinkoff/error-handlers": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@tinkoff/error-handlers/-/error-handlers-0.5.4.tgz", - "integrity": "sha512-6c13E5RKaQBO6DpsARCrHw8YPnF7PmsFBkS7zlDNvFLO1CwmHAk4J7mQbQkxmYTRxyhm8/BcQ1NUiMMmFnpqwQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@tinkoff/error-handlers/-/error-handlers-0.5.6.tgz", + "integrity": "sha512-leHGaVI2wwivDlSpBbj2PG4IG/7bTyIDclQJIqKArcR/sjIZfhiJaQgV/OYVSgA9IJCnyuKzQ6rmCfZOxUBcpA==", "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@tinkoff/errors": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@tinkoff/errors/-/errors-0.3.5.tgz", - "integrity": "sha512-oEcRsXlPVEO1XGEYb5IicogjImeacDAqW2nzf00q9LG0NzgpXPMEzyaD/q9cv0ciThgO1JnNdyoA79iYz3e5Ew==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@tinkoff/errors/-/errors-0.3.8.tgz", + "integrity": "sha512-x72TQPu/XmKxRNx2Cy0q87G5tUkW19YsvLMoUR9DycXNGrIvC2Do2bLwIyn108DVcgu/qnB/TqqbJ6gQgejWxQ==", "dependencies": { "tslib": "^2.4.0" } @@ -4067,36 +4450,47 @@ } }, "node_modules/@tinkoff/hook-runner": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@tinkoff/hook-runner/-/hook-runner-0.4.4.tgz", - "integrity": "sha512-Jynau9dcaevMCYnr0ho+E1nvG+p0gxnk+zPYKCKIUGj5UobD4w6Tajkt/vGEoP6FLYxE5atNnQjFhysaBYGE7Q==", + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/@tinkoff/hook-runner/-/hook-runner-0.4.6.tgz", + "integrity": "sha512-+WYcFg7JNyZpmiBYZZdH2t6ZcExbQaMy1HuJ+UGwlDmhIaCYqUewEeyUlAp5mq4Woi81IxRnhtB0zdQvO5kKXw==", "dependencies": { "@tinkoff/utils": "^2.1.2", "tslib": "^2.4.0" } }, "node_modules/@tinkoff/htmlpagebuilder": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@tinkoff/htmlpagebuilder/-/htmlpagebuilder-0.5.5.tgz", - "integrity": "sha512-I4IckzkHkTHg+0gp6ilTu1HUhJjDutCvjVJVwQNSkZdG1LYKVhS0B4FfEvX+n71NyAiYT0Y2ojDOr6vm9MBlWg==", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/@tinkoff/htmlpagebuilder/-/htmlpagebuilder-0.5.8.tgz", + "integrity": "sha512-VrCxLteyLJISOikvO0SY2tX81FeI89DVBbL1j9Xi+InYY4ZWWBjW+Im5MmIu0VLzXyig4vBab7G4enOTocW0Zg==", "dependencies": { "@tinkoff/utils": "^2.1.2", "acorn": "^7.4.1", "tslib": "^2.4.0" } }, + "node_modules/@tinkoff/htmlpagebuilder/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/@tinkoff/is-modern-lib": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@tinkoff/is-modern-lib/-/is-modern-lib-2.0.4.tgz", - "integrity": "sha512-JLQa434sQD6Qd/Lx1SSe7RE76rBbso2QB6mpZKBGrmIM0yAli6R2WUiquUggvF6VLknGFB7h+yWhO4i/kmuFAA==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@tinkoff/is-modern-lib/-/is-modern-lib-2.0.16.tgz", + "integrity": "sha512-V9oNlK/AGAyy9+J1q8L9au/IDH7c7luvFg+HtZmUWOY+oCwfvM8kYswUUI/tSXZ/pr4sLkMrKRJrPEXa684pzg==", "dependencies": { "semver": "^7.3.5" } }, "node_modules/@tinkoff/is-modern-lib/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -4108,9 +4502,9 @@ } }, "node_modules/@tinkoff/layout-factory": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@tinkoff/layout-factory/-/layout-factory-0.3.4.tgz", - "integrity": "sha512-bIKUEwrKZPKNm1MbEinzbo6QrnsP/ITFAo8njyZg5tJWqu7eBLJHLRgMtb1OpfPyW165cy9F0wRAMvL7RLw0nA==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@tinkoff/layout-factory/-/layout-factory-0.3.8.tgz", + "integrity": "sha512-WHBxvJ75reh0XOjdhqzZNo7Eu1ByxkBJB4Df4bzndeNBcukKNAE0PbNY1VbV7HnZKUmp/iNoevmh828Z1V+VHA==", "dependencies": { "@tinkoff/utils": "^2.1.2", "tslib": "^2.4.0" @@ -4120,12 +4514,12 @@ } }, "node_modules/@tinkoff/logger": { - "version": "0.10.54", - "resolved": "https://registry.npmjs.org/@tinkoff/logger/-/logger-0.10.54.tgz", - "integrity": "sha512-hFZMcdVuW8AbsaGX1qdPpOu6oe7LiaIkfbwRGO1IqxkXJic7pJVfouFghkdU6pm5cqx78eqjepUi2GXTuQHFXQ==", + "version": "0.10.67", + "resolved": "https://registry.npmjs.org/@tinkoff/logger/-/logger-0.10.67.tgz", + "integrity": "sha512-F1lU2ww0gXzmDZ6HOvfG8aUShvypLlvGlnbwmHgo+rAq708iP61WzBsHWj6rhy7vh7OFSs/3bT5hZb/RlyFhxA==", "dependencies": { "@tinkoff/utils": "^2.1.2", - "@tramvai/safe-strings": "0.5.5", + "@tramvai/safe-strings": "0.5.12", "chalk": "^3.0.0", "date-fns": "^2.11.0", "figures": "^3.2.0", @@ -4203,9 +4597,9 @@ } }, "node_modules/@tinkoff/measure-fastify-requests": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@tinkoff/measure-fastify-requests/-/measure-fastify-requests-0.1.6.tgz", - "integrity": "sha512-UIPZt9dQFbKybreipGoHyqaq2IUO6LfBLB5PoJMkCl5X1NVsb6WhMeZLzdnlpv8Ksx7a+MO5Iym1ynxSUksipg==", + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@tinkoff/measure-fastify-requests/-/measure-fastify-requests-0.1.11.tgz", + "integrity": "sha512-44bjIjWS3pkL6FlpdIRWCxLEdKlY5TRtw8FjqEWW9CIfWdrImQtKfjihNiTQ6ptXJBT5YTR/igSNdd7kF5Xh/w==", "dependencies": { "@tinkoff/utils": "^2.1.3", "fastify-plugin": "^4.2.1", @@ -4214,30 +4608,30 @@ }, "peerDependencies": { "fastify": ">=3.0.0", - "prom-client": "12.x" + "prom-client": "14.x" } }, "node_modules/@tinkoff/meta-tags-generate": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@tinkoff/meta-tags-generate/-/meta-tags-generate-0.5.4.tgz", - "integrity": "sha512-fXrQOMEApR5F0/W5xDNAe5T/xNSJ4MGFhKW/vZJ46Mk5Vhg0koWu//ybyMlGEr4qPfi5tNF/luWqOC65y3D0dw==", + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@tinkoff/meta-tags-generate/-/meta-tags-generate-0.5.11.tgz", + "integrity": "sha512-59YufqVFRcHIshc7/VV7eqlPFOsdYmysEsmKrkqvPiU3RayYlWvt71Wn9L/vBHxgLgrO8LecDvKLFa7Y6x9Syg==", "dependencies": { "@tinkoff/utils": "^2.1.2", "tslib": "^2.4.0" } }, "node_modules/@tinkoff/metrics-noop": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@tinkoff/metrics-noop/-/metrics-noop-2.0.4.tgz", - "integrity": "sha512-CxUEZ1baZbHlSEP5X6Nv7E2alpuCJUXKyJcfYnkoyVcHoe5dL/q8PzJuC6HnqqbknSiE6O4sgtplM49ge/OCSg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@tinkoff/metrics-noop/-/metrics-noop-2.1.0.tgz", + "integrity": "sha512-y+N0kaBLIf95FasO7zE9wd1+OFzL/mmuBafNK6rCUtssRdtFWEIRHSo5/JZs0gQxGERn5TkcJiq3XIpG+GHkbw==", "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@tinkoff/minicss-class-generator": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@tinkoff/minicss-class-generator/-/minicss-class-generator-0.2.4.tgz", - "integrity": "sha512-aD/0QWhu7gA+kvCDOZoKMltxJcP5klxxydez59RI+Hc7Pva6TxDwoMzRUw9pn5TyizPiS6x2RT6L724K0TKM/g==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@tinkoff/minicss-class-generator/-/minicss-class-generator-0.2.5.tgz", + "integrity": "sha512-DFHudEDIRPkNJynJJyg7IneAN482w7FygEeQ4OYdn9A9k7TCTl8EtFRN4Cl7263qR9FWXjVBUsDtKbQYay6PYQ==", "dependencies": { "css-class-generator": "^2.0.0", "cssesc": "^3.0.0", @@ -4253,28 +4647,31 @@ } }, "node_modules/@tinkoff/monkeypatch": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tinkoff/monkeypatch/-/monkeypatch-2.0.3.tgz", - "integrity": "sha512-c+ylTV6Ge1mISJLpIrBhJ7CC2vm5HGRu9fIm8ap2nqVu15Ou4okuGBgM1IwRHkXW85j2vZ5v403QcLnuyd/qRw==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@tinkoff/monkeypatch/-/monkeypatch-2.0.5.tgz", + "integrity": "sha512-xwLGwqzP2g8sEgc4JFu5RtrKIWnSpzr65mpiHsea95ZVbq4JxXR2FxhubY/5jF67d6+oE2UXRTmppbGnllYY3A==" }, "node_modules/@tinkoff/package-manager-wrapper": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@tinkoff/package-manager-wrapper/-/package-manager-wrapper-0.1.4.tgz", - "integrity": "sha512-HzzH32uvzgXHmAnPCWy7uZngf4hLxMLrlIoTLuZkV0LoFGWmB8veXKg0MuVN1vLfEFrcbmQx98L+hexeOGAGdg==" + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@tinkoff/package-manager-wrapper/-/package-manager-wrapper-0.1.9.tgz", + "integrity": "sha512-6J/NrAZzzgPXBp/ufyvIr9GhnWB7ssiwwQPQZZbalcPQoc8RR7DGKrfbIevjM1R/2tGWLWAbEUcjA+R67bP66Q==", + "dependencies": { + "execa": "^5.1.1" + } }, "node_modules/@tinkoff/pubsub": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@tinkoff/pubsub/-/pubsub-0.5.5.tgz", - "integrity": "sha512-Nl5uqhb/4T3epn9aFApglE3/sx9n32yYoGt06OnEe/+bWrGw0lrUG9fUFxaNvfWee9OMrpFHTqBrVKHsACj6cA==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@tinkoff/pubsub/-/pubsub-0.5.7.tgz", + "integrity": "sha512-IQ28PQHT29lpQFESoX9UQZ1QnRcp+l/gSQzjJBH7ruTSus/r2tt6BSDdMHR6Gxn/7yXbqQK5BzP3Jvzjh9LoZA==", "dependencies": { "@tinkoff/utils": "^2.1.2", "tslib": "^2.4.0" } }, "node_modules/@tinkoff/react-hooks": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@tinkoff/react-hooks/-/react-hooks-0.1.4.tgz", - "integrity": "sha512-/utbuAGs8f09IhcHmM72jssKIY7DVH59SoGNpaKAkmtnc3TyPKPE+fcomBx9nwGSxxnFvn9o3Cru33PIuBcZdg==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@tinkoff/react-hooks/-/react-hooks-0.1.6.tgz", + "integrity": "sha512-n3xMSBc3+IeUYwX1Oq4EdT7ftZj4ESijWf3U1h7d84CHsgTSC6T0RBlD6R0xZ04d0TVqMSQFdHg6poyS8w/ToA==", "dependencies": { "@tinkoff/utils": "^2.1.2", "tslib": "^2.4.0" @@ -4296,9 +4693,9 @@ } }, "node_modules/@tinkoff/request-core": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@tinkoff/request-core/-/request-core-0.9.2.tgz", - "integrity": "sha512-rPQxLim3u7adJLCynTp26KT6y0rd2F+ARjK2cHgKszjSc3Ce/c21aY1WN+qRSZlK1RGmGTaZxzSFBCMOzwJaMA==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@tinkoff/request-core/-/request-core-0.9.3.tgz", + "integrity": "sha512-jOgRmeKBHV1h4RJd9nrvz1JI/+RMKrT8WZYy55jD+SQkdMZHRoksjSN4/b+57XsV39Mr2iv22TQIOLkVBDOqtQ==", "dependencies": { "@tinkoff/utils": "^2.0.0", "tslib": "^2.1.3" @@ -4332,12 +4729,12 @@ } }, "node_modules/@tinkoff/request-plugin-protocol-http": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@tinkoff/request-plugin-protocol-http/-/request-plugin-protocol-http-0.11.7.tgz", - "integrity": "sha512-6ds/tZ+8Nm5QOFXRIZhiUuXrb6W8eexqHuRlb1+ClPP+d+9t7eh39xA/bQHfLSyrdwZJHI01a5txv8RoIcg7OA==", + "version": "0.11.9", + "resolved": "https://registry.npmjs.org/@tinkoff/request-plugin-protocol-http/-/request-plugin-protocol-http-0.11.9.tgz", + "integrity": "sha512-WK+9zQER9kBI0X8JXnQ20uuUuT7F1hA5m9nzOs2C+qVpy+VVWxp2TeQxGo9P4e6zq+qYX0FpQ81ijsENtK1w3Q==", "dependencies": { - "@tinkoff/request-core": "^0.9.2", - "@tinkoff/request-url-utils": "^0.9.2", + "@tinkoff/request-core": "^0.9.3", + "@tinkoff/request-url-utils": "^0.9.3", "@tinkoff/utils": "^2.0.0", "abort-controller": "^3.0.0", "form-data": "^2.5.0", @@ -4349,21 +4746,21 @@ } }, "node_modules/@tinkoff/request-url-utils": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@tinkoff/request-url-utils/-/request-url-utils-0.9.2.tgz", - "integrity": "sha512-QHFW0rH8gSNOi8/4Y2nWQyf2V+fG72fzBoglVW4cRZTtwtLXxjHeqzwIOlSMkaigqId02bLIQJobN4i8BILitw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@tinkoff/request-url-utils/-/request-url-utils-0.9.3.tgz", + "integrity": "sha512-3I574Z27ALAeb5C9t4ThJMb80gX/rXs/grGWXn+GRllPI9mofPXZQeSBgR0CD428csUA7xZL3tv5Q/sqtRfJrA==", "dependencies": { "@tinkoff/utils": "^2.0.0", "tslib": "^2.1.3" } }, "node_modules/@tinkoff/router": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@tinkoff/router/-/router-0.2.4.tgz", - "integrity": "sha512-sMkdxRN/qK0I104PF/dresyJ+WXzOHgTgxMThDZxx+zNIt4/CrJaUWMO2jz0ILVRdrkZaoKqKzsJFVovW7dTXg==", + "version": "0.2.19", + "resolved": "https://registry.npmjs.org/@tinkoff/router/-/router-0.2.19.tgz", + "integrity": "sha512-wtATefJ/qOhSviP3vFT7PimhU2VmenMm17wjfvj7KLFyp7NfG3IjmjupxCZeskfz73U0rp6XU3BDr4dJvn90sw==", "dependencies": { - "@tinkoff/react-hooks": "0.1.4", - "@tinkoff/url": "0.8.4", + "@tinkoff/react-hooks": "0.1.6", + "@tinkoff/url": "0.8.6", "@tinkoff/utils": "^2.1.2", "use-sync-external-store": "^1.2.0" }, @@ -4388,9 +4785,9 @@ } }, "node_modules/@tinkoff/terminus": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@tinkoff/terminus/-/terminus-0.1.5.tgz", - "integrity": "sha512-kwrhIlXf6M7RtoMYlTjbGTyzKy1BPW6r6g1xEbtMD1KdVhUFu6Z8gSzzIKVwPUYf0BumKDw0XFNYrj9fnQvD4A==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@tinkoff/terminus/-/terminus-0.1.9.tgz", + "integrity": "sha512-VFI+wkjnhCXEiqPLud4QZItRGqGd+1Mr/wPzFmya1dq0aNZkLywURVU0nwNViybzgIF8OCT5zjYEmSvn+Six7w==", "dependencies": { "es6-promisify": "^6.1.1", "stoppable": "^1.1.0" @@ -4401,27 +4798,27 @@ } }, "node_modules/@tinkoff/url": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/@tinkoff/url/-/url-0.8.4.tgz", - "integrity": "sha512-oAPJzXIUpRff3C2TaM6RjeGI5lHkzG8YppJQfyv2Gg3ym2nO5Fjnv6QadL+cL1JqXtwhuD/8vK6cDVXBPbwRlA==", + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/@tinkoff/url/-/url-0.8.6.tgz", + "integrity": "sha512-TzaFw8f/xFxsns7M8FIX+rin6l/pHhMagQkg1ybajCadYDuPo9ww9ciZPmj9sGHrcclDvaancvXBNpjyfzyW/Q==", "dependencies": { "@tinkoff/utils": "^2.1.2", "tslib": "^2.4.0" } }, "node_modules/@tinkoff/user-agent": { - "version": "0.4.90", - "resolved": "https://registry.npmjs.org/@tinkoff/user-agent/-/user-agent-0.4.90.tgz", - "integrity": "sha512-90+WEBkhxfBmBhgzVbDiesf14X8uUi0INDjeXM91PZAzAQZLXBgWv+g4Io6LiMoMD67BtsEtgeOmh+i71xxvLA==", + "version": "0.4.464", + "resolved": "https://registry.npmjs.org/@tinkoff/user-agent/-/user-agent-0.4.464.tgz", + "integrity": "sha512-LPqDti9ycKIoPH6oL1hYW3QzlimpVbas0FquZjK+5UvNyAGymDcP9+eueJNhYkJKBf1DwuoUKsVo82PeQSnx7g==", "dependencies": { - "@tinkoff/browserslist-config": "0.2.4", + "@tinkoff/browserslist-config": "0.2.7", "@tinkoff/utils": "^2.1.2", "browserslist": "^4.16.7", "tslib": "^2.4.0", "ua-parser-js": "0.7.31" }, "peerDependencies": { - "@tramvai/cli": "2.40.0", + "@tramvai/cli": "2.160.1", "@types/ua-parser-js": "^0.7.33" } }, @@ -4433,10 +4830,100 @@ "react-is": "*" } }, + "node_modules/@tinkoff/webpack-dedupe-plugin": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@tinkoff/webpack-dedupe-plugin/-/webpack-dedupe-plugin-1.0.5.tgz", + "integrity": "sha512-S+dCIv98Xra9ViYufKUsddrueq65IKW9NVW2xKWF/0mDEf5QwJDhi//ixuyckNUunnfxvcduFXdf/zeeV5nqIg==", + "dependencies": { + "chalk": "^4.1.2", + "semver": "^7.3.7" + }, + "peerDependencies": { + "webpack": "^5.75.0" + } + }, + "node_modules/@tinkoff/webpack-dedupe-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@tinkoff/webpack-dedupe-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@tinkoff/webpack-dedupe-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@tinkoff/webpack-dedupe-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@tinkoff/webpack-dedupe-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@tinkoff/webpack-dedupe-plugin/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tinkoff/webpack-dedupe-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@tramvai/build": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@tramvai/build/-/build-3.0.6.tgz", - "integrity": "sha512-y91Mis6cSPAqsEnJC8tQZBfX2NSI4cWqni9FBzcD4onwohMb2s+YjPLDTlndQ+15EsrQudONL6COV00b+pisFQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@tramvai/build/-/build-3.1.4.tgz", + "integrity": "sha512-6C1nL1pvaEKRWHNWdFBMscgUPcb6EqGDm3BhbOmqV5Ua5Jv4a6J+4qkp5kwLKMJTV9HFsfIpMrWaFWAm6XdikQ==", "dependencies": { "@rollup/plugin-json": "^4.0.3", "@rollup/plugin-typescript": "^8.5.0", @@ -4449,7 +4936,7 @@ "rollup": "^2.8.0", "rollup-external-modules": "^2.0.0", "rollup-plugin-analyzer": "^3.2.2", - "rollup-plugin-ts": "^3.0.2", + "rollup-plugin-ts": "3.2.0", "rollup-pluginutils": "^2.8.2", "signale": "^1.4.0", "tslib": "^2.4.0", @@ -4464,9 +4951,9 @@ } }, "node_modules/@tramvai/cli": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/cli/-/cli-2.40.0.tgz", - "integrity": "sha512-ub8NX+GN35A2+MHYjicrohIQ2Zv2LhAsHOuULm3Gl6mDl8hO1aIsZPp7uVhR7J6snRDtKdxt7EJ49KP1Q2qY1A==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/cli/-/cli-2.160.1.tgz", + "integrity": "sha512-xHwY8rohv7qSBH7llMZWHnPIMhYLceG9SR4+TR+61K/DnfisXEKGombHn1o0QkpjbNGbiDmHNuIlGZ0G9XwlXg==", "dependencies": { "@babel/cli": "^7.18.10", "@babel/core": "^7.18.10", @@ -4482,7 +4969,6 @@ "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-react-constant-elements": "^7.18.12", - "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.10", "@babel/preset-env": "^7.18.10", "@babel/preset-react": "^7.18.6", @@ -4492,31 +4978,32 @@ "@babel/traverse": "^7.18.11", "@babel/types": "^7.18.10", "@discoveryjs/json-ext": "^0.5.7", - "@fastify/compress": "^6.1.1", - "@fastify/static": "^6.5.0", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7", + "@fastify/compress": "^6.2.0", + "@fastify/static": "^6.9.0", + "@module-federation/node": "^0.15.1", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10", "@sentry/node": "^6.2.5", - "@svgr/webpack": "^6.4.0", - "@tinkoff/browserslist-config": "0.2.4", - "@tinkoff/dippy": "0.8.9", - "@tinkoff/is-modern-lib": "2.0.4", - "@tinkoff/logger": "0.10.54", - "@tinkoff/minicss-class-generator": "0.2.4", - "@tinkoff/package-manager-wrapper": "0.1.4", + "@svgr/webpack": "^8.1.0", + "@tinkoff/browserslist-config": "0.2.7", + "@tinkoff/dippy": "0.8.16", + "@tinkoff/is-modern-lib": "2.0.16", + "@tinkoff/logger": "0.10.67", + "@tinkoff/minicss-class-generator": "0.2.5", + "@tinkoff/package-manager-wrapper": "0.1.9", "@tinkoff/request-core": "^0.9.2", - "@tinkoff/request-plugin-protocol-http": "^0.11.6", + "@tinkoff/request-plugin-protocol-http": "^0.11.8", "@tinkoff/utils": "^2.1.3", - "@tramvai/build": "3.0.6", - "@tramvai/react": "2.40.0", - "@tramvai/tools-check-versions": "0.4.5", - "@tramvai/tools-migrate": "0.6.6", - "ajv": "^6.12.6", + "@tinkoff/webpack-dedupe-plugin": "1.0.5", + "@tramvai/build": "3.1.4", + "@tramvai/react": "2.160.1", + "@tramvai/tools-check-versions": "0.4.18", + "@tramvai/tools-migrate": "0.6.23", + "ajv": "^8.12.0", "ansi-escapes": "^4.3.2", "autoprefixer": "^10.4.8", "babel-loader": "^8.2.5", "babel-plugin-dynamic-import-node": "^2.3.3", "babel-plugin-lodash": "^3.3.4", - "babel-plugin-module-resolver": "^4.1.0", "babel-plugin-transform-define": "^2.0.1", "babel-plugin-transform-react-remove-prop-types": "^0.4.24", "boxen": "^4.2.0", @@ -4525,19 +5012,22 @@ "chalk": "^4.1.2", "commander": "^6.2.1", "compression": "^1.7.4", + "core-js": "^3.0.0", "css-class-generator": "^2.0.0", "css-loader": "^6.7.1", - "css-minimizer-webpack-plugin": "^4.0.0", + "css-minimizer-webpack-plugin": "^5.0.1", "csso-webpack-plugin": "2.0.0-beta.3", "death": "^1.1.0", + "detect-port": "^1.5.1", + "env-ci": "^5.0.2", "execa": "^5.1.1", "exit": "^0.1.2", "express": "^4.18.1", - "fastify": "^4.6.0", + "fastify": "^4.14.1", "figures": "^3.2.0", "file-loader": "^6.2.0", "find-cache-dir": "^3.3.2", - "fork-ts-checker-webpack-plugin": "^6.5.2", + "fork-ts-checker-webpack-plugin": "^8.0.0", "fs-extra": "^9.1.0", "fs-readdir-recursive": "^1.1.0", "fuzzy": "^0.1.3", @@ -4545,19 +5035,22 @@ "handlebars": "^4.7.7", "http-proxy": "^1.18.1", "image-size": "^1.0.2", + "ini": "^3.0.1", "inquirer": "^7.3.3", "inquirer-autocomplete-prompt": "^1.4.0", "inspectpack": "^4.7.1", + "latest-version": "^5.0.0", "less": "^3.13.1", "less-loader": "^8.1.1", "lightning-pool": "^2.4.0", "mdtable": "^0.3.1", - "mini-css-extract-plugin": "2.6.1", + "mini-css-extract-plugin": "2.7.6", "node-plop": "^0.26.0", "noop-stream": "^0.1.0", "null-loader": "^4.0.1", "ora": "^5.4.1", "p-map": "^4.0.0", + "package-json": "^6.5.0", "path-browserify": "^1.0.1", "port-used": "^2.0.8", "postcss": "^8.4.16", @@ -4565,35 +5058,40 @@ "postcss-image-set-polyfill": "^1.0.0", "postcss-loader": "^7.0.1", "postcss-modules-tilda": "^2.0.0", - "postcss-modules-values-replace": "^3.3.0", + "postcss-modules-values-replace": "^4.0.0", + "pretty-bytes": "^5.6.0", "prettyoutput": "^1.2.0", "process": "^0.11.10", "promise-queue": "^2.2.5", "react-refresh": "^0.14.0", - "resolve": "^1.22.1", + "resolve": "^1.22.4", "rimraf": "^3.0.2", "semver": "^7.3.7", + "source-map": "^0.7.4", "source-map-loader": "^4.0.0", "spark-md5": "^3.0.2", "stoppable": "^1.1.0", - "svgo": "^1.3.2", - "svgo-loader": "^2.2.2", - "terser-webpack-plugin": "^5.3.5", + "svgo": "^3.0.2", + "svgo-loader": "^4.0.0", + "terser-webpack-plugin": "^5.3.9", "text-table": "^0.2.0", "thread-loader": "^3.0.4", + "tsconfig-paths-webpack-plugin": "^4.0.1", "universal-analytics": "^0.4.23", "utility-types": "^3.10.0", "v8-compile-cache": "^2.3.0", "validate-npm-package-name": "^3.0.0", "wait-on": "^5.3.0", - "webpack": "5.74.0", - "webpack-build-notifier": "^2.3.0", - "webpack-bundle-analyzer": "^4.6.1", + "webpack": "5.87.0", + "webpack-bundle-analyzer": "^4.9.0", "webpack-chain": "^6.5.1", - "webpack-dev-middleware": "^5.3.3", - "webpack-hot-middleware": "^2.25.2", - "webpack-stats-plugin": "^1.1.0", + "webpack-dev-middleware": "^6.1.1", + "webpack-hot-middleware": "^2.25.4", + "webpack-sources": "^3.2.3", + "webpack-stats-plugin": "^1.1.3", "webpackbar": "^5.0.2", + "workbox-build": "^6.6.1", + "workbox-webpack-plugin": "^6.6.1", "wrap-ansi": "^7.0.0" }, "bin": { @@ -4603,7 +5101,7 @@ "tramvai-debug": "bin/platform-debug.js" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@tramvai/cli/node_modules/ansi-styles": { @@ -4659,10 +5157,18 @@ "node": ">=8" } }, + "node_modules/@tramvai/cli/node_modules/ini": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz", + "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/@tramvai/cli/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -4684,16 +5190,25 @@ "node": ">=8" } }, + "node_modules/@tramvai/cli/node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/@tramvai/core": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/core/-/core-2.40.0.tgz", - "integrity": "sha512-fhXPFIDyaE9Emc1exr+1OqnUhbgK2GTX/hGTMvp6eQO0oivrIiQ6qSr2OoX4/4USerjTsuXxyVWmKsbMYzbbcA==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/core/-/core-2.160.1.tgz", + "integrity": "sha512-H341LYeRupb1RYDqY7yweQGi/CYzMO9cgGb0dG4nf1tiMVwt75110J6utsX+vQ95z5TODr22ywJuY0rgCSNhrw==", "dependencies": { - "@tinkoff/dippy": "0.8.9", + "@tinkoff/dippy": "0.8.16", "@tinkoff/utils": "^2.1.2", - "@tramvai/tokens-common": "2.40.0", - "@tramvai/tokens-core": "2.40.0", - "@tramvai/types-actions-state-context": "2.40.0", + "@tramvai/tokens-common": "2.160.1", + "@tramvai/tokens-core": "2.160.1", + "@tramvai/types-actions-state-context": "2.160.1", + "node-abort-controller": "^3.0.1", "tslib": "^2.4.0" }, "peerDependencies": { @@ -4701,245 +5216,263 @@ } }, "node_modules/@tramvai/experiments": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/experiments/-/experiments-2.40.0.tgz", - "integrity": "sha512-CHPaahLTXbUDrx7WCCtR4yTavX5+lGHB5Ll1nIdqwdFc0kef3RT+60IzHURcHXvaPkFb/IVbkioVtvAZb7kIwQ==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/experiments/-/experiments-2.160.1.tgz", + "integrity": "sha512-Ypz4wqBFjpn2RhRi5HnZq5bgxbjTYllEf9EMnnzhKbq3uB9rjewHsmWL+91bS1s4M5L5juLQ/dGtEsNkn1u/KA==", "peerDependencies": { - "@tinkoff/router": "0.2.4", - "@tramvai/cli": "2.40.0", + "@tinkoff/router": "0.2.19", + "@tramvai/cli": "2.160.1", "tslib": "^2.4.0" } }, "node_modules/@tramvai/module-cache-warmup": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-cache-warmup/-/module-cache-warmup-2.40.0.tgz", - "integrity": "sha512-X+NYp6+HAUYdUDnz8Vm4E4KnePrdbu+Uoknxsc0QPPcqZJTBlG+5+qf0j3EyCgHOMOkuUft4uJthRdWx819xMA==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-cache-warmup/-/module-cache-warmup-2.160.1.tgz", + "integrity": "sha512-PErb6vW8Uy03wqv9/s4OTSzYcIYfgeqi9ov3hNIMv7jLq53HBIxLd552u17Uj/TWWGzPECZl0+QGMp65eDvnDg==", "dependencies": { "@tinkoff/request-core": "^0.9.2", - "@tinkoff/request-plugin-protocol-http": "^0.11.6", - "@tinkoff/url": "0.8.4" + "@tinkoff/request-plugin-protocol-http": "^0.11.8", + "@tinkoff/url": "0.8.6" }, "peerDependencies": { - "@tramvai/core": "2.40.0", - "@tramvai/module-common": "2.40.0", - "@tramvai/state": "2.40.0", - "@tramvai/tokens-http-client": "2.40.0", + "@tramvai/core": "2.160.1", + "@tramvai/module-common": "2.160.1", + "@tramvai/state": "2.160.1", + "@tramvai/tokens-http-client": "2.160.1", "tslib": "^2.4.0" } }, "node_modules/@tramvai/module-client-hints": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-client-hints/-/module-client-hints-2.40.0.tgz", - "integrity": "sha512-jy7RalXUgyc9UvwzjgnA5Oy2luVp0xpB1tIIbWiHaqCrvRxWpBwUACmUbXOSqnO7EF4FLfM8vE/IH9Xxwk9flg==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-client-hints/-/module-client-hints-2.160.1.tgz", + "integrity": "sha512-xoGFuiF/1BLQp/o/y12Xje3eF8Dk92sDRtfdchvC7+Rg8+Sk8TwP9GaLuF5kTvD65MdKZjU553ckEVoxFe39iw==", "dependencies": { - "@tinkoff/user-agent": "0.4.90", + "@tinkoff/env-validators": "0.1.6", + "@tinkoff/user-agent": "0.4.464", "@tinkoff/utils": "^2.1.2", - "@tramvai/safe-strings": "0.5.5", - "@tramvai/tokens-child-app": "2.40.0", - "@tramvai/tokens-common": "2.40.0", - "@tramvai/tokens-cookie": "2.40.0" - }, - "peerDependencies": { - "@tinkoff/dippy": "0.8.9", - "@tramvai/core": "2.40.0", - "@tramvai/state": "2.40.0", + "@tramvai/module-metrics": "2.160.1", + "@tramvai/safe-strings": "0.5.12", + "@tramvai/tokens-child-app": "2.160.1", + "@tramvai/tokens-common": "2.160.1", + "@tramvai/tokens-cookie": "2.160.1", + "@tramvai/tokens-render": "2.160.1", + "user-agent-data-types": "^0.3.1" + }, + "peerDependencies": { + "@tinkoff/dippy": "0.8.16", + "@tinkoff/logger": "0.10.67", + "@tramvai/core": "2.160.1", + "@tramvai/state": "2.160.1", "react": ">=16.14.0", "react-dom": ">=16.14.0", "tslib": "^2.4.0" } }, "node_modules/@tramvai/module-common": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-common/-/module-common-2.40.0.tgz", - "integrity": "sha512-UWNu2nFaoczI3OJqScPh78mLrpLtZZbm4rvfoN/UWU8frt4eZbEKocsvGmCVwWIdkae2m1075iVoysJnwYAUCA==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-common/-/module-common-2.160.1.tgz", + "integrity": "sha512-BmmrnENq4Z/xjvXp8ZbHB2jJVUpLNONM9CHqfKyohAcpZJpbSMOvs8DFSpEuxDycnAqGLmpXLhB2NjZLhqSx+g==", "dependencies": { - "@tinkoff/errors": "0.3.5", - "@tinkoff/hook-runner": "0.4.4", + "@akashbabu/lfu-cache": "1.0.2", + "@tinkoff/errors": "0.3.8", + "@tinkoff/hook-runner": "0.4.6", "@tinkoff/lru-cache-nano": "^7.8.1", - "@tinkoff/pubsub": "0.5.5", - "@tinkoff/url": "0.8.4", - "@tramvai/experiments": "2.40.0", - "@tramvai/module-cookie": "2.40.0", - "@tramvai/module-environment": "2.40.0", - "@tramvai/module-log": "2.40.0", - "@tramvai/tokens-child-app": "2.40.0", - "@tramvai/tokens-common": "2.40.0", - "@tramvai/tokens-render": "2.40.0", - "@tramvai/tokens-server-private": "2.40.0", + "@tinkoff/pubsub": "0.5.7", + "@tinkoff/url": "0.8.6", + "@tramvai/experiments": "2.160.1", + "@tramvai/module-cookie": "2.160.1", + "@tramvai/module-environment": "2.160.1", + "@tramvai/module-log": "2.160.1", + "@tramvai/safe-strings": "0.5.12", + "@tramvai/tokens-child-app": "2.160.1", + "@tramvai/tokens-common": "2.160.1", + "@tramvai/tokens-core-private": "2.160.1", + "@tramvai/tokens-render": "2.160.1", + "@tramvai/tokens-server-private": "2.160.1", + "@tramvai/types-actions-state-context": "2.160.1", "hoist-non-react-statics": "^3.3.1", "node-abort-controller": "^3.0.1" }, "peerDependencies": { - "@tinkoff/dippy": "0.8.9", + "@tinkoff/dippy": "0.8.16", "@tinkoff/utils": "^2.1.2", - "@tramvai/cli": "2.40.0", - "@tramvai/core": "2.40.0", - "@tramvai/papi": "2.40.0", - "@tramvai/react": "2.40.0", - "@tramvai/state": "2.40.0", - "@tramvai/tokens-metrics": "2.40.0", - "@tramvai/tokens-server": "2.40.0", + "@tramvai/cli": "2.160.1", + "@tramvai/core": "2.160.1", + "@tramvai/papi": "2.160.1", + "@tramvai/react": "2.160.1", + "@tramvai/state": "2.160.1", + "@tramvai/tokens-server": "2.160.1", "react": ">=16.14.0", "tslib": "^2.4.0" } }, "node_modules/@tramvai/module-cookie": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-cookie/-/module-cookie-2.40.0.tgz", - "integrity": "sha512-gqyknow9TEUOxrD7b+YOJhJ3dm8R/WaOR2IyijTS141H0K3zoml0xkYpsl3xJdeyRolS73Z/kWn9F/VYbNrw7A==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-cookie/-/module-cookie-2.160.1.tgz", + "integrity": "sha512-61FwEzmgvHRfEDabKtmsAL8aFiEEtAldC0ezsn2Y/XPCalnOweIzUlHSqUKnYR3BXmzACPXeqyU33vjkT3cmbQ==", "dependencies": { - "@tinkoff/browser-cookies": "2.0.4", - "@tramvai/module-client-hints": "2.40.0", - "@tramvai/tokens-cookie": "2.40.0", - "cookie": "^0.4.0" + "@tinkoff/browser-cookies": "2.0.8", + "@tramvai/module-client-hints": "2.160.1", + "@tramvai/tokens-cookie": "2.160.1", + "cookie": "^0.5.0" }, "peerDependencies": { - "@tinkoff/dippy": "0.8.9", + "@tinkoff/dippy": "0.8.16", "@tinkoff/utils": "^2.1.2", - "@tramvai/core": "2.40.0", - "@tramvai/state": "2.40.0", - "@tramvai/tokens-common": "2.40.0", + "@tramvai/core": "2.160.1", + "@tramvai/state": "2.160.1", + "@tramvai/tokens-common": "2.160.1", "tslib": "^2.4.0" } }, + "node_modules/@tramvai/module-cookie/node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/@tramvai/module-environment": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-environment/-/module-environment-2.40.0.tgz", - "integrity": "sha512-uDjLLRS60FcFzjCLe8Xv1a2wGDGA0ajkkkeql1wbvnEvV9J+zB2PlKtv/Uo0xf/1YTC/0LpFdNcBcA1gFAn0Iw==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-environment/-/module-environment-2.160.1.tgz", + "integrity": "sha512-UFX4QhrRk9VdlOuZ7C6XZyJC89BQxzYhRgGxxNMVuO21EJDckrNB/FzZRMSnlOr1/NBJQHlVJNRTiBbSZCiRlw==", "peerDependencies": { - "@tinkoff/dippy": "0.8.9", + "@tinkoff/dippy": "0.8.16", "@tinkoff/utils": "^2.1.2", - "@tramvai/core": "2.40.0", - "@tramvai/papi": "2.40.0", - "@tramvai/state": "2.40.0", - "@tramvai/tokens-common": "2.40.0", - "@tramvai/tokens-server": "2.40.0", + "@tramvai/core": "2.160.1", + "@tramvai/papi": "2.160.1", + "@tramvai/state": "2.160.1", + "@tramvai/tokens-common": "2.160.1", + "@tramvai/tokens-server": "2.160.1", "react": ">=16.14.0", "react-dom": ">=16.14.0", "tslib": "^2.4.0" } }, "node_modules/@tramvai/module-error-interceptor": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-error-interceptor/-/module-error-interceptor-2.40.0.tgz", - "integrity": "sha512-rSU4zMhBrAk6oiZVP+wnO+L5WC3JTUeEpkQREzwbKG6AQJX5+EmkGxveRx4zT43tYNsxOzJVOVxagX4Qq0hUFQ==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-error-interceptor/-/module-error-interceptor-2.160.1.tgz", + "integrity": "sha512-7IXXBTk9tQr1RWEbr2O5WYTPMKgau52DhbhEa6cm52TAR33cCYmf+0HrHl7HEAnoxT2ydGfzk5LiaVrWsA0/bA==", "dependencies": { - "@tinkoff/error-handlers": "0.5.4" + "@tinkoff/error-handlers": "0.5.6" }, "peerDependencies": { - "@tramvai/core": "2.40.0", - "@tramvai/module-common": "2.40.0", - "@tramvai/module-render": "2.40.0", - "@tramvai/react": "2.40.0", + "@tramvai/core": "2.160.1", + "@tramvai/module-common": "2.160.1", + "@tramvai/module-render": "2.160.1", + "@tramvai/react": "2.160.1", "tslib": "^2.4.0" } }, "node_modules/@tramvai/module-log": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-log/-/module-log-2.40.0.tgz", - "integrity": "sha512-87T9vWx14gkyY3vCij8OUPBWquar46xjyTehfdMtUvTfe9jn4VnO+Qp7kG8YoLCmGcN0e+FNSywAZHrrI8gvqA==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-log/-/module-log-2.160.1.tgz", + "integrity": "sha512-rPa2U5/Zcwk4P3zQptzxld7Hj3nnf9viSkHC1rsfU0THG4shzDtTqowc9vfhFnkXN577wjrrPsSpJP3CI6EaFA==", "dependencies": { - "@tinkoff/logger": "0.10.54" + "@tinkoff/logger": "0.10.67" }, "peerDependencies": { "@tinkoff/utils": "^2.1.2", - "@tramvai/core": "2.40.0", - "@tramvai/module-environment": "2.40.0", - "@tramvai/papi": "2.40.0", - "@tramvai/state": "2.40.0", - "@tramvai/tokens-common": "2.40.0", - "@tramvai/tokens-server": "2.40.0", + "@tramvai/core": "2.160.1", + "@tramvai/module-environment": "2.160.1", + "@tramvai/papi": "2.160.1", + "@tramvai/state": "2.160.1", + "@tramvai/tokens-common": "2.160.1", + "@tramvai/tokens-server": "2.160.1", "std-env": "^2.2.1", "tslib": "^2.4.0" } }, "node_modules/@tramvai/module-metrics": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-metrics/-/module-metrics-2.40.0.tgz", - "integrity": "sha512-YRiu3eBes4UJ4nQd1jBmPZn2WSntrv0WCR/OPn1zUUMdf1RVisdImz9HHXXxCUplI162V6hmdbSRbnGRYaKGKA==", - "dependencies": { - "@tinkoff/browser-timings": "0.10.4", - "@tinkoff/logger": "0.10.54", - "@tinkoff/measure-fastify-requests": "0.1.6", - "@tinkoff/metrics-noop": "2.0.4", - "@tinkoff/monkeypatch": "2.0.3", - "@tinkoff/url": "0.8.4", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-metrics/-/module-metrics-2.160.1.tgz", + "integrity": "sha512-pbASuHM6Wk7pF45fQTn0LPWZL3yQLQj006T8hBgkKAd0KQQSX+KoWvkexMA6wxqfX2MUbytocQL4FG0/8UYE4w==", + "dependencies": { + "@tinkoff/browser-timings": "0.10.6", + "@tinkoff/logger": "0.10.67", + "@tinkoff/measure-fastify-requests": "0.1.11", + "@tinkoff/metrics-noop": "2.1.0", + "@tinkoff/monkeypatch": "2.0.5", + "@tinkoff/url": "0.8.6", "@tinkoff/utils": "^2.1.2", - "@tramvai/core": "2.40.0", - "@tramvai/module-common": "2.40.0", - "@tramvai/papi": "2.40.0", - "@tramvai/state": "2.40.0", - "@tramvai/tokens-http-client": "2.40.0", - "@tramvai/tokens-metrics": "2.40.0", - "@tramvai/tokens-router": "2.40.0", - "@tramvai/tokens-server": "2.40.0", - "@tramvai/tokens-server-private": "2.40.0", - "prom-client": "^12.0.0" + "@tramvai/core": "2.160.1", + "@tramvai/papi": "2.160.1", + "@tramvai/state": "2.160.1", + "@tramvai/tokens-common": "2.160.1", + "@tramvai/tokens-core-private": "2.160.1", + "@tramvai/tokens-http-client": "2.160.1", + "@tramvai/tokens-metrics": "2.160.1", + "@tramvai/tokens-router": "2.160.1", + "@tramvai/tokens-server": "2.160.1", + "@tramvai/tokens-server-private": "2.160.1", + "prom-client": "^14.2.0" }, "peerDependencies": { "tslib": "^2.4.0" } }, "node_modules/@tramvai/module-page-render-mode": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-page-render-mode/-/module-page-render-mode-2.40.0.tgz", - "integrity": "sha512-tcpAGjWd9Hic63dgm854MgVq6SeXqGiSucLVENm7033nXqbcmAAqbSScB1x0MuqeIOKTsnMlkt+8aC3Lb9Tw2Q==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-page-render-mode/-/module-page-render-mode-2.160.1.tgz", + "integrity": "sha512-o0yVcUYUPgrw3LVvChsDy8OJJ3SuqFhsPBr/pXzEbiQ546PRPaWJtlVSBoOiv0MSZrEEOWv8S/v+Q1gxWZ+9rA==", "dependencies": { - "@tinkoff/errors": "0.3.5", - "@tinkoff/url": "0.8.4", + "@tinkoff/errors": "0.3.8", + "@tinkoff/url": "0.8.6", "node-fetch": "^2.6.1" }, "peerDependencies": { - "@tinkoff/dippy": "0.8.9", + "@tinkoff/dippy": "0.8.16", "@tinkoff/utils": "^2.1.2", - "@tramvai/core": "2.40.0", - "@tramvai/module-client-hints": "2.40.0", - "@tramvai/module-router": "2.40.0", - "@tramvai/papi": "2.40.0", - "@tramvai/react": "2.40.0", - "@tramvai/tokens-common": "2.40.0", - "@tramvai/tokens-core": "2.40.0", - "@tramvai/tokens-metrics": "2.40.0", - "@tramvai/tokens-render": "2.40.0", - "@tramvai/tokens-router": "2.40.0", - "@tramvai/tokens-server": "2.40.0", - "@tramvai/tokens-server-private": "2.40.0", - "prom-client": "^12.0.0", + "@tramvai/core": "2.160.1", + "@tramvai/module-client-hints": "2.160.1", + "@tramvai/module-router": "2.160.1", + "@tramvai/papi": "2.160.1", + "@tramvai/react": "2.160.1", + "@tramvai/tokens-common": "2.160.1", + "@tramvai/tokens-core": "2.160.1", + "@tramvai/tokens-metrics": "2.160.1", + "@tramvai/tokens-render": "2.160.1", + "@tramvai/tokens-router": "2.160.1", + "@tramvai/tokens-server": "2.160.1", + "@tramvai/tokens-server-private": "2.160.1", + "prom-client": "^14.2.0", "react": ">=16.14.0", "tslib": "^2.4.0" } }, "node_modules/@tramvai/module-render": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-render/-/module-render-2.40.0.tgz", - "integrity": "sha512-1TamKsHUGMw+fR0tYMVmHw+RLtHHBiS2KF4wFt8t9SQIExCcLH4LT/DBEPXKGF28ghy3r8NNWwuhbqKb+PE0jQ==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-render/-/module-render-2.160.1.tgz", + "integrity": "sha512-9mg53uK10Z2K4+fLlzM+MwrhOlqyMhtpGJ2UPwX9Yz2hAFbGtOvoE0LCj9SOyC6MZ66XgdsvK9Edqy9eSjiNvA==", "dependencies": { "@loadable/server": "^5.15.0", - "@tinkoff/htmlpagebuilder": "0.5.5", - "@tinkoff/layout-factory": "0.3.4", - "@tinkoff/url": "0.8.4", - "@tinkoff/user-agent": "0.4.90", - "@tramvai/experiments": "2.40.0", - "@tramvai/module-client-hints": "2.40.0", - "@tramvai/module-router": "2.40.0", - "@tramvai/react": "2.40.0", - "@tramvai/safe-strings": "0.5.5", - "@tramvai/tokens-render": "2.40.0", + "@tinkoff/errors": "0.3.8", + "@tinkoff/htmlpagebuilder": "0.5.8", + "@tinkoff/layout-factory": "0.3.8", + "@tinkoff/url": "0.8.6", + "@tinkoff/user-agent": "0.4.464", + "@tramvai/experiments": "2.160.1", + "@tramvai/module-client-hints": "2.160.1", + "@tramvai/module-router": "2.160.1", + "@tramvai/react": "2.160.1", + "@tramvai/safe-strings": "0.5.12", + "@tramvai/tokens-render": "2.160.1", "@types/loadable__server": "^5.12.6", "node-fetch": "^2.6.1" }, "peerDependencies": { - "@tinkoff/dippy": "0.8.9", - "@tinkoff/react-hooks": "0.1.4", + "@tinkoff/dippy": "0.8.16", + "@tinkoff/react-hooks": "0.1.6", "@tinkoff/utils": "^2.1.2", - "@tramvai/cli": "2.40.0", - "@tramvai/core": "2.40.0", - "@tramvai/module-common": "2.40.0", - "@tramvai/state": "2.40.0", - "@tramvai/test-helpers": "2.40.0", - "@tramvai/tokens-common": "2.40.0", - "@tramvai/tokens-router": "2.40.0", - "@tramvai/tokens-server-private": "2.40.0", + "@tramvai/cli": "2.160.1", + "@tramvai/core": "2.160.1", + "@tramvai/module-common": "2.160.1", + "@tramvai/state": "2.160.1", + "@tramvai/test-helpers": "2.160.1", + "@tramvai/tokens-common": "2.160.1", + "@tramvai/tokens-router": "2.160.1", + "@tramvai/tokens-server-private": "2.160.1", "express": "^4.17.1", "prop-types": "^15.6.2", "react": ">=16.14.0", @@ -4948,130 +5481,141 @@ } }, "node_modules/@tramvai/module-router": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-router/-/module-router-2.40.0.tgz", - "integrity": "sha512-p+4oRjNNZZ6ejz0A6bkmV5t34VsiMwPzaE0mES6a7Rr9LmEbfNAki6jdKMhAkZ0i96KfjM78Sj32D4CkLwJaaQ==", - "dependencies": { - "@tinkoff/errors": "0.3.5", - "@tinkoff/router": "0.2.4", - "@tinkoff/url": "0.8.4", - "@tramvai/experiments": "2.40.0", - "@tramvai/tokens-child-app": "2.40.0", - "@tramvai/tokens-render": "2.40.0", - "@tramvai/tokens-router": "2.40.0", - "@tramvai/tokens-server": "2.40.0" - }, - "peerDependencies": { - "@tinkoff/dippy": "0.8.9", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-router/-/module-router-2.160.1.tgz", + "integrity": "sha512-D/544P2UN0xxJwxSd5R8j8XQ3wX+qtmVVX2w+FAIZUb1bafj0QgUxjDVOF7dkgFT3fEck2LQygrdpL71J54hpA==", + "dependencies": { + "@tinkoff/errors": "0.3.8", + "@tinkoff/router": "0.2.19", + "@tinkoff/url": "0.8.6", + "@tramvai/experiments": "2.160.1", + "@tramvai/react": "2.160.1", + "@tramvai/safe-strings": "0.5.12", + "@tramvai/tokens-child-app": "2.160.1", + "@tramvai/tokens-render": "2.160.1", + "@tramvai/tokens-router": "2.160.1", + "@tramvai/tokens-server": "2.160.1" + }, + "peerDependencies": { + "@tinkoff/dippy": "0.8.16", "@tinkoff/utils": "^2.1.2", - "@tramvai/cli": "2.40.0", - "@tramvai/core": "2.40.0", - "@tramvai/module-log": "2.40.0", - "@tramvai/module-server": "2.40.0", - "@tramvai/papi": "2.40.0", - "@tramvai/state": "2.40.0", - "@tramvai/test-helpers": "2.40.0", - "@tramvai/test-mocks": "2.40.0", - "@tramvai/tokens-common": "2.40.0", + "@tramvai/cli": "2.160.1", + "@tramvai/core": "2.160.1", + "@tramvai/module-log": "2.160.1", + "@tramvai/module-server": "2.160.1", + "@tramvai/papi": "2.160.1", + "@tramvai/state": "2.160.1", + "@tramvai/test-helpers": "2.160.1", + "@tramvai/test-mocks": "2.160.1", + "@tramvai/tokens-common": "2.160.1", "react": "*", "tslib": "^2.4.0" } }, "node_modules/@tramvai/module-sentry": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-sentry/-/module-sentry-2.40.0.tgz", - "integrity": "sha512-ifkW7tY603+GKqqMpwd1QcfeUOfXdNoSGyIvmX0gTaj8Hh8fdCSQYFgkvknmpQGVvx4jEaq+U18kjU+3xetwuw==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-sentry/-/module-sentry-2.160.1.tgz", + "integrity": "sha512-rMYh7dqWx/cis/ed1b5cs1pTqs+MTsT0YBe6Gm+pmqvOtcvHXRBSFjGsR2sGgBeLQDSvXvI9uWw5dmVasg0PGg==", "dependencies": { "@sentry/node": "^6.17.2", "@sentry/types": "^6.17.2" }, "peerDependencies": { - "@tinkoff/dippy": "0.8.9", + "@tinkoff/dippy": "0.8.16", "@tinkoff/utils": "^2.1.2", - "@tramvai/core": "2.40.0", - "@tramvai/module-common": "2.40.0", - "@tramvai/react": "2.40.0", - "@tramvai/tokens-metrics": "2.40.0", - "@tramvai/tokens-render": "2.40.0", - "@tramvai/tokens-server-private": "2.40.0", + "@tramvai/core": "2.160.1", + "@tramvai/module-common": "2.160.1", + "@tramvai/react": "2.160.1", + "@tramvai/tokens-metrics": "2.160.1", + "@tramvai/tokens-render": "2.160.1", + "@tramvai/tokens-server-private": "2.160.1", "tslib": "^2.4.0" } }, "node_modules/@tramvai/module-seo": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-seo/-/module-seo-2.40.0.tgz", - "integrity": "sha512-z0ZKFs0MVxlgXhIuAljO4YHFRrpaScDc4Nj8ayrKObu5vUAie8DhySpCy3Lqs0wRfx9yj11tWPvS4qH4gi0fTA==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-seo/-/module-seo-2.160.1.tgz", + "integrity": "sha512-koCaBRMpK9uSZOtJI9WQe3zePEF2xUp22VWVGNQYiHpwnaXYxNL8F+Wu9UetXm04260u1rCrxe4y45UF4NZLow==", "dependencies": { - "@tinkoff/meta-tags-generate": "0.5.4" + "@tinkoff/meta-tags-generate": "0.5.11" }, "peerDependencies": { - "@tinkoff/dippy": "0.8.9", + "@tinkoff/dippy": "0.8.16", "@tinkoff/utils": "^2.1.2", - "@tramvai/core": "2.40.0", - "@tramvai/module-common": "2.40.0", - "@tramvai/state": "2.40.0", - "@tramvai/test-helpers": "2.40.0", - "@tramvai/tokens-render": "2.40.0", - "@tramvai/tokens-router": "2.40.0", + "@tramvai/core": "2.160.1", + "@tramvai/module-common": "2.160.1", + "@tramvai/state": "2.160.1", + "@tramvai/test-helpers": "2.160.1", + "@tramvai/test-mocks": "2.160.1", + "@tramvai/tokens-core-private": "2.160.1", + "@tramvai/tokens-render": "2.160.1", + "@tramvai/tokens-router": "2.160.1", "tslib": "^2.4.0" } }, "node_modules/@tramvai/module-server": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-server/-/module-server-2.40.0.tgz", - "integrity": "sha512-7XR3j7RNo9ZglfmFOzvdd4NPQVL3cO+GLu3pVaiOuSQFsLxMcQMznWEGSs34GFJfuVjXKDRtVjC8u/tuZpaWdQ==", - "dependencies": { - "@fastify/compress": "^6.1.1", - "@fastify/cookie": "^8.1.0", - "@fastify/formbody": "^7.2.0", - "@fastify/static": "^6.5.0", - "@tinkoff/errors": "0.3.5", - "@tinkoff/monkeypatch": "2.0.3", - "@tinkoff/terminus": "0.1.5", - "@tinkoff/url": "0.8.4", - "@tramvai/module-cache-warmup": "2.40.0", - "@tramvai/module-metrics": "2.40.0", - "@tramvai/papi": "2.40.0", - "@tramvai/tokens-server": "2.40.0", - "@tramvai/tokens-server-private": "2.40.0", - "fastify": "^4.6.0", - "fastify-plugin": "^4.2.1", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-server/-/module-server-2.160.1.tgz", + "integrity": "sha512-UuenMAngG7miunTqZR2qps85RICoPgf0W9ZuvpQjeX+obW5d/PiVMF9PE4r8BriTQdSqPWDWVvq0chZTcKDXVg==", + "dependencies": { + "@fastify/compress": "^6.2.0", + "@fastify/cookie": "^8.3.0", + "@fastify/formbody": "^7.4.0", + "@fastify/static": "^6.9.0", + "@loadable/server": "^5.15.0", + "@tinkoff/errors": "0.3.8", + "@tinkoff/monkeypatch": "2.0.5", + "@tinkoff/terminus": "0.1.9", + "@tinkoff/url": "0.8.6", + "@tramvai/module-cache-warmup": "2.160.1", + "@tramvai/module-metrics": "2.160.1", + "@tramvai/papi": "2.160.1", + "@tramvai/safe-strings": "0.5.12", + "@tramvai/tokens-router": "2.160.1", + "@tramvai/tokens-server": "2.160.1", + "@tramvai/tokens-server-private": "2.160.1", + "fastify": "^4.14.1", "http-proxy-middleware": "^2.0.2" }, "peerDependencies": { - "@tinkoff/dippy": "0.8.9", + "@tinkoff/dippy": "0.8.16", "@tinkoff/utils": "^2.1.2", - "@tramvai/cli": "2.40.0", - "@tramvai/core": "2.40.0", - "@tramvai/module-common": "2.40.0", - "@tramvai/module-environment": "2.40.0", - "@tramvai/tokens-common": "2.40.0", + "@tramvai/cli": "2.160.1", + "@tramvai/core": "2.160.1", + "@tramvai/module-common": "2.160.1", + "@tramvai/module-environment": "2.160.1", + "@tramvai/react": "2.160.1", + "@tramvai/tokens-common": "2.160.1", + "@tramvai/tokens-core-private": "2.160.1", + "@tramvai/tokens-render": "2.160.1", + "react": ">=16.14.0", + "react-dom": ">=16.14.0", "tslib": "^2.4.0" } }, "node_modules/@tramvai/papi": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/papi/-/papi-2.40.0.tgz", - "integrity": "sha512-QIjrMilyJjQNuVZooiMoTXAJjXy2PlJSz/D3vr11OmdmElxBWdJ6zvkNg/hFmu5AoaqGqIL+IaXh68g+BqLEbg==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/papi/-/papi-2.160.1.tgz", + "integrity": "sha512-tPy6aQiQ10w6FRpuq+vTh2oUClHBk/2340e73r24jz5UL/FyxPjOlcw9mQe/WFzPWB2wqyeS4TNDrXGSf1EPnw==", "dependencies": { - "@tinkoff/url": "0.8.4", + "@tinkoff/url": "0.8.6", "@tinkoff/utils": "^2.1.2", "tslib": "^2.4.0" } }, "node_modules/@tramvai/react": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/react/-/react-2.40.0.tgz", - "integrity": "sha512-B3oaQ5/aKiAx27wN1Ejg5w/cM0Dzt3NTJOrrYmEkoFEe7NuSXH2f8MjhIn5ATVfgytamxxhYlEsNt1luwgEDag==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/react/-/react-2.160.1.tgz", + "integrity": "sha512-KS2vE3af6zn34iNRtHhk7/5UhcNq4PU2qUVktF/DhobLwYVzMdiThTdP1PknuGy2Wq9vZfqETV8xk4j53yqCPw==", "dependencies": { "@loadable/component": "^5.15.2", - "@tramvai/types-actions-state-context": "2.40.0", + "@tramvai/types-actions-state-context": "2.160.1", "@types/loadable__component": "^5.13.4", "hoist-non-react-statics": "^3.3.0" }, "peerDependencies": { - "@tinkoff/dippy": "0.8.9", - "@tinkoff/url": "0.8.4", + "@tinkoff/dippy": "0.8.16", + "@tinkoff/url": "0.8.6", "@tinkoff/utils": "^2.1.2", "react": ">=16.14.0", "react-dom": ">=16.14.0", @@ -5079,22 +5623,22 @@ } }, "node_modules/@tramvai/safe-strings": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@tramvai/safe-strings/-/safe-strings-0.5.5.tgz", - "integrity": "sha512-/DjbY80RPWc1yZwfddFgf/aTSxWOq09veAR1LXPzFc5mJL+RD6x0PfCcuK2USNX002wDoU0jcvXuStAmGfMO/A==", + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/@tramvai/safe-strings/-/safe-strings-0.5.12.tgz", + "integrity": "sha512-nJMlDdC8SbNtP5M5f4x0OhW2r2t7V7zL8MZqYNcZIZL2UtyioqAZwIthO/qsDTBRtISAkfjFRkmdaIvOaNRdeA==", "dependencies": { "@tinkoff/utils": "^2.1.3", "tslib": "^2.4.0" } }, "node_modules/@tramvai/state": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/state/-/state-2.40.0.tgz", - "integrity": "sha512-N5dwriAVUopnlY2WbViUa6/NfBDHGXWB5JkNtiqhZ3IoGpt0IH5yWME67wXqrvuMGrcnFrRKLGwNBw+9oOu6TQ==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/state/-/state-2.160.1.tgz", + "integrity": "sha512-eImPWSCj92XLLDfAru7H+ajdhjZnkRkNYHbSOE/2hN2/nyBIDRpik57vbNKg3wUx2UjG2R9MH25BHj41Vm447g==", "dependencies": { - "@tinkoff/react-hooks": "0.1.4", + "@tinkoff/react-hooks": "0.1.6", "@tinkoff/utils": "^2.1.2", - "@tramvai/types-actions-state-context": "2.40.0", + "@tramvai/types-actions-state-context": "2.160.1", "@types/hoist-non-react-statics": "^3.3.1", "invariant": "^2.2.4", "react-is": ">=17", @@ -5109,13 +5653,13 @@ } }, "node_modules/@tramvai/test-helpers": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/test-helpers/-/test-helpers-2.40.0.tgz", - "integrity": "sha512-zep7qhuwPfDD3yxQwXa5W3jWoMWAwn2RWTr6pHCaRFBPQ1qRn5YTva3NVVPs0OcWR3esFCMl+59+LbMehvmicA==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/test-helpers/-/test-helpers-2.160.1.tgz", + "integrity": "sha512-DyWjioCUthdmd/laQ7oaHiM3XOx1ru3uu1gvzjrYqiGHIN3LXokzhi9HfGNMYQbsS0OR6xdWYAvYtf2apQp/+A==", "peer": true, "dependencies": { - "@tramvai/core": "2.40.0", - "@tramvai/test-mocks": "2.40.0", + "@tramvai/core": "2.160.1", + "@tramvai/test-mocks": "2.160.1", "@types/express": "^4.17.1", "@types/supertest": "^2.0.11", "fastify": "^4.6.0", @@ -5124,159 +5668,172 @@ "supertest": "^6.1.3" }, "peerDependencies": { - "@tinkoff/dippy": "0.8.9", + "@tinkoff/dippy": "0.8.16", "tslib": "^2.4.0" } }, "node_modules/@tramvai/test-mocks": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/test-mocks/-/test-mocks-2.40.0.tgz", - "integrity": "sha512-YEvvckFzn3AsgjxyHGQ+oWDEEFXwSao8Gz3V3MFsPFOKGFGrjsMITpTLmtxDrylO1biEkn/IaMSt+sKKRikL8g==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/test-mocks/-/test-mocks-2.160.1.tgz", + "integrity": "sha512-UfB8/GYyHgLEp5mPmr4JfstEUUCo1C76RFQKFNQ+d2e4Q6HNrzOBwFmD2u59CrxfxwZGPhQI7+WRd8P7pyt6Zw==", "peer": true, "dependencies": { - "@tinkoff/pubsub": "0.5.5", - "@tinkoff/router": "0.2.4", - "@tinkoff/url": "0.8.4", - "@tramvai/core": "2.40.0", - "@tramvai/module-common": "2.40.0", - "@tramvai/module-cookie": "2.40.0", - "@tramvai/state": "2.40.0", - "@tramvai/tokens-common": "2.40.0" + "@tinkoff/pubsub": "0.5.7", + "@tinkoff/router": "0.2.19", + "@tinkoff/url": "0.8.6", + "@tramvai/core": "2.160.1", + "@tramvai/module-common": "2.160.1", + "@tramvai/module-cookie": "2.160.1", + "@tramvai/state": "2.160.1", + "@tramvai/tokens-common": "2.160.1" }, "peerDependencies": { - "@tinkoff/dippy": "0.8.9", + "@tinkoff/dippy": "0.8.16", "@tinkoff/utils": "^2.1.2", "tslib": "^2.4.0" } }, "node_modules/@tramvai/tokens-child-app": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-child-app/-/tokens-child-app-2.40.0.tgz", - "integrity": "sha512-QUpyT//TsJknJP7yRtLWebOY1sU6NsEvHpPwS07UVgdoAuf7SQ3cHEdPU2ibkYDI7EDlCQ91B0dii77hz6ch9w==", - "peerDependencies": { - "@tinkoff/dippy": "0.8.9", - "@tramvai/core": "2.40.0", - "@tramvai/state": "2.40.0", - "@tramvai/tokens-common": "2.40.0", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-child-app/-/tokens-child-app-2.160.1.tgz", + "integrity": "sha512-c06SS5O5Rgkc9GsHPPWANTwNG9FxEONNeLKg7QFaTtTyQHz+3FezNTo4MqgrANxfsLOGqfuwOVrnwcyOw9uldg==", + "peerDependencies": { + "@tinkoff/dippy": "0.8.16", + "@tramvai/core": "2.160.1", + "@tramvai/state": "2.160.1", + "@tramvai/tokens-common": "2.160.1", "react": ">=16.14.0" } }, "node_modules/@tramvai/tokens-common": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-common/-/tokens-common-2.40.0.tgz", - "integrity": "sha512-oU7Re1RXfRc8kGRHkqgQH5hI45ubYZPhd4BW+QnEBzmcAwqeufKGBLsqJ2aeQQRfJv/q8ZyJUDrOxS83Nq766w==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-common/-/tokens-common-2.160.1.tgz", + "integrity": "sha512-QOIasrrHi4UKwqDm4TQSpBdyF+9bG9JwC5dffMPwhqgj65uCF7seUCMOpWJeoVU1no1sisfmrXeieEoVnq18+g==", "dependencies": { "@tinkoff/lru-cache-nano": "^7.8.1", - "@tinkoff/url": "0.8.4", - "@tramvai/react": "2.40.0", - "@tramvai/tokens-core": "2.40.0" + "@tinkoff/url": "0.8.6", + "@tramvai/react": "2.160.1", + "@tramvai/tokens-core": "2.160.1", + "node-abort-controller": "^3.0.1" }, "peerDependencies": { - "@tinkoff/dippy": "0.8.9", - "@tinkoff/logger": "0.10.54", - "@tramvai/types-actions-state-context": "2.40.0", + "@tinkoff/dippy": "0.8.16", + "@tinkoff/logger": "0.10.67", + "@tramvai/types-actions-state-context": "2.160.1", "react": ">=16.8", "tslib": "^2.4.0" } }, "node_modules/@tramvai/tokens-cookie": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-cookie/-/tokens-cookie-2.40.0.tgz", - "integrity": "sha512-Gndg0YRR+nx+KX3lAeQj3aXBkqezIDbrLdV9PC4ZTvsr5eW5H6v4uwC2JSKdt4ePjv6vPy5uCsgOrWtwu4qe8A==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-cookie/-/tokens-cookie-2.160.1.tgz", + "integrity": "sha512-I1mxpTwarVdZL5iRlHrb3qA3vmXya1gflLt0mMwPwZ44UeYVBvkPedOYet6iF8Xnx00eoUk2OhkUUuTVn2jRYQ==", "peerDependencies": { - "@tinkoff/dippy": "0.8.9" + "@tinkoff/dippy": "0.8.16" } }, "node_modules/@tramvai/tokens-core": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-core/-/tokens-core-2.40.0.tgz", - "integrity": "sha512-ZV8QXk8mXmYxcNqkytaSfK+PM26ddxgNpKjNZB/USHWCBIlO3QY3wlWMvjwNQ+Mb1j3bwphD2MUKv6H1fSmnSw==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-core/-/tokens-core-2.160.1.tgz", + "integrity": "sha512-1MYhIxkxZ4Zjyo28Hx38sfTXekPAeVYPpuJZk9r9ERKanw9NIpC/NB3HnRxGIxpFB8fwKSXwGvEPWcA1TfMkGg==", + "dependencies": { + "@tramvai/types-actions-state-context": "2.160.1" + }, + "peerDependencies": { + "@tinkoff/dippy": "0.8.16", + "tslib": "^2.4.0" + } + }, + "node_modules/@tramvai/tokens-core-private": { + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-core-private/-/tokens-core-private-2.160.1.tgz", + "integrity": "sha512-ZVde5DUtsyz/q3kLwhdFINHdlCKOaYUCRInBVwRLSWqbJur4zwq9CyUIuLYN5a1f5YSjYl1toVb7IGnpZPt7pQ==", "dependencies": { - "@tramvai/types-actions-state-context": "2.40.0" + "@tramvai/tokens-core": "2.160.1" }, "peerDependencies": { - "@tinkoff/dippy": "0.8.9", + "@tinkoff/dippy": "0.8.16", "tslib": "^2.4.0" } }, "node_modules/@tramvai/tokens-http-client": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-http-client/-/tokens-http-client-2.40.0.tgz", - "integrity": "sha512-j6J4le8rlecgXEckOLnlghPThNVHeEAtvagX7DuNEopNDrHsgZLEHs5gAySH68VARxBH1k6J6K8gtFuoE0o9cQ==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-http-client/-/tokens-http-client-2.160.1.tgz", + "integrity": "sha512-bhuDqSyjFtzrwO7A01F1Xtd00CQsY8BZlHh3QsrxI2gzBfqVUnESxjGMgC+MCPGe6EpbvegFnWoTD5DqPlXE/w==", "peerDependencies": { - "@tinkoff/dippy": "0.8.9", + "@tinkoff/dippy": "0.8.16", "tslib": "^2.4.0" } }, "node_modules/@tramvai/tokens-metrics": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-metrics/-/tokens-metrics-2.40.0.tgz", - "integrity": "sha512-5Xj8dJE09bVhQWOous7QmPf6FvRHbjeS3+E/LZXyfARRGNSpOrqEA0RrI1e/kqSc3NBDHis/JUcFNVcuPL2jVA==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-metrics/-/tokens-metrics-2.160.1.tgz", + "integrity": "sha512-u2CNNHNlGDH2dui7lWnmp61aRo1S2+dohk4daReUkcnfLB29A0RVyse+XAAvOx4e2ARD1pwtJo3zf26CIsZQSg==", "dependencies": { - "prom-client": "^12.0.0" + "prom-client": "^14.2.0" }, "peerDependencies": { - "@tinkoff/dippy": "0.8.9", + "@tinkoff/dippy": "0.8.16", "tslib": "^2.4.0" } }, "node_modules/@tramvai/tokens-render": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-render/-/tokens-render-2.40.0.tgz", - "integrity": "sha512-izUQq4FIMOQxEHAjWtOZnw4G9OTZU+8qs1wUGf5T5O/KG173xQy44A1cM8agoO1n1Y2hiJTxNHGklpQdFFxbqg==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-render/-/tokens-render-2.160.1.tgz", + "integrity": "sha512-KNNbRZQVXDk8fBVihJQS30IURE7kLUHCTkHhsrKSd0OEtOcl7293E1V18XeVfoCk9vXIMdQ0/WwikmNfsgIoBw==", "dependencies": { - "@tinkoff/htmlpagebuilder": "0.5.5" + "@tinkoff/htmlpagebuilder": "0.5.8" }, "peerDependencies": { - "@tinkoff/dippy": "0.8.9", + "@tinkoff/dippy": "0.8.16", "react": ">=16.14.0", "tslib": "^2.4.0" } }, "node_modules/@tramvai/tokens-router": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-router/-/tokens-router-2.40.0.tgz", - "integrity": "sha512-4bfvRWyASXPQaHvRS/uatuO4Rc6KVDO465eMdzS4OiXXMx40c8mM2PKezcDEJI4cOxkwOovZP5VIc9SVLU2JkQ==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-router/-/tokens-router-2.160.1.tgz", + "integrity": "sha512-suP3n8Sbl+VCGyhUWc+swOp0RMblSztt8lMI16HEBC13kWh05eZCiHuugy6xAV/gMQKV/x0Z3tfUlmf/DoTBDA==", "dependencies": { - "@tinkoff/router": "0.2.4", - "@tramvai/tokens-common": "2.40.0" + "@tinkoff/router": "0.2.19", + "@tramvai/react": "2.160.1" }, "peerDependencies": { - "@tinkoff/dippy": "0.8.9", + "@tinkoff/dippy": "0.8.16", "tslib": "^2.4.0" } }, "node_modules/@tramvai/tokens-server": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-server/-/tokens-server-2.40.0.tgz", - "integrity": "sha512-zBAksZk2ndDP1qtQrmTjobnmTUljNKhXEsDwf2R2U9dts+C9CZAlGjQPvq0D6nlVKtXO3mVDdr4IrB+wWjOtTA==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-server/-/tokens-server-2.160.1.tgz", + "integrity": "sha512-jv9meI6hqBtDAbu/lUfdQdXFVlbw0HX1B7Pj6ZnLyATYu3RpQ8Tzdotnbl1E7Ak4K4x3xI2KZwFrO39LYg8KZQ==", "dependencies": { - "@tramvai/papi": "2.40.0" + "@tramvai/papi": "2.160.1" }, "peerDependencies": { - "@tinkoff/dippy": "0.8.9", + "@tinkoff/dippy": "0.8.16", "tslib": "^2.4.0" } }, "node_modules/@tramvai/tokens-server-private": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-server-private/-/tokens-server-private-2.40.0.tgz", - "integrity": "sha512-Xkwe7GghqCF0kL1vZWs3wc4bTWZ5NNp56leiL2NYseUmly2mR/HRczRWHDJ8hsUIjsk5LHB8t2xE0Xr9pSTE2A==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-server-private/-/tokens-server-private-2.160.1.tgz", + "integrity": "sha512-wuqYYNrHA5fFTlr77Veg/WNPGh+nVWVChBkJXteJ8pgqAMMXCYPHmW1DrOXHukG3fsQUWXxAE03CIQSHJkcC2A==", "dependencies": { - "@tramvai/papi": "2.40.0" + "@tramvai/papi": "2.160.1" }, "peerDependencies": { - "@tinkoff/dippy": "0.8.9", + "@tinkoff/dippy": "0.8.16", "fastify": "^4.6.0", "tslib": "^2.4.0" } }, "node_modules/@tramvai/tools-check-versions": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/@tramvai/tools-check-versions/-/tools-check-versions-0.4.5.tgz", - "integrity": "sha512-STrwYhKSe9j4IthWAeKhYPrJ0WUI4hggQgKITfpcCcoluwkp1vQXQozEiX7AoesTMHJUSMgsYYa6vLEyO/VfCQ==", + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/@tramvai/tools-check-versions/-/tools-check-versions-0.4.18.tgz", + "integrity": "sha512-xL2gKvZasyA39JRvwGiddBdV7mRiXBX5wKt+DVG77Wgk7Xy+t1SjoT5ISmT3eND4TAmQdYfA9XbW0yjhyQ61GQ==", "dependencies": { - "@tinkoff/logger": "0.10.54", + "@tinkoff/logger": "0.10.67", "@tinkoff/utils": "^2.1.2", "fs-extra": "^9.0.0", "p-map": "^4.0.0", @@ -5288,9 +5845,9 @@ } }, "node_modules/@tramvai/tools-check-versions/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -5302,19 +5859,19 @@ } }, "node_modules/@tramvai/tools-migrate": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/@tramvai/tools-migrate/-/tools-migrate-0.6.6.tgz", - "integrity": "sha512-vP6jGDFOSasAxiTOutVFykctZzJLn7AHnMGWBmMJrmcCsr4QwuLSJTjS6QR0IeFCYZHfrU6SvpA9BqCrKUjb/w==", + "version": "0.6.23", + "resolved": "https://registry.npmjs.org/@tramvai/tools-migrate/-/tools-migrate-0.6.23.tgz", + "integrity": "sha512-FOdCxtch13eUPu8y2dLP4ZqPDPU87cFs4Qiw0VFa8JQigS6vvBipGU5S6OvW2j6VBoGtOTmvzpNDB8n/B2kZwQ==", "dependencies": { - "@tinkoff/logger": "0.10.54", - "@tinkoff/package-manager-wrapper": "0.1.4", + "@tinkoff/logger": "0.10.67", + "@tinkoff/package-manager-wrapper": "0.1.9", "@tinkoff/utils": "^2.1.2", "env-ci": "^5.0.2", "fast-glob": "^3.2.2", "fs-extra": "^9.0.0", - "jscodeshift": "^0.13.0", + "jscodeshift": "^0.15.0", "p-map": "^4.0.0", - "recast": "^0.17.2", + "recast": "^0.23.4", "tslib": "^2.4.0" }, "bin": { @@ -5335,48 +5892,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@tramvai/tools-migrate/node_modules/ast-types": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", - "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@tramvai/tools-migrate/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@tramvai/tools-migrate/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@tramvai/tools-migrate/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -5408,31 +5923,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/@tramvai/tools-migrate/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@tramvai/tools-migrate/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@tramvai/tools-migrate/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -5441,58 +5931,29 @@ "node": ">=8" } }, - "node_modules/@tramvai/tools-migrate/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@tramvai/tools-migrate/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@tramvai/tools-migrate/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@tramvai/tools-migrate/node_modules/jscodeshift": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.13.1.tgz", - "integrity": "sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==", - "dependencies": { - "@babel/core": "^7.13.16", - "@babel/parser": "^7.13.16", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/preset-flow": "^7.13.13", - "@babel/preset-typescript": "^7.13.0", - "@babel/register": "^7.13.16", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz", + "integrity": "sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==", + "dependencies": { + "@babel/core": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.23.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/preset-flow": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@babel/register": "^7.22.15", "babel-core": "^7.0.0-bridge.0", "chalk": "^4.1.2", "flow-parser": "0.*", "graceful-fs": "^4.2.4", - "micromatch": "^3.1.10", + "micromatch": "^4.0.4", "neo-async": "^2.5.0", "node-dir": "^0.1.17", - "recast": "^0.20.4", + "recast": "^0.23.3", "temp": "^0.8.4", "write-file-atomic": "^2.3.0" }, @@ -5501,51 +5962,11 @@ }, "peerDependencies": { "@babel/preset-env": "^7.1.6" - } - }, - "node_modules/@tramvai/tools-migrate/node_modules/jscodeshift/node_modules/recast": { - "version": "0.20.5", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz", - "integrity": "sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==", - "dependencies": { - "ast-types": "0.14.2", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@tramvai/tools-migrate/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@tramvai/tools-migrate/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" + "peerDependenciesMeta": { + "@babel/preset-env": { + "optional": true + } } }, "node_modules/@tramvai/tools-migrate/node_modules/supports-color": { @@ -5559,27 +5980,16 @@ "node": ">=8" } }, - "node_modules/@tramvai/tools-migrate/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@tramvai/types-actions-state-context": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/types-actions-state-context/-/types-actions-state-context-2.40.0.tgz", - "integrity": "sha512-YpfpUDLgF5C/Vh06o940FDCfxPHhd1LHxbUt1OUMEROieMkna6c8rJQ8LLY2R3cxV5HHgJTN0lhp+UjqPnXVMA==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/types-actions-state-context/-/types-actions-state-context-2.160.1.tgz", + "integrity": "sha512-G6DGxt7IEuS6LVDWJYUV7E0rnid/oHlh/txdOzAnReLxRdrysO/eAxGcMIhCGTpDU7diCjU01Pkrj1zNxAUskA==", "dependencies": { + "node-abort-controller": "^3.0.1", "tslib": "^2.4.0" }, "peerDependencies": { - "@tinkoff/dippy": "0.8.9" + "@tinkoff/dippy": "0.8.16" } }, "node_modules/@trysound/sax": { @@ -5591,9 +6001,9 @@ } }, "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "peer": true, "dependencies": { "@types/connect": "*", @@ -5601,18 +6011,18 @@ } }, "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "peer": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", + "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", "peer": true }, "node_modules/@types/eslint": { @@ -5639,9 +6049,9 @@ "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" }, "node_modules/@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "peer": true, "dependencies": { "@types/body-parser": "*", @@ -5651,14 +6061,15 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.33", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", - "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", + "version": "4.17.43", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", + "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", "peer": true, "dependencies": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "node_modules/@types/glob": { @@ -5679,6 +6090,12 @@ "hoist-non-react-statics": "^3.3.0" } }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "peer": true + }, "node_modules/@types/http-proxy": { "version": "1.17.9", "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", @@ -5697,22 +6114,22 @@ } }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" }, "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dependencies": { "@types/istanbul-lib-report": "*" } @@ -5744,10 +6161,16 @@ "@types/react": "*" } }, + "node_modules/@types/methods": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", + "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", + "peer": true + }, "node_modules/@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "peer": true }, "node_modules/@types/minimatch": { @@ -5773,9 +6196,9 @@ "dev": true }, "node_modules/@types/object-path": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@types/object-path/-/object-path-0.11.1.tgz", - "integrity": "sha512-219LSCO9HPcoXcRTC6DbCs0FRhZgBnEMzf16RRqkT40WbkKx3mOeQuz3e2XqbfhOz/AHfbru0kzB1n1RCAsIIg==" + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/@types/object-path/-/object-path-0.11.4.tgz", + "integrity": "sha512-4tgJ1Z3elF/tOMpA8JLVuR9spt9Ynsf7+JjqsQ2IqtiPJtcLoHoXcT6qU4E10cPFqyXX5HDm9QwIzZhBSkLxsw==" }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -5787,21 +6210,16 @@ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, - "node_modules/@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" - }, "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "version": "6.9.11", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", "peer": true }, "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "peer": true }, "node_modules/@types/react": { @@ -5813,35 +6231,55 @@ "csstype": "^3.0.2" } }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.7.tgz", + "integrity": "sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==" + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "peer": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } }, "node_modules/@types/serve-static": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", - "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", "peer": true, "dependencies": { + "@types/http-errors": "*", "@types/mime": "*", "@types/node": "*" } }, "node_modules/@types/superagent": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.16.tgz", - "integrity": "sha512-tLfnlJf6A5mB6ddqF159GqcDizfzbMUB1/DeT59/wBNqzRTNNKsaw79A/1TZ84X+f/EwWH8FeuSkjlCLyqS/zQ==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.3.tgz", + "integrity": "sha512-R/CfN6w2XsixLb1Ii8INfn+BT9sGPvw74OavfkW4SwY+jeUcAwLZv2+bXLJkndnimxjEBm0RPHgcjW9pLCa8cw==", "peer": true, "dependencies": { - "@types/cookiejar": "*", + "@types/cookiejar": "^2.1.5", + "@types/methods": "^1.1.4", "@types/node": "*" } }, "node_modules/@types/supertest": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.12.tgz", - "integrity": "sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.16.tgz", + "integrity": "sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg==", "peer": true, "dependencies": { "@types/superagent": "*" @@ -5855,10 +6293,15 @@ "@types/node": "*" } }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + }, "node_modules/@types/ua-parser-js": { - "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.36.tgz", - "integrity": "sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==" + "version": "0.7.39", + "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.39.tgz", + "integrity": "sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg==" }, "node_modules/@types/uuid": { "version": "9.0.1", @@ -5877,17 +6320,17 @@ } }, "node_modules/@types/yargs": { - "version": "17.0.13", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", - "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.41.0", @@ -5922,9 +6365,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -6048,9 +6491,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -6089,9 +6532,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -6121,142 +6564,145 @@ } }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dependencies": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, @@ -6312,9 +6758,9 @@ } }, "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "bin": { "acorn": "bin/acorn" }, @@ -6322,23 +6768,39 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "peerDependencies": { + "acorn": "^8" + } + }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "devOptional": true, + "dev": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", "engines": { "node": ">=0.4.0" } }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -6363,40 +6825,9 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -6405,20 +6836,23 @@ }, "funding": { "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "url": "https://github.com/sponsors/epoberezkin" + } }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": { + "ajv": "^8.0.0" + }, "peerDependencies": { - "ajv": "^6.9.1" + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, "node_modules/ansi-align": { @@ -6521,6 +6955,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "dependencies": { "sprintf-js": "~1.0.2" } @@ -6663,24 +7098,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.reduce": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", - "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", @@ -6703,6 +7120,18 @@ "safer-buffer": "~2.1.0" } }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -6720,9 +7149,12 @@ } }, "node_modules/ast-types": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.12.4.tgz", - "integrity": "sha512-ky/YVYCbtVAS8TdMIaTiPFHwEpRB5z1hctepJplTr3UW5q8TDrpIMCILyk8pmLxGtn2KCtC/lSn7zOsaI7nzDw==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", + "dependencies": { + "tslib": "^2.0.1" + }, "engines": { "node": ">=4" } @@ -6737,11 +7169,16 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">=8" } }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -6806,14 +7243,29 @@ "postcss": "^8.1.0" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/avvio": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.2.0.tgz", - "integrity": "sha512-bbCQdg7bpEv6kGH41RO/3B2/GMMmJSo2iBK+X8AWN9mujtfUipMDfIjsgHCfpnKqoGEQrrmCDKSa5OQ19+fDmg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.3.0.tgz", + "integrity": "sha512-VBVH0jubFr9LdFASy/vNtm5giTrnbVquWBhT0fyizuNK2rQ7e7ONU2plZQWUNqtE1EmxFEb+kbSkFRkstiaS9Q==", "dependencies": { + "@fastify/error": "^3.3.0", "archy": "^1.0.0", "debug": "^4.0.0", - "fastq": "^1.6.1" + "fastq": "^1.17.1" } }, "node_modules/aws-sign2": { @@ -6878,6 +7330,34 @@ "webpack": ">=2" } }, + "node_modules/babel-loader/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/babel-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/babel-loader/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, "node_modules/babel-loader/node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -6958,21 +7438,6 @@ "node": ">=10" } }, - "node_modules/babel-plugin-module-resolver": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz", - "integrity": "sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==", - "dependencies": { - "find-babel-config": "^1.2.0", - "glob": "^7.1.6", - "pkg-up": "^3.1.0", - "reselect": "^4.0.0", - "resolve": "^1.13.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", @@ -7118,9 +7583,9 @@ } }, "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -7295,9 +7760,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "funding": [ { "type": "opencollective", @@ -7306,13 +7771,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -7322,61 +7791,36 @@ } }, "node_modules/browserslist-generator": { - "version": "1.0.66", - "resolved": "https://registry.npmjs.org/browserslist-generator/-/browserslist-generator-1.0.66.tgz", - "integrity": "sha512-aFDax4Qzh29DdyhHQBD2Yu2L5OvaDnvYFMbmpLrLwwaNK4H6dHEhC/Nxv93/+mfAA+a/t94ln0P2JZvHO6LZDA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/browserslist-generator/-/browserslist-generator-2.1.0.tgz", + "integrity": "sha512-ZFz4mAOgqm0cbwKaZsfJbYDbTXGoPANlte7qRsRJOfjB9KmmISQrXJxAVrnXG8C8v/QHNzXyeJt0Cfcks6zZvQ==", "dependencies": { - "@mdn/browser-compat-data": "^4.1.16", + "@mdn/browser-compat-data": "^5.3.7", "@types/object-path": "^0.11.1", - "@types/semver": "^7.3.9", + "@types/semver": "^7.5.0", "@types/ua-parser-js": "^0.7.36", - "browserslist": "4.20.2", - "caniuse-lite": "^1.0.30001328", - "isbot": "3.4.5", + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001518", + "isbot": "^3.6.13", "object-path": "^0.11.8", - "semver": "^7.3.7", - "ua-parser-js": "^1.0.2" + "semver": "^7.5.4", + "ua-parser-js": "^1.0.35" }, "engines": { - "node": ">=8.0.0" + "node": ">=16.15.1", + "npm": ">=7.0.0", + "pnpm": ">=3.2.0", + "yarn": ">=1.13" }, "funding": { "type": "github", "url": "https://github.com/wessberg/browserslist-generator?sponsor=1" } }, - "node_modules/browserslist-generator/node_modules/browserslist": { - "version": "4.20.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", - "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001317", - "electron-to-chromium": "^1.4.84", - "escalade": "^3.1.1", - "node-releases": "^2.0.2", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, "node_modules/browserslist-generator/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -7388,9 +7832,9 @@ } }, "node_modules/browserslist-generator/node_modules/ua-parser-js": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.32.tgz", - "integrity": "sha512-dXVsz3M4j+5tTiovFVyVqssXBu5HM47//YSOeZ9fQkdDKkfzv2v3PP1jmH6FUyPW+yCSn7aBVK1fGGKNhowdDA==", + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", "funding": [ { "type": "opencollective", @@ -7399,6 +7843,10 @@ { "type": "paypal", "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" } ], "engines": { @@ -7433,6 +7881,17 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", @@ -7465,22 +7924,67 @@ "node": ">=0.10.0" } }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "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.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==" }, "node_modules/callsites": { "version": "3.1.0", @@ -7536,9 +8040,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001427", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001427.tgz", - "integrity": "sha512-lfXQ73oB9c8DP5Suxaszm+Ta2sr/4tf8+381GkIm1MLj/YdLf+rEDyDSRCzeltuyTVGm+/s18gdZ0q+Wmp8VsQ==", + "version": "1.0.30001589", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001589.tgz", + "integrity": "sha512-vNQWS6kI+q6sBlHbh71IIeC+sRwK2N3EDySc/updIGhIee2x5z00J4c1242/5/d6EpEMdOnk/m+6tuk4/tcsqg==", "funding": [ { "type": "opencollective", @@ -7547,6 +8051,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ] }, @@ -7641,9 +8149,18 @@ } }, "node_modules/ci-info": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.5.0.tgz", - "integrity": "sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==" + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } }, "node_modules/class-utils": { "version": "0.3.6", @@ -7670,69 +8187,16 @@ "node": ">=0.10.0" } }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/clean-stack": { @@ -7858,6 +8322,17 @@ "node": ">=6" } }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/clsx": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", @@ -7866,19 +8341,6 @@ "node": ">=6" } }, - "node_modules/coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dependencies": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "engines": { - "node": ">= 4.0" - } - }, "node_modules/collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -7918,9 +8380,9 @@ "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" }, "node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" }, "node_modules/colors": { "version": "1.4.0", @@ -7955,17 +8417,25 @@ "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" }, "node_modules/compatfactory": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/compatfactory/-/compatfactory-1.0.1.tgz", - "integrity": "sha512-hR9u0HSZTKDNNchPtMHg6myeNx0XO+av7UZIJPsi4rPALJBHi/W5Mbwi19hC/xm6y3JkYpxVYjTqnSGsU5X/iw==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/compatfactory/-/compatfactory-2.0.9.tgz", + "integrity": "sha512-fvO+AWcmbO7P1S+A3mwm3IGr74eHMeq5ZLhNhyNQc9mVDNHT4oe0Gg0ksdIFFNXLK7k7Z/TYcLAUSQdRgh1bsA==", "dependencies": { - "helpertypes": "^0.0.18" + "helpertypes": "^0.0.19" }, "engines": { "node": ">=14.9.0" @@ -8137,11 +8607,11 @@ } }, "node_modules/core-js-compat": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.0.tgz", - "integrity": "sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A==", + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", + "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", "dependencies": { - "browserslist": "^4.21.4" + "browserslist": "^4.22.3" }, "funding": { "type": "opencollective", @@ -8158,24 +8628,50 @@ "url": "https://opencollective.com/core-js" } }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, - "node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=8" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/cp-file": { @@ -8503,17 +8999,25 @@ "node": ">=14.9.0" } }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "engines": { + "node": ">=8" + } + }, "node_modules/css-class-generator": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/css-class-generator/-/css-class-generator-2.0.0.tgz", "integrity": "sha512-zlmG8hCTmtc+3Esj1R5PgXCKDqJT1Uqhm8NyALvg3kSjAK0+tByFTkMhEh101V+f7toETM4RGigBU4BjGvphLg==" }, "node_modules/css-declaration-sorter": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz", - "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.1.1.tgz", + "integrity": "sha512-dZ3bVTEEc1vxr3Bek9vGwfB5Z6ESPULhcRvO472mfjVnj8jRcTnKO8/JTczlvxM10Myb+wBM++1MtdO76eWcaQ==", "engines": { - "node": "^10 || ^12 || >=14" + "node": "^14 || ^16 || >=18" }, "peerDependencies": { "postcss": "^8.0.9" @@ -8554,9 +9058,9 @@ } }, "node_modules/css-loader/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -8568,16 +9072,16 @@ } }, "node_modules/css-minimizer-webpack-plugin": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz", - "integrity": "sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", "dependencies": { - "cssnano": "^5.1.8", - "jest-worker": "^29.1.2", - "postcss": "^8.4.17", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", + "jest-worker": "^29.4.3", + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.1" }, "engines": { "node": ">= 14.15.0" @@ -8610,21 +9114,6 @@ } } }, - "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", @@ -8636,20 +9125,15 @@ "ajv": "^8.8.2" } }, - "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dependencies": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 12.13.0" @@ -8659,18 +9143,11 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/css-select": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "peer": true, "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.0.1", @@ -8682,11 +9159,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" - }, "node_modules/css-tree": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", @@ -8730,76 +9202,75 @@ } }, "node_modules/cssnano": { - "version": "5.1.14", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.14.tgz", - "integrity": "sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.0.4.tgz", + "integrity": "sha512-Bp607LopXmwV9TPUxw76yvcvRk4AYrrtHtLsndAnSWUwT4xgaiC6Eaa44cZ6ciu9J7Sqv9zocMTDcyQnU4dihw==", "dependencies": { - "cssnano-preset-default": "^5.2.13", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" + "cssnano-preset-default": "^6.0.4", + "lilconfig": "^3.1.1" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/cssnano" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/cssnano-preset-default": { - "version": "5.2.13", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz", - "integrity": "sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==", - "dependencies": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.3", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.3", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.4", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.1", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.1", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.4.tgz", + "integrity": "sha512-mvyBIFHaFA4lkBwePlB9Gycnf/rgFQRKcP/yHG/tbD0ZuIdCDSF1GoL4QC4gcp8qaJOkmVmb0mCXMR6Wi4Da0A==", + "dependencies": { + "css-declaration-sorter": "^7.1.1", + "cssnano-utils": "^4.0.1", + "postcss-calc": "^9.0.1", + "postcss-colormin": "^6.0.2", + "postcss-convert-values": "^6.0.3", + "postcss-discard-comments": "^6.0.1", + "postcss-discard-duplicates": "^6.0.2", + "postcss-discard-empty": "^6.0.2", + "postcss-discard-overridden": "^6.0.1", + "postcss-merge-longhand": "^6.0.2", + "postcss-merge-rules": "^6.0.3", + "postcss-minify-font-values": "^6.0.1", + "postcss-minify-gradients": "^6.0.1", + "postcss-minify-params": "^6.0.2", + "postcss-minify-selectors": "^6.0.2", + "postcss-normalize-charset": "^6.0.1", + "postcss-normalize-display-values": "^6.0.1", + "postcss-normalize-positions": "^6.0.1", + "postcss-normalize-repeat-style": "^6.0.1", + "postcss-normalize-string": "^6.0.1", + "postcss-normalize-timing-functions": "^6.0.1", + "postcss-normalize-unicode": "^6.0.2", + "postcss-normalize-url": "^6.0.1", + "postcss-normalize-whitespace": "^6.0.1", + "postcss-ordered-values": "^6.0.1", + "postcss-reduce-initial": "^6.0.2", + "postcss-reduce-transforms": "^6.0.1", + "postcss-svgo": "^6.0.2", + "postcss-unique-selectors": "^6.0.2" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, "node_modules/cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.1.tgz", + "integrity": "sha512-6qQuYDqsGoiXssZ3zct6dcMxiqfT6epy7x4R0TQJadd4LWO3sPR6JH6ZByOvVLoZ6EdwPGgd7+DR1EmX3tiXQQ==", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/csso": { @@ -8829,9 +9300,9 @@ } }, "node_modules/csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", + "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" }, "node_modules/damerau-levenshtein": { "version": "1.0.8", @@ -8851,9 +9322,12 @@ } }, "node_modules/date-fns": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", - "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, "engines": { "node": ">=0.11" }, @@ -8867,6 +9341,11 @@ "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==" }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -8917,22 +9396,41 @@ } }, "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "engines": { "node": ">=0.10" } }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "engines": { "node": ">=0.10.0" } @@ -8948,6 +9446,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", @@ -9060,6 +9579,19 @@ "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" }, + "node_modules/detect-port": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + } + }, "node_modules/dezalgo": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", @@ -9085,7 +9617,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "devOptional": true, + "dev": true, "dependencies": { "esutils": "^2.0.2" }, @@ -9097,6 +9629,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "peer": true, "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -9106,6 +9639,15 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "peer": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -9121,6 +9663,7 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "peer": true, "dependencies": { "domelementtype": "^2.2.0" }, @@ -9135,6 +9678,7 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "peer": true, "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -9165,6 +9709,11 @@ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" + }, "node_modules/duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -9176,20 +9725,6 @@ "stream-shift": "^1.0.0" } }, - "node_modules/duplexify/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -9204,10 +9739,24 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + "version": "1.4.680", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.680.tgz", + "integrity": "sha512-4nToZ5jlPO14W82NkF32wyjhYqQByVaDmLy4J2/tYcAbJfgO2TKJC780Az1V13gzq4l73CJ0yuyalpXvxXXD9A==" }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -9231,6 +9780,25 @@ "node": ">= 0.8" } }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -9266,7 +9834,7 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "devOptional": true, + "dev": true, "dependencies": { "ansi-colors": "^4.1.1" }, @@ -9275,9 +9843,12 @@ } }, "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } @@ -9299,6 +9870,7 @@ "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "optional": true, "dependencies": { "prr": "~1.0.1" }, @@ -9371,15 +9943,29 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-array-method-boxes-properly": { + "node_modules/es-define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } }, "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==" }, "node_modules/es-shim-unscopables": { "version": "1.0.0", @@ -9406,11 +9992,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, "node_modules/es6-promisify": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz", @@ -9441,7 +10022,7 @@ "version": "7.32.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -9623,9 +10204,9 @@ } }, "node_modules/eslint-import-resolver-webpack/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -9862,12 +10443,12 @@ } }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -9941,7 +10522,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "devOptional": true, + "dev": true, "engines": { "node": ">=10" } @@ -9950,16 +10531,32 @@ "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "devOptional": true, + "dev": true, "dependencies": { "@babel/highlight": "^7.10.4" } }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -9974,7 +10571,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -9990,7 +10587,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -10002,13 +10599,13 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true + "dev": true }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "devOptional": true, + "dev": true, "engines": { "node": ">=10" }, @@ -10020,7 +10617,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "devOptional": true, + "dev": true, "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -10035,16 +10632,16 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">=4" } }, "node_modules/eslint/node_modules/globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", - "devOptional": true, + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -10059,7 +10656,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">=8" } @@ -10068,16 +10665,22 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "devOptional": true, + "dev": true, "engines": { "node": ">= 4" } }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "node_modules/eslint/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "devOptional": true, + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -10092,7 +10695,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -10104,7 +10707,7 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">=10" }, @@ -10116,7 +10719,7 @@ "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "devOptional": true, + "dev": true, "dependencies": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", @@ -10126,11 +10729,23 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/espree/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/espree/node_modules/eslint-visitor-keys": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">=4" } @@ -10151,7 +10766,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "devOptional": true, + "dev": true, "dependencies": { "estraverse": "^5.1.0" }, @@ -10291,67 +10906,22 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" + "is-extendable": "^0.1.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/expand-brackets/node_modules/is-extendable": { @@ -10362,14 +10932,6 @@ "node": ">=0.10.0" } }, - "node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/expand-brackets/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -10556,6 +11118,11 @@ "node": ">= 0.10" } }, + "node_modules/fast-content-type-parse": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz", + "integrity": "sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==" + }, "node_modules/fast-decode-uri-component": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", @@ -10573,9 +11140,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -10593,56 +11160,37 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-json-stringify": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.4.0.tgz", - "integrity": "sha512-PIzon53oX/zEGLrGbu4DpfNcYiV4K4rk+JsVrawRPO/G8cNBEMZ3KlIk2BCGqN+m1KCCA4zt5E7Hh3GG9ojRVA==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.12.0.tgz", + "integrity": "sha512-7Nnm9UPa7SfHRbHVA1kJQrGXCRzB7LMlAAqHXQFkEQqueJm1V8owm0FsE/2Do55/4CcdhwiLQERaKomOnKQkyA==", "dependencies": { - "@fastify/deepmerge": "^1.0.0", + "@fastify/merge-json-schemas": "^0.1.0", "ajv": "^8.10.0", "ajv-formats": "^2.1.1", "fast-deep-equal": "^3.1.3", "fast-uri": "^2.1.0", + "json-schema-ref-resolver": "^1.0.1", "rfdc": "^1.2.0" } }, - "node_modules/fast-json-stringify/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/fast-json-stringify/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "devOptional": true + "dev": true }, "node_modules/fast-querystring": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.0.0.tgz", - "integrity": "sha512-3LQi62IhQoDlmt4ULCYmh17vRO2EtS7hTSsG4WwoKWgV7GLMKBOecEh+aiavASnLx8I2y89OD33AGLo0ccRhzA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", + "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==", "dependencies": { "fast-decode-uri-component": "^1.0.1" } }, "node_modules/fast-redact": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", - "integrity": "sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", + "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==", "engines": { "node": ">=6" } @@ -10654,9 +11202,9 @@ "peer": true }, "node_modules/fast-uri": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.1.0.tgz", - "integrity": "sha512-qKRta6N7BWEFVlyonVY/V+BMLgFqktCUV0QjT259ekAIlbVrMaFnFLxJ4s/JPl4tou56S1BzPufI60bLe29fHA==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.3.0.tgz", + "integrity": "sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw==" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", @@ -10668,35 +11216,47 @@ } }, "node_modules/fastify": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.9.2.tgz", - "integrity": "sha512-Mk3hv7ZRet2huMYN6IJ8RGy1TAAC7LJsCEjxLf808zafAADNu43xRzbl7FSEIBxKyhntTM0F626Oc34LUNcUxQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.26.1.tgz", + "integrity": "sha512-tznA/G55dsxzM5XChBfcvVSloG2ejeeotfPPJSFaWmHyCDVGMpvf3nRNbsCb/JTBF9RmQFBfuujWt3Nphjesng==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], "dependencies": { - "@fastify/ajv-compiler": "^3.3.1", - "@fastify/error": "^3.0.0", - "@fastify/fast-json-stringify-compiler": "^4.1.0", + "@fastify/ajv-compiler": "^3.5.0", + "@fastify/error": "^3.4.0", + "@fastify/fast-json-stringify-compiler": "^4.3.0", "abstract-logging": "^2.0.1", - "avvio": "^8.2.0", - "find-my-way": "^7.3.0", - "light-my-request": "^5.6.1", - "pino": "^8.5.0", - "process-warning": "^2.0.0", + "avvio": "^8.3.0", + "fast-content-type-parse": "^1.1.0", + "fast-json-stringify": "^5.8.0", + "find-my-way": "^8.0.0", + "light-my-request": "^5.11.0", + "pino": "^8.17.0", + "process-warning": "^3.0.0", "proxy-addr": "^2.0.7", "rfdc": "^1.3.0", - "secure-json-parse": "^2.5.0", - "semver": "^7.3.7", - "tiny-lru": "^9.0.2" + "secure-json-parse": "^2.7.0", + "semver": "^7.5.4", + "toad-cache": "^3.3.0" } }, "node_modules/fastify-plugin": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-4.3.0.tgz", - "integrity": "sha512-M3+i368lV0OYTJ5TfClIoPKEKSOF7112iiPdwgfSR0gN98BjA1Nk+c6oBHtfcVt9KiMxl+EQKHC1QNWo3ZOpYQ==" + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-4.5.1.tgz", + "integrity": "sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==" }, "node_modules/fastify/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -10708,9 +11268,9 @@ } }, "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dependencies": { "reusify": "^1.0.4" } @@ -10733,7 +11293,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "devOptional": true, + "dev": true, "dependencies": { "flat-cache": "^3.0.4" }, @@ -10760,6 +11320,33 @@ "webpack": "^4.0.0 || ^5.0.0" } }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -10801,26 +11388,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/find-babel-config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz", - "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", - "dependencies": { - "json5": "^0.5.1", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/find-babel-config/node_modules/json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", - "bin": { - "json5": "lib/cli.js" - } - }, "node_modules/find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", @@ -10852,9 +11419,9 @@ } }, "node_modules/find-my-way": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-7.3.1.tgz", - "integrity": "sha512-kGvM08SOkqvheLcuQ8GW9t/H901Qb9rZEbcNWbXopzy4jDRoaJpJoObPSKf4MnQLZ20ZTp7rL5MpF6rf+pqmyg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-8.1.0.tgz", + "integrity": "sha512-41QwjCGcVTODUmLLqTMeoHeiozbMXYMAE1CKFiDyi9zVZ2Vjh0yz3MF0WQZoIb+cmzP/XlbFjlF2NtJmvZHznA==", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-querystring": "^1.0.0", @@ -10896,7 +11463,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "devOptional": true, + "dev": true, "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -10909,13 +11476,7 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "devOptional": true - }, - "node_modules/flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", - "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", - "deprecated": "flatten is deprecated in favor of utility frameworks such as lodash." + "dev": true }, "node_modules/flow-parser": { "version": "0.191.0", @@ -10944,6 +11505,14 @@ } } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -10961,41 +11530,30 @@ } }, "node_modules/fork-ts-checker-webpack-plugin": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz", - "integrity": "sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", + "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", "dependencies": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^7.0.1", "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" }, "engines": { - "node": ">=10", + "node": ">=12.13.0", "yarn": ">=1.0.0" }, "peerDependencies": { - "eslint": ">= 6", - "typescript": ">= 2.7", - "vue-template-compiler": "*", - "webpack": ">= 4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } + "typescript": ">3.6.0", + "webpack": "^5.11.0" } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { @@ -11043,35 +11601,46 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dependencies": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=12" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -11093,14 +11662,6 @@ "node": ">=8" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "engines": { - "node": ">=6" - } - }, "node_modules/form-data": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", @@ -11182,20 +11743,6 @@ "readable-stream": "^2.0.0" } }, - "node_modules/from2/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "node_modules/fromentries": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", @@ -11230,9 +11777,9 @@ } }, "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==" }, "node_modules/fs-readdir-recursive": { "version": "1.1.0", @@ -11258,9 +11805,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.5", @@ -11283,7 +11833,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "devOptional": true + "dev": true }, "node_modules/functions-have-names": { "version": "1.2.3", @@ -11318,13 +11868,18 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11338,6 +11893,11 @@ "node": ">=6" } }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, "node_modules/get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", @@ -11505,16 +12065,54 @@ "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", "dev": true }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/got/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, - "node_modules/growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==" - }, "node_modules/gzip-size": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", @@ -11578,6 +12176,26 @@ "node": ">=6" } }, + "node_modules/har-validator/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/har-validator/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -11637,11 +12255,22 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11659,11 +12288,11 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -11730,6 +12359,17 @@ "node": ">=0.10.0" } }, + "node_modules/hasown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", + "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -11749,9 +12389,9 @@ } }, "node_modules/helpertypes": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/helpertypes/-/helpertypes-0.0.18.tgz", - "integrity": "sha512-XRhfbSEmR+poXUC5/8AbmYNJb2riOT6qPzjGJZr0S9YedHiaY+/tzPYzWMUclYMEdCYo/1l8PDYrQFCj02v97w==", + "version": "0.0.19", + "resolved": "https://registry.npmjs.org/helpertypes/-/helpertypes-0.0.19.tgz", + "integrity": "sha512-J00e55zffgi3yVnUp0UdbMztNkr2PnizEkOe9URNohnrNhW5X0QpegkuLpOmFQInpi93Nb8MCjQRHAiCDF42NQ==", "engines": { "node": ">=10.0.0" } @@ -11784,17 +12424,40 @@ "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-entities": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + }, + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "dependencies": { + "void-elements": "3.1.0" } }, - "node_modules/html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" - }, "node_modules/html-tags": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", @@ -11807,6 +12470,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -11897,6 +12565,36 @@ "resolved": "https://registry.npmjs.org/human-size/-/human-size-1.1.0.tgz", "integrity": "sha512-87GIsh59t9qL2939KBKmnT/EfcFk1suakkHoTjHsdnXB/JEU0ibz+9HRiwMueGVhKuRGby6bOtQHd+mIt4BIAQ==" }, + "node_modules/i18next": { + "version": "23.10.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.10.0.tgz", + "integrity": "sha512-/TgHOqsa7/9abUKJjdPeydoyDc0oTi/7u9F8lMSj6ufg4cbC1Oj3f/Jja7zj7WRIhEQKB7Q4eN6y68I9RDxxGQ==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "dependencies": { + "@babel/runtime": "^7.23.2" + } + }, + "node_modules/i18next-browser-languagedetector": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.2.0.tgz", + "integrity": "sha512-U00DbDtFIYD3wkWsr2aVGfXGAj2TgnELzOX9qv8bT0aJtvPV9CRO77h+vgmHFBMe7LAxdwvT/7VkCWGya6L3tA==", + "dependencies": { + "@babel/runtime": "^7.23.2" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -11919,6 +12617,11 @@ "postcss": "^8.1.0" } }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -11939,17 +12642,17 @@ ] }, "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "engines": { "node": ">= 4" } }, "node_modules/image-size": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", - "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", + "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", "dependencies": { "queue": "6.0.2" }, @@ -11957,7 +12660,7 @@ "image-size": "bin/image-size.js" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.x" } }, "node_modules/import-fresh": { @@ -12000,11 +12703,6 @@ "node": ">=8" } }, - "node_modules/indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==" - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -12022,8 +12720,7 @@ "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "node_modules/inquirer": { "version": "7.3.3", @@ -12392,14 +13089,29 @@ } }, "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", "dependencies": { - "kind-of": "^6.0.0" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-arrayish": { @@ -12461,25 +13173,25 @@ } }, "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", "dependencies": { - "kind-of": "^6.0.0" + "hasown": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/is-date-object": { @@ -12497,30 +13209,15 @@ } }, "node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4" } }, "node_modules/is-extendable": { @@ -12550,6 +13247,20 @@ "node": ">=8" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -12577,6 +13288,26 @@ "lower-case": "^1.1.0" } }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -12610,6 +13341,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -12663,6 +13402,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -12713,6 +13460,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -12742,6 +13503,17 @@ "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" }, + "node_modules/is-url-superb": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-url-superb/-/is-url-superb-4.0.0.tgz", + "integrity": "sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -12766,17 +13538,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is2": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.4.tgz", @@ -12807,9 +13568,9 @@ } }, "node_modules/isbot": { - "version": "3.4.5", - "resolved": "https://registry.npmjs.org/isbot/-/isbot-3.4.5.tgz", - "integrity": "sha512-+KD6q1BBtw0iK9aGBGSfxJ31/ZgizKRjhm8ebgJUBMx0aeeQuIJ1I72beCoIrltIZGrSm4vmrxRxrG5n1aUTtw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/isbot/-/isbot-3.8.0.tgz", + "integrity": "sha512-vne1mzQUTR+qsMLeCBL9+/tgnDXRyc2pygLGl/WsgA+EZKIiB5Ehu0CiVTHIIk30zhJ24uGz4M5Ppse37aR0Hg==", "engines": { "node": ">=12" } @@ -12832,6 +13593,87 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jake/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/java-properties": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", @@ -12846,11 +13688,11 @@ "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==" }, "node_modules/jest-util": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz", - "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -12926,12 +13768,12 @@ } }, "node_modules/jest-worker": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.3.1.tgz", - "integrity": "sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dependencies": { "@types/node": "*", - "jest-util": "^29.3.1", + "jest-util": "^29.7.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -12982,6 +13824,7 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -13198,6 +14041,11 @@ "node": ">=4" } }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" + }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -13213,16 +14061,24 @@ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, + "node_modules/json-schema-ref-resolver": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz", + "integrity": "sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + } + }, "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "devOptional": true + "dev": true }, "node_modules/json-stringify-safe": { "version": "5.0.1", @@ -13230,9 +14086,9 @@ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "bin": { "json5": "lib/cli.js" }, @@ -13251,6 +14107,14 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", @@ -13286,6 +14150,14 @@ "node": ">=8" } }, + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dependencies": { + "json-buffer": "3.0.0" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -13323,6 +14195,17 @@ "language-subtag-registry": "~0.3.2" } }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/less": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz", @@ -13392,11 +14275,19 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "engines": { + "node": ">=6" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "devOptional": true, + "dev": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -13406,23 +14297,28 @@ } }, "node_modules/light-my-request": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.6.1.tgz", - "integrity": "sha512-sbJnC1UBRivi9L1kICr3CESb82pNiPNB3TvtdIrZZqW0Qh8uDXvoywMmWKZlihDcmw952CMICCzM+54LDf+E+g==", + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.11.1.tgz", + "integrity": "sha512-KXAh2m6VRlkWCk2KfmHE7tLBXKh30JE0tXUJY4dNxje4oLmPKUqlUfImiEQZLphx+Z9KTQcVv4DjGnJxkVOIbA==", "dependencies": { - "cookie": "^0.5.0", + "cookie": "^0.6.0", "process-warning": "^2.0.0", "set-cookie-parser": "^2.4.1" } }, "node_modules/light-my-request/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "engines": { "node": ">= 0.6" } }, + "node_modules/light-my-request/node_modules/process-warning": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.3.2.tgz", + "integrity": "sha512-n9wh8tvBe5sFmsqlg+XQhaQLumwpqoAUruLwjCopgTmUBjJ/fjtBsJzKleCaIGBOMXYEhp1YfKl4d7rJ5ZKJGA==" + }, "node_modules/lightning-pool": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/lightning-pool/-/lightning-pool-2.4.0.tgz", @@ -13437,11 +14333,14 @@ } }, "node_modules/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, "node_modules/lines-and-columns": { @@ -13542,13 +14441,18 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "devOptional": true + "dev": true + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "devOptional": true + "dev": true }, "node_modules/lodash.uniq": { "version": "4.5.0", @@ -13658,6 +14562,14 @@ "lower-case": "^1.1.2" } }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/lru_map": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", @@ -13703,9 +14615,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } @@ -13773,11 +14685,11 @@ } }, "node_modules/memfs": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.9.tgz", - "integrity": "sha512-3rm8kbrzpUGRyPKSGuk387NZOwQ90O4rI9tsWQkzNW7BLSnKGp23RsEsKK8N8QVCrtJoAMqy3spxHC4os4G6PQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dependencies": { - "fs-monkey": "^1.0.3" + "fs-monkey": "^1.0.4" }, "engines": { "node": ">= 4.0.0" @@ -13903,6 +14815,14 @@ "node": ">=6" } }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" + } + }, "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -13913,9 +14833,9 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", - "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", "dependencies": { "schema-utils": "^4.0.0" }, @@ -13930,21 +14850,6 @@ "webpack": "^5.0.0" } }, - "node_modules/mini-css-extract-plugin/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", @@ -13956,20 +14861,15 @@ "ajv": "^8.8.2" } }, - "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dependencies": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 12.13.0" @@ -14031,14 +14931,11 @@ } }, "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dependencies": { - "yallist": "^4.0.0" - }, + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/mixin-deep": { @@ -14065,9 +14962,9 @@ } }, "node_modules/mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", "engines": { "node": ">=10" } @@ -14083,9 +14980,15 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -14124,7 +15027,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "devOptional": true + "dev": true }, "node_modules/negotiator": { "version": "0.6.3", @@ -14197,41 +15100,6 @@ "he": "1.2.0" } }, - "node_modules/node-notifier": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz", - "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==", - "dependencies": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - } - }, - "node_modules/node-notifier/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-notifier/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/node-plop": { "version": "0.26.3", "resolved": "https://registry.npmjs.org/node-plop/-/node-plop-0.26.3.tgz", @@ -14280,9 +15148,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, "node_modules/noop-stream": { "version": "0.1.0", @@ -14319,9 +15187,9 @@ } }, "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -14350,14 +15218,11 @@ } }, "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/npm-run-path": { @@ -14441,47 +15306,16 @@ "node": ">=0.10.0" } }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/object-copy/node_modules/kind-of": { @@ -14503,6 +15337,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -14578,23 +15427,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", - "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", - "dependencies": { - "array.prototype.reduce": "^1.0.4", - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object.hasown": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", @@ -14623,6 +15455,7 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -14636,9 +15469,12 @@ } }, "node_modules/on-exit-leak-free": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", - "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "engines": { + "node": ">=14.0.0" + } }, "node_modules/on-finished": { "version": "2.4.1", @@ -14693,7 +15529,7 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "devOptional": true, + "dev": true, "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -14819,6 +15655,14 @@ "node": ">=6" } }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "engines": { + "node": ">=6" + } + }, "node_modules/p-event": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", @@ -14929,6 +15773,20 @@ "node": ">=6" } }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/param-case": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", @@ -15101,20 +15959,20 @@ } }, "node_modules/pino": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.7.0.tgz", - "integrity": "sha512-l9sA5uPxmZzwydhMWUcm1gI0YxNnYl8MfSr2h8cwLvOAzQLBLewzF247h/vqHe3/tt6fgtXeG9wdjjoetdI/vA==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.19.0.tgz", + "integrity": "sha512-oswmokxkav9bADfJ2ifrvfHUwad6MLp73Uat0IkQWY3iAw5xTRoznXbXksZs8oaOUMpmhVWD+PZogNzllWpJaA==", "dependencies": { "atomic-sleep": "^1.0.0", "fast-redact": "^3.1.1", "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "v1.0.0", + "pino-abstract-transport": "v1.1.0", "pino-std-serializers": "^6.0.0", - "process-warning": "^2.0.0", + "process-warning": "^3.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^3.1.0", + "sonic-boom": "^3.7.0", "thread-stream": "^2.0.0" }, "bin": { @@ -15122,23 +15980,88 @@ } }, "node_modules/pino-abstract-transport": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", - "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz", + "integrity": "sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==", "dependencies": { "readable-stream": "^4.0.0", "split2": "^4.0.0" } }, + "node_modules/pino-abstract-transport/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/pino-abstract-transport/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/pino-abstract-transport/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/pino-abstract-transport/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/pino-std-serializers": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.0.0.tgz", - "integrity": "sha512-mMMOwSKrmyl+Y12Ri2xhH1lbzQxwwpuru9VjyJpgFIH4asSj88F2csdMwN6+M5g1Ll4rmsYghHLQJw81tgZ7LQ==" + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", + "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==" }, "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "engines": { "node": ">= 6" } @@ -15265,73 +16188,14 @@ }, "engines": { "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dependencies": { - "p-limit": "^2.0.0" - }, + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/port-used": { @@ -15350,10 +16214,18 @@ "node": ">=0.10.0" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { - "version": "8.4.19", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", - "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", "funding": [ { "type": "opencollective", @@ -15362,10 +16234,14 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -15411,91 +16287,94 @@ } }, "node_modules/postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", "dependencies": { - "postcss-selector-parser": "^6.0.9", + "postcss-selector-parser": "^6.0.11", "postcss-value-parser": "^4.2.0" }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, "peerDependencies": { "postcss": "^8.2.2" } }, "node_modules/postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.0.2.tgz", + "integrity": "sha512-TXKOxs9LWcdYo5cgmcSHPkyrLAh86hX1ijmyy6J8SbOhyv6ua053M3ZAM/0j44UsnQNIWdl8gb5L7xX2htKeLw==", "dependencies": { - "browserslist": "^4.16.6", + "browserslist": "^4.22.2", "caniuse-api": "^3.0.0", "colord": "^2.9.1", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-convert-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", - "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.0.3.tgz", + "integrity": "sha512-Tj+VH3GtQxvBVX6hhggIUaAMLDbqoHgsAFeZ8iCOD03hnho+wrOF2IsahY9o4MANtaJEjqABrhD1SqwIILGH9A==", "dependencies": { - "browserslist": "^4.21.4", + "browserslist": "^4.22.2", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.1.tgz", + "integrity": "sha512-f1KYNPtqYLUeZGCHQPKzzFtsHaRuECe6jLakf/RjSRqvF5XHLZnM2+fXLhb8Qh/HBFHs3M4cSLb1k3B899RYIg==", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.2.tgz", + "integrity": "sha512-U2rsj4w6pAGROCCcD13LP2eBIi1whUsXs4kgE6xkIuGfkbxCBSKhkCTWyowFd66WdVlLv0uM1euJKIgmdmZObg==", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.2.tgz", + "integrity": "sha512-rj6pVC2dVCJrP0Y2RkYTQEbYaCf4HEm+R/2StQgJqGHxAa3+KcYslNQhcRqjLHtl/4wpzipJluaJLqBj6d5eDQ==", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.1.tgz", + "integrity": "sha512-qs0ehZMMZpSESbRkw1+inkf51kak6OOzNRaoLd/U7Fatp0aN2HQ1rxGOrJvYcRAN9VpX8kUF13R2ofn8OlvFVA==", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-image-set-polyfill": { @@ -15594,9 +16473,9 @@ } }, "node_modules/postcss-loader/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -15613,95 +16492,95 @@ "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==" }, "node_modules/postcss-merge-longhand": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", - "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.2.tgz", + "integrity": "sha512-+yfVB7gEM8SrCo9w2lCApKIEzrTKl5yS1F4yGhV3kSim6JzbfLGJyhR1B6X+6vOT0U33Mgx7iv4X9MVWuaSAfw==", "dependencies": { "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.1" + "stylehacks": "^6.0.2" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-merge-rules": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz", - "integrity": "sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.3.tgz", + "integrity": "sha512-yfkDqSHGohy8sGYIJwBmIGDv4K4/WrJPX355XrxQb/CSsT4Kc/RxDi6akqn5s9bap85AWgv21ArcUWwWdGNSHA==", "dependencies": { - "browserslist": "^4.21.4", + "browserslist": "^4.22.2", "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" + "cssnano-utils": "^4.0.1", + "postcss-selector-parser": "^6.0.15" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.1.tgz", + "integrity": "sha512-tIwmF1zUPoN6xOtA/2FgVk1ZKrLcCvE0dpZLtzyyte0j9zUeB8RTbCqrHZGjJlxOvNWKMYtunLrrl7HPOiR46w==", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.1.tgz", + "integrity": "sha512-M1RJWVjd6IOLPl1hYiOd5HQHgpp6cvJVLrieQYS9y07Yo8itAr6jaekzJphaJFR0tcg4kRewCk3kna9uHBxn/w==", "dependencies": { "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", + "cssnano-utils": "^4.0.1", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-minify-params": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", - "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.0.2.tgz", + "integrity": "sha512-zwQtbrPEBDj+ApELZ6QylLf2/c5zmASoOuA4DzolyVGdV38iR2I5QRMsZcHkcdkZzxpN8RS4cN7LPskOkTwTZw==", "dependencies": { - "browserslist": "^4.21.4", - "cssnano-utils": "^3.1.0", + "browserslist": "^4.22.2", + "cssnano-utils": "^4.0.1", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-minify-selectors": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", - "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.2.tgz", + "integrity": "sha512-0b+m+w7OAvZejPQdN2GjsXLv5o0jqYHX3aoV0e7RBKPCsB7TYG5KKWBFhGnB/iP3213Ts8c5H4wLPLMm7z28Sg==", "dependencies": { - "postcss-selector-parser": "^6.0.5" + "postcss-selector-parser": "^6.0.15" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-modules-extract-imports": { @@ -15797,109 +16676,46 @@ } }, "node_modules/postcss-modules-values-replace": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values-replace/-/postcss-modules-values-replace-3.4.0.tgz", - "integrity": "sha512-pY8iCSKxdt25uE+N4dO1PUUDOl8FIuvtZfT5964TuFJVhq+CEG8uqDpOCpCnqda/3K9ZFCNo4prn84H9SgP4Rw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values-replace/-/postcss-modules-values-replace-4.1.0.tgz", + "integrity": "sha512-CdS84304AXiPI2QWXz6lynehaR6qvjc9EwGDO9l+30Tek28Mfm3CqkhVv3T29Tv2J6O+j5fEZNCSOSQBajwQZw==", "dependencies": { - "enhanced-resolve": "^3.1.0", - "es6-promisify": "^5.0.0", - "icss-utils": "^4.0.0", - "loader-utils": "^2.0.0", - "postcss": "^7.0.0", - "postcss-values-parser": "^1.3.1" + "enhanced-resolve": "^5.12.0", + "es6-promisify": "^7.0.0", + "icss-utils": "^5.1.0", + "loader-utils": "^3.2.1", + "postcss-values-parser": "^6.0.2" + }, + "peerDependencies": { + "postcss": "^8.2.9" } }, "node_modules/postcss-modules-values-replace/node_modules/enhanced-resolve": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", - "integrity": "sha512-ZaAux1rigq1e2nQrztHn4h2ugvpzZxs64qneNah+8Mh/K0CRqJFJc+UoXnUsq+1yX+DmQFPPdVqboKAJ89e0Iw==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "object-assign": "^4.0.1", - "tapable": "^0.2.7" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" + "node": ">=10.13.0" } }, "node_modules/postcss-modules-values-replace/node_modules/es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", - "dependencies": { - "es6-promise": "^4.0.3" - } - }, - "node_modules/postcss-modules-values-replace/node_modules/icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "dependencies": { - "postcss": "^7.0.14" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-values-replace/node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "node_modules/postcss-modules-values-replace/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - }, - "node_modules/postcss-modules-values-replace/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-modules-values-replace/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/postcss-modules-values-replace/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz", + "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/postcss-modules-values-replace/node_modules/tapable": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.9.tgz", - "integrity": "sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==", + "node_modules/postcss-modules-values-replace/node_modules/loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", "engines": { - "node": ">=0.6" + "node": ">= 12.13.0" } }, "node_modules/postcss-nested": { @@ -15921,172 +16737,171 @@ } }, "node_modules/postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.1.tgz", + "integrity": "sha512-aW5LbMNRZ+oDV57PF9K+WI1Z8MPnF+A8qbajg/T8PP126YrGX1f9IQx21GI2OlGz7XFJi/fNi0GTbY948XJtXg==", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.1.tgz", + "integrity": "sha512-mc3vxp2bEuCb4LgCcmG1y6lKJu1Co8T+rKHrcbShJwUmKJiEl761qb/QQCfFwlrvSeET3jksolCR/RZuMURudw==", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-positions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", - "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.1.tgz", + "integrity": "sha512-HRsq8u/0unKNvm0cvwxcOUEcakFXqZ41fv3FOdPn916XFUrympjr+03oaLkuZENz3HE9RrQE9yU0Xv43ThWjQg==", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-repeat-style": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", - "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.1.tgz", + "integrity": "sha512-Gbb2nmCy6tTiA7Sh2MBs3fj9W8swonk6lw+dFFeQT68B0Pzwp1kvisJQkdV6rbbMSd9brMlS8I8ts52tAGWmGQ==", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.1.tgz", + "integrity": "sha512-5Fhx/+xzALJD9EI26Aq23hXwmv97Zfy2VFrt5PLT8lAhnBIZvmaT5pQk+NuJ/GWj/QWaKSKbnoKDGLbV6qnhXg==", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.1.tgz", + "integrity": "sha512-4zcczzHqmCU7L5dqTB9rzeqPWRMc0K2HoR+Bfl+FSMbqGBUcP5LRfgcH4BdRtLuzVQK1/FHdFoGT3F7rkEnY+g==", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-unicode": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", - "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.2.tgz", + "integrity": "sha512-Ff2VdAYCTGyMUwpevTZPZ4w0+mPjbZzLLyoLh/RMpqUqeQKZ+xMm31hkxBavDcGKcxm6ACzGk0nBfZ8LZkStKA==", "dependencies": { - "browserslist": "^4.21.4", + "browserslist": "^4.22.2", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.1.tgz", + "integrity": "sha512-jEXL15tXSvbjm0yzUV7FBiEXwhIa9H88JOXDGQzmcWoB4mSjZIsmtto066s2iW9FYuIrIF4k04HA2BKAOpbsaQ==", "dependencies": { - "normalize-url": "^6.0.1", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.1.tgz", + "integrity": "sha512-76i3NpWf6bB8UHlVuLRxG4zW2YykF9CTEcq/9LGAiz2qBuX5cBStadkk0jSkg9a9TCIXbMQz7yzrygKoCW9JuA==", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-ordered-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", - "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.1.tgz", + "integrity": "sha512-XXbb1O/MW9HdEhnBxitZpPFbIvDgbo9NK4c/5bOfiKpnIGZDoL2xd7/e6jW5DYLsWxBbs+1nZEnVgnjnlFViaA==", "dependencies": { - "cssnano-utils": "^3.1.0", + "cssnano-utils": "^4.0.1", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-reduce-initial": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz", - "integrity": "sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.0.2.tgz", + "integrity": "sha512-YGKalhNlCLcjcLvjU5nF8FyeCTkCO5UtvJEt0hrPZVCTtRLSOH4z00T1UntQPj4dUmIYZgMj8qK77JbSX95hSw==", "dependencies": { - "browserslist": "^4.21.4", + "browserslist": "^4.22.2", "caniuse-api": "^3.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.1.tgz", + "integrity": "sha512-fUbV81OkUe75JM+VYO1gr/IoA2b/dRiH6HvMwhrIBSUrxq3jNZQZitSnugcTLDi1KkQh1eR/zi+iyxviUNBkcQ==", "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-resolve-nested-selector": { @@ -16112,9 +16927,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -16133,60 +16948,32 @@ } }, "node_modules/postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.2.tgz", + "integrity": "sha512-IH5R9SjkTkh0kfFOQDImyy1+mTCb+E830+9SV1O+AaDcoHTvfsvt6WwJeo7KwcHbFnevZVCsXhDmjFiGVuwqFQ==", "dependencies": { "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" + "svgo": "^3.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >= 18" }, "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/postcss-svgo/node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" + "postcss": "^8.4.31" } }, "node_modules/postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.2.tgz", + "integrity": "sha512-8IZGQ94nechdG7Y9Sh9FlIY2b4uS8/k8kdKRX040XHsS3B6d1HrJAkXrBSsSu4SuARruSsUjW3nlSw8BHkaAYQ==", "dependencies": { - "postcss-selector-parser": "^6.0.5" + "postcss-selector-parser": "^6.0.15" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/postcss-value-parser": { @@ -16195,31 +16982,47 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "node_modules/postcss-values-parser": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-1.5.0.tgz", - "integrity": "sha512-3M3p+2gMp0AH3da530TlX8kiO1nxdTnc3C6vr8dMxRLIlh8UYkz0/wcwptSXjhtx2Fr0TySI7a+BHDQ8NL7LaQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-6.0.2.tgz", + "integrity": "sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw==", "dependencies": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "color-name": "^1.1.4", + "is-url-superb": "^4.0.0", + "quote-unquote": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "peerDependencies": { + "postcss": "^8.2.9" } }, + "node_modules/postcss-values-parser/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "devOptional": true, + "dev": true, "engines": { "node": ">= 0.8.0" } }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "engines": { + "node": ">=4" + } + }, "node_modules/prettier": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", - "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "peer": true, "bin": { "prettier": "bin-prettier.js" @@ -16249,6 +17052,17 @@ "node": ">=6.0.0" } }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/pretty-time": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", @@ -16290,6 +17104,7 @@ "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "peer": true, "engines": { "node": ">= 0.6" } @@ -16308,23 +17123,23 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/process-warning": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.0.0.tgz", - "integrity": "sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==" }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "devOptional": true, + "dev": true, "engines": { "node": ">=0.4.0" } }, "node_modules/prom-client": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-12.0.0.tgz", - "integrity": "sha512-JbzzHnw0VDwCvoqf8y1WDtq4wSBAbthMB1pcVI/0lzdqHGJI3KBJDXle70XK+c7Iv93Gihqo0a5LlOn+g8+DrQ==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-14.2.0.tgz", + "integrity": "sha512-sF308EhTenb/pDRPakm+WgiN+VdM/T1RaHj1x+MvAuT8UiQP8JmOEbxVqtkbfR4LrvOg5n7ic01kRBDGXjYikA==", "dependencies": { "tdigest": "^0.1.1" }, @@ -16370,7 +17185,8 @@ "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "optional": true }, "node_modules/psl": { "version": "1.9.0", @@ -16408,9 +17224,9 @@ } }, "node_modules/pumpify/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -16444,15 +17260,6 @@ "node": ">= 6.0" } }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, "node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -16508,6 +17315,11 @@ "node": ">=8" } }, + "node_modules/quote-unquote": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/quote-unquote/-/quote-unquote-1.0.0.tgz", + "integrity": "sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg==" + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -16546,6 +17358,28 @@ "node": ">= 0.8" } }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react": { "version": "17.0.1", "resolved": "https://registry.npmjs.org/react/-/react-17.0.1.tgz", @@ -16586,6 +17420,27 @@ "react": "^16.8.0 || ^17" } }, + "node_modules/react-i18next": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.0.5.tgz", + "integrity": "sha512-5+bQSeEtgJrMBABBL5lO7jPdSNAbeAZ+MlFWDw//7FnVacuVu3l9EeWFzBQvZsKy+cihkbThWOAThEdH8YjGEw==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "html-parse-stringify": "^3.0.1" + }, + "peerDependencies": { + "i18next": ">= 23.2.3", + "react": ">= 16.8.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, "node_modules/react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", @@ -16803,9 +17658,9 @@ } }, "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -16821,40 +17676,17 @@ } }, "node_modules/readable-stream": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.2.0.tgz", - "integrity": "sha512-gJrBHsaI3lgBoGMW/jHZsQ/o/TIWiu5ENCJG1BB7fuCKzpFM8GaS2UoBVt9NO+oI+3FcrBNbUkl3ilDe09aY4A==", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/readable-stream/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "node_modules/readdirp": { @@ -16877,14 +17709,15 @@ } }, "node_modules/recast": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.17.6.tgz", - "integrity": "sha512-yoQRMRrK1lszNtbkGyM4kN45AwylV5hMiuEveUBlxytUViWevjvX6w+tzJt1LH4cfUhWt4NZvy3ThIhu6+m5wQ==", + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.4.tgz", + "integrity": "sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==", "dependencies": { - "ast-types": "0.12.4", + "assert": "^2.0.0", + "ast-types": "^0.16.1", "esprima": "~4.0.0", - "private": "^0.1.8", - "source-map": "~0.6.1" + "source-map": "~0.6.1", + "tslib": "^2.0.1" }, "engines": { "node": ">= 4" @@ -16917,9 +17750,9 @@ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dependencies": { "regenerate": "^1.4.2" }, @@ -16928,14 +17761,14 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", - "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "node_modules/regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dependencies": { "@babel/runtime": "^7.8.4" } @@ -16972,7 +17805,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "devOptional": true, + "dev": true, "engines": { "node": ">=8" }, @@ -16981,25 +17814,42 @@ } }, "node_modules/regexpu-core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", - "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dependencies": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" + "unicode-match-property-value-ecmascript": "^2.1.0" }, "engines": { "node": ">=4" } }, - "node_modules/regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==" + "node_modules/registry-auth-token": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } }, "node_modules/regjsparser": { "version": "0.9.1", @@ -17128,17 +17978,12 @@ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, - "node_modules/reselect": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.6.tgz", - "integrity": "sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ==" - }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -17163,6 +18008,14 @@ "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", "deprecated": "https://github.com/lydell/resolve-url#deprecated" }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -17193,9 +18046,9 @@ } }, "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", + "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==" }, "node_modules/rimraf": { "version": "3.0.2", @@ -17241,21 +18094,76 @@ "node": ">=8.0.0" } }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/rollup-plugin-terser/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/rollup-plugin-ts": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-ts/-/rollup-plugin-ts-3.0.2.tgz", - "integrity": "sha512-67qi2QTHewhLyKDG6fX3jpohWpmUPPIT/xJ7rsYK46X6MqmoWy64Ti0y8ygPfLv8mXDCdRZUofM3mTxDfCswRA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-ts/-/rollup-plugin-ts-3.2.0.tgz", + "integrity": "sha512-KkTLVifkUexEiAXS9VtSjDrjKr0TyusmNJpb2ZTAzI9VuPumSu4AktIaVNnwv70iUEitHwZtET7OAM+5n1u1tg==", "dependencies": { - "@rollup/pluginutils": "^4.2.1", + "@rollup/pluginutils": "^5.0.2", "@wessberg/stringutil": "^1.0.19", "ansi-colors": "^4.1.3", - "browserslist": "^4.20.4", - "browserslist-generator": "^1.0.66", - "compatfactory": "^1.0.1", + "browserslist": "^4.21.4", + "browserslist-generator": "^2.0.1", + "compatfactory": "^2.0.9", "crosspath": "^2.0.0", - "magic-string": "^0.26.2", - "ts-clone-node": "^1.0.0", - "tslib": "^2.4.0" + "magic-string": "^0.27.0", + "ts-clone-node": "^2.0.4", + "tslib": "^2.4.1" }, "engines": { "node": ">=14.9.0", @@ -17303,23 +18211,37 @@ } }, "node_modules/rollup-plugin-ts/node_modules/@rollup/pluginutils": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", - "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", "dependencies": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">= 8.0.0" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, + "node_modules/rollup-plugin-ts/node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, "node_modules/rollup-plugin-ts/node_modules/magic-string": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", - "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", "dependencies": { - "sourcemap-codec": "^1.4.8" + "@jridgewell/sourcemap-codec": "^1.4.13" }, "engines": { "node": ">=12" @@ -17427,9 +18349,9 @@ } }, "node_modules/safe-stable-stringify": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.1.tgz", - "integrity": "sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", "engines": { "node": ">=10" } @@ -17439,11 +18361,6 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, "node_modules/scheduler": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", @@ -17454,9 +18371,9 @@ } }, "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -17470,15 +18387,43 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, "node_modules/secure-json-parse": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.5.0.tgz", - "integrity": "sha512-ZQruFgZnIWH+WyO9t5rWt4ZEGqCKPwhiw+YbzTwpmT9elgLrLcfuyUiSnwwjUiVy9r4VM3urtbNF1xmEh9IL2w==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" }, "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -17539,9 +18484,9 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dependencies": { "randombytes": "^2.1.0" } @@ -17566,9 +18511,25 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "node_modules/set-cookie-parser": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", - "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", + "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" + }, + "node_modules/set-function-length": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "dependencies": { + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/set-value": { "version": "2.0.1", @@ -17638,11 +18599,6 @@ "node": ">=8" } }, - "node_modules/shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" - }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -17686,13 +18642,13 @@ } }, "node_modules/sirv": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", - "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", "dependencies": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^1.0.0" + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" }, "engines": { "node": ">= 10" @@ -17710,7 +18666,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "devOptional": true, + "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -17727,7 +18683,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -17742,7 +18698,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -17754,7 +18710,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true + "dev": true }, "node_modules/snake-case": { "version": "2.1.0", @@ -17858,61 +18814,16 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/snapdragon/node_modules/is-extendable": { @@ -17923,14 +18834,6 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/snapdragon/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -17945,9 +18848,9 @@ } }, "node_modules/sonic-boom": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.2.0.tgz", - "integrity": "sha512-SbbZ+Kqj/XIunvIAgUZRlqd6CGQYq71tRRbXR92Za8J/R3Yh4Av+TWENiSiEgnlwckYLyP0YZQWVfyNC0dzLaA==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.8.0.tgz", + "integrity": "sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==", "dependencies": { "atomic-sleep": "^1.0.0" } @@ -18043,7 +18946,8 @@ "node_modules/sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead" }, "node_modules/spark-md5": { "version": "3.0.2", @@ -18094,9 +18998,9 @@ } }, "node_modules/split2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", - "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "engines": { "node": ">= 10.x" } @@ -18104,7 +19008,8 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true }, "node_modules/sshpk": { "version": "1.17.0", @@ -18130,12 +19035,6 @@ "node": ">=0.10.0" } }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" - }, "node_modules/stackframe": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", @@ -18164,69 +19063,16 @@ "node": ">=0.10.0" } }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/statuses": { @@ -18255,9 +19101,9 @@ } }, "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" }, "node_modules/string_decoder": { "version": "1.1.1", @@ -18289,7 +19135,6 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -18330,6 +19175,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -18349,6 +19207,14 @@ "node": ">=4" } }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "engines": { + "node": ">=10" + } + }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -18373,7 +19239,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "devOptional": true, + "dev": true, "engines": { "node": ">=8" }, @@ -18388,18 +19254,18 @@ "dev": true }, "node_modules/stylehacks": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", - "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.2.tgz", + "integrity": "sha512-00zvJGnCu64EpMjX8b5iCZ3us2Ptyw8+toEkb92VdmkEaRaSGBNKAoK6aWZckhXxmQP8zWiTaFaiMGIU8Ve8sg==", "dependencies": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" + "browserslist": "^4.22.2", + "postcss-selector-parser": "^6.0.15" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4.31" } }, "node_modules/stylelint": { @@ -18579,9 +19445,9 @@ "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==" }, "node_modules/superagent": { - "version": "8.0.9", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.9.tgz", - "integrity": "sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==", + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", + "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", "peer": true, "dependencies": { "component-emitter": "^1.3.0", @@ -18626,9 +19492,9 @@ } }, "node_modules/superagent/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "peer": true, "dependencies": { "lru-cache": "^6.0.0" @@ -18641,13 +19507,13 @@ } }, "node_modules/supertest": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.3.tgz", - "integrity": "sha512-EMCG6G8gDu5qEqRQ3JjjPs6+FYT1a7Hv5ApHvtSghmOFJYtsU5S+pSb6Y2EUeCEY3CmEL3mmQ8YWlPOzQomabA==", + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz", + "integrity": "sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==", "peer": true, "dependencies": { "methods": "^1.1.2", - "superagent": "^8.0.5" + "superagent": "^8.1.2" }, "engines": { "node": ">=6.4.0" @@ -18720,146 +19586,147 @@ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true }, - "node_modules/svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", - "dependencies": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" + "node_modules/svgo": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.2.0.tgz", + "integrity": "sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" }, "bin": { "svgo": "bin/svgo" }, "engines": { - "node": ">=4.0.0" + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" } }, "node_modules/svgo-loader": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/svgo-loader/-/svgo-loader-2.2.2.tgz", - "integrity": "sha512-UeE/4yZEK96LoYqvxwh8YqCOJCjXwRY9K6YT99vXE+nYhs/W8hAY2hNf5zg/lRsyKshJkR79V+4beV3cbGL40Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/svgo-loader/-/svgo-loader-4.0.0.tgz", + "integrity": "sha512-bdk2H73AHP8Vo9zgMuA8piEzi5pjFzllK4EwfebDF3hDjmHQpmmqXMoDd6abDtVFrlKTJuveepmnc2kuTdt/WA==", "dependencies": { - "js-yaml": "^3.13.1", - "loader-utils": "^1.0.3" - }, - "peerDependencies": { - "svgo": "^1.0.0" + "svgo": "^3.0.0" } }, - "node_modules/svgo-loader/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dependencies": { - "minimist": "^1.2.0" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" }, - "bin": { - "json5": "lib/cli.js" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/svgo-loader/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "node_modules/svgo/node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=4.0.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, - "node_modules/svgo/node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "node_modules/svgo/node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/svgo/node_modules/css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "node_modules/svgo/node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", "dependencies": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=8.0.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/svgo/node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "engines": { - "node": ">= 6" + "node_modules/svgo/node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/svgo/node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "node_modules/svgo/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, "node_modules/svgo/node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, "node_modules/svgo/node_modules/mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" - }, - "node_modules/svgo/node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/svgo/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" }, "node_modules/swap-case": { "version": "1.1.2", @@ -18879,7 +19746,7 @@ "version": "6.8.0", "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", - "devOptional": true, + "dev": true, "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -18891,28 +19758,6 @@ "node": ">=10.0.0" } }, - "node_modules/table/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "devOptional": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "devOptional": true - }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -18940,6 +19785,14 @@ "node": ">=6.0.0" } }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "engines": { + "node": ">=8" + } + }, "node_modules/temp/node_modules/rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -18951,6 +19804,34 @@ "rimraf": "bin.js" } }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/term-size": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", @@ -18963,12 +19844,12 @@ } }, "node_modules/terser": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.28.1.tgz", + "integrity": "sha512-wM+bZp54v/E9eRRGXb5ZFDvinrJIOaTapx3WUokyVGZu5ucVCK55zEgGd5Dl2fSr3jUo5sDiERErUWLY6QPFyA==", "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -18980,15 +19861,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.14", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -19047,17 +19928,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/terser/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -19091,9 +19961,9 @@ } }, "node_modules/thread-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.2.0.tgz", - "integrity": "sha512-rUkv4/fnb4rqy/gGy7VuqK6wE1+1DOCOWy4RMeaV69ZHMP11tQKZvZSip1yTgrKCMZzEMcCL/bKfHvSfDHx+iQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.4.1.tgz", + "integrity": "sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==", "dependencies": { "real-require": "^0.2.0" } @@ -19112,20 +19982,6 @@ "xtend": "~4.0.1" } }, - "node_modules/through2/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "node_modules/time-stamp": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", @@ -19134,14 +19990,6 @@ "node": ">=0.10.0" } }, - "node_modules/tiny-lru": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-9.0.3.tgz", - "integrity": "sha512-/i9GruRjXsnDgehxvy6iZ4AFNVxngEFbwzirhdulomMNPGPVV3ECMZOWSw0w4sRMZ9Al9m4jy08GPvRxRUGYlw==", - "engines": { - "node": ">=6" - } - }, "node_modules/title-case": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", @@ -19192,6 +20040,14 @@ "node": ">=0.10.0" } }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "engines": { + "node": ">=6" + } + }, "node_modules/to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", @@ -19217,6 +20073,14 @@ "node": ">=8.0" } }, + "node_modules/toad-cache": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz", + "integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==", + "engines": { + "node": ">=12" + } + }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -19226,9 +20090,9 @@ } }, "node_modules/totalist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", - "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", "engines": { "node": ">=6" } @@ -19265,11 +20129,11 @@ } }, "node_modules/ts-clone-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ts-clone-node/-/ts-clone-node-1.0.0.tgz", - "integrity": "sha512-/cDYbr2HAXxFNeTT41c/xs/2bhLJjqnYheHsmA3AoHSt+n4JA4t0FL9Lk5O8kWnJ6jeB3kPcUoXIFtwERNzv6Q==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/ts-clone-node/-/ts-clone-node-2.0.4.tgz", + "integrity": "sha512-eG6FAgmQsenhIJOIFhUcO6yyYejBKZIKcI3y21jiQmIOrth5pD6GElyPAyeihbPSyBs3u/9PVNXy+5I7jGy8jA==", "dependencies": { - "compatfactory": "^1.0.1" + "compatfactory": "^2.0.9" }, "engines": { "node": ">=14.9.0" @@ -19283,21 +20147,123 @@ } }, "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "dependencies": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths-webpack-plugin": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz", + "integrity": "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tsconfig-paths": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dependencies": { + "json5": "^2.2.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "dependencies": { "minimist": "^1.2.0" @@ -19307,9 +20273,9 @@ } }, "node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -19352,7 +20318,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "devOptional": true, + "dev": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -19460,9 +20426,9 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "engines": { "node": ">=4" } @@ -19497,11 +20463,17 @@ "node": ">=0.10.0" } }, - "node_modules/uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==" - }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/universal-analytics": { "version": "0.4.23", "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.23.tgz", @@ -19522,9 +20494,9 @@ } }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { "node": ">= 10.0.0" } @@ -19537,11 +20509,6 @@ "node": ">= 0.8" } }, - "node_modules/unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" - }, "node_modules/unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -19586,10 +20553,19 @@ "node": ">=0.10.0" } }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "funding": [ { "type": "opencollective", @@ -19598,6 +20574,10 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { @@ -19605,7 +20585,7 @@ "picocolors": "^1.0.0" }, "bin": { - "browserslist-lint": "cli.js" + "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" @@ -19638,6 +20618,17 @@ "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", "deprecated": "Please see https://github.com/lydell/urix#deprecated" }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -19732,25 +20723,28 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/user-agent-data-types": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/user-agent-data-types/-/user-agent-data-types-0.3.1.tgz", + "integrity": "sha512-vS7pZmuEVPlf2CQf+PfNbwWJZA4aQAEa8sH7xhMrjZ1zXNvW7HHEdzmSvI7z/qyyIRVD50DEi4ckuzZcebKHGg==" + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "node_modules/util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/utility-types": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", @@ -19819,6 +20813,14 @@ "extsprintf": "^1.2.0" } }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wait-on": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5.3.0.tgz", @@ -19863,21 +20865,21 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "version": "5.87.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.87.0.tgz", + "integrity": "sha512-GOu1tNbQ7p1bDEoFRs2YPcfyGs8xq52yyPBZ3m2VGnXGtV9MxjrkABHm4V9Ia280OefsSLzvbVoXcfLxjKY/Iw==", "dependencies": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -19886,9 +20888,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", + "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, @@ -19908,28 +20910,23 @@ } } }, - "node_modules/webpack-build-notifier": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/webpack-build-notifier/-/webpack-build-notifier-2.3.0.tgz", - "integrity": "sha512-+/s6GrvSRwP0CHqHOqZcta7EcqjL1MUR9KmBSlkJj6xJVZtFB/z68CTeLPrHnMED/umlXN9hcFV8wmGjeI/K2A==", - "dependencies": { - "node-notifier": "9.0.1", - "strip-ansi": "^6.0.0" - } - }, "node_modules/webpack-bundle-analyzer": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.7.0.tgz", - "integrity": "sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz", + "integrity": "sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==", "dependencies": { + "@discoveryjs/json-ext": "0.5.7", "acorn": "^8.0.4", "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", "gzip-size": "^6.0.0", - "lodash": "^4.17.20", + "html-escaper": "^2.0.2", + "is-plain-object": "^5.0.0", "opener": "^1.5.2", - "sirv": "^1.0.7", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", "ws": "^7.3.1" }, "bin": { @@ -19939,62 +20936,6 @@ "node": ">= 10.13.0" } }, - "node_modules/webpack-bundle-analyzer/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "node_modules/webpack-bundle-analyzer/node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", @@ -20003,23 +20944,23 @@ "node": ">= 10" } }, - "node_modules/webpack-bundle-analyzer/node_modules/has-flag": { + "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack-bundle-analyzer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, + "node_modules/webpack-bundle-analyzer/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/webpack-chain": { @@ -20043,40 +20984,30 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.1.tgz", + "integrity": "sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ==", "dependencies": { "colorette": "^2.0.10", - "memfs": "^3.4.3", + "memfs": "^3.4.12", "mime-types": "^2.1.31", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 14.15.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "webpack": "^5.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "peerDependenciesMeta": { + "webpack": { + "optional": true + } } }, "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { @@ -20090,20 +21021,15 @@ "ajv": "^8.8.2" } }, - "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dependencies": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 12.13.0" @@ -20114,9 +21040,9 @@ } }, "node_modules/webpack-hot-middleware": { - "version": "2.25.2", - "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.2.tgz", - "integrity": "sha512-CVgm3NAQyfdIonRvXisRwPTUYuSbyZ6BY7782tMeUzWOO7RmVI2NaBYuCp41qyD4gYCkJyTneAJdK69A13B0+A==", + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.26.1.tgz", + "integrity": "sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==", "dependencies": { "ansi-html-community": "0.0.8", "html-entities": "^2.1.0", @@ -20141,38 +21067,19 @@ } }, "node_modules/webpack-stats-plugin": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/webpack-stats-plugin/-/webpack-stats-plugin-1.1.1.tgz", - "integrity": "sha512-aWwE/YuO2W7VCOyWwyDJ7BRSYRYjeXat+X31YiasMM3FS6/4X9W4Mb9Q0g+jIdVgArr1Mb08sHBJKMT5M9+gVA==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/webpack-stats-plugin/-/webpack-stats-plugin-1.1.3.tgz", + "integrity": "sha512-yUKYyy+e0iF/w31QdfioRKY+h3jDBRpthexBOWGKda99iu2l/wxYsI/XqdlP5IU58/0KB9CsJZgWNAl+/MPkRw==" }, "node_modules/webpack/node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack/node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "peerDependencies": { - "acorn": "^8" - } + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, "node_modules/webpack/node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -20260,9 +21167,9 @@ } }, "node_modules/webpackbar/node_modules/std-env": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.1.tgz", - "integrity": "sha512-3H20QlwQsSm2OvAxWIYhs+j01MzzqwMwGiiO1NQaJYZgJZFPuAbf95/DiKRBSTYIJ2FeGUc+B/6mPGcWP9dO3Q==" + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==" }, "node_modules/webpackbar/node_modules/supports-color": { "version": "7.2.0", @@ -20314,9 +21221,27 @@ } }, "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, + "node_modules/which-typed-array": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", + "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", + "dependencies": { + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.5", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/widest-line": { "version": "3.1.0", @@ -20333,7 +21258,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -20343,6 +21268,250 @@ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" }, + "node_modules/workbox-background-sync": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.1.tgz", + "integrity": "sha512-trJd3ovpWCvzu4sW0E8rV3FUyIcC0W8G+AZ+VcqzzA890AsWZlUGOTSxIMmIHVusUw/FDq1HFWfy/kC/WTRqSg==", + "deprecated": "this package has been deprecated", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.1" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.1.tgz", + "integrity": "sha512-fBhffRdaANdeQ1V8s692R9l/gzvjjRtydBOvR6WCSB0BNE2BacA29Z4r9/RHd9KaXCPl6JTdI9q0bR25YKP8TQ==", + "deprecated": "this package has been deprecated", + "dependencies": { + "workbox-core": "6.6.1" + } + }, + "node_modules/workbox-build": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.1.tgz", + "integrity": "sha512-INPgDx6aRycAugUixbKgiEQBWD0MPZqU5r0jyr24CehvNuLPSXp/wGOpdRJmts656lNiXwqV7dC2nzyrzWEDnw==", + "deprecated": "this package has been deprecated", + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.6.1", + "workbox-broadcast-update": "6.6.1", + "workbox-cacheable-response": "6.6.1", + "workbox-core": "6.6.1", + "workbox-expiration": "6.6.1", + "workbox-google-analytics": "6.6.1", + "workbox-navigation-preload": "6.6.1", + "workbox-precaching": "6.6.1", + "workbox-range-requests": "6.6.1", + "workbox-recipes": "6.6.1", + "workbox-routing": "6.6.1", + "workbox-strategies": "6.6.1", + "workbox-streams": "6.6.1", + "workbox-sw": "6.6.1", + "workbox-window": "6.6.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/workbox-build/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "node_modules/workbox-build/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.1.tgz", + "integrity": "sha512-85LY4veT2CnTCDxaVG7ft3NKaFbH6i4urZXgLiU4AiwvKqS2ChL6/eILiGRYXfZ6gAwDnh5RkuDbr/GMS4KSag==", + "deprecated": "workbox-background-sync@6.6.1", + "dependencies": { + "workbox-core": "6.6.1" + } + }, + "node_modules/workbox-core": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.1.tgz", + "integrity": "sha512-ZrGBXjjaJLqzVothoE12qTbVnOAjFrHDXpZe7coCb6q65qI/59rDLwuFMO4PcZ7jcbxY+0+NhUVztzR/CbjEFw==", + "deprecated": "this package has been deprecated" + }, + "node_modules/workbox-expiration": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.1.tgz", + "integrity": "sha512-qFiNeeINndiOxaCrd2DeL1Xh1RFug3JonzjxUHc5WkvkD2u5abY3gZL1xSUNt3vZKsFFGGORItSjVTVnWAZO4A==", + "deprecated": "this package has been deprecated", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "6.6.1" + } + }, + "node_modules/workbox-google-analytics": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.1.tgz", + "integrity": "sha512-1TjSvbFSLmkpqLcBsF7FuGqqeDsf+uAXO/pjiINQKg3b1GN0nBngnxLcXDYo1n/XxK4N7RaRrpRlkwjY/3ocuA==", + "deprecated": "It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained", + "dependencies": { + "workbox-background-sync": "6.6.1", + "workbox-core": "6.6.1", + "workbox-routing": "6.6.1", + "workbox-strategies": "6.6.1" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.1.tgz", + "integrity": "sha512-DQCZowCecO+wRoIxJI2V6bXWK6/53ff+hEXLGlQL4Rp9ZaPDLrgV/32nxwWIP7QpWDkVEtllTAK5h6cnhxNxDA==", + "deprecated": "this package has been deprecated", + "dependencies": { + "workbox-core": "6.6.1" + } + }, + "node_modules/workbox-precaching": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.1.tgz", + "integrity": "sha512-K4znSJ7IKxCnCYEdhNkMr7X1kNh8cz+mFgx9v5jFdz1MfI84pq8C2zG+oAoeE5kFrUf7YkT5x4uLWBNg0DVZ5A==", + "deprecated": "this package has been deprecated", + "dependencies": { + "workbox-core": "6.6.1", + "workbox-routing": "6.6.1", + "workbox-strategies": "6.6.1" + } + }, + "node_modules/workbox-range-requests": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.1.tgz", + "integrity": "sha512-4BDzk28govqzg2ZpX0IFkthdRmCKgAKreontYRC5YsAPB2jDtPNxqx3WtTXgHw1NZalXpcH/E4LqUa9+2xbv1g==", + "deprecated": "this package has been deprecated", + "dependencies": { + "workbox-core": "6.6.1" + } + }, + "node_modules/workbox-recipes": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.1.tgz", + "integrity": "sha512-/oy8vCSzromXokDA+X+VgpeZJvtuf8SkQ8KL0xmRivMgJZrjwM3c2tpKTJn6PZA6TsbxGs3Sc7KwMoZVamcV2g==", + "deprecated": "this package has been deprecated", + "dependencies": { + "workbox-cacheable-response": "6.6.1", + "workbox-core": "6.6.1", + "workbox-expiration": "6.6.1", + "workbox-precaching": "6.6.1", + "workbox-routing": "6.6.1", + "workbox-strategies": "6.6.1" + } + }, + "node_modules/workbox-routing": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.1.tgz", + "integrity": "sha512-j4ohlQvfpVdoR8vDYxTY9rA9VvxTHogkIDwGdJ+rb2VRZQ5vt1CWwUUZBeD/WGFAni12jD1HlMXvJ8JS7aBWTg==", + "deprecated": "this package has been deprecated", + "dependencies": { + "workbox-core": "6.6.1" + } + }, + "node_modules/workbox-strategies": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.1.tgz", + "integrity": "sha512-WQLXkRnsk4L81fVPkkgon1rZNxnpdO5LsO+ws7tYBC6QQQFJVI6v98klrJEjFtZwzw/mB/HT5yVp7CcX0O+mrw==", + "deprecated": "this package has been deprecated", + "dependencies": { + "workbox-core": "6.6.1" + } + }, + "node_modules/workbox-streams": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.1.tgz", + "integrity": "sha512-maKG65FUq9e4BLotSKWSTzeF0sgctQdYyTMq529piEN24Dlu9b6WhrAfRpHdCncRS89Zi2QVpW5V33NX8PgH3Q==", + "deprecated": "this package has been deprecated", + "dependencies": { + "workbox-core": "6.6.1", + "workbox-routing": "6.6.1" + } + }, + "node_modules/workbox-sw": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.1.tgz", + "integrity": "sha512-R7whwjvU2abHH/lR6kQTTXLHDFU2izht9kJOvBRYK65FbwutT4VvnUAJIgHvfWZ/fokrOPhfoWYoPCMpSgUKHQ==", + "deprecated": "this package has been deprecated" + }, + "node_modules/workbox-webpack-plugin": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.1.tgz", + "integrity": "sha512-zpZ+ExFj9NmiI66cFEApyjk7hGsfJ1YMOaLXGXBoZf0v7Iu6hL0ZBe+83mnDq3YYWAfA3fnyFejritjOHkFcrA==", + "deprecated": "this package has been deprecated", + "dependencies": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "6.6.1" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.9.0" + } + }, + "node_modules/workbox-window": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.1.tgz", + "integrity": "sha512-wil4nwOY58nTdCvif/KEZjQ2NP8uk3gGeRNy2jPBbzypU4BT4D9L8xiwbmDBpZlSgJd2xsT9FvSNU0gsxV51JQ==", + "deprecated": "this package has been deprecated", + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.6.1" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -20560,6 +21729,19 @@ } }, "dependencies": { + "@akashbabu/lfu-cache": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@akashbabu/lfu-cache/-/lfu-cache-1.0.2.tgz", + "integrity": "sha512-1gh4vC6XEJKtNmyY6YIJbXz6vtvHvCF9phSMUTojyxmn+KWLq63QdXyJh//n6H4uYQfRZGjLcbwRp0Q969dAIg==", + "requires": { + "@akashbabu/node-dll": "^2.0.1" + } + }, + "@akashbabu/node-dll": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@akashbabu/node-dll/-/node-dll-2.0.2.tgz", + "integrity": "sha512-MSZY+1BN5dXbMi7MVnTzPje9JkTw8Yu9vjWFkAoobXa++w0b23qXVgdjerWfXO7FrbAsWPb2dieEufD67GtsNQ==" + }, "@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -20569,6 +21751,16 @@ "@jridgewell/trace-mapping": "^0.3.9" } }, + "@apideck/better-ajv-errors": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "requires": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + } + }, "@babel/cli": { "version": "7.19.3", "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.19.3.tgz", @@ -20593,38 +21785,46 @@ } }, "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "requires": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" } }, "@babel/compat-data": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.0.tgz", - "integrity": "sha512-Gt9jszFJYq7qzXVK4slhc6NzJXnOVmRECWcVjF/T23rNXD9NtWQ0W3qxdg+p9wWIB+VQw3GYV/U2Ha9bRTfs4w==" + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==" }, - "@babel/core": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.6.tgz", - "integrity": "sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==", - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.6", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helpers": "^7.19.4", - "@babel/parser": "^7.19.6", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.6", - "@babel/types": "^7.19.4", - "convert-source-map": "^1.7.0", + "@babel/core": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "dependencies": { + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + } } }, "@babel/eslint-parser": { @@ -20648,19 +21848,20 @@ } }, "@babel/generator": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.0.tgz", - "integrity": "sha512-GUPcXxWibClgmYJuIwC2Bc2Lg+8b9VjaJ+HlNdACEVt+Wlr1eoU1OPZjZRm7Hzl0gaTsUZNQfeihvZJhG7oc3w==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "requires": { - "@babel/types": "^7.20.0", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "dependencies": { "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "requires": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -20670,63 +21871,72 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "requires": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-builder-react-jsx": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.19.0.tgz", - "integrity": "sha512-xvrbORmJ13lWrqyMErk4vczhXNNWdOSg1BZ+R/7D34SjDjToR5g3M5UpD6MyUekstI50qAHLWA1j7w5o1WK2Pw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/types": "^7.19.0" + "@babel/types": "^7.22.15" } }, "@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "requires": { - "@babel/compat-data": "^7.20.0", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } } }, "@babel/helper-create-class-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", - "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", + "version": "7.23.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz", + "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==", "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" } }, "@babel/helper-define-polyfill-provider": { @@ -20743,193 +21953,187 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "requires": { - "@babel/types": "^7.18.6" - } + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" }, "@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" } }, "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", "requires": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.23.0" } }, "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.15" } }, "@babel/helper-module-transforms": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz", - "integrity": "sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.19.4", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.6", - "@babel/types": "^7.19.4" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" } }, "@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-plugin-utils": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==" + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==" }, "@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" } }, "@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" } }, "@babel/helper-simple-access": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", - "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "requires": { - "@babel/types": "^7.19.4" + "@babel/types": "^7.22.5" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "requires": { - "@babel/types": "^7.20.0" + "@babel/types": "^7.22.5" } }, "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==" }, "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" }, "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==" }, "@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "requires": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" } }, "@babel/helpers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.0.tgz", - "integrity": "sha512-aGMjYraN0zosCEthoGLdqot1oRsmxVTQRHadsUPz5QM44Zej2PYRz7XiDE7GqnkZnNtLbOuxqoZw42vkU7+XEQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", + "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", "requires": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.0", - "@babel/types": "^7.20.0" + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9" } }, "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.0.tgz", - "integrity": "sha512-G9VgAhEaICnz8iiJeGJQyVl6J2nTjbW0xeisva0PK6XcKsga7BIaqm4ZF8Rg1Wbaqmy6znspNqhPaPkyukujzg==" + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.23.3" + } + }, + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-external-helpers": { @@ -20940,17 +22144,6 @@ "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", - "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, "@babel/plugin-proposal-class-properties": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", @@ -20960,16 +22153,6 @@ "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, "@babel/plugin-proposal-decorators": { "version": "7.20.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.0.tgz", @@ -20982,15 +22165,6 @@ "@babel/plugin-syntax-decorators": "^7.19.0" } }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, "@babel/plugin-proposal-export-default-from": { "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz", @@ -21000,33 +22174,6 @@ "@babel/plugin-syntax-export-default-from": "^7.18.6" } }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, "@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", @@ -21057,15 +22204,6 @@ "@babel/plugin-transform-parameters": "^7.18.8" } }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, "@babel/plugin-proposal-optional-chaining": { "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", @@ -21076,34 +22214,11 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "requires": {} }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", @@ -21162,19 +22277,35 @@ } }, "@babel/plugin-syntax-flow": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz", - "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz", + "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-json-strings": { @@ -21186,11 +22317,11 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-syntax-logical-assignment-operators": { @@ -21258,298 +22389,434 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-arrow-functions": { + "@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" } }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", + "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, "@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.0.tgz", - "integrity": "sha512-sXOohbpHZSk7GjxK9b3dKB7CfqUD5DwOH+DggKzOQ7TXYP+RCSbRykfjQmn/zq+rBjycVRtLf9pYhAaEJA786w==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-classes": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", - "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", + "@babel/plugin-transform-class-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.19.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.15" } }, "@babel/plugin-transform-destructuring": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.0.tgz", - "integrity": "sha512-1dIhvZfkDVx/zn2S1aFwlruspTt4189j7fEkH0Y0VyuDM6bQt7bD6kLcz3l4IlLG+e5OReaBz9ROAbttRtUHqA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-transform-flow-strip-types": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz", - "integrity": "sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz", + "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==", "requires": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-flow": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-flow": "^7.23.3" } }, "@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "requires": { + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", "requires": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", "requires": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", + "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.19.1" + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-transform-numeric-separator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-transform-object-rest-spread": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "requires": { + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.23.3" } }, "@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20" + } + }, + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-transform-optional-chaining": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "@babel/plugin-transform-private-methods": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-react-constant-elements": { - "version": "7.18.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.12.tgz", - "integrity": "sha512-Q99U9/ttiu+LMnRU8psd23HhvwXmKWDQIpocm0JKaICcZHnw+mdQbHm6xnSy7dOl8I5PELakYtNBubNQlBXbZw==", + "@babel/plugin-transform-private-property-in-object": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, - "@babel/plugin-transform-react-display-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", - "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "@babel/plugin-transform-property-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.23.3.tgz", + "integrity": "sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-react-inline-elements": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-inline-elements/-/plugin-transform-react-inline-elements-7.18.6.tgz", - "integrity": "sha512-uo3yD1EXhDxmk1Y/CeFDdHS5t22IOUBooLPFOrrjfpYmDM9Vg61xbIaWeWkbYQ7Aq0zMf30/FfKoQgFwyqw6Bg==", + "@babel/plugin-transform-react-display-name": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", + "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", "requires": { - "@babel/helper-builder-react-jsx": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", - "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.19.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" } }, "@babel/plugin-transform-react-jsx-development": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", - "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", "requires": { - "@babel/plugin-transform-react-jsx": "^7.18.6" + "@babel/plugin-transform-react-jsx": "^7.22.5" } }, "@babel/plugin-transform-react-pure-annotations": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", - "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", + "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-runtime": { @@ -21566,105 +22833,113 @@ } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", "requires": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.0.tgz", - "integrity": "sha512-xOAsAFaun3t9hCwZ13Qe7gq423UgMZ6zAgmLxeGGapFqlT/X3L5qT2btjiVLlFn7gWtMaVyceS5VxGAuKbgizw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz", + "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-typescript": "^7.20.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.23.3" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/preset-env": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.4.tgz", - "integrity": "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==", + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", "requires": { - "@babel/compat-data": "^7.19.4", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.19.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.19.4", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/preset-env": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.9.tgz", + "integrity": "sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==", + "requires": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.18.6", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -21674,101 +22949,158 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.19.4", - "@babel/plugin-transform-classes": "^7.19.0", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.19.4", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.0", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.19.4", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.9", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.9", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "dependencies": { + "@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", + "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", + "requires": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.5.0", + "semver": "^6.3.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.5.0" + } + } } }, "@babel/preset-flow": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.18.6.tgz", - "integrity": "sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.23.3.tgz", + "integrity": "sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-flow-strip-types": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-flow-strip-types": "^7.23.3" } }, "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" } }, "@babel/preset-react": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", - "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", + "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-react-display-name": "^7.18.6", - "@babel/plugin-transform-react-jsx": "^7.18.6", - "@babel/plugin-transform-react-jsx-development": "^7.18.6", - "@babel/plugin-transform-react-pure-annotations": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.23.3", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.23.3" } }, "@babel/preset-typescript": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", - "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", + "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-typescript": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3" } }, "@babel/register": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.18.9.tgz", - "integrity": "sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.23.7.tgz", + "integrity": "sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==", "requires": { "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", "make-dir": "^2.1.0", - "pirates": "^4.0.5", + "pirates": "^4.0.6", "source-map-support": "^0.5.16" }, "dependencies": { @@ -21825,12 +23157,24 @@ } } }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + }, "@babel/runtime": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.0.tgz", - "integrity": "sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", "requires": { - "regenerator-runtime": "^0.13.10" + "regenerator-runtime": "^0.14.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + } } }, "@babel/runtime-corejs3": { @@ -21843,39 +23187,39 @@ } }, "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" } }, "@babel/traverse": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.0.tgz", - "integrity": "sha512-5+cAXQNARgjRUK0JWu2UBwja4JLSO/rBMPJzpsKb+oBF5xlUuCfljQepS4XypBQoiigL0VQjTZy6WiONtUdScQ==", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.0", - "@babel/types": "^7.20.0", - "debug": "^4.1.0", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", + "requires": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.0.tgz", - "integrity": "sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, @@ -22000,7 +23344,7 @@ "version": "0.4.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "devOptional": true, + "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.1.1", @@ -22013,11 +23357,23 @@ "strip-json-comments": "^3.1.1" }, "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", - "devOptional": true, + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, "requires": { "type-fest": "^0.20.2" } @@ -22026,59 +23382,47 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "devOptional": true + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "devOptional": true + "dev": true } } }, "@fastify/accept-negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-1.0.0.tgz", - "integrity": "sha512-4R/N2KfYeld7A5LGkai+iUFMahXcxxYbDp+XS2B1yuL3cdmZLJ9TlCnNzT3q5xFTqsYm0GPpinLUwfSwjcVjyA==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-1.1.0.tgz", + "integrity": "sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==" }, "@fastify/ajv-compiler": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.3.1.tgz", - "integrity": "sha512-IRnids8lblQ8e1i8h4JLyfJmebXE+ohcj8x8X/+Ew6ZB4H0Ui05z5YL6q5FOcl0zItVpu4adRzeyVNNUwmduIg==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.5.0.tgz", + "integrity": "sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==", "requires": { "ajv": "^8.11.0", "ajv-formats": "^2.1.1", "fast-uri": "^2.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - } } }, "@fastify/compress": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@fastify/compress/-/compress-6.1.1.tgz", - "integrity": "sha512-uwgomk59nAWKR2WqXugyn3tXzRJqlBaGCzXHb4ZnKA3sxA9G/JWZSAd6GEF29mJucTLi32iZaFZRAwf7O8bJMg==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@fastify/compress/-/compress-6.5.0.tgz", + "integrity": "sha512-AqUOK714jY7qkzbQbS4zyI4yNFgnRoOJ3eH/oV1T9f5fFdPDRdrFxm5de1ya5n+as4bvitjwU9EY7zvtT9pI2A==", "requires": { - "@fastify/accept-negotiator": "^1.0.0", - "fastify-plugin": "^4.0.0", + "@fastify/accept-negotiator": "^1.1.0", + "fastify-plugin": "^4.5.0", "into-stream": "^6.0.0", - "mime-db": "^1.51.0", - "minipass": "^3.1.6", + "mime-db": "^1.52.0", + "minipass": "^7.0.2", "peek-stream": "^1.1.3", "pump": "^3.0.0", "pumpify": "^2.0.1" @@ -22100,45 +23444,66 @@ } } }, - "@fastify/deepmerge": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.1.0.tgz", - "integrity": "sha512-E8Hfdvs1bG6u0N4vN5Nty6JONUfTdOciyD5rn8KnEsLKIenvOVcr210BQR9t34PRkNyjqnMLGk3e0BsaxRdL+g==" - }, "@fastify/error": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.0.0.tgz", - "integrity": "sha512-dPRyT40GiHRzSCll3/Jn2nPe25+E1VXc9tDwRAIKwFCxd5Np5wzgz1tmooWG3sV0qKgrBibihVoCna2ru4SEFg==" + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.4.1.tgz", + "integrity": "sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==" }, "@fastify/fast-json-stringify-compiler": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.1.0.tgz", - "integrity": "sha512-cTKBV2J9+u6VaKDhX7HepSfPSzw+F+TSd+k0wzifj4rG+4E5PjSFJCk19P8R6tr/72cuzgGd+mbB3jFT6lvAgw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz", + "integrity": "sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==", "requires": { - "fast-json-stringify": "^5.0.0" + "fast-json-stringify": "^5.7.0" } }, "@fastify/formbody": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@fastify/formbody/-/formbody-7.3.0.tgz", - "integrity": "sha512-4uHTS7wH0mkUoltk4wyJ966rs/TQP0BNDSCtyqRMy7p5adGg+5ERbYue/zGh/qI9yLDPN0K98u7Fw+lLEmBZJQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@fastify/formbody/-/formbody-7.4.0.tgz", + "integrity": "sha512-H3C6h1GN56/SMrZS8N2vCT2cZr7mIHzBHzOBa5OPpjfB/D6FzP9mMpE02ZzrFX0ANeh0BAJdoXKOF2e7IbV+Og==", "requires": { "fast-querystring": "^1.0.0", "fastify-plugin": "^4.0.0" } }, + "@fastify/merge-json-schemas": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz", + "integrity": "sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "@fastify/send": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@fastify/send/-/send-2.1.0.tgz", + "integrity": "sha512-yNYiY6sDkexoJR0D8IDy3aRP3+L4wdqCpvx5WP+VtEU58sn7USmKynBzDQex5X42Zzvw2gNzzYgP90UfWShLFA==", + "requires": { + "@lukeed/ms": "^2.0.1", + "escape-html": "~1.0.3", + "fast-decode-uri-component": "^1.0.1", + "http-errors": "2.0.0", + "mime": "^3.0.0" + }, + "dependencies": { + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" + } + } + }, "@fastify/static": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@fastify/static/-/static-6.5.0.tgz", - "integrity": "sha512-WEk6iqgejA6ivjkvbJ47A+uMci225z5lZwLXCXZS3ZYR/kYje1gzzarkKKGL6TWpBw6smkOzxA7dfEoY0347Nw==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@fastify/static/-/static-6.12.0.tgz", + "integrity": "sha512-KK1B84E6QD/FcQWxDI2aiUCwHxMJBI1KeCUzm1BwYpPY1b742+jeKruGHP2uOluuM6OkBPI8CIANrXcCRtC2oQ==", "requires": { "@fastify/accept-negotiator": "^1.0.0", + "@fastify/send": "^2.0.0", "content-disposition": "^0.5.3", "fastify-plugin": "^4.0.0", "glob": "^8.0.1", - "p-limit": "^3.1.0", - "readable-stream": "^4.0.0", - "send": "^0.18.0" + "p-limit": "^3.1.0" }, "dependencies": { "brace-expansion": { @@ -22150,9 +23515,9 @@ } }, "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -22162,9 +23527,9 @@ } }, "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "requires": { "brace-expansion": "^2.0.1" } @@ -22219,7 +23584,7 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "devOptional": true, + "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.0", "debug": "^4.1.1", @@ -22230,22 +23595,22 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "devOptional": true + "dev": true }, "@jest/schemas": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", - "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "requires": { - "@sinclair/typebox": "^0.24.1" + "@sinclair/typebox": "^0.27.8" } }, "@jest/types": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", - "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "requires": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -22318,18 +23683,18 @@ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" }, "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "requires": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" }, "dependencies": { "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "requires": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -22344,12 +23709,12 @@ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@loadable/component": { @@ -22377,6 +23742,11 @@ "lodash": "^4.17.15" } }, + "@lukeed/ms": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@lukeed/ms/-/ms-2.0.2.tgz", + "integrity": "sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==" + }, "@mantine/core": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/@mantine/core/-/core-6.0.5.tgz", @@ -22403,13 +23773,6 @@ "requires": { "clsx": "1.1.1", "csstype": "3.0.9" - }, - "dependencies": { - "csstype": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", - "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" - } } }, "@mantine/utils": { @@ -22419,9 +23782,25 @@ "requires": {} }, "@mdn/browser-compat-data": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.2.1.tgz", - "integrity": "sha512-EWUguj2kd7ldmrF9F+vI5hUOralPd+sdsUnYbRy33vZTuZkduC1shE9TtEMEjAQwyfyMb4ole5KtjF8MsnQOlA==" + "version": "5.5.11", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.5.11.tgz", + "integrity": "sha512-4o1ZaGmvqoDx3QLyEAcZvGDKmdVXLB0aiANuPDumgue/7iH67KUBsKejLX7wrdxEdyNYfXUKtjFQYhGwVUBXGw==" + }, + "@module-federation/node": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@module-federation/node/-/node-0.15.1.tgz", + "integrity": "sha512-8js1qdVnZ1rLz0cKyo9mdz/vPQqExirmdL3k9cJaP/qlHuQIhimzpisC148RQSI7kSTu1kuzLW23FkmdcjBOhA==", + "requires": { + "@module-federation/utilities": "1.8.0", + "encoding": "^0.1.13", + "node-fetch": "^2.6.7" + } + }, + "@module-federation/utilities": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@module-federation/utilities/-/utilities-1.8.0.tgz", + "integrity": "sha512-qKbZF+SU7jfAt+q1kRUNxU1jzHErRyIP77DA+yCYCJaagWaFuz0Hmud8Yr6n/mQ1WJgQeh+gmNA0ad75koKopQ==", + "requires": {} }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", @@ -22478,9 +23857,9 @@ } }, "@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.8.tgz", - "integrity": "sha512-wxXRwf+IQ6zvHSJZ+5T2RQNEsq+kx4jKRXfFvdt3nBIUzJUAvXEFsUeoaohDe/Kr84MTjGwcuIUPNcstNJORsA==", + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", + "integrity": "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==", "requires": { "ansi-html-community": "^0.0.8", "common-path-prefix": "^3.0.0", @@ -22488,15 +23867,15 @@ "error-stack-parser": "^2.0.6", "find-up": "^5.0.0", "html-entities": "^2.1.0", - "loader-utils": "^2.0.0", + "loader-utils": "^2.0.4", "schema-utils": "^3.0.0", "source-map": "^0.7.3" } }, "@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" + "version": "1.0.0-next.24", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz", + "integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==" }, "@radix-ui/number": { "version": "1.0.0", @@ -22599,6 +23978,15 @@ "@babel/runtime": "^7.13.10" } }, + "@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + } + }, "@rollup/plugin-json": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", @@ -22607,6 +23995,28 @@ "@rollup/pluginutils": "^3.0.8" } }, + "@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + } + }, + "@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "requires": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + } + }, "@rollup/plugin-typescript": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.5.0.tgz", @@ -22748,83 +24158,99 @@ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, "@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "requires": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } }, "@svgr/babel-plugin-add-jsx-attribute": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz", - "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", "requires": {} }, "@svgr/babel-plugin-remove-jsx-attribute": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.5.0.tgz", - "integrity": "sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", "requires": {} }, "@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.5.0.tgz", - "integrity": "sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", "requires": {} }, "@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz", - "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", "requires": {} }, "@svgr/babel-plugin-svg-dynamic-title": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz", - "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", "requires": {} }, "@svgr/babel-plugin-svg-em-dimensions": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz", - "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", "requires": {} }, "@svgr/babel-plugin-transform-react-native-svg": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz", - "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", "requires": {} }, "@svgr/babel-plugin-transform-svg-component": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz", - "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", "requires": {} }, "@svgr/babel-preset": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz", - "integrity": "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", "requires": { - "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", - "@svgr/babel-plugin-remove-jsx-attribute": "*", - "@svgr/babel-plugin-remove-jsx-empty-expression": "*", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1", - "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1", - "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1", - "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1", - "@svgr/babel-plugin-transform-svg-component": "^6.5.1" + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" } }, "@svgr/core": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz", - "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "requires": { - "@babel/core": "^7.19.6", - "@svgr/babel-preset": "^6.5.1", - "@svgr/plugin-jsx": "^6.5.1", + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.1" + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" }, "dependencies": { "camelcase": { @@ -22832,103 +24258,94 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" }, - "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "requires": { + "tslib": "^2.0.3" + } + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" } } } }, "@svgr/hast-util-to-babel-ast": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz", - "integrity": "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", "requires": { - "@babel/types": "^7.20.0", + "@babel/types": "^7.21.3", "entities": "^4.4.0" - }, - "dependencies": { - "entities": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", - "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==" - } } }, "@svgr/plugin-jsx": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz", - "integrity": "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==", - "requires": { - "@babel/core": "^7.19.6", - "@svgr/babel-preset": "^6.5.1", - "@svgr/hast-util-to-babel-ast": "^6.5.1", - "svg-parser": "^2.0.4" - } - }, - "@svgr/plugin-svgo": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz", - "integrity": "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==", - "requires": { - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "svgo": "^2.8.0" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, - "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "requires": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - } - } + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", + "requires": { + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" + } + }, + "@svgr/plugin-svgo": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", + "requires": { + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" } }, "@svgr/webpack": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.5.1.tgz", - "integrity": "sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz", + "integrity": "sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==", "requires": { - "@babel/core": "^7.19.6", - "@babel/plugin-transform-react-constant-elements": "^7.18.12", - "@babel/preset-env": "^7.19.4", + "@babel/core": "^7.21.3", + "@babel/plugin-transform-react-constant-elements": "^7.21.3", + "@babel/preset-env": "^7.20.2", "@babel/preset-react": "^7.18.6", - "@babel/preset-typescript": "^7.18.6", - "@svgr/core": "^6.5.1", - "@svgr/plugin-jsx": "^6.5.1", - "@svgr/plugin-svgo": "^6.5.1" + "@babel/preset-typescript": "^7.21.0", + "@svgr/core": "8.1.0", + "@svgr/plugin-jsx": "8.1.0", + "@svgr/plugin-svgo": "8.1.0" + } + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" } }, "@tabler/icons": { @@ -22946,43 +24363,51 @@ } }, "@tinkoff/browser-cookies": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@tinkoff/browser-cookies/-/browser-cookies-2.0.4.tgz", - "integrity": "sha512-R98AvSWwK6fxPc0wWO2lF1jBIJQbhRNQJBRMPXZzoyMWLs0xvFdwZifwer4twGuQoQj59BDDuUHfEuAyOi8C4w==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@tinkoff/browser-cookies/-/browser-cookies-2.0.8.tgz", + "integrity": "sha512-OW78tbVxZEPm+p7HdrRNOc0FhcPSm9j3315d/2yQ38QJvvzsVBWlSGW69NxZ9wISAoJh0vAEsz6hIfOsvyq3Ng==", "requires": { "tslib": "^2.4.0" } }, "@tinkoff/browser-timings": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@tinkoff/browser-timings/-/browser-timings-0.10.4.tgz", - "integrity": "sha512-0ptJ+ggp2eLFleTkR/NmKEBxBAQpEEOX6KwN8i3SgfAMljtF9ROJTzCxxNb51Y+cvNHzUq4Xr0AEc2JtZMtHJg==" + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/@tinkoff/browser-timings/-/browser-timings-0.10.6.tgz", + "integrity": "sha512-5atO/zY6kFekzk/7R2959IqDLrFiMZs04nRasg9d9E4GWZAD7CnpldLBVZ9hFzGR770Ay+Tufts2CAnbYZbLlw==" }, "@tinkoff/browserslist-config": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@tinkoff/browserslist-config/-/browserslist-config-0.2.4.tgz", - "integrity": "sha512-sE6Tf1VrILpNJNYTdEQAomtgkF2aP9sPs41u0MP8frgH9ezXxw+ahMuZCLvaE7+q+Xrqq+nDPGed5gD0SmBPvw==" + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@tinkoff/browserslist-config/-/browserslist-config-0.2.7.tgz", + "integrity": "sha512-bLf0T3Tp+0aQc19hjYUUA8aa2/bfkbZsol8GzhGFImlwy+MWe/iYhc0PXD2C69cfYBpJynuzshNwyKfbPlinTw==" }, "@tinkoff/dippy": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/@tinkoff/dippy/-/dippy-0.8.9.tgz", - "integrity": "sha512-fG6hTgc23qTLD36PwaJ7IAdlqIvYBhSN+LqrEugtnPH9FwizUn+zglIBECBU8HOZ1SeSKjT5dxgNRUC+u9yNHg==", + "version": "0.8.16", + "resolved": "https://registry.npmjs.org/@tinkoff/dippy/-/dippy-0.8.16.tgz", + "integrity": "sha512-TnhUnD3e5z40p91F2wAJSRb5zaRGiV7/I9yIKuwzEgwjTLbDJevkXsJ1Wqg3tfxK+v+lhNvxzLUJPfkXlRqYGw==", "requires": { "tslib": "^2.4.0" } }, + "@tinkoff/env-validators": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@tinkoff/env-validators/-/env-validators-0.1.6.tgz", + "integrity": "sha512-uFA9i3LDYkkMxzK29OBRTb7teXq1hH+EaS+HlBsXRIzDxB4fkpj7ngk6C80FhAaUffVec3MkPDgUAghM0YIOjw==", + "requires": { + "@tinkoff/utils": "^2.2.0" + } + }, "@tinkoff/error-handlers": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@tinkoff/error-handlers/-/error-handlers-0.5.4.tgz", - "integrity": "sha512-6c13E5RKaQBO6DpsARCrHw8YPnF7PmsFBkS7zlDNvFLO1CwmHAk4J7mQbQkxmYTRxyhm8/BcQ1NUiMMmFnpqwQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@tinkoff/error-handlers/-/error-handlers-0.5.6.tgz", + "integrity": "sha512-leHGaVI2wwivDlSpBbj2PG4IG/7bTyIDclQJIqKArcR/sjIZfhiJaQgV/OYVSgA9IJCnyuKzQ6rmCfZOxUBcpA==", "requires": { "tslib": "^2.4.0" } }, "@tinkoff/errors": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@tinkoff/errors/-/errors-0.3.5.tgz", - "integrity": "sha512-oEcRsXlPVEO1XGEYb5IicogjImeacDAqW2nzf00q9LG0NzgpXPMEzyaD/q9cv0ciThgO1JnNdyoA79iYz3e5Ew==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@tinkoff/errors/-/errors-0.3.8.tgz", + "integrity": "sha512-x72TQPu/XmKxRNx2Cy0q87G5tUkW19YsvLMoUR9DycXNGrIvC2Do2bLwIyn108DVcgu/qnB/TqqbJ6gQgejWxQ==", "requires": { "tslib": "^2.4.0" } @@ -23041,36 +24466,43 @@ } }, "@tinkoff/hook-runner": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@tinkoff/hook-runner/-/hook-runner-0.4.4.tgz", - "integrity": "sha512-Jynau9dcaevMCYnr0ho+E1nvG+p0gxnk+zPYKCKIUGj5UobD4w6Tajkt/vGEoP6FLYxE5atNnQjFhysaBYGE7Q==", + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/@tinkoff/hook-runner/-/hook-runner-0.4.6.tgz", + "integrity": "sha512-+WYcFg7JNyZpmiBYZZdH2t6ZcExbQaMy1HuJ+UGwlDmhIaCYqUewEeyUlAp5mq4Woi81IxRnhtB0zdQvO5kKXw==", "requires": { "@tinkoff/utils": "^2.1.2", "tslib": "^2.4.0" } }, "@tinkoff/htmlpagebuilder": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@tinkoff/htmlpagebuilder/-/htmlpagebuilder-0.5.5.tgz", - "integrity": "sha512-I4IckzkHkTHg+0gp6ilTu1HUhJjDutCvjVJVwQNSkZdG1LYKVhS0B4FfEvX+n71NyAiYT0Y2ojDOr6vm9MBlWg==", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/@tinkoff/htmlpagebuilder/-/htmlpagebuilder-0.5.8.tgz", + "integrity": "sha512-VrCxLteyLJISOikvO0SY2tX81FeI89DVBbL1j9Xi+InYY4ZWWBjW+Im5MmIu0VLzXyig4vBab7G4enOTocW0Zg==", "requires": { "@tinkoff/utils": "^2.1.2", "acorn": "^7.4.1", "tslib": "^2.4.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + } } }, "@tinkoff/is-modern-lib": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@tinkoff/is-modern-lib/-/is-modern-lib-2.0.4.tgz", - "integrity": "sha512-JLQa434sQD6Qd/Lx1SSe7RE76rBbso2QB6mpZKBGrmIM0yAli6R2WUiquUggvF6VLknGFB7h+yWhO4i/kmuFAA==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@tinkoff/is-modern-lib/-/is-modern-lib-2.0.16.tgz", + "integrity": "sha512-V9oNlK/AGAyy9+J1q8L9au/IDH7c7luvFg+HtZmUWOY+oCwfvM8kYswUUI/tSXZ/pr4sLkMrKRJrPEXa684pzg==", "requires": { "semver": "^7.3.5" }, "dependencies": { "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "requires": { "lru-cache": "^6.0.0" } @@ -23078,21 +24510,21 @@ } }, "@tinkoff/layout-factory": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@tinkoff/layout-factory/-/layout-factory-0.3.4.tgz", - "integrity": "sha512-bIKUEwrKZPKNm1MbEinzbo6QrnsP/ITFAo8njyZg5tJWqu7eBLJHLRgMtb1OpfPyW165cy9F0wRAMvL7RLw0nA==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@tinkoff/layout-factory/-/layout-factory-0.3.8.tgz", + "integrity": "sha512-WHBxvJ75reh0XOjdhqzZNo7Eu1ByxkBJB4Df4bzndeNBcukKNAE0PbNY1VbV7HnZKUmp/iNoevmh828Z1V+VHA==", "requires": { "@tinkoff/utils": "^2.1.2", "tslib": "^2.4.0" } }, "@tinkoff/logger": { - "version": "0.10.54", - "resolved": "https://registry.npmjs.org/@tinkoff/logger/-/logger-0.10.54.tgz", - "integrity": "sha512-hFZMcdVuW8AbsaGX1qdPpOu6oe7LiaIkfbwRGO1IqxkXJic7pJVfouFghkdU6pm5cqx78eqjepUi2GXTuQHFXQ==", + "version": "0.10.67", + "resolved": "https://registry.npmjs.org/@tinkoff/logger/-/logger-0.10.67.tgz", + "integrity": "sha512-F1lU2ww0gXzmDZ6HOvfG8aUShvypLlvGlnbwmHgo+rAq708iP61WzBsHWj6rhy7vh7OFSs/3bT5hZb/RlyFhxA==", "requires": { "@tinkoff/utils": "^2.1.2", - "@tramvai/safe-strings": "0.5.5", + "@tramvai/safe-strings": "0.5.12", "chalk": "^3.0.0", "date-fns": "^2.11.0", "figures": "^3.2.0", @@ -23151,9 +24583,9 @@ "integrity": "sha512-5LooEJDqW11X1QcHesBnz6lP3Pn49vfVKyl5OTCjNdKrTLc6H7DwfVO0ys+rP/oDVqy7N9O8rpI5KapCGalA2A==" }, "@tinkoff/measure-fastify-requests": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@tinkoff/measure-fastify-requests/-/measure-fastify-requests-0.1.6.tgz", - "integrity": "sha512-UIPZt9dQFbKybreipGoHyqaq2IUO6LfBLB5PoJMkCl5X1NVsb6WhMeZLzdnlpv8Ksx7a+MO5Iym1ynxSUksipg==", + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@tinkoff/measure-fastify-requests/-/measure-fastify-requests-0.1.11.tgz", + "integrity": "sha512-44bjIjWS3pkL6FlpdIRWCxLEdKlY5TRtw8FjqEWW9CIfWdrImQtKfjihNiTQ6ptXJBT5YTR/igSNdd7kF5Xh/w==", "requires": { "@tinkoff/utils": "^2.1.3", "fastify-plugin": "^4.2.1", @@ -23162,26 +24594,26 @@ } }, "@tinkoff/meta-tags-generate": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@tinkoff/meta-tags-generate/-/meta-tags-generate-0.5.4.tgz", - "integrity": "sha512-fXrQOMEApR5F0/W5xDNAe5T/xNSJ4MGFhKW/vZJ46Mk5Vhg0koWu//ybyMlGEr4qPfi5tNF/luWqOC65y3D0dw==", + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@tinkoff/meta-tags-generate/-/meta-tags-generate-0.5.11.tgz", + "integrity": "sha512-59YufqVFRcHIshc7/VV7eqlPFOsdYmysEsmKrkqvPiU3RayYlWvt71Wn9L/vBHxgLgrO8LecDvKLFa7Y6x9Syg==", "requires": { "@tinkoff/utils": "^2.1.2", "tslib": "^2.4.0" } }, "@tinkoff/metrics-noop": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@tinkoff/metrics-noop/-/metrics-noop-2.0.4.tgz", - "integrity": "sha512-CxUEZ1baZbHlSEP5X6Nv7E2alpuCJUXKyJcfYnkoyVcHoe5dL/q8PzJuC6HnqqbknSiE6O4sgtplM49ge/OCSg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@tinkoff/metrics-noop/-/metrics-noop-2.1.0.tgz", + "integrity": "sha512-y+N0kaBLIf95FasO7zE9wd1+OFzL/mmuBafNK6rCUtssRdtFWEIRHSo5/JZs0gQxGERn5TkcJiq3XIpG+GHkbw==", "requires": { "tslib": "^2.4.0" } }, "@tinkoff/minicss-class-generator": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@tinkoff/minicss-class-generator/-/minicss-class-generator-0.2.4.tgz", - "integrity": "sha512-aD/0QWhu7gA+kvCDOZoKMltxJcP5klxxydez59RI+Hc7Pva6TxDwoMzRUw9pn5TyizPiS6x2RT6L724K0TKM/g==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@tinkoff/minicss-class-generator/-/minicss-class-generator-0.2.5.tgz", + "integrity": "sha512-DFHudEDIRPkNJynJJyg7IneAN482w7FygEeQ4OYdn9A9k7TCTl8EtFRN4Cl7263qR9FWXjVBUsDtKbQYay6PYQ==", "requires": { "css-class-generator": "^2.0.0", "cssesc": "^3.0.0", @@ -23196,28 +24628,31 @@ } }, "@tinkoff/monkeypatch": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tinkoff/monkeypatch/-/monkeypatch-2.0.3.tgz", - "integrity": "sha512-c+ylTV6Ge1mISJLpIrBhJ7CC2vm5HGRu9fIm8ap2nqVu15Ou4okuGBgM1IwRHkXW85j2vZ5v403QcLnuyd/qRw==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@tinkoff/monkeypatch/-/monkeypatch-2.0.5.tgz", + "integrity": "sha512-xwLGwqzP2g8sEgc4JFu5RtrKIWnSpzr65mpiHsea95ZVbq4JxXR2FxhubY/5jF67d6+oE2UXRTmppbGnllYY3A==" }, "@tinkoff/package-manager-wrapper": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@tinkoff/package-manager-wrapper/-/package-manager-wrapper-0.1.4.tgz", - "integrity": "sha512-HzzH32uvzgXHmAnPCWy7uZngf4hLxMLrlIoTLuZkV0LoFGWmB8veXKg0MuVN1vLfEFrcbmQx98L+hexeOGAGdg==" + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@tinkoff/package-manager-wrapper/-/package-manager-wrapper-0.1.9.tgz", + "integrity": "sha512-6J/NrAZzzgPXBp/ufyvIr9GhnWB7ssiwwQPQZZbalcPQoc8RR7DGKrfbIevjM1R/2tGWLWAbEUcjA+R67bP66Q==", + "requires": { + "execa": "^5.1.1" + } }, "@tinkoff/pubsub": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@tinkoff/pubsub/-/pubsub-0.5.5.tgz", - "integrity": "sha512-Nl5uqhb/4T3epn9aFApglE3/sx9n32yYoGt06OnEe/+bWrGw0lrUG9fUFxaNvfWee9OMrpFHTqBrVKHsACj6cA==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@tinkoff/pubsub/-/pubsub-0.5.7.tgz", + "integrity": "sha512-IQ28PQHT29lpQFESoX9UQZ1QnRcp+l/gSQzjJBH7ruTSus/r2tt6BSDdMHR6Gxn/7yXbqQK5BzP3Jvzjh9LoZA==", "requires": { "@tinkoff/utils": "^2.1.2", "tslib": "^2.4.0" } }, "@tinkoff/react-hooks": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@tinkoff/react-hooks/-/react-hooks-0.1.4.tgz", - "integrity": "sha512-/utbuAGs8f09IhcHmM72jssKIY7DVH59SoGNpaKAkmtnc3TyPKPE+fcomBx9nwGSxxnFvn9o3Cru33PIuBcZdg==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@tinkoff/react-hooks/-/react-hooks-0.1.6.tgz", + "integrity": "sha512-n3xMSBc3+IeUYwX1Oq4EdT7ftZj4ESijWf3U1h7d84CHsgTSC6T0RBlD6R0xZ04d0TVqMSQFdHg6poyS8w/ToA==", "requires": { "@tinkoff/utils": "^2.1.2", "tslib": "^2.4.0" @@ -23233,9 +24668,9 @@ } }, "@tinkoff/request-core": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@tinkoff/request-core/-/request-core-0.9.2.tgz", - "integrity": "sha512-rPQxLim3u7adJLCynTp26KT6y0rd2F+ARjK2cHgKszjSc3Ce/c21aY1WN+qRSZlK1RGmGTaZxzSFBCMOzwJaMA==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@tinkoff/request-core/-/request-core-0.9.3.tgz", + "integrity": "sha512-jOgRmeKBHV1h4RJd9nrvz1JI/+RMKrT8WZYy55jD+SQkdMZHRoksjSN4/b+57XsV39Mr2iv22TQIOLkVBDOqtQ==", "requires": { "@tinkoff/utils": "^2.0.0", "tslib": "^2.1.3" @@ -23263,12 +24698,12 @@ } }, "@tinkoff/request-plugin-protocol-http": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@tinkoff/request-plugin-protocol-http/-/request-plugin-protocol-http-0.11.7.tgz", - "integrity": "sha512-6ds/tZ+8Nm5QOFXRIZhiUuXrb6W8eexqHuRlb1+ClPP+d+9t7eh39xA/bQHfLSyrdwZJHI01a5txv8RoIcg7OA==", + "version": "0.11.9", + "resolved": "https://registry.npmjs.org/@tinkoff/request-plugin-protocol-http/-/request-plugin-protocol-http-0.11.9.tgz", + "integrity": "sha512-WK+9zQER9kBI0X8JXnQ20uuUuT7F1hA5m9nzOs2C+qVpy+VVWxp2TeQxGo9P4e6zq+qYX0FpQ81ijsENtK1w3Q==", "requires": { - "@tinkoff/request-core": "^0.9.2", - "@tinkoff/request-url-utils": "^0.9.2", + "@tinkoff/request-core": "^0.9.3", + "@tinkoff/request-url-utils": "^0.9.3", "@tinkoff/utils": "^2.0.0", "abort-controller": "^3.0.0", "form-data": "^2.5.0", @@ -23277,21 +24712,21 @@ } }, "@tinkoff/request-url-utils": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@tinkoff/request-url-utils/-/request-url-utils-0.9.2.tgz", - "integrity": "sha512-QHFW0rH8gSNOi8/4Y2nWQyf2V+fG72fzBoglVW4cRZTtwtLXxjHeqzwIOlSMkaigqId02bLIQJobN4i8BILitw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@tinkoff/request-url-utils/-/request-url-utils-0.9.3.tgz", + "integrity": "sha512-3I574Z27ALAeb5C9t4ThJMb80gX/rXs/grGWXn+GRllPI9mofPXZQeSBgR0CD428csUA7xZL3tv5Q/sqtRfJrA==", "requires": { "@tinkoff/utils": "^2.0.0", "tslib": "^2.1.3" } }, "@tinkoff/router": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@tinkoff/router/-/router-0.2.4.tgz", - "integrity": "sha512-sMkdxRN/qK0I104PF/dresyJ+WXzOHgTgxMThDZxx+zNIt4/CrJaUWMO2jz0ILVRdrkZaoKqKzsJFVovW7dTXg==", + "version": "0.2.19", + "resolved": "https://registry.npmjs.org/@tinkoff/router/-/router-0.2.19.tgz", + "integrity": "sha512-wtATefJ/qOhSviP3vFT7PimhU2VmenMm17wjfvj7KLFyp7NfG3IjmjupxCZeskfz73U0rp6XU3BDr4dJvn90sw==", "requires": { - "@tinkoff/react-hooks": "0.1.4", - "@tinkoff/url": "0.8.4", + "@tinkoff/react-hooks": "0.1.6", + "@tinkoff/url": "0.8.6", "@tinkoff/utils": "^2.1.2", "use-sync-external-store": "^1.2.0" } @@ -23312,29 +24747,29 @@ } }, "@tinkoff/terminus": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@tinkoff/terminus/-/terminus-0.1.5.tgz", - "integrity": "sha512-kwrhIlXf6M7RtoMYlTjbGTyzKy1BPW6r6g1xEbtMD1KdVhUFu6Z8gSzzIKVwPUYf0BumKDw0XFNYrj9fnQvD4A==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@tinkoff/terminus/-/terminus-0.1.9.tgz", + "integrity": "sha512-VFI+wkjnhCXEiqPLud4QZItRGqGd+1Mr/wPzFmya1dq0aNZkLywURVU0nwNViybzgIF8OCT5zjYEmSvn+Six7w==", "requires": { "es6-promisify": "^6.1.1", "stoppable": "^1.1.0" } }, "@tinkoff/url": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/@tinkoff/url/-/url-0.8.4.tgz", - "integrity": "sha512-oAPJzXIUpRff3C2TaM6RjeGI5lHkzG8YppJQfyv2Gg3ym2nO5Fjnv6QadL+cL1JqXtwhuD/8vK6cDVXBPbwRlA==", + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/@tinkoff/url/-/url-0.8.6.tgz", + "integrity": "sha512-TzaFw8f/xFxsns7M8FIX+rin6l/pHhMagQkg1ybajCadYDuPo9ww9ciZPmj9sGHrcclDvaancvXBNpjyfzyW/Q==", "requires": { "@tinkoff/utils": "^2.1.2", "tslib": "^2.4.0" } }, "@tinkoff/user-agent": { - "version": "0.4.90", - "resolved": "https://registry.npmjs.org/@tinkoff/user-agent/-/user-agent-0.4.90.tgz", - "integrity": "sha512-90+WEBkhxfBmBhgzVbDiesf14X8uUi0INDjeXM91PZAzAQZLXBgWv+g4Io6LiMoMD67BtsEtgeOmh+i71xxvLA==", + "version": "0.4.464", + "resolved": "https://registry.npmjs.org/@tinkoff/user-agent/-/user-agent-0.4.464.tgz", + "integrity": "sha512-LPqDti9ycKIoPH6oL1hYW3QzlimpVbas0FquZjK+5UvNyAGymDcP9+eueJNhYkJKBf1DwuoUKsVo82PeQSnx7g==", "requires": { - "@tinkoff/browserslist-config": "0.2.4", + "@tinkoff/browserslist-config": "0.2.7", "@tinkoff/utils": "^2.1.2", "browserslist": "^4.16.7", "tslib": "^2.4.0", @@ -23347,10 +24782,72 @@ "integrity": "sha512-AWmsQk/eYATSSxBgC81+XnNR9BQ4E/E42nYx2aZ2dSxScYl/Wm2HBYvBcGZcRdVQ/AMkDxWLEmtY6g+REZ9PfQ==", "requires": {} }, + "@tinkoff/webpack-dedupe-plugin": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@tinkoff/webpack-dedupe-plugin/-/webpack-dedupe-plugin-1.0.5.tgz", + "integrity": "sha512-S+dCIv98Xra9ViYufKUsddrueq65IKW9NVW2xKWF/0mDEf5QwJDhi//ixuyckNUunnfxvcduFXdf/zeeV5nqIg==", + "requires": { + "chalk": "^4.1.2", + "semver": "^7.3.7" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "@tramvai/build": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@tramvai/build/-/build-3.0.6.tgz", - "integrity": "sha512-y91Mis6cSPAqsEnJC8tQZBfX2NSI4cWqni9FBzcD4onwohMb2s+YjPLDTlndQ+15EsrQudONL6COV00b+pisFQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@tramvai/build/-/build-3.1.4.tgz", + "integrity": "sha512-6C1nL1pvaEKRWHNWdFBMscgUPcb6EqGDm3BhbOmqV5Ua5Jv4a6J+4qkp5kwLKMJTV9HFsfIpMrWaFWAm6XdikQ==", "requires": { "@rollup/plugin-json": "^4.0.3", "@rollup/plugin-typescript": "^8.5.0", @@ -23363,7 +24860,7 @@ "rollup": "^2.8.0", "rollup-external-modules": "^2.0.0", "rollup-plugin-analyzer": "^3.2.2", - "rollup-plugin-ts": "^3.0.2", + "rollup-plugin-ts": "3.2.0", "rollup-pluginutils": "^2.8.2", "signale": "^1.4.0", "tslib": "^2.4.0", @@ -23371,9 +24868,9 @@ } }, "@tramvai/cli": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/cli/-/cli-2.40.0.tgz", - "integrity": "sha512-ub8NX+GN35A2+MHYjicrohIQ2Zv2LhAsHOuULm3Gl6mDl8hO1aIsZPp7uVhR7J6snRDtKdxt7EJ49KP1Q2qY1A==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/cli/-/cli-2.160.1.tgz", + "integrity": "sha512-xHwY8rohv7qSBH7llMZWHnPIMhYLceG9SR4+TR+61K/DnfisXEKGombHn1o0QkpjbNGbiDmHNuIlGZ0G9XwlXg==", "requires": { "@babel/cli": "^7.18.10", "@babel/core": "^7.18.10", @@ -23389,7 +24886,6 @@ "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-react-constant-elements": "^7.18.12", - "@babel/plugin-transform-react-inline-elements": "^7.18.6", "@babel/plugin-transform-runtime": "^7.18.10", "@babel/preset-env": "^7.18.10", "@babel/preset-react": "^7.18.6", @@ -23399,31 +24895,32 @@ "@babel/traverse": "^7.18.11", "@babel/types": "^7.18.10", "@discoveryjs/json-ext": "^0.5.7", - "@fastify/compress": "^6.1.1", - "@fastify/static": "^6.5.0", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7", + "@fastify/compress": "^6.2.0", + "@fastify/static": "^6.9.0", + "@module-federation/node": "^0.15.1", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10", "@sentry/node": "^6.2.5", - "@svgr/webpack": "^6.4.0", - "@tinkoff/browserslist-config": "0.2.4", - "@tinkoff/dippy": "0.8.9", - "@tinkoff/is-modern-lib": "2.0.4", - "@tinkoff/logger": "0.10.54", - "@tinkoff/minicss-class-generator": "0.2.4", - "@tinkoff/package-manager-wrapper": "0.1.4", + "@svgr/webpack": "^8.1.0", + "@tinkoff/browserslist-config": "0.2.7", + "@tinkoff/dippy": "0.8.16", + "@tinkoff/is-modern-lib": "2.0.16", + "@tinkoff/logger": "0.10.67", + "@tinkoff/minicss-class-generator": "0.2.5", + "@tinkoff/package-manager-wrapper": "0.1.9", "@tinkoff/request-core": "^0.9.2", - "@tinkoff/request-plugin-protocol-http": "^0.11.6", + "@tinkoff/request-plugin-protocol-http": "^0.11.8", "@tinkoff/utils": "^2.1.3", - "@tramvai/build": "3.0.6", - "@tramvai/react": "2.40.0", - "@tramvai/tools-check-versions": "0.4.5", - "@tramvai/tools-migrate": "0.6.6", - "ajv": "^6.12.6", + "@tinkoff/webpack-dedupe-plugin": "1.0.5", + "@tramvai/build": "3.1.4", + "@tramvai/react": "2.160.1", + "@tramvai/tools-check-versions": "0.4.18", + "@tramvai/tools-migrate": "0.6.23", + "ajv": "^8.12.0", "ansi-escapes": "^4.3.2", "autoprefixer": "^10.4.8", "babel-loader": "^8.2.5", "babel-plugin-dynamic-import-node": "^2.3.3", "babel-plugin-lodash": "^3.3.4", - "babel-plugin-module-resolver": "^4.1.0", "babel-plugin-transform-define": "^2.0.1", "babel-plugin-transform-react-remove-prop-types": "^0.4.24", "boxen": "^4.2.0", @@ -23432,19 +24929,22 @@ "chalk": "^4.1.2", "commander": "^6.2.1", "compression": "^1.7.4", + "core-js": "^3.0.0", "css-class-generator": "^2.0.0", "css-loader": "^6.7.1", - "css-minimizer-webpack-plugin": "^4.0.0", + "css-minimizer-webpack-plugin": "^5.0.1", "csso-webpack-plugin": "2.0.0-beta.3", "death": "^1.1.0", + "detect-port": "^1.5.1", + "env-ci": "^5.0.2", "execa": "^5.1.1", "exit": "^0.1.2", "express": "^4.18.1", - "fastify": "^4.6.0", + "fastify": "^4.14.1", "figures": "^3.2.0", "file-loader": "^6.2.0", "find-cache-dir": "^3.3.2", - "fork-ts-checker-webpack-plugin": "^6.5.2", + "fork-ts-checker-webpack-plugin": "^8.0.0", "fs-extra": "^9.1.0", "fs-readdir-recursive": "^1.1.0", "fuzzy": "^0.1.3", @@ -23452,19 +24952,22 @@ "handlebars": "^4.7.7", "http-proxy": "^1.18.1", "image-size": "^1.0.2", + "ini": "^3.0.1", "inquirer": "^7.3.3", "inquirer-autocomplete-prompt": "^1.4.0", "inspectpack": "^4.7.1", + "latest-version": "^5.0.0", "less": "^3.13.1", "less-loader": "^8.1.1", "lightning-pool": "^2.4.0", "mdtable": "^0.3.1", - "mini-css-extract-plugin": "2.6.1", + "mini-css-extract-plugin": "2.7.6", "node-plop": "^0.26.0", "noop-stream": "^0.1.0", "null-loader": "^4.0.1", "ora": "^5.4.1", "p-map": "^4.0.0", + "package-json": "^6.5.0", "path-browserify": "^1.0.1", "port-used": "^2.0.8", "postcss": "^8.4.16", @@ -23472,35 +24975,40 @@ "postcss-image-set-polyfill": "^1.0.0", "postcss-loader": "^7.0.1", "postcss-modules-tilda": "^2.0.0", - "postcss-modules-values-replace": "^3.3.0", + "postcss-modules-values-replace": "^4.0.0", + "pretty-bytes": "^5.6.0", "prettyoutput": "^1.2.0", "process": "^0.11.10", "promise-queue": "^2.2.5", "react-refresh": "^0.14.0", - "resolve": "^1.22.1", + "resolve": "^1.22.4", "rimraf": "^3.0.2", "semver": "^7.3.7", + "source-map": "^0.7.4", "source-map-loader": "^4.0.0", "spark-md5": "^3.0.2", "stoppable": "^1.1.0", - "svgo": "^1.3.2", - "svgo-loader": "^2.2.2", - "terser-webpack-plugin": "^5.3.5", + "svgo": "^3.0.2", + "svgo-loader": "^4.0.0", + "terser-webpack-plugin": "^5.3.9", "text-table": "^0.2.0", "thread-loader": "^3.0.4", + "tsconfig-paths-webpack-plugin": "^4.0.1", "universal-analytics": "^0.4.23", "utility-types": "^3.10.0", "v8-compile-cache": "^2.3.0", "validate-npm-package-name": "^3.0.0", "wait-on": "^5.3.0", - "webpack": "5.74.0", - "webpack-build-notifier": "^2.3.0", - "webpack-bundle-analyzer": "^4.6.1", + "webpack": "5.87.0", + "webpack-bundle-analyzer": "^4.9.0", "webpack-chain": "^6.5.1", - "webpack-dev-middleware": "^5.3.3", - "webpack-hot-middleware": "^2.25.2", - "webpack-stats-plugin": "^1.1.0", + "webpack-dev-middleware": "^6.1.1", + "webpack-hot-middleware": "^2.25.4", + "webpack-sources": "^3.2.3", + "webpack-stats-plugin": "^1.1.3", "webpackbar": "^5.0.2", + "workbox-build": "^6.6.1", + "workbox-webpack-plugin": "^6.6.1", "wrap-ansi": "^7.0.0" }, "dependencies": { @@ -23539,10 +25047,15 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, + "ini": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz", + "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==" + }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "requires": { "lru-cache": "^6.0.0" } @@ -23554,253 +25067,280 @@ "requires": { "has-flag": "^4.0.0" } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" } } }, "@tramvai/core": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/core/-/core-2.40.0.tgz", - "integrity": "sha512-fhXPFIDyaE9Emc1exr+1OqnUhbgK2GTX/hGTMvp6eQO0oivrIiQ6qSr2OoX4/4USerjTsuXxyVWmKsbMYzbbcA==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/core/-/core-2.160.1.tgz", + "integrity": "sha512-H341LYeRupb1RYDqY7yweQGi/CYzMO9cgGb0dG4nf1tiMVwt75110J6utsX+vQ95z5TODr22ywJuY0rgCSNhrw==", "requires": { - "@tinkoff/dippy": "0.8.9", + "@tinkoff/dippy": "0.8.16", "@tinkoff/utils": "^2.1.2", - "@tramvai/tokens-common": "2.40.0", - "@tramvai/tokens-core": "2.40.0", - "@tramvai/types-actions-state-context": "2.40.0", + "@tramvai/tokens-common": "2.160.1", + "@tramvai/tokens-core": "2.160.1", + "@tramvai/types-actions-state-context": "2.160.1", + "node-abort-controller": "^3.0.1", "tslib": "^2.4.0" } }, "@tramvai/experiments": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/experiments/-/experiments-2.40.0.tgz", - "integrity": "sha512-CHPaahLTXbUDrx7WCCtR4yTavX5+lGHB5Ll1nIdqwdFc0kef3RT+60IzHURcHXvaPkFb/IVbkioVtvAZb7kIwQ==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/experiments/-/experiments-2.160.1.tgz", + "integrity": "sha512-Ypz4wqBFjpn2RhRi5HnZq5bgxbjTYllEf9EMnnzhKbq3uB9rjewHsmWL+91bS1s4M5L5juLQ/dGtEsNkn1u/KA==", "requires": {} }, "@tramvai/module-cache-warmup": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-cache-warmup/-/module-cache-warmup-2.40.0.tgz", - "integrity": "sha512-X+NYp6+HAUYdUDnz8Vm4E4KnePrdbu+Uoknxsc0QPPcqZJTBlG+5+qf0j3EyCgHOMOkuUft4uJthRdWx819xMA==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-cache-warmup/-/module-cache-warmup-2.160.1.tgz", + "integrity": "sha512-PErb6vW8Uy03wqv9/s4OTSzYcIYfgeqi9ov3hNIMv7jLq53HBIxLd552u17Uj/TWWGzPECZl0+QGMp65eDvnDg==", "requires": { "@tinkoff/request-core": "^0.9.2", - "@tinkoff/request-plugin-protocol-http": "^0.11.6", - "@tinkoff/url": "0.8.4" + "@tinkoff/request-plugin-protocol-http": "^0.11.8", + "@tinkoff/url": "0.8.6" } }, "@tramvai/module-client-hints": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-client-hints/-/module-client-hints-2.40.0.tgz", - "integrity": "sha512-jy7RalXUgyc9UvwzjgnA5Oy2luVp0xpB1tIIbWiHaqCrvRxWpBwUACmUbXOSqnO7EF4FLfM8vE/IH9Xxwk9flg==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-client-hints/-/module-client-hints-2.160.1.tgz", + "integrity": "sha512-xoGFuiF/1BLQp/o/y12Xje3eF8Dk92sDRtfdchvC7+Rg8+Sk8TwP9GaLuF5kTvD65MdKZjU553ckEVoxFe39iw==", "requires": { - "@tinkoff/user-agent": "0.4.90", + "@tinkoff/env-validators": "0.1.6", + "@tinkoff/user-agent": "0.4.464", "@tinkoff/utils": "^2.1.2", - "@tramvai/safe-strings": "0.5.5", - "@tramvai/tokens-child-app": "2.40.0", - "@tramvai/tokens-common": "2.40.0", - "@tramvai/tokens-cookie": "2.40.0" + "@tramvai/module-metrics": "2.160.1", + "@tramvai/safe-strings": "0.5.12", + "@tramvai/tokens-child-app": "2.160.1", + "@tramvai/tokens-common": "2.160.1", + "@tramvai/tokens-cookie": "2.160.1", + "@tramvai/tokens-render": "2.160.1", + "user-agent-data-types": "^0.3.1" } }, "@tramvai/module-common": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-common/-/module-common-2.40.0.tgz", - "integrity": "sha512-UWNu2nFaoczI3OJqScPh78mLrpLtZZbm4rvfoN/UWU8frt4eZbEKocsvGmCVwWIdkae2m1075iVoysJnwYAUCA==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-common/-/module-common-2.160.1.tgz", + "integrity": "sha512-BmmrnENq4Z/xjvXp8ZbHB2jJVUpLNONM9CHqfKyohAcpZJpbSMOvs8DFSpEuxDycnAqGLmpXLhB2NjZLhqSx+g==", "requires": { - "@tinkoff/errors": "0.3.5", - "@tinkoff/hook-runner": "0.4.4", + "@akashbabu/lfu-cache": "1.0.2", + "@tinkoff/errors": "0.3.8", + "@tinkoff/hook-runner": "0.4.6", "@tinkoff/lru-cache-nano": "^7.8.1", - "@tinkoff/pubsub": "0.5.5", - "@tinkoff/url": "0.8.4", - "@tramvai/experiments": "2.40.0", - "@tramvai/module-cookie": "2.40.0", - "@tramvai/module-environment": "2.40.0", - "@tramvai/module-log": "2.40.0", - "@tramvai/tokens-child-app": "2.40.0", - "@tramvai/tokens-common": "2.40.0", - "@tramvai/tokens-render": "2.40.0", - "@tramvai/tokens-server-private": "2.40.0", + "@tinkoff/pubsub": "0.5.7", + "@tinkoff/url": "0.8.6", + "@tramvai/experiments": "2.160.1", + "@tramvai/module-cookie": "2.160.1", + "@tramvai/module-environment": "2.160.1", + "@tramvai/module-log": "2.160.1", + "@tramvai/safe-strings": "0.5.12", + "@tramvai/tokens-child-app": "2.160.1", + "@tramvai/tokens-common": "2.160.1", + "@tramvai/tokens-core-private": "2.160.1", + "@tramvai/tokens-render": "2.160.1", + "@tramvai/tokens-server-private": "2.160.1", + "@tramvai/types-actions-state-context": "2.160.1", "hoist-non-react-statics": "^3.3.1", "node-abort-controller": "^3.0.1" } }, "@tramvai/module-cookie": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-cookie/-/module-cookie-2.40.0.tgz", - "integrity": "sha512-gqyknow9TEUOxrD7b+YOJhJ3dm8R/WaOR2IyijTS141H0K3zoml0xkYpsl3xJdeyRolS73Z/kWn9F/VYbNrw7A==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-cookie/-/module-cookie-2.160.1.tgz", + "integrity": "sha512-61FwEzmgvHRfEDabKtmsAL8aFiEEtAldC0ezsn2Y/XPCalnOweIzUlHSqUKnYR3BXmzACPXeqyU33vjkT3cmbQ==", "requires": { - "@tinkoff/browser-cookies": "2.0.4", - "@tramvai/module-client-hints": "2.40.0", - "@tramvai/tokens-cookie": "2.40.0", - "cookie": "^0.4.0" + "@tinkoff/browser-cookies": "2.0.8", + "@tramvai/module-client-hints": "2.160.1", + "@tramvai/tokens-cookie": "2.160.1", + "cookie": "^0.5.0" + }, + "dependencies": { + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + } } }, "@tramvai/module-environment": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-environment/-/module-environment-2.40.0.tgz", - "integrity": "sha512-uDjLLRS60FcFzjCLe8Xv1a2wGDGA0ajkkkeql1wbvnEvV9J+zB2PlKtv/Uo0xf/1YTC/0LpFdNcBcA1gFAn0Iw==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-environment/-/module-environment-2.160.1.tgz", + "integrity": "sha512-UFX4QhrRk9VdlOuZ7C6XZyJC89BQxzYhRgGxxNMVuO21EJDckrNB/FzZRMSnlOr1/NBJQHlVJNRTiBbSZCiRlw==", "requires": {} }, "@tramvai/module-error-interceptor": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-error-interceptor/-/module-error-interceptor-2.40.0.tgz", - "integrity": "sha512-rSU4zMhBrAk6oiZVP+wnO+L5WC3JTUeEpkQREzwbKG6AQJX5+EmkGxveRx4zT43tYNsxOzJVOVxagX4Qq0hUFQ==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-error-interceptor/-/module-error-interceptor-2.160.1.tgz", + "integrity": "sha512-7IXXBTk9tQr1RWEbr2O5WYTPMKgau52DhbhEa6cm52TAR33cCYmf+0HrHl7HEAnoxT2ydGfzk5LiaVrWsA0/bA==", "requires": { - "@tinkoff/error-handlers": "0.5.4" + "@tinkoff/error-handlers": "0.5.6" } }, "@tramvai/module-log": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-log/-/module-log-2.40.0.tgz", - "integrity": "sha512-87T9vWx14gkyY3vCij8OUPBWquar46xjyTehfdMtUvTfe9jn4VnO+Qp7kG8YoLCmGcN0e+FNSywAZHrrI8gvqA==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-log/-/module-log-2.160.1.tgz", + "integrity": "sha512-rPa2U5/Zcwk4P3zQptzxld7Hj3nnf9viSkHC1rsfU0THG4shzDtTqowc9vfhFnkXN577wjrrPsSpJP3CI6EaFA==", "requires": { - "@tinkoff/logger": "0.10.54" + "@tinkoff/logger": "0.10.67" } }, "@tramvai/module-metrics": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-metrics/-/module-metrics-2.40.0.tgz", - "integrity": "sha512-YRiu3eBes4UJ4nQd1jBmPZn2WSntrv0WCR/OPn1zUUMdf1RVisdImz9HHXXxCUplI162V6hmdbSRbnGRYaKGKA==", - "requires": { - "@tinkoff/browser-timings": "0.10.4", - "@tinkoff/logger": "0.10.54", - "@tinkoff/measure-fastify-requests": "0.1.6", - "@tinkoff/metrics-noop": "2.0.4", - "@tinkoff/monkeypatch": "2.0.3", - "@tinkoff/url": "0.8.4", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-metrics/-/module-metrics-2.160.1.tgz", + "integrity": "sha512-pbASuHM6Wk7pF45fQTn0LPWZL3yQLQj006T8hBgkKAd0KQQSX+KoWvkexMA6wxqfX2MUbytocQL4FG0/8UYE4w==", + "requires": { + "@tinkoff/browser-timings": "0.10.6", + "@tinkoff/logger": "0.10.67", + "@tinkoff/measure-fastify-requests": "0.1.11", + "@tinkoff/metrics-noop": "2.1.0", + "@tinkoff/monkeypatch": "2.0.5", + "@tinkoff/url": "0.8.6", "@tinkoff/utils": "^2.1.2", - "@tramvai/core": "2.40.0", - "@tramvai/module-common": "2.40.0", - "@tramvai/papi": "2.40.0", - "@tramvai/state": "2.40.0", - "@tramvai/tokens-http-client": "2.40.0", - "@tramvai/tokens-metrics": "2.40.0", - "@tramvai/tokens-router": "2.40.0", - "@tramvai/tokens-server": "2.40.0", - "@tramvai/tokens-server-private": "2.40.0", - "prom-client": "^12.0.0" + "@tramvai/core": "2.160.1", + "@tramvai/papi": "2.160.1", + "@tramvai/state": "2.160.1", + "@tramvai/tokens-common": "2.160.1", + "@tramvai/tokens-core-private": "2.160.1", + "@tramvai/tokens-http-client": "2.160.1", + "@tramvai/tokens-metrics": "2.160.1", + "@tramvai/tokens-router": "2.160.1", + "@tramvai/tokens-server": "2.160.1", + "@tramvai/tokens-server-private": "2.160.1", + "prom-client": "^14.2.0" } }, "@tramvai/module-page-render-mode": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-page-render-mode/-/module-page-render-mode-2.40.0.tgz", - "integrity": "sha512-tcpAGjWd9Hic63dgm854MgVq6SeXqGiSucLVENm7033nXqbcmAAqbSScB1x0MuqeIOKTsnMlkt+8aC3Lb9Tw2Q==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-page-render-mode/-/module-page-render-mode-2.160.1.tgz", + "integrity": "sha512-o0yVcUYUPgrw3LVvChsDy8OJJ3SuqFhsPBr/pXzEbiQ546PRPaWJtlVSBoOiv0MSZrEEOWv8S/v+Q1gxWZ+9rA==", "requires": { - "@tinkoff/errors": "0.3.5", - "@tinkoff/url": "0.8.4", + "@tinkoff/errors": "0.3.8", + "@tinkoff/url": "0.8.6", "node-fetch": "^2.6.1" } }, "@tramvai/module-render": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-render/-/module-render-2.40.0.tgz", - "integrity": "sha512-1TamKsHUGMw+fR0tYMVmHw+RLtHHBiS2KF4wFt8t9SQIExCcLH4LT/DBEPXKGF28ghy3r8NNWwuhbqKb+PE0jQ==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-render/-/module-render-2.160.1.tgz", + "integrity": "sha512-9mg53uK10Z2K4+fLlzM+MwrhOlqyMhtpGJ2UPwX9Yz2hAFbGtOvoE0LCj9SOyC6MZ66XgdsvK9Edqy9eSjiNvA==", "requires": { "@loadable/server": "^5.15.0", - "@tinkoff/htmlpagebuilder": "0.5.5", - "@tinkoff/layout-factory": "0.3.4", - "@tinkoff/url": "0.8.4", - "@tinkoff/user-agent": "0.4.90", - "@tramvai/experiments": "2.40.0", - "@tramvai/module-client-hints": "2.40.0", - "@tramvai/module-router": "2.40.0", - "@tramvai/react": "2.40.0", - "@tramvai/safe-strings": "0.5.5", - "@tramvai/tokens-render": "2.40.0", + "@tinkoff/errors": "0.3.8", + "@tinkoff/htmlpagebuilder": "0.5.8", + "@tinkoff/layout-factory": "0.3.8", + "@tinkoff/url": "0.8.6", + "@tinkoff/user-agent": "0.4.464", + "@tramvai/experiments": "2.160.1", + "@tramvai/module-client-hints": "2.160.1", + "@tramvai/module-router": "2.160.1", + "@tramvai/react": "2.160.1", + "@tramvai/safe-strings": "0.5.12", + "@tramvai/tokens-render": "2.160.1", "@types/loadable__server": "^5.12.6", "node-fetch": "^2.6.1" } }, "@tramvai/module-router": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-router/-/module-router-2.40.0.tgz", - "integrity": "sha512-p+4oRjNNZZ6ejz0A6bkmV5t34VsiMwPzaE0mES6a7Rr9LmEbfNAki6jdKMhAkZ0i96KfjM78Sj32D4CkLwJaaQ==", - "requires": { - "@tinkoff/errors": "0.3.5", - "@tinkoff/router": "0.2.4", - "@tinkoff/url": "0.8.4", - "@tramvai/experiments": "2.40.0", - "@tramvai/tokens-child-app": "2.40.0", - "@tramvai/tokens-render": "2.40.0", - "@tramvai/tokens-router": "2.40.0", - "@tramvai/tokens-server": "2.40.0" + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-router/-/module-router-2.160.1.tgz", + "integrity": "sha512-D/544P2UN0xxJwxSd5R8j8XQ3wX+qtmVVX2w+FAIZUb1bafj0QgUxjDVOF7dkgFT3fEck2LQygrdpL71J54hpA==", + "requires": { + "@tinkoff/errors": "0.3.8", + "@tinkoff/router": "0.2.19", + "@tinkoff/url": "0.8.6", + "@tramvai/experiments": "2.160.1", + "@tramvai/react": "2.160.1", + "@tramvai/safe-strings": "0.5.12", + "@tramvai/tokens-child-app": "2.160.1", + "@tramvai/tokens-render": "2.160.1", + "@tramvai/tokens-router": "2.160.1", + "@tramvai/tokens-server": "2.160.1" } }, "@tramvai/module-sentry": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-sentry/-/module-sentry-2.40.0.tgz", - "integrity": "sha512-ifkW7tY603+GKqqMpwd1QcfeUOfXdNoSGyIvmX0gTaj8Hh8fdCSQYFgkvknmpQGVvx4jEaq+U18kjU+3xetwuw==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-sentry/-/module-sentry-2.160.1.tgz", + "integrity": "sha512-rMYh7dqWx/cis/ed1b5cs1pTqs+MTsT0YBe6Gm+pmqvOtcvHXRBSFjGsR2sGgBeLQDSvXvI9uWw5dmVasg0PGg==", "requires": { "@sentry/node": "^6.17.2", "@sentry/types": "^6.17.2" } }, "@tramvai/module-seo": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-seo/-/module-seo-2.40.0.tgz", - "integrity": "sha512-z0ZKFs0MVxlgXhIuAljO4YHFRrpaScDc4Nj8ayrKObu5vUAie8DhySpCy3Lqs0wRfx9yj11tWPvS4qH4gi0fTA==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-seo/-/module-seo-2.160.1.tgz", + "integrity": "sha512-koCaBRMpK9uSZOtJI9WQe3zePEF2xUp22VWVGNQYiHpwnaXYxNL8F+Wu9UetXm04260u1rCrxe4y45UF4NZLow==", "requires": { - "@tinkoff/meta-tags-generate": "0.5.4" + "@tinkoff/meta-tags-generate": "0.5.11" } }, "@tramvai/module-server": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/module-server/-/module-server-2.40.0.tgz", - "integrity": "sha512-7XR3j7RNo9ZglfmFOzvdd4NPQVL3cO+GLu3pVaiOuSQFsLxMcQMznWEGSs34GFJfuVjXKDRtVjC8u/tuZpaWdQ==", - "requires": { - "@fastify/compress": "^6.1.1", - "@fastify/cookie": "^8.1.0", - "@fastify/formbody": "^7.2.0", - "@fastify/static": "^6.5.0", - "@tinkoff/errors": "0.3.5", - "@tinkoff/monkeypatch": "2.0.3", - "@tinkoff/terminus": "0.1.5", - "@tinkoff/url": "0.8.4", - "@tramvai/module-cache-warmup": "2.40.0", - "@tramvai/module-metrics": "2.40.0", - "@tramvai/papi": "2.40.0", - "@tramvai/tokens-server": "2.40.0", - "@tramvai/tokens-server-private": "2.40.0", - "fastify": "^4.6.0", - "fastify-plugin": "^4.2.1", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/module-server/-/module-server-2.160.1.tgz", + "integrity": "sha512-UuenMAngG7miunTqZR2qps85RICoPgf0W9ZuvpQjeX+obW5d/PiVMF9PE4r8BriTQdSqPWDWVvq0chZTcKDXVg==", + "requires": { + "@fastify/compress": "^6.2.0", + "@fastify/cookie": "^8.3.0", + "@fastify/formbody": "^7.4.0", + "@fastify/static": "^6.9.0", + "@loadable/server": "^5.15.0", + "@tinkoff/errors": "0.3.8", + "@tinkoff/monkeypatch": "2.0.5", + "@tinkoff/terminus": "0.1.9", + "@tinkoff/url": "0.8.6", + "@tramvai/module-cache-warmup": "2.160.1", + "@tramvai/module-metrics": "2.160.1", + "@tramvai/papi": "2.160.1", + "@tramvai/safe-strings": "0.5.12", + "@tramvai/tokens-router": "2.160.1", + "@tramvai/tokens-server": "2.160.1", + "@tramvai/tokens-server-private": "2.160.1", + "fastify": "^4.14.1", "http-proxy-middleware": "^2.0.2" } }, "@tramvai/papi": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/papi/-/papi-2.40.0.tgz", - "integrity": "sha512-QIjrMilyJjQNuVZooiMoTXAJjXy2PlJSz/D3vr11OmdmElxBWdJ6zvkNg/hFmu5AoaqGqIL+IaXh68g+BqLEbg==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/papi/-/papi-2.160.1.tgz", + "integrity": "sha512-tPy6aQiQ10w6FRpuq+vTh2oUClHBk/2340e73r24jz5UL/FyxPjOlcw9mQe/WFzPWB2wqyeS4TNDrXGSf1EPnw==", "requires": { - "@tinkoff/url": "0.8.4", + "@tinkoff/url": "0.8.6", "@tinkoff/utils": "^2.1.2", "tslib": "^2.4.0" } }, "@tramvai/react": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/react/-/react-2.40.0.tgz", - "integrity": "sha512-B3oaQ5/aKiAx27wN1Ejg5w/cM0Dzt3NTJOrrYmEkoFEe7NuSXH2f8MjhIn5ATVfgytamxxhYlEsNt1luwgEDag==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/react/-/react-2.160.1.tgz", + "integrity": "sha512-KS2vE3af6zn34iNRtHhk7/5UhcNq4PU2qUVktF/DhobLwYVzMdiThTdP1PknuGy2Wq9vZfqETV8xk4j53yqCPw==", "requires": { "@loadable/component": "^5.15.2", - "@tramvai/types-actions-state-context": "2.40.0", + "@tramvai/types-actions-state-context": "2.160.1", "@types/loadable__component": "^5.13.4", "hoist-non-react-statics": "^3.3.0" } }, "@tramvai/safe-strings": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@tramvai/safe-strings/-/safe-strings-0.5.5.tgz", - "integrity": "sha512-/DjbY80RPWc1yZwfddFgf/aTSxWOq09veAR1LXPzFc5mJL+RD6x0PfCcuK2USNX002wDoU0jcvXuStAmGfMO/A==", + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/@tramvai/safe-strings/-/safe-strings-0.5.12.tgz", + "integrity": "sha512-nJMlDdC8SbNtP5M5f4x0OhW2r2t7V7zL8MZqYNcZIZL2UtyioqAZwIthO/qsDTBRtISAkfjFRkmdaIvOaNRdeA==", "requires": { "@tinkoff/utils": "^2.1.3", "tslib": "^2.4.0" } }, "@tramvai/state": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/state/-/state-2.40.0.tgz", - "integrity": "sha512-N5dwriAVUopnlY2WbViUa6/NfBDHGXWB5JkNtiqhZ3IoGpt0IH5yWME67wXqrvuMGrcnFrRKLGwNBw+9oOu6TQ==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/state/-/state-2.160.1.tgz", + "integrity": "sha512-eImPWSCj92XLLDfAru7H+ajdhjZnkRkNYHbSOE/2hN2/nyBIDRpik57vbNKg3wUx2UjG2R9MH25BHj41Vm447g==", "requires": { - "@tinkoff/react-hooks": "0.1.4", + "@tinkoff/react-hooks": "0.1.6", "@tinkoff/utils": "^2.1.2", - "@tramvai/types-actions-state-context": "2.40.0", + "@tramvai/types-actions-state-context": "2.160.1", "@types/hoist-non-react-statics": "^3.3.1", "invariant": "^2.2.4", "react-is": ">=17", @@ -23809,13 +25349,13 @@ } }, "@tramvai/test-helpers": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/test-helpers/-/test-helpers-2.40.0.tgz", - "integrity": "sha512-zep7qhuwPfDD3yxQwXa5W3jWoMWAwn2RWTr6pHCaRFBPQ1qRn5YTva3NVVPs0OcWR3esFCMl+59+LbMehvmicA==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/test-helpers/-/test-helpers-2.160.1.tgz", + "integrity": "sha512-DyWjioCUthdmd/laQ7oaHiM3XOx1ru3uu1gvzjrYqiGHIN3LXokzhi9HfGNMYQbsS0OR6xdWYAvYtf2apQp/+A==", "peer": true, "requires": { - "@tramvai/core": "2.40.0", - "@tramvai/test-mocks": "2.40.0", + "@tramvai/core": "2.160.1", + "@tramvai/test-mocks": "2.160.1", "@types/express": "^4.17.1", "@types/supertest": "^2.0.11", "fastify": "^4.6.0", @@ -23825,105 +25365,114 @@ } }, "@tramvai/test-mocks": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/test-mocks/-/test-mocks-2.40.0.tgz", - "integrity": "sha512-YEvvckFzn3AsgjxyHGQ+oWDEEFXwSao8Gz3V3MFsPFOKGFGrjsMITpTLmtxDrylO1biEkn/IaMSt+sKKRikL8g==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/test-mocks/-/test-mocks-2.160.1.tgz", + "integrity": "sha512-UfB8/GYyHgLEp5mPmr4JfstEUUCo1C76RFQKFNQ+d2e4Q6HNrzOBwFmD2u59CrxfxwZGPhQI7+WRd8P7pyt6Zw==", "peer": true, "requires": { - "@tinkoff/pubsub": "0.5.5", - "@tinkoff/router": "0.2.4", - "@tinkoff/url": "0.8.4", - "@tramvai/core": "2.40.0", - "@tramvai/module-common": "2.40.0", - "@tramvai/module-cookie": "2.40.0", - "@tramvai/state": "2.40.0", - "@tramvai/tokens-common": "2.40.0" + "@tinkoff/pubsub": "0.5.7", + "@tinkoff/router": "0.2.19", + "@tinkoff/url": "0.8.6", + "@tramvai/core": "2.160.1", + "@tramvai/module-common": "2.160.1", + "@tramvai/module-cookie": "2.160.1", + "@tramvai/state": "2.160.1", + "@tramvai/tokens-common": "2.160.1" } }, "@tramvai/tokens-child-app": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-child-app/-/tokens-child-app-2.40.0.tgz", - "integrity": "sha512-QUpyT//TsJknJP7yRtLWebOY1sU6NsEvHpPwS07UVgdoAuf7SQ3cHEdPU2ibkYDI7EDlCQ91B0dii77hz6ch9w==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-child-app/-/tokens-child-app-2.160.1.tgz", + "integrity": "sha512-c06SS5O5Rgkc9GsHPPWANTwNG9FxEONNeLKg7QFaTtTyQHz+3FezNTo4MqgrANxfsLOGqfuwOVrnwcyOw9uldg==", "requires": {} }, "@tramvai/tokens-common": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-common/-/tokens-common-2.40.0.tgz", - "integrity": "sha512-oU7Re1RXfRc8kGRHkqgQH5hI45ubYZPhd4BW+QnEBzmcAwqeufKGBLsqJ2aeQQRfJv/q8ZyJUDrOxS83Nq766w==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-common/-/tokens-common-2.160.1.tgz", + "integrity": "sha512-QOIasrrHi4UKwqDm4TQSpBdyF+9bG9JwC5dffMPwhqgj65uCF7seUCMOpWJeoVU1no1sisfmrXeieEoVnq18+g==", "requires": { "@tinkoff/lru-cache-nano": "^7.8.1", - "@tinkoff/url": "0.8.4", - "@tramvai/react": "2.40.0", - "@tramvai/tokens-core": "2.40.0" + "@tinkoff/url": "0.8.6", + "@tramvai/react": "2.160.1", + "@tramvai/tokens-core": "2.160.1", + "node-abort-controller": "^3.0.1" } }, "@tramvai/tokens-cookie": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-cookie/-/tokens-cookie-2.40.0.tgz", - "integrity": "sha512-Gndg0YRR+nx+KX3lAeQj3aXBkqezIDbrLdV9PC4ZTvsr5eW5H6v4uwC2JSKdt4ePjv6vPy5uCsgOrWtwu4qe8A==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-cookie/-/tokens-cookie-2.160.1.tgz", + "integrity": "sha512-I1mxpTwarVdZL5iRlHrb3qA3vmXya1gflLt0mMwPwZ44UeYVBvkPedOYet6iF8Xnx00eoUk2OhkUUuTVn2jRYQ==", "requires": {} }, "@tramvai/tokens-core": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-core/-/tokens-core-2.40.0.tgz", - "integrity": "sha512-ZV8QXk8mXmYxcNqkytaSfK+PM26ddxgNpKjNZB/USHWCBIlO3QY3wlWMvjwNQ+Mb1j3bwphD2MUKv6H1fSmnSw==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-core/-/tokens-core-2.160.1.tgz", + "integrity": "sha512-1MYhIxkxZ4Zjyo28Hx38sfTXekPAeVYPpuJZk9r9ERKanw9NIpC/NB3HnRxGIxpFB8fwKSXwGvEPWcA1TfMkGg==", "requires": { - "@tramvai/types-actions-state-context": "2.40.0" + "@tramvai/types-actions-state-context": "2.160.1" + } + }, + "@tramvai/tokens-core-private": { + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-core-private/-/tokens-core-private-2.160.1.tgz", + "integrity": "sha512-ZVde5DUtsyz/q3kLwhdFINHdlCKOaYUCRInBVwRLSWqbJur4zwq9CyUIuLYN5a1f5YSjYl1toVb7IGnpZPt7pQ==", + "requires": { + "@tramvai/tokens-core": "2.160.1" } }, "@tramvai/tokens-http-client": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-http-client/-/tokens-http-client-2.40.0.tgz", - "integrity": "sha512-j6J4le8rlecgXEckOLnlghPThNVHeEAtvagX7DuNEopNDrHsgZLEHs5gAySH68VARxBH1k6J6K8gtFuoE0o9cQ==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-http-client/-/tokens-http-client-2.160.1.tgz", + "integrity": "sha512-bhuDqSyjFtzrwO7A01F1Xtd00CQsY8BZlHh3QsrxI2gzBfqVUnESxjGMgC+MCPGe6EpbvegFnWoTD5DqPlXE/w==", "requires": {} }, "@tramvai/tokens-metrics": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-metrics/-/tokens-metrics-2.40.0.tgz", - "integrity": "sha512-5Xj8dJE09bVhQWOous7QmPf6FvRHbjeS3+E/LZXyfARRGNSpOrqEA0RrI1e/kqSc3NBDHis/JUcFNVcuPL2jVA==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-metrics/-/tokens-metrics-2.160.1.tgz", + "integrity": "sha512-u2CNNHNlGDH2dui7lWnmp61aRo1S2+dohk4daReUkcnfLB29A0RVyse+XAAvOx4e2ARD1pwtJo3zf26CIsZQSg==", "requires": { - "prom-client": "^12.0.0" + "prom-client": "^14.2.0" } }, "@tramvai/tokens-render": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-render/-/tokens-render-2.40.0.tgz", - "integrity": "sha512-izUQq4FIMOQxEHAjWtOZnw4G9OTZU+8qs1wUGf5T5O/KG173xQy44A1cM8agoO1n1Y2hiJTxNHGklpQdFFxbqg==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-render/-/tokens-render-2.160.1.tgz", + "integrity": "sha512-KNNbRZQVXDk8fBVihJQS30IURE7kLUHCTkHhsrKSd0OEtOcl7293E1V18XeVfoCk9vXIMdQ0/WwikmNfsgIoBw==", "requires": { - "@tinkoff/htmlpagebuilder": "0.5.5" + "@tinkoff/htmlpagebuilder": "0.5.8" } }, "@tramvai/tokens-router": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-router/-/tokens-router-2.40.0.tgz", - "integrity": "sha512-4bfvRWyASXPQaHvRS/uatuO4Rc6KVDO465eMdzS4OiXXMx40c8mM2PKezcDEJI4cOxkwOovZP5VIc9SVLU2JkQ==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-router/-/tokens-router-2.160.1.tgz", + "integrity": "sha512-suP3n8Sbl+VCGyhUWc+swOp0RMblSztt8lMI16HEBC13kWh05eZCiHuugy6xAV/gMQKV/x0Z3tfUlmf/DoTBDA==", "requires": { - "@tinkoff/router": "0.2.4", - "@tramvai/tokens-common": "2.40.0" + "@tinkoff/router": "0.2.19", + "@tramvai/react": "2.160.1" } }, "@tramvai/tokens-server": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-server/-/tokens-server-2.40.0.tgz", - "integrity": "sha512-zBAksZk2ndDP1qtQrmTjobnmTUljNKhXEsDwf2R2U9dts+C9CZAlGjQPvq0D6nlVKtXO3mVDdr4IrB+wWjOtTA==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-server/-/tokens-server-2.160.1.tgz", + "integrity": "sha512-jv9meI6hqBtDAbu/lUfdQdXFVlbw0HX1B7Pj6ZnLyATYu3RpQ8Tzdotnbl1E7Ak4K4x3xI2KZwFrO39LYg8KZQ==", "requires": { - "@tramvai/papi": "2.40.0" + "@tramvai/papi": "2.160.1" } }, "@tramvai/tokens-server-private": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/tokens-server-private/-/tokens-server-private-2.40.0.tgz", - "integrity": "sha512-Xkwe7GghqCF0kL1vZWs3wc4bTWZ5NNp56leiL2NYseUmly2mR/HRczRWHDJ8hsUIjsk5LHB8t2xE0Xr9pSTE2A==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/tokens-server-private/-/tokens-server-private-2.160.1.tgz", + "integrity": "sha512-wuqYYNrHA5fFTlr77Veg/WNPGh+nVWVChBkJXteJ8pgqAMMXCYPHmW1DrOXHukG3fsQUWXxAE03CIQSHJkcC2A==", "requires": { - "@tramvai/papi": "2.40.0" + "@tramvai/papi": "2.160.1" } }, "@tramvai/tools-check-versions": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/@tramvai/tools-check-versions/-/tools-check-versions-0.4.5.tgz", - "integrity": "sha512-STrwYhKSe9j4IthWAeKhYPrJ0WUI4hggQgKITfpcCcoluwkp1vQXQozEiX7AoesTMHJUSMgsYYa6vLEyO/VfCQ==", + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/@tramvai/tools-check-versions/-/tools-check-versions-0.4.18.tgz", + "integrity": "sha512-xL2gKvZasyA39JRvwGiddBdV7mRiXBX5wKt+DVG77Wgk7Xy+t1SjoT5ISmT3eND4TAmQdYfA9XbW0yjhyQ61GQ==", "requires": { - "@tinkoff/logger": "0.10.54", + "@tinkoff/logger": "0.10.67", "@tinkoff/utils": "^2.1.2", "fs-extra": "^9.0.0", "p-map": "^4.0.0", @@ -23932,9 +25481,9 @@ }, "dependencies": { "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "requires": { "lru-cache": "^6.0.0" } @@ -23942,19 +25491,19 @@ } }, "@tramvai/tools-migrate": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/@tramvai/tools-migrate/-/tools-migrate-0.6.6.tgz", - "integrity": "sha512-vP6jGDFOSasAxiTOutVFykctZzJLn7AHnMGWBmMJrmcCsr4QwuLSJTjS6QR0IeFCYZHfrU6SvpA9BqCrKUjb/w==", + "version": "0.6.23", + "resolved": "https://registry.npmjs.org/@tramvai/tools-migrate/-/tools-migrate-0.6.23.tgz", + "integrity": "sha512-FOdCxtch13eUPu8y2dLP4ZqPDPU87cFs4Qiw0VFa8JQigS6vvBipGU5S6OvW2j6VBoGtOTmvzpNDB8n/B2kZwQ==", "requires": { - "@tinkoff/logger": "0.10.54", - "@tinkoff/package-manager-wrapper": "0.1.4", + "@tinkoff/logger": "0.10.67", + "@tinkoff/package-manager-wrapper": "0.1.9", "@tinkoff/utils": "^2.1.2", "env-ci": "^5.0.2", "fast-glob": "^3.2.2", "fs-extra": "^9.0.0", - "jscodeshift": "^0.13.0", + "jscodeshift": "^0.15.0", "p-map": "^4.0.0", - "recast": "^0.17.2", + "recast": "^0.23.4", "tslib": "^2.4.0" }, "dependencies": { @@ -23966,41 +25515,6 @@ "color-convert": "^2.0.1" } }, - "ast-types": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", - "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", - "requires": { - "tslib": "^2.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -24013,128 +25527,47 @@ "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "jscodeshift": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.13.1.tgz", - "integrity": "sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==", - "requires": { - "@babel/core": "^7.13.16", - "@babel/parser": "^7.13.16", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/preset-flow": "^7.13.13", - "@babel/preset-typescript": "^7.13.0", - "@babel/register": "^7.13.16", - "babel-core": "^7.0.0-bridge.0", - "chalk": "^4.1.2", - "flow-parser": "0.*", - "graceful-fs": "^4.2.4", - "micromatch": "^3.1.10", - "neo-async": "^2.5.0", - "node-dir": "^0.1.17", - "recast": "^0.20.4", - "temp": "^0.8.4", - "write-file-atomic": "^2.3.0" - }, - "dependencies": { - "recast": { - "version": "0.20.5", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz", - "integrity": "sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==", - "requires": { - "ast-types": "0.14.2", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tslib": "^2.0.1" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "jscodeshift": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz", + "integrity": "sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==", + "requires": { + "@babel/core": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.23.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/preset-flow": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@babel/register": "^7.22.15", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.23.3", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" + } }, "supports-color": { "version": "7.2.0", @@ -24143,23 +25576,15 @@ "requires": { "has-flag": "^4.0.0" } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } } } }, "@tramvai/types-actions-state-context": { - "version": "2.40.0", - "resolved": "https://registry.npmjs.org/@tramvai/types-actions-state-context/-/types-actions-state-context-2.40.0.tgz", - "integrity": "sha512-YpfpUDLgF5C/Vh06o940FDCfxPHhd1LHxbUt1OUMEROieMkna6c8rJQ8LLY2R3cxV5HHgJTN0lhp+UjqPnXVMA==", + "version": "2.160.1", + "resolved": "https://registry.npmjs.org/@tramvai/types-actions-state-context/-/types-actions-state-context-2.160.1.tgz", + "integrity": "sha512-G6DGxt7IEuS6LVDWJYUV7E0rnid/oHlh/txdOzAnReLxRdrysO/eAxGcMIhCGTpDU7diCjU01Pkrj1zNxAUskA==", "requires": { + "node-abort-controller": "^3.0.1", "tslib": "^2.4.0" } }, @@ -24169,9 +25594,9 @@ "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" }, "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "peer": true, "requires": { "@types/connect": "*", @@ -24179,18 +25604,18 @@ } }, "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "peer": true, "requires": { "@types/node": "*" } }, "@types/cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", + "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", "peer": true }, "@types/eslint": { @@ -24217,9 +25642,9 @@ "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" }, "@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "peer": true, "requires": { "@types/body-parser": "*", @@ -24229,14 +25654,15 @@ } }, "@types/express-serve-static-core": { - "version": "4.17.33", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", - "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", + "version": "4.17.43", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", + "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", "peer": true, "requires": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "@types/glob": { @@ -24257,6 +25683,12 @@ "hoist-non-react-statics": "^3.3.0" } }, + "@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "peer": true + }, "@types/http-proxy": { "version": "1.17.9", "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", @@ -24275,22 +25707,22 @@ } }, "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" }, "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "requires": { "@types/istanbul-lib-coverage": "*" } }, "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "requires": { "@types/istanbul-lib-report": "*" } @@ -24322,10 +25754,16 @@ "@types/react": "*" } }, + "@types/methods": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", + "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", + "peer": true + }, "@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "peer": true }, "@types/minimatch": { @@ -24351,9 +25789,9 @@ "dev": true }, "@types/object-path": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@types/object-path/-/object-path-0.11.1.tgz", - "integrity": "sha512-219LSCO9HPcoXcRTC6DbCs0FRhZgBnEMzf16RRqkT40WbkKx3mOeQuz3e2XqbfhOz/AHfbru0kzB1n1RCAsIIg==" + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/@types/object-path/-/object-path-0.11.4.tgz", + "integrity": "sha512-4tgJ1Z3elF/tOMpA8JLVuR9spt9Ynsf7+JjqsQ2IqtiPJtcLoHoXcT6qU4E10cPFqyXX5HDm9QwIzZhBSkLxsw==" }, "@types/parse-json": { "version": "4.0.0", @@ -24365,21 +25803,16 @@ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, - "@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" - }, "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "version": "6.9.11", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", "peer": true }, "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "peer": true }, "@types/react": { @@ -24391,35 +25824,55 @@ "csstype": "^3.0.2" } }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "requires": { + "@types/node": "*" + } + }, "@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.7.tgz", + "integrity": "sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==" + }, + "@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "peer": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } }, "@types/serve-static": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", - "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", "peer": true, "requires": { + "@types/http-errors": "*", "@types/mime": "*", "@types/node": "*" } }, "@types/superagent": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.16.tgz", - "integrity": "sha512-tLfnlJf6A5mB6ddqF159GqcDizfzbMUB1/DeT59/wBNqzRTNNKsaw79A/1TZ84X+f/EwWH8FeuSkjlCLyqS/zQ==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.3.tgz", + "integrity": "sha512-R/CfN6w2XsixLb1Ii8INfn+BT9sGPvw74OavfkW4SwY+jeUcAwLZv2+bXLJkndnimxjEBm0RPHgcjW9pLCa8cw==", "peer": true, "requires": { - "@types/cookiejar": "*", + "@types/cookiejar": "^2.1.5", + "@types/methods": "^1.1.4", "@types/node": "*" } }, "@types/supertest": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.12.tgz", - "integrity": "sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.16.tgz", + "integrity": "sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg==", "peer": true, "requires": { "@types/superagent": "*" @@ -24433,10 +25886,15 @@ "@types/node": "*" } }, + "@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + }, "@types/ua-parser-js": { - "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.36.tgz", - "integrity": "sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==" + "version": "0.7.39", + "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.39.tgz", + "integrity": "sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg==" }, "@types/uuid": { "version": "9.0.1", @@ -24455,17 +25913,17 @@ } }, "@types/yargs": { - "version": "17.0.13", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", - "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "requires": { "@types/yargs-parser": "*" } }, "@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" }, "@typescript-eslint/eslint-plugin": { "version": "5.41.0", @@ -24484,9 +25942,9 @@ }, "dependencies": { "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -24550,9 +26008,9 @@ }, "dependencies": { "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -24577,9 +26035,9 @@ }, "dependencies": { "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -24598,141 +26056,141 @@ }, "dependencies": { "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true } } }, "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" }, "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" }, "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" }, "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" }, "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "requires": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, @@ -24779,21 +26237,32 @@ } }, "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==" + }, + "acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "requires": {} }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "devOptional": true, + "dev": true, "requires": {} }, "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==" + }, + "address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==" }, "agent-base": { "version": "6.0.2", @@ -24813,13 +26282,13 @@ } }, "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "requires": { "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", "uri-js": "^4.2.2" } }, @@ -24829,32 +26298,8 @@ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "requires": { "ajv": "^8.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - } } }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "requires": {} - }, "ansi-align": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", @@ -24925,6 +26370,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -25025,18 +26471,6 @@ "es-shim-unscopables": "^1.0.0" } }, - "array.prototype.reduce": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", - "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - } - }, "arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", @@ -25056,6 +26490,18 @@ "safer-buffer": "~2.1.0" } }, + "assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "requires": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -25067,9 +26513,12 @@ "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" }, "ast-types": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.12.4.tgz", - "integrity": "sha512-ky/YVYCbtVAS8TdMIaTiPFHwEpRB5z1hctepJplTr3UW5q8TDrpIMCILyk8pmLxGtn2KCtC/lSn7zOsaI7nzDw==" + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", + "requires": { + "tslib": "^2.0.1" + } }, "ast-types-flow": { "version": "0.0.7", @@ -25081,7 +26530,12 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "devOptional": true + "dev": true + }, + "async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, "asynckit": { "version": "0.4.0", @@ -25116,14 +26570,23 @@ "postcss-value-parser": "^4.2.0" } }, + "available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "requires": { + "possible-typed-array-names": "^1.0.0" + } + }, "avvio": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.2.0.tgz", - "integrity": "sha512-bbCQdg7bpEv6kGH41RO/3B2/GMMmJSo2iBK+X8AWN9mujtfUipMDfIjsgHCfpnKqoGEQrrmCDKSa5OQ19+fDmg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.3.0.tgz", + "integrity": "sha512-VBVH0jubFr9LdFASy/vNtm5giTrnbVquWBhT0fyizuNK2rQ7e7ONU2plZQWUNqtE1EmxFEb+kbSkFRkstiaS9Q==", "requires": { + "@fastify/error": "^3.3.0", "archy": "^1.0.0", "debug": "^4.0.0", - "fastq": "^1.6.1" + "fastq": "^1.17.1" } }, "aws-sign2": { @@ -25173,6 +26636,28 @@ "schema-utils": "^2.6.5" }, "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -25237,18 +26722,6 @@ } } }, - "babel-plugin-module-resolver": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz", - "integrity": "sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==", - "requires": { - "find-babel-config": "^1.2.0", - "glob": "^7.1.6", - "pkg-up": "^3.1.0", - "reselect": "^4.0.0", - "resolve": "^1.13.1" - } - }, "babel-plugin-polyfill-corejs2": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", @@ -25358,9 +26831,9 @@ }, "dependencies": { "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -25501,57 +26974,45 @@ } }, "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" } }, "browserslist-generator": { - "version": "1.0.66", - "resolved": "https://registry.npmjs.org/browserslist-generator/-/browserslist-generator-1.0.66.tgz", - "integrity": "sha512-aFDax4Qzh29DdyhHQBD2Yu2L5OvaDnvYFMbmpLrLwwaNK4H6dHEhC/Nxv93/+mfAA+a/t94ln0P2JZvHO6LZDA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/browserslist-generator/-/browserslist-generator-2.1.0.tgz", + "integrity": "sha512-ZFz4mAOgqm0cbwKaZsfJbYDbTXGoPANlte7qRsRJOfjB9KmmISQrXJxAVrnXG8C8v/QHNzXyeJt0Cfcks6zZvQ==", "requires": { - "@mdn/browser-compat-data": "^4.1.16", + "@mdn/browser-compat-data": "^5.3.7", "@types/object-path": "^0.11.1", - "@types/semver": "^7.3.9", + "@types/semver": "^7.5.0", "@types/ua-parser-js": "^0.7.36", - "browserslist": "4.20.2", - "caniuse-lite": "^1.0.30001328", - "isbot": "3.4.5", + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001518", + "isbot": "^3.6.13", "object-path": "^0.11.8", - "semver": "^7.3.7", - "ua-parser-js": "^1.0.2" + "semver": "^7.5.4", + "ua-parser-js": "^1.0.35" }, "dependencies": { - "browserslist": { - "version": "4.20.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", - "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", - "requires": { - "caniuse-lite": "^1.0.30001317", - "electron-to-chromium": "^1.4.84", - "escalade": "^3.1.1", - "node-releases": "^2.0.2", - "picocolors": "^1.0.0" - } - }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "requires": { "lru-cache": "^6.0.0" } }, "ua-parser-js": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.32.tgz", - "integrity": "sha512-dXVsz3M4j+5tTiovFVyVqssXBu5HM47//YSOeZ9fQkdDKkfzv2v3PP1jmH6FUyPW+yCSn7aBVK1fGGKNhowdDA==" + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==" } } }, @@ -25569,6 +27030,11 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==" + }, "builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", @@ -25595,19 +27061,51 @@ "unset-value": "^1.0.0" } }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } + } + }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "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.1" } }, "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==" }, "callsites": { "version": "3.1.0", @@ -25651,9 +27149,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001427", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001427.tgz", - "integrity": "sha512-lfXQ73oB9c8DP5Suxaszm+Ta2sr/4tf8+381GkIm1MLj/YdLf+rEDyDSRCzeltuyTVGm+/s18gdZ0q+Wmp8VsQ==" + "version": "1.0.30001589", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001589.tgz", + "integrity": "sha512-vNQWS6kI+q6sBlHbh71IIeC+sRwK2N3EDySc/updIGhIee2x5z00J4c1242/5/d6EpEMdOnk/m+6tuk4/tcsqg==" }, "case-sensitive-paths-webpack-plugin": { "version": "2.4.0", @@ -25726,9 +27224,9 @@ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" }, "ci-info": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.5.0.tgz", - "integrity": "sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==" + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==" }, "class-utils": { "version": "0.3.6", @@ -25749,56 +27247,14 @@ "is-descriptor": "^0.1.0" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } }, @@ -25888,21 +27344,19 @@ "shallow-clone": "^3.0.0" } }, + "clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "requires": { + "mimic-response": "^1.0.0" + } + }, "clsx": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -25936,9 +27390,9 @@ "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" }, "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" }, "colors": { "version": "1.4.0", @@ -25964,17 +27418,22 @@ "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" }, + "common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==" + }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" }, "compatfactory": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/compatfactory/-/compatfactory-1.0.1.tgz", - "integrity": "sha512-hR9u0HSZTKDNNchPtMHg6myeNx0XO+av7UZIJPsi4rPALJBHi/W5Mbwi19hC/xm6y3JkYpxVYjTqnSGsU5X/iw==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/compatfactory/-/compatfactory-2.0.9.tgz", + "integrity": "sha512-fvO+AWcmbO7P1S+A3mwm3IGr74eHMeq5ZLhNhyNQc9mVDNHT4oe0Gg0ksdIFFNXLK7k7Z/TYcLAUSQdRgh1bsA==", "requires": { - "helpertypes": "^0.0.18" + "helpertypes": "^0.0.19" } }, "component-emitter": { @@ -26104,11 +27563,11 @@ "integrity": "sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==" }, "core-js-compat": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.0.tgz", - "integrity": "sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A==", + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", + "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", "requires": { - "browserslist": "^4.21.4" + "browserslist": "^4.22.3" } }, "core-js-pure": { @@ -26122,15 +27581,29 @@ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + } } }, "cp-file": { @@ -26391,15 +27864,20 @@ "@types/node": "^17.0.36" } }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + }, "css-class-generator": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/css-class-generator/-/css-class-generator-2.0.0.tgz", "integrity": "sha512-zlmG8hCTmtc+3Esj1R5PgXCKDqJT1Uqhm8NyALvg3kSjAK0+tByFTkMhEh101V+f7toETM4RGigBU4BjGvphLg==" }, "css-declaration-sorter": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz", - "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.1.1.tgz", + "integrity": "sha512-dZ3bVTEEc1vxr3Bek9vGwfB5Z6ESPULhcRvO472mfjVnj8jRcTnKO8/JTczlvxM10Myb+wBM++1MtdO76eWcaQ==", "requires": {} }, "css-functions-list": { @@ -26424,9 +27902,9 @@ }, "dependencies": { "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "requires": { "lru-cache": "^6.0.0" } @@ -26434,29 +27912,18 @@ } }, "css-minimizer-webpack-plugin": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz", - "integrity": "sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", "requires": { - "cssnano": "^5.1.8", - "jest-worker": "^29.1.2", - "postcss": "^8.4.17", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", + "jest-worker": "^29.4.3", + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.1" }, "dependencies": { - "ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, "ajv-keywords": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", @@ -26465,26 +27932,16 @@ "fast-deep-equal": "^3.1.3" } }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "requires": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, @@ -26492,6 +27949,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "peer": true, "requires": { "boolbase": "^1.0.0", "css-what": "^6.0.1", @@ -26500,11 +27958,6 @@ "nth-check": "^2.0.1" } }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" - }, "css-tree": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", @@ -26532,55 +27985,54 @@ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" }, "cssnano": { - "version": "5.1.14", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.14.tgz", - "integrity": "sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.0.4.tgz", + "integrity": "sha512-Bp607LopXmwV9TPUxw76yvcvRk4AYrrtHtLsndAnSWUwT4xgaiC6Eaa44cZ6ciu9J7Sqv9zocMTDcyQnU4dihw==", "requires": { - "cssnano-preset-default": "^5.2.13", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" + "cssnano-preset-default": "^6.0.4", + "lilconfig": "^3.1.1" } }, "cssnano-preset-default": { - "version": "5.2.13", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz", - "integrity": "sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==", - "requires": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.3", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.3", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.4", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.1", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.1", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.4.tgz", + "integrity": "sha512-mvyBIFHaFA4lkBwePlB9Gycnf/rgFQRKcP/yHG/tbD0ZuIdCDSF1GoL4QC4gcp8qaJOkmVmb0mCXMR6Wi4Da0A==", + "requires": { + "css-declaration-sorter": "^7.1.1", + "cssnano-utils": "^4.0.1", + "postcss-calc": "^9.0.1", + "postcss-colormin": "^6.0.2", + "postcss-convert-values": "^6.0.3", + "postcss-discard-comments": "^6.0.1", + "postcss-discard-duplicates": "^6.0.2", + "postcss-discard-empty": "^6.0.2", + "postcss-discard-overridden": "^6.0.1", + "postcss-merge-longhand": "^6.0.2", + "postcss-merge-rules": "^6.0.3", + "postcss-minify-font-values": "^6.0.1", + "postcss-minify-gradients": "^6.0.1", + "postcss-minify-params": "^6.0.2", + "postcss-minify-selectors": "^6.0.2", + "postcss-normalize-charset": "^6.0.1", + "postcss-normalize-display-values": "^6.0.1", + "postcss-normalize-positions": "^6.0.1", + "postcss-normalize-repeat-style": "^6.0.1", + "postcss-normalize-string": "^6.0.1", + "postcss-normalize-timing-functions": "^6.0.1", + "postcss-normalize-unicode": "^6.0.2", + "postcss-normalize-url": "^6.0.1", + "postcss-normalize-whitespace": "^6.0.1", + "postcss-ordered-values": "^6.0.1", + "postcss-reduce-initial": "^6.0.2", + "postcss-reduce-transforms": "^6.0.1", + "postcss-svgo": "^6.0.2", + "postcss-unique-selectors": "^6.0.2" } }, "cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.1.tgz", + "integrity": "sha512-6qQuYDqsGoiXssZ3zct6dcMxiqfT6epy7x4R0TQJadd4LWO3sPR6JH6ZByOvVLoZ6EdwPGgd7+DR1EmX3tiXQQ==", "requires": {} }, "csso": { @@ -26604,9 +28056,9 @@ } }, "csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", + "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" }, "damerau-levenshtein": { "version": "1.0.8", @@ -26623,15 +28075,23 @@ } }, "date-fns": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", - "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==" + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "requires": { + "@babel/runtime": "^7.21.0" + } }, "death": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==" }, + "debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -26664,9 +28124,22 @@ } }, "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, "deep-is": { "version": "0.1.4", @@ -26674,9 +28147,9 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" }, "defaults": { "version": "1.0.4", @@ -26686,6 +28159,21 @@ "clone": "^1.0.2" } }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, "define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", @@ -26769,6 +28257,15 @@ "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" }, + "detect-port": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "requires": { + "address": "^1.0.1", + "debug": "4" + } + }, "dezalgo": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", @@ -26791,7 +28288,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "devOptional": true, + "dev": true, "requires": { "esutils": "^2.0.2" } @@ -26800,10 +28297,19 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "peer": true, "requires": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", "entities": "^2.0.0" + }, + "dependencies": { + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "peer": true + } } }, "domelementtype": { @@ -26815,6 +28321,7 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "peer": true, "requires": { "domelementtype": "^2.2.0" } @@ -26823,6 +28330,7 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "peer": true, "requires": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -26847,6 +28355,11 @@ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, + "duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" + }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -26856,22 +28369,6 @@ "inherits": "^2.0.1", "readable-stream": "^2.0.0", "stream-shift": "^1.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } } }, "ecc-jsbn": { @@ -26888,10 +28385,18 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, + "ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "requires": { + "jake": "^10.8.5" + } + }, "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + "version": "1.4.680", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.680.tgz", + "integrity": "sha512-4nToZ5jlPO14W82NkF32wyjhYqQByVaDmLy4J2/tYcAbJfgO2TKJC780Az1V13gzq4l73CJ0yuyalpXvxXXD9A==" }, "emoji-regex": { "version": "9.2.2", @@ -26909,6 +28414,24 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -26940,15 +28463,15 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "devOptional": true, + "dev": true, "requires": { "ansi-colors": "^4.1.1" } }, "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" }, "env-ci": { "version": "5.5.0", @@ -26964,6 +28487,7 @@ "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "optional": true, "requires": { "prr": "~1.0.1" } @@ -27024,15 +28548,23 @@ "unbox-primitive": "^1.0.2" } }, - "es-array-method-boxes-properly": { + "es-define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" }, "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==" }, "es-shim-unscopables": { "version": "1.0.0", @@ -27053,11 +28585,6 @@ "is-symbol": "^1.0.2" } }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, "es6-promisify": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz", @@ -27082,7 +28609,7 @@ "version": "7.32.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "devOptional": true, + "dev": true, "requires": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -27130,16 +28657,28 @@ "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "devOptional": true, + "dev": true, "requires": { "@babel/highlight": "^7.10.4" } }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -27148,7 +28687,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -27158,7 +28697,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -27167,19 +28706,19 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true + "dev": true }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "devOptional": true + "dev": true }, "eslint-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "devOptional": true, + "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" }, @@ -27188,15 +28727,15 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "devOptional": true + "dev": true } } }, "globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", - "devOptional": true, + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, "requires": { "type-fest": "^0.20.2" } @@ -27205,19 +28744,25 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true + "dev": true }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "devOptional": true + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "devOptional": true, + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, "requires": { "lru-cache": "^6.0.0" } @@ -27226,7 +28771,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -27235,7 +28780,7 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "devOptional": true + "dev": true } } }, @@ -27333,9 +28878,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -27492,12 +29037,12 @@ } }, "resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "requires": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -27553,24 +29098,30 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "devOptional": true + "dev": true }, "espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "devOptional": true, + "dev": true, "requires": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", "eslint-visitor-keys": "^1.3.0" }, "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, "eslint-visitor-keys": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "devOptional": true + "dev": true } } }, @@ -27583,7 +29134,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "devOptional": true, + "dev": true, "requires": { "estraverse": "^5.1.0" } @@ -27690,50 +29241,13 @@ "is-extendable": "^0.1.0" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" } }, "is-extendable": { @@ -27741,11 +29255,6 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -27894,6 +29403,11 @@ "time-stamp": "^1.0.0" } }, + "fast-content-type-parse": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz", + "integrity": "sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==" + }, "fast-decode-uri-component": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", @@ -27911,9 +29425,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -27928,54 +29442,37 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-json-stringify": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.4.0.tgz", - "integrity": "sha512-PIzon53oX/zEGLrGbu4DpfNcYiV4K4rk+JsVrawRPO/G8cNBEMZ3KlIk2BCGqN+m1KCCA4zt5E7Hh3GG9ojRVA==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.12.0.tgz", + "integrity": "sha512-7Nnm9UPa7SfHRbHVA1kJQrGXCRzB7LMlAAqHXQFkEQqueJm1V8owm0FsE/2Do55/4CcdhwiLQERaKomOnKQkyA==", "requires": { - "@fastify/deepmerge": "^1.0.0", + "@fastify/merge-json-schemas": "^0.1.0", "ajv": "^8.10.0", "ajv-formats": "^2.1.1", "fast-deep-equal": "^3.1.3", "fast-uri": "^2.1.0", + "json-schema-ref-resolver": "^1.0.1", "rfdc": "^1.2.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - } } }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "devOptional": true + "dev": true }, "fast-querystring": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.0.0.tgz", - "integrity": "sha512-3LQi62IhQoDlmt4ULCYmh17vRO2EtS7hTSsG4WwoKWgV7GLMKBOecEh+aiavASnLx8I2y89OD33AGLo0ccRhzA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", + "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==", "requires": { "fast-decode-uri-component": "^1.0.1" } }, "fast-redact": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", - "integrity": "sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", + "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==" }, "fast-safe-stringify": { "version": "2.1.1", @@ -27984,9 +29481,9 @@ "peer": true }, "fast-uri": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.1.0.tgz", - "integrity": "sha512-qKRta6N7BWEFVlyonVY/V+BMLgFqktCUV0QjT259ekAIlbVrMaFnFLxJ4s/JPl4tou56S1BzPufI60bLe29fHA==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.3.0.tgz", + "integrity": "sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw==" }, "fastest-levenshtein": { "version": "1.0.16", @@ -27995,30 +29492,32 @@ "dev": true }, "fastify": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.9.2.tgz", - "integrity": "sha512-Mk3hv7ZRet2huMYN6IJ8RGy1TAAC7LJsCEjxLf808zafAADNu43xRzbl7FSEIBxKyhntTM0F626Oc34LUNcUxQ==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.26.1.tgz", + "integrity": "sha512-tznA/G55dsxzM5XChBfcvVSloG2ejeeotfPPJSFaWmHyCDVGMpvf3nRNbsCb/JTBF9RmQFBfuujWt3Nphjesng==", "requires": { - "@fastify/ajv-compiler": "^3.3.1", - "@fastify/error": "^3.0.0", - "@fastify/fast-json-stringify-compiler": "^4.1.0", + "@fastify/ajv-compiler": "^3.5.0", + "@fastify/error": "^3.4.0", + "@fastify/fast-json-stringify-compiler": "^4.3.0", "abstract-logging": "^2.0.1", - "avvio": "^8.2.0", - "find-my-way": "^7.3.0", - "light-my-request": "^5.6.1", - "pino": "^8.5.0", - "process-warning": "^2.0.0", + "avvio": "^8.3.0", + "fast-content-type-parse": "^1.1.0", + "fast-json-stringify": "^5.8.0", + "find-my-way": "^8.0.0", + "light-my-request": "^5.11.0", + "pino": "^8.17.0", + "process-warning": "^3.0.0", "proxy-addr": "^2.0.7", "rfdc": "^1.3.0", - "secure-json-parse": "^2.5.0", - "semver": "^7.3.7", - "tiny-lru": "^9.0.2" + "secure-json-parse": "^2.7.0", + "semver": "^7.5.4", + "toad-cache": "^3.3.0" }, "dependencies": { "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "requires": { "lru-cache": "^6.0.0" } @@ -28026,14 +29525,14 @@ } }, "fastify-plugin": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-4.3.0.tgz", - "integrity": "sha512-M3+i368lV0OYTJ5TfClIoPKEKSOF7112iiPdwgfSR0gN98BjA1Nk+c6oBHtfcVt9KiMxl+EQKHC1QNWo3ZOpYQ==" + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-4.5.1.tgz", + "integrity": "sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==" }, "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "requires": { "reusify": "^1.0.4" } @@ -28050,7 +29549,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "devOptional": true, + "dev": true, "requires": { "flat-cache": "^3.0.4" } @@ -28064,6 +29563,32 @@ "schema-utils": "^3.0.0" } }, + "filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -28101,22 +29626,6 @@ } } }, - "find-babel-config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz", - "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", - "requires": { - "json5": "^0.5.1", - "path-exists": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==" - } - } - }, "find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", @@ -28138,9 +29647,9 @@ } }, "find-my-way": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-7.3.1.tgz", - "integrity": "sha512-kGvM08SOkqvheLcuQ8GW9t/H901Qb9rZEbcNWbXopzy4jDRoaJpJoObPSKf4MnQLZ20ZTp7rL5MpF6rf+pqmyg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-8.1.0.tgz", + "integrity": "sha512-41QwjCGcVTODUmLLqTMeoHeiozbMXYMAE1CKFiDyi9zVZ2Vjh0yz3MF0WQZoIb+cmzP/XlbFjlF2NtJmvZHznA==", "requires": { "fast-deep-equal": "^3.1.3", "fast-querystring": "^1.0.0", @@ -28172,7 +29681,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "devOptional": true, + "dev": true, "requires": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -28182,12 +29691,7 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "devOptional": true - }, - "flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", - "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" + "dev": true }, "flow-parser": { "version": "0.191.0", @@ -28199,6 +29703,14 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -28210,23 +29722,22 @@ "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" }, "fork-ts-checker-webpack-plugin": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz", - "integrity": "sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", + "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", "requires": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^7.0.1", "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" }, "dependencies": { "ansi-styles": { @@ -28259,25 +29770,37 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, - "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - } - }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "requires": { "lru-cache": "^6.0.0" } @@ -28289,11 +29812,6 @@ "requires": { "has-flag": "^4.0.0" } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" } } }, @@ -28354,22 +29872,6 @@ "requires": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } } }, "fromentries": { @@ -28389,9 +29891,9 @@ } }, "fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==" }, "fs-readdir-recursive": { "version": "1.1.0", @@ -28410,9 +29912,9 @@ "optional": true }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "function.prototype.name": { "version": "1.1.5", @@ -28429,7 +29931,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "devOptional": true + "dev": true }, "functions-have-names": { "version": "1.2.3", @@ -28452,13 +29954,15 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-nonce": { @@ -28466,6 +29970,11 @@ "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==" }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, "get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", @@ -28589,15 +30098,46 @@ "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", "dev": true }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "dependencies": { + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + } + } + }, "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==" + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, "gzip-size": { "version": "6.0.0", @@ -28638,6 +30178,24 @@ "requires": { "ajv": "^6.12.3", "har-schema": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + } } }, "hard-rejection": { @@ -28683,24 +30241,29 @@ } }, "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "requires": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" } }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "requires": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" } }, "has-value": { @@ -28750,6 +30313,14 @@ } } }, + "hasown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", + "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "requires": { + "function-bind": "^1.1.2" + } + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -28766,9 +30337,9 @@ } }, "helpertypes": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/helpertypes/-/helpertypes-0.0.18.tgz", - "integrity": "sha512-XRhfbSEmR+poXUC5/8AbmYNJb2riOT6qPzjGJZr0S9YedHiaY+/tzPYzWMUclYMEdCYo/1l8PDYrQFCj02v97w==" + "version": "0.0.19", + "resolved": "https://registry.npmjs.org/helpertypes/-/helpertypes-0.0.19.tgz", + "integrity": "sha512-J00e55zffgi3yVnUp0UdbMztNkr2PnizEkOe9URNohnrNhW5X0QpegkuLpOmFQInpi93Nb8MCjQRHAiCDF42NQ==" }, "hexoid": { "version": "1.0.0", @@ -28801,9 +30372,22 @@ } }, "html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==" + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + }, + "html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "requires": { + "void-elements": "3.1.0" + } }, "html-tags": { "version": "3.2.0", @@ -28811,6 +30395,11 @@ "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", "dev": true }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, "http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -28874,6 +30463,22 @@ "resolved": "https://registry.npmjs.org/human-size/-/human-size-1.1.0.tgz", "integrity": "sha512-87GIsh59t9qL2939KBKmnT/EfcFk1suakkHoTjHsdnXB/JEU0ibz+9HRiwMueGVhKuRGby6bOtQHd+mIt4BIAQ==" }, + "i18next": { + "version": "23.10.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.10.0.tgz", + "integrity": "sha512-/TgHOqsa7/9abUKJjdPeydoyDc0oTi/7u9F8lMSj6ufg4cbC1Oj3f/Jja7zj7WRIhEQKB7Q4eN6y68I9RDxxGQ==", + "requires": { + "@babel/runtime": "^7.23.2" + } + }, + "i18next-browser-languagedetector": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.2.0.tgz", + "integrity": "sha512-U00DbDtFIYD3wkWsr2aVGfXGAj2TgnELzOX9qv8bT0aJtvPV9CRO77h+vgmHFBMe7LAxdwvT/7VkCWGya6L3tA==", + "requires": { + "@babel/runtime": "^7.23.2" + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -28888,20 +30493,25 @@ "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "requires": {} }, + "idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==" }, "image-size": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", - "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", + "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", "requires": { "queue": "6.0.2" } @@ -28931,11 +30541,6 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==" - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -28953,8 +30558,7 @@ "ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "inquirer": { "version": "7.3.3", @@ -29222,11 +30826,20 @@ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", + "requires": { + "hasown": "^2.0.0" + } + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "requires": { - "kind-of": "^6.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-arrayish": { @@ -29270,19 +30883,19 @@ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" }, "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", "requires": { - "kind-of": "^6.0.0" + "hasown": "^2.0.0" } }, "is-date-object": { @@ -29294,20 +30907,14 @@ } }, "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" } }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" - }, "is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", @@ -29326,6 +30933,14 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -29347,6 +30962,20 @@ "lower-case": "^1.1.0" } }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" + }, + "is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -29365,6 +30994,11 @@ "has-tostringtag": "^1.0.0" } }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==" + }, "is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -29397,6 +31031,11 @@ "has-tostringtag": "^1.0.0" } }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==" + }, "is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -29426,6 +31065,14 @@ "has-symbols": "^1.0.2" } }, + "is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "requires": { + "which-typed-array": "^1.1.14" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -29449,6 +31096,11 @@ "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" }, + "is-url-superb": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-url-superb/-/is-url-superb-4.0.0.tgz", + "integrity": "sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==" + }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -29467,14 +31119,6 @@ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "requires": { - "is-docker": "^2.0.0" - } - }, "is2": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.4.tgz", @@ -29496,9 +31140,9 @@ "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==" }, "isbot": { - "version": "3.4.5", - "resolved": "https://registry.npmjs.org/isbot/-/isbot-3.4.5.tgz", - "integrity": "sha512-+KD6q1BBtw0iK9aGBGSfxJ31/ZgizKRjhm8ebgJUBMx0aeeQuIJ1I72beCoIrltIZGrSm4vmrxRxrG5n1aUTtw==" + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/isbot/-/isbot-3.8.0.tgz", + "integrity": "sha512-vne1mzQUTR+qsMLeCBL9+/tgnDXRyc2pygLGl/WsgA+EZKIiB5Ehu0CiVTHIIk30zhJ24uGz4M5Ppse37aR0Hg==" }, "isexe": { "version": "2.0.0", @@ -29515,6 +31159,62 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, + "jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "java-properties": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", @@ -29526,11 +31226,11 @@ "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==" }, "jest-util": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz", - "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -29584,12 +31284,12 @@ } }, "jest-worker": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.3.1.tgz", - "integrity": "sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "requires": { "@types/node": "*", - "jest-util": "^29.3.1", + "jest-util": "^29.7.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -29630,6 +31330,7 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -29806,6 +31507,11 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" + }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -29821,16 +31527,24 @@ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, + "json-schema-ref-resolver": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz", + "integrity": "sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "devOptional": true + "dev": true }, "json-stringify-safe": { "version": "5.0.1", @@ -29838,9 +31552,9 @@ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" }, "jsonfile": { "version": "6.1.0", @@ -29851,6 +31565,11 @@ "universalify": "^2.0.0" } }, + "jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==" + }, "jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", @@ -29877,6 +31596,14 @@ "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==" }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -29908,6 +31635,14 @@ "language-subtag-registry": "~0.3.2" } }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "requires": { + "package-json": "^6.3.0" + } + }, "less": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz", @@ -29951,30 +31686,40 @@ "klona": "^2.0.4" } }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "devOptional": true, + "dev": true, "requires": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "light-my-request": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.6.1.tgz", - "integrity": "sha512-sbJnC1UBRivi9L1kICr3CESb82pNiPNB3TvtdIrZZqW0Qh8uDXvoywMmWKZlihDcmw952CMICCzM+54LDf+E+g==", + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.11.1.tgz", + "integrity": "sha512-KXAh2m6VRlkWCk2KfmHE7tLBXKh30JE0tXUJY4dNxje4oLmPKUqlUfImiEQZLphx+Z9KTQcVv4DjGnJxkVOIbA==", "requires": { - "cookie": "^0.5.0", + "cookie": "^0.6.0", "process-warning": "^2.0.0", "set-cookie-parser": "^2.4.1" }, "dependencies": { "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==" + }, + "process-warning": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.3.2.tgz", + "integrity": "sha512-n9wh8tvBe5sFmsqlg+XQhaQLumwpqoAUruLwjCopgTmUBjJ/fjtBsJzKleCaIGBOMXYEhp1YfKl4d7rJ5ZKJGA==" } } }, @@ -29989,9 +31734,9 @@ } }, "lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==" }, "lines-and-columns": { "version": "1.2.4", @@ -30072,13 +31817,18 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "devOptional": true + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" }, "lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "devOptional": true + "dev": true }, "lodash.uniq": { "version": "4.5.0", @@ -30160,6 +31910,11 @@ "lower-case": "^1.1.2" } }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, "lru_map": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", @@ -30196,9 +31951,9 @@ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" } } }, @@ -30246,11 +32001,11 @@ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" }, "memfs": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.9.tgz", - "integrity": "sha512-3rm8kbrzpUGRyPKSGuk387NZOwQ90O4rI9tsWQkzNW7BLSnKGp23RsEsKK8N8QVCrtJoAMqy3spxHC4os4G6PQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "requires": { - "fs-monkey": "^1.0.3" + "fs-monkey": "^1.0.4" } }, "memory-fs": { @@ -30339,6 +32094,11 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, "min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -30346,24 +32106,13 @@ "dev": true }, "mini-css-extract-plugin": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", - "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", "requires": { "schema-utils": "^4.0.0" }, "dependencies": { - "ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, "ajv-keywords": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", @@ -30372,20 +32121,15 @@ "fast-deep-equal": "^3.1.3" } }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "requires": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" } } } @@ -30429,12 +32173,9 @@ } }, "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "requires": { - "yallist": "^4.0.0" - } + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" }, "mixin-deep": { "version": "1.3.2", @@ -30454,9 +32195,9 @@ } }, "mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==" }, "ms": { "version": "2.1.2", @@ -30469,9 +32210,9 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" }, "nanomatch": { "version": "1.2.13", @@ -30501,7 +32242,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "devOptional": true + "dev": true }, "negotiator": { "version": "0.6.3", @@ -30557,34 +32298,6 @@ "he": "1.2.0" } }, - "node-notifier": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz", - "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==", - "requires": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - }, - "dependencies": { - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - } - } - }, "node-plop": { "version": "0.26.3", "resolved": "https://registry.npmjs.org/node-plop/-/node-plop-0.26.3.tgz", @@ -30626,9 +32339,9 @@ } }, "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, "noop-stream": { "version": "0.1.0", @@ -30658,9 +32371,9 @@ }, "dependencies": { "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -30679,9 +32392,9 @@ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" }, "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" }, "npm-run-path": { "version": "4.0.1", @@ -30736,37 +32449,13 @@ "is-descriptor": "^0.1.0" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "requires": { - "kind-of": "^3.0.2" - } - }, "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" } }, "kind-of": { @@ -30784,6 +32473,15 @@ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -30835,17 +32533,6 @@ "es-abstract": "^1.19.1" } }, - "object.getownpropertydescriptors": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", - "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", - "requires": { - "array.prototype.reduce": "^1.0.4", - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.1" - } - }, "object.hasown": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", @@ -30868,6 +32555,7 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -30875,9 +32563,9 @@ } }, "on-exit-leak-free": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", - "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==" }, "on-finished": { "version": "2.4.1", @@ -30917,7 +32605,7 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "devOptional": true, + "dev": true, "requires": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -31008,6 +32696,11 @@ } } }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, "p-event": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", @@ -31078,6 +32771,17 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + } + }, "param-case": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", @@ -31208,41 +32912,77 @@ "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==" }, "pino": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.7.0.tgz", - "integrity": "sha512-l9sA5uPxmZzwydhMWUcm1gI0YxNnYl8MfSr2h8cwLvOAzQLBLewzF247h/vqHe3/tt6fgtXeG9wdjjoetdI/vA==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.19.0.tgz", + "integrity": "sha512-oswmokxkav9bADfJ2ifrvfHUwad6MLp73Uat0IkQWY3iAw5xTRoznXbXksZs8oaOUMpmhVWD+PZogNzllWpJaA==", "requires": { "atomic-sleep": "^1.0.0", "fast-redact": "^3.1.1", "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "v1.0.0", + "pino-abstract-transport": "v1.1.0", "pino-std-serializers": "^6.0.0", - "process-warning": "^2.0.0", + "process-warning": "^3.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^3.1.0", + "sonic-boom": "^3.7.0", "thread-stream": "^2.0.0" } }, "pino-abstract-transport": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", - "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz", + "integrity": "sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==", "requires": { "readable-stream": "^4.0.0", "split2": "^4.0.0" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + } } }, "pino-std-serializers": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.0.0.tgz", - "integrity": "sha512-mMMOwSKrmyl+Y12Ri2xhH1lbzQxwwpuru9VjyJpgFIH4asSj88F2csdMwN6+M5g1Ll4rmsYghHLQJw81tgZ7LQ==" + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", + "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==" }, "pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==" + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==" }, "pkg-conf": { "version": "2.1.0", @@ -31341,49 +33081,6 @@ } } }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "requires": { - "find-up": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - } - } - }, "port-used": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/port-used/-/port-used-2.0.8.tgz", @@ -31397,12 +33094,17 @@ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==" }, + "possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==" + }, "postcss": { - "version": "8.4.19", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", - "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", "requires": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } @@ -31435,56 +33137,56 @@ } }, "postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", "requires": { - "postcss-selector-parser": "^6.0.9", + "postcss-selector-parser": "^6.0.11", "postcss-value-parser": "^4.2.0" } }, "postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.0.2.tgz", + "integrity": "sha512-TXKOxs9LWcdYo5cgmcSHPkyrLAh86hX1ijmyy6J8SbOhyv6ua053M3ZAM/0j44UsnQNIWdl8gb5L7xX2htKeLw==", "requires": { - "browserslist": "^4.16.6", + "browserslist": "^4.22.2", "caniuse-api": "^3.0.0", "colord": "^2.9.1", "postcss-value-parser": "^4.2.0" } }, "postcss-convert-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", - "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.0.3.tgz", + "integrity": "sha512-Tj+VH3GtQxvBVX6hhggIUaAMLDbqoHgsAFeZ8iCOD03hnho+wrOF2IsahY9o4MANtaJEjqABrhD1SqwIILGH9A==", "requires": { - "browserslist": "^4.21.4", + "browserslist": "^4.22.2", "postcss-value-parser": "^4.2.0" } }, "postcss-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.1.tgz", + "integrity": "sha512-f1KYNPtqYLUeZGCHQPKzzFtsHaRuECe6jLakf/RjSRqvF5XHLZnM2+fXLhb8Qh/HBFHs3M4cSLb1k3B899RYIg==", "requires": {} }, "postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.2.tgz", + "integrity": "sha512-U2rsj4w6pAGROCCcD13LP2eBIi1whUsXs4kgE6xkIuGfkbxCBSKhkCTWyowFd66WdVlLv0uM1euJKIgmdmZObg==", "requires": {} }, "postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.2.tgz", + "integrity": "sha512-rj6pVC2dVCJrP0Y2RkYTQEbYaCf4HEm+R/2StQgJqGHxAa3+KcYslNQhcRqjLHtl/4wpzipJluaJLqBj6d5eDQ==", "requires": {} }, "postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.1.tgz", + "integrity": "sha512-qs0ehZMMZpSESbRkw1+inkf51kak6OOzNRaoLd/U7Fatp0aN2HQ1rxGOrJvYcRAN9VpX8kUF13R2ofn8OlvFVA==", "requires": {} }, "postcss-image-set-polyfill": { @@ -31553,9 +33255,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "requires": { "lru-cache": "^6.0.0" } @@ -31568,59 +33270,59 @@ "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==" }, "postcss-merge-longhand": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", - "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.2.tgz", + "integrity": "sha512-+yfVB7gEM8SrCo9w2lCApKIEzrTKl5yS1F4yGhV3kSim6JzbfLGJyhR1B6X+6vOT0U33Mgx7iv4X9MVWuaSAfw==", "requires": { "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.1" + "stylehacks": "^6.0.2" } }, "postcss-merge-rules": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz", - "integrity": "sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.3.tgz", + "integrity": "sha512-yfkDqSHGohy8sGYIJwBmIGDv4K4/WrJPX355XrxQb/CSsT4Kc/RxDi6akqn5s9bap85AWgv21ArcUWwWdGNSHA==", "requires": { - "browserslist": "^4.21.4", + "browserslist": "^4.22.2", "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" + "cssnano-utils": "^4.0.1", + "postcss-selector-parser": "^6.0.15" } }, "postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.1.tgz", + "integrity": "sha512-tIwmF1zUPoN6xOtA/2FgVk1ZKrLcCvE0dpZLtzyyte0j9zUeB8RTbCqrHZGjJlxOvNWKMYtunLrrl7HPOiR46w==", "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.1.tgz", + "integrity": "sha512-M1RJWVjd6IOLPl1hYiOd5HQHgpp6cvJVLrieQYS9y07Yo8itAr6jaekzJphaJFR0tcg4kRewCk3kna9uHBxn/w==", "requires": { "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", + "cssnano-utils": "^4.0.1", "postcss-value-parser": "^4.2.0" } }, "postcss-minify-params": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", - "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.0.2.tgz", + "integrity": "sha512-zwQtbrPEBDj+ApELZ6QylLf2/c5zmASoOuA4DzolyVGdV38iR2I5QRMsZcHkcdkZzxpN8RS4cN7LPskOkTwTZw==", "requires": { - "browserslist": "^4.21.4", - "cssnano-utils": "^3.1.0", + "browserslist": "^4.22.2", + "cssnano-utils": "^4.0.1", "postcss-value-parser": "^4.2.0" } }, "postcss-minify-selectors": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", - "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.2.tgz", + "integrity": "sha512-0b+m+w7OAvZejPQdN2GjsXLv5o0jqYHX3aoV0e7RBKPCsB7TYG5KKWBFhGnB/iP3213Ts8c5H4wLPLMm7z28Sg==", "requires": { - "postcss-selector-parser": "^6.0.5" + "postcss-selector-parser": "^6.0.15" } }, "postcss-modules-extract-imports": { @@ -31685,91 +33387,35 @@ } }, "postcss-modules-values-replace": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values-replace/-/postcss-modules-values-replace-3.4.0.tgz", - "integrity": "sha512-pY8iCSKxdt25uE+N4dO1PUUDOl8FIuvtZfT5964TuFJVhq+CEG8uqDpOCpCnqda/3K9ZFCNo4prn84H9SgP4Rw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values-replace/-/postcss-modules-values-replace-4.1.0.tgz", + "integrity": "sha512-CdS84304AXiPI2QWXz6lynehaR6qvjc9EwGDO9l+30Tek28Mfm3CqkhVv3T29Tv2J6O+j5fEZNCSOSQBajwQZw==", "requires": { - "enhanced-resolve": "^3.1.0", - "es6-promisify": "^5.0.0", - "icss-utils": "^4.0.0", - "loader-utils": "^2.0.0", - "postcss": "^7.0.0", - "postcss-values-parser": "^1.3.1" + "enhanced-resolve": "^5.12.0", + "es6-promisify": "^7.0.0", + "icss-utils": "^5.1.0", + "loader-utils": "^3.2.1", + "postcss-values-parser": "^6.0.2" }, "dependencies": { "enhanced-resolve": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", - "integrity": "sha512-ZaAux1rigq1e2nQrztHn4h2ugvpzZxs64qneNah+8Mh/K0CRqJFJc+UoXnUsq+1yX+DmQFPPdVqboKAJ89e0Iw==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "object-assign": "^4.0.1", - "tapable": "^0.2.7" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" } }, "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", - "requires": { - "es6-promise": "^4.0.3" - } - }, - "icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "requires": { - "postcss": "^7.0.14" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz", + "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==" }, - "tapable": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.9.tgz", - "integrity": "sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==" + "loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==" } } }, @@ -31782,99 +33428,98 @@ } }, "postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.1.tgz", + "integrity": "sha512-aW5LbMNRZ+oDV57PF9K+WI1Z8MPnF+A8qbajg/T8PP126YrGX1f9IQx21GI2OlGz7XFJi/fNi0GTbY948XJtXg==", "requires": {} }, "postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.1.tgz", + "integrity": "sha512-mc3vxp2bEuCb4LgCcmG1y6lKJu1Co8T+rKHrcbShJwUmKJiEl761qb/QQCfFwlrvSeET3jksolCR/RZuMURudw==", "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-positions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", - "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.1.tgz", + "integrity": "sha512-HRsq8u/0unKNvm0cvwxcOUEcakFXqZ41fv3FOdPn916XFUrympjr+03oaLkuZENz3HE9RrQE9yU0Xv43ThWjQg==", "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-repeat-style": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", - "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.1.tgz", + "integrity": "sha512-Gbb2nmCy6tTiA7Sh2MBs3fj9W8swonk6lw+dFFeQT68B0Pzwp1kvisJQkdV6rbbMSd9brMlS8I8ts52tAGWmGQ==", "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.1.tgz", + "integrity": "sha512-5Fhx/+xzALJD9EI26Aq23hXwmv97Zfy2VFrt5PLT8lAhnBIZvmaT5pQk+NuJ/GWj/QWaKSKbnoKDGLbV6qnhXg==", "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.1.tgz", + "integrity": "sha512-4zcczzHqmCU7L5dqTB9rzeqPWRMc0K2HoR+Bfl+FSMbqGBUcP5LRfgcH4BdRtLuzVQK1/FHdFoGT3F7rkEnY+g==", "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-unicode": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", - "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.2.tgz", + "integrity": "sha512-Ff2VdAYCTGyMUwpevTZPZ4w0+mPjbZzLLyoLh/RMpqUqeQKZ+xMm31hkxBavDcGKcxm6ACzGk0nBfZ8LZkStKA==", "requires": { - "browserslist": "^4.21.4", + "browserslist": "^4.22.2", "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.1.tgz", + "integrity": "sha512-jEXL15tXSvbjm0yzUV7FBiEXwhIa9H88JOXDGQzmcWoB4mSjZIsmtto066s2iW9FYuIrIF4k04HA2BKAOpbsaQ==", "requires": { - "normalize-url": "^6.0.1", "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.1.tgz", + "integrity": "sha512-76i3NpWf6bB8UHlVuLRxG4zW2YykF9CTEcq/9LGAiz2qBuX5cBStadkk0jSkg9a9TCIXbMQz7yzrygKoCW9JuA==", "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-ordered-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", - "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.1.tgz", + "integrity": "sha512-XXbb1O/MW9HdEhnBxitZpPFbIvDgbo9NK4c/5bOfiKpnIGZDoL2xd7/e6jW5DYLsWxBbs+1nZEnVgnjnlFViaA==", "requires": { - "cssnano-utils": "^3.1.0", + "cssnano-utils": "^4.0.1", "postcss-value-parser": "^4.2.0" } }, "postcss-reduce-initial": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz", - "integrity": "sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.0.2.tgz", + "integrity": "sha512-YGKalhNlCLcjcLvjU5nF8FyeCTkCO5UtvJEt0hrPZVCTtRLSOH4z00T1UntQPj4dUmIYZgMj8qK77JbSX95hSw==", "requires": { - "browserslist": "^4.21.4", + "browserslist": "^4.22.2", "caniuse-api": "^3.0.0" } }, "postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.1.tgz", + "integrity": "sha512-fUbV81OkUe75JM+VYO1gr/IoA2b/dRiH6HvMwhrIBSUrxq3jNZQZitSnugcTLDi1KkQh1eR/zi+iyxviUNBkcQ==", "requires": { "postcss-value-parser": "^4.2.0" } @@ -31893,9 +33538,9 @@ "requires": {} }, "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", "requires": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -31909,41 +33554,20 @@ "requires": {} }, "postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.2.tgz", + "integrity": "sha512-IH5R9SjkTkh0kfFOQDImyy1+mTCb+E830+9SV1O+AaDcoHTvfsvt6WwJeo7KwcHbFnevZVCsXhDmjFiGVuwqFQ==", "requires": { "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, - "svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "requires": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - } - } + "svgo": "^3.2.0" } }, "postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.2.tgz", + "integrity": "sha512-8IZGQ94nechdG7Y9Sh9FlIY2b4uS8/k8kdKRX040XHsS3B6d1HrJAkXrBSsSu4SuARruSsUjW3nlSw8BHkaAYQ==", "requires": { - "postcss-selector-parser": "^6.0.5" + "postcss-selector-parser": "^6.0.15" } }, "postcss-value-parser": { @@ -31952,25 +33576,37 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "postcss-values-parser": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-1.5.0.tgz", - "integrity": "sha512-3M3p+2gMp0AH3da530TlX8kiO1nxdTnc3C6vr8dMxRLIlh8UYkz0/wcwptSXjhtx2Fr0TySI7a+BHDQ8NL7LaQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-6.0.2.tgz", + "integrity": "sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw==", "requires": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "color-name": "^1.1.4", + "is-url-superb": "^4.0.0", + "quote-unquote": "^1.0.0" + }, + "dependencies": { + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + } } }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "devOptional": true + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==" }, "prettier": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", - "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "peer": true }, "prettier-config-tinkoff": { @@ -31988,6 +33624,11 @@ "fast-diff": "^1.1.2" } }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" + }, "pretty-time": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", @@ -32018,7 +33659,8 @@ "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "peer": true }, "process": { "version": "0.11.10", @@ -32031,20 +33673,20 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "process-warning": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.0.0.tgz", - "integrity": "sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==" }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "devOptional": true + "dev": true }, "prom-client": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-12.0.0.tgz", - "integrity": "sha512-JbzzHnw0VDwCvoqf8y1WDtq4wSBAbthMB1pcVI/0lzdqHGJI3KBJDXle70XK+c7Iv93Gihqo0a5LlOn+g8+DrQ==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-14.2.0.tgz", + "integrity": "sha512-sF308EhTenb/pDRPakm+WgiN+VdM/T1RaHj1x+MvAuT8UiQP8JmOEbxVqtkbfR4LrvOg5n7ic01kRBDGXjYikA==", "requires": { "tdigest": "^0.1.1" } @@ -32083,7 +33725,8 @@ "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "optional": true }, "psl": { "version": "1.9.0", @@ -32121,9 +33764,9 @@ } }, "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -32147,11 +33790,6 @@ "resolved": "https://registry.npmjs.org/putil-promisify/-/putil-promisify-1.8.5.tgz", "integrity": "sha512-DItclasWWZokvpq3Aiaq0iV7WC8isP/0o/8mhC0yV6CQ781N/7NQHA1VyOm6hfpeFEwIQoo1C4Yjc5eH0q6Jbw==" }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" - }, "qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -32184,6 +33822,11 @@ "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true }, + "quote-unquote": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/quote-unquote/-/quote-unquote-1.0.0.tgz", + "integrity": "sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg==" + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -32215,6 +33858,24 @@ } } }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" + } + } + }, "react": { "version": "17.0.1", "resolved": "https://registry.npmjs.org/react/-/react-17.0.1.tgz", @@ -32240,6 +33901,15 @@ "integrity": "sha512-Q2zaeQFXdVQ8l3hcywhltH+Nzj4vo50wMVujHDVN/1Xy9IOaSZJwYBXA2CYTpK6rq41fnXviw3jTLb04c7Gu9Q==", "requires": {} }, + "react-i18next": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.0.5.tgz", + "integrity": "sha512-5+bQSeEtgJrMBABBL5lO7jPdSNAbeAZ+MlFWDw//7FnVacuVu3l9EeWFzBQvZsKy+cihkbThWOAThEdH8YjGEw==", + "requires": { + "@babel/runtime": "^7.23.9", + "html-parse-stringify": "^3.0.1" + } + }, "react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", @@ -32322,9 +33992,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true }, "type-fest": { @@ -32398,25 +34068,17 @@ } }, "readable-stream": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.2.0.tgz", - "integrity": "sha512-gJrBHsaI3lgBoGMW/jHZsQ/o/TIWiu5ENCJG1BB7fuCKzpFM8GaS2UoBVt9NO+oI+3FcrBNbUkl3ilDe09aY4A==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10" - }, - "dependencies": { - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - } + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "readdirp": { @@ -32433,14 +34095,15 @@ "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==" }, "recast": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.17.6.tgz", - "integrity": "sha512-yoQRMRrK1lszNtbkGyM4kN45AwylV5hMiuEveUBlxytUViWevjvX6w+tzJt1LH4cfUhWt4NZvy3ThIhu6+m5wQ==", + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.4.tgz", + "integrity": "sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==", "requires": { - "ast-types": "0.12.4", + "assert": "^2.0.0", + "ast-types": "^0.16.1", "esprima": "~4.0.0", - "private": "^0.1.8", - "source-map": "~0.6.1" + "source-map": "~0.6.1", + "tslib": "^2.0.1" }, "dependencies": { "source-map": { @@ -32466,22 +34129,22 @@ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" }, "regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "requires": { "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", - "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "requires": { "@babel/runtime": "^7.8.4" } @@ -32509,25 +34172,36 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "devOptional": true + "dev": true }, "regexpu-core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", - "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "requires": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" + "unicode-match-property-value-ecmascript": "^2.1.0" } }, - "regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==" + "registry-auth-token": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "requires": { + "rc": "1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "requires": { + "rc": "^1.2.8" + } }, "regjsparser": { "version": "0.9.1", @@ -32628,17 +34302,12 @@ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, - "reselect": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.6.tgz", - "integrity": "sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ==" - }, "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "requires": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -32653,6 +34322,14 @@ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==" }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -32673,9 +34350,9 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", + "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==" }, "rimraf": { "version": "3.0.2", @@ -32703,38 +34380,88 @@ "resolved": "https://registry.npmjs.org/rollup-plugin-analyzer/-/rollup-plugin-analyzer-3.3.0.tgz", "integrity": "sha512-zUPGitW4usmZcVa0nKecRvw3odtXgnxdCben9Hx1kxVoR3demek8RU9tmRG/R35hnRPQTb7wEsYEe3GUcjxIMA==" }, + "rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "requires": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "rollup-plugin-ts": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-ts/-/rollup-plugin-ts-3.0.2.tgz", - "integrity": "sha512-67qi2QTHewhLyKDG6fX3jpohWpmUPPIT/xJ7rsYK46X6MqmoWy64Ti0y8ygPfLv8mXDCdRZUofM3mTxDfCswRA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-ts/-/rollup-plugin-ts-3.2.0.tgz", + "integrity": "sha512-KkTLVifkUexEiAXS9VtSjDrjKr0TyusmNJpb2ZTAzI9VuPumSu4AktIaVNnwv70iUEitHwZtET7OAM+5n1u1tg==", "requires": { - "@rollup/pluginutils": "^4.2.1", + "@rollup/pluginutils": "^5.0.2", "@wessberg/stringutil": "^1.0.19", "ansi-colors": "^4.1.3", - "browserslist": "^4.20.4", - "browserslist-generator": "^1.0.66", - "compatfactory": "^1.0.1", + "browserslist": "^4.21.4", + "browserslist-generator": "^2.0.1", + "compatfactory": "^2.0.9", "crosspath": "^2.0.0", - "magic-string": "^0.26.2", - "ts-clone-node": "^1.0.0", - "tslib": "^2.4.0" + "magic-string": "^0.27.0", + "ts-clone-node": "^2.0.4", + "tslib": "^2.4.1" }, "dependencies": { "@rollup/pluginutils": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", - "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", "requires": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" } }, + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, "magic-string": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", - "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", "requires": { - "sourcemap-codec": "^1.4.8" + "@jridgewell/sourcemap-codec": "^1.4.13" } } } @@ -32821,20 +34548,15 @@ } }, "safe-stable-stringify": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.1.tgz", - "integrity": "sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==" + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==" }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, "scheduler": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", @@ -32845,24 +34567,48 @@ } }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + } } }, "secure-json-parse": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.5.0.tgz", - "integrity": "sha512-ZQruFgZnIWH+WyO9t5rWt4ZEGqCKPwhiw+YbzTwpmT9elgLrLcfuyUiSnwwjUiVy9r4VM3urtbNF1xmEh9IL2w==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" }, "semver-compare": { "version": "1.0.0", @@ -32921,9 +34667,9 @@ } }, "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "requires": { "randombytes": "^2.1.0" } @@ -32945,9 +34691,22 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "set-cookie-parser": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", - "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", + "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" + }, + "set-function-length": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "requires": { + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + } }, "set-value": { "version": "2.0.1", @@ -33001,11 +34760,6 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" - }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -33042,13 +34796,13 @@ } }, "sirv": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", - "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", "requires": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^1.0.0" + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" } }, "slash": { @@ -33060,7 +34814,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "devOptional": true, + "dev": true, "requires": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -33071,7 +34825,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -33080,7 +34834,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -33089,7 +34843,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true + "dev": true } } }, @@ -33140,50 +34894,13 @@ "is-extendable": "^0.1.0" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" } }, "is-extendable": { @@ -33191,11 +34908,6 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -33247,9 +34959,9 @@ } }, "sonic-boom": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.2.0.tgz", - "integrity": "sha512-SbbZ+Kqj/XIunvIAgUZRlqd6CGQYq71tRRbXR92Za8J/R3Yh4Av+TWENiSiEgnlwckYLyP0YZQWVfyNC0dzLaA==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.8.0.tgz", + "integrity": "sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==", "requires": { "atomic-sleep": "^1.0.0" } @@ -33373,14 +35085,15 @@ } }, "split2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", - "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true }, "sshpk": { "version": "1.17.0", @@ -33398,11 +35111,6 @@ "tweetnacl": "~0.14.0" } }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - }, "stackframe": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", @@ -33425,56 +35133,14 @@ "is-descriptor": "^0.1.0" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } }, @@ -33497,9 +35163,9 @@ "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==" }, "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" }, "string_decoder": { "version": "1.1.1", @@ -33530,7 +35196,6 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", - "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -33562,6 +35227,16 @@ "es-abstract": "^1.19.5" } }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + } + }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -33575,6 +35250,11 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" }, + "strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==" + }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -33593,7 +35273,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "devOptional": true + "dev": true }, "style-search": { "version": "0.1.0", @@ -33602,12 +35282,12 @@ "dev": true }, "stylehacks": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", - "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.2.tgz", + "integrity": "sha512-00zvJGnCu64EpMjX8b5iCZ3us2Ptyw8+toEkb92VdmkEaRaSGBNKAoK6aWZckhXxmQP8zWiTaFaiMGIU8Ve8sg==", "requires": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" + "browserslist": "^4.22.2", + "postcss-selector-parser": "^6.0.15" } }, "stylelint": { @@ -33747,9 +35427,9 @@ "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==" }, "superagent": { - "version": "8.0.9", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.9.tgz", - "integrity": "sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==", + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", + "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", "peer": true, "requires": { "component-emitter": "^1.3.0", @@ -33782,9 +35462,9 @@ "peer": true }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "peer": true, "requires": { "lru-cache": "^6.0.0" @@ -33793,13 +35473,13 @@ } }, "supertest": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.3.tgz", - "integrity": "sha512-EMCG6G8gDu5qEqRQ3JjjPs6+FYT1a7Hv5ApHvtSghmOFJYtsU5S+pSb6Y2EUeCEY3CmEL3mmQ8YWlPOzQomabA==", + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz", + "integrity": "sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==", "peer": true, "requires": { "methods": "^1.1.2", - "superagent": "^8.0.5" + "superagent": "^8.1.2" } }, "supports-color": { @@ -33854,122 +35534,110 @@ "dev": true }, "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.2.0.tgz", + "integrity": "sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==", + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" }, "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + }, "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "requires": { "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" } }, "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" } }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" + "csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "requires": { + "css-tree": "~2.2.0" + }, + "dependencies": { + "css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "requires": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + } + }, + "mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" + } + } }, "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" } }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "requires": { - "dom-serializer": "0", - "domelementtype": "1" - }, - "dependencies": { - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - } + "domelementtype": "^2.3.0" } }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "requires": { - "boolbase": "~1.0.0" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" } } }, "svgo-loader": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/svgo-loader/-/svgo-loader-2.2.2.tgz", - "integrity": "sha512-UeE/4yZEK96LoYqvxwh8YqCOJCjXwRY9K6YT99vXE+nYhs/W8hAY2hNf5zg/lRsyKshJkR79V+4beV3cbGL40Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/svgo-loader/-/svgo-loader-4.0.0.tgz", + "integrity": "sha512-bdk2H73AHP8Vo9zgMuA8piEzi5pjFzllK4EwfebDF3hDjmHQpmmqXMoDd6abDtVFrlKTJuveepmnc2kuTdt/WA==", "requires": { - "js-yaml": "^3.13.1", - "loader-utils": "^1.0.3" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - } + "svgo": "^3.0.0" } }, "swap-case": { @@ -33990,33 +35658,13 @@ "version": "6.8.0", "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", - "devOptional": true, + "dev": true, "requires": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", "string-width": "^4.2.3", "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "devOptional": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "devOptional": true - } } }, "tapable": { @@ -34050,27 +35698,45 @@ } } }, + "temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==" + }, + "tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "requires": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "dependencies": { + "type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==" + } + } + }, "term-size": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==" }, "terser": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.28.1.tgz", + "integrity": "sha512-wM+bZp54v/E9eRRGXb5ZFDvinrJIOaTapx3WUokyVGZu5ucVCK55zEgGd5Dl2fSr3jUo5sDiERErUWLY6QPFyA==", "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "dependencies": { - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" - }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -34079,15 +35745,15 @@ } }, "terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "requires": { - "@jridgewell/trace-mapping": "^0.3.14", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" }, "dependencies": { "has-flag": { @@ -34133,9 +35799,9 @@ } }, "thread-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.2.0.tgz", - "integrity": "sha512-rUkv4/fnb4rqy/gGy7VuqK6wE1+1DOCOWy4RMeaV69ZHMP11tQKZvZSip1yTgrKCMZzEMcCL/bKfHvSfDHx+iQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.4.1.tgz", + "integrity": "sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==", "requires": { "real-require": "^0.2.0" } @@ -34148,26 +35814,10 @@ "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, "time-stamp": { @@ -34175,11 +35825,6 @@ "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==" }, - "tiny-lru": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-9.0.3.tgz", - "integrity": "sha512-/i9GruRjXsnDgehxvy6iZ4AFNVxngEFbwzirhdulomMNPGPVV3ECMZOWSw0w4sRMZ9Al9m4jy08GPvRxRUGYlw==" - }, "title-case": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", @@ -34220,6 +35865,11 @@ } } }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, "to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", @@ -34239,15 +35889,20 @@ "is-number": "^7.0.0" } }, + "toad-cache": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz", + "integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==" + }, "toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, "totalist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", - "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==" }, "tough-cookie": { "version": "2.5.0", @@ -34275,29 +35930,29 @@ "dev": true }, "ts-clone-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ts-clone-node/-/ts-clone-node-1.0.0.tgz", - "integrity": "sha512-/cDYbr2HAXxFNeTT41c/xs/2bhLJjqnYheHsmA3AoHSt+n4JA4t0FL9Lk5O8kWnJ6jeB3kPcUoXIFtwERNzv6Q==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/ts-clone-node/-/ts-clone-node-2.0.4.tgz", + "integrity": "sha512-eG6FAgmQsenhIJOIFhUcO6yyYejBKZIKcI3y21jiQmIOrth5pD6GElyPAyeihbPSyBs3u/9PVNXy+5I7jGy8jA==", "requires": { - "compatfactory": "^1.0.1" + "compatfactory": "^2.0.9" } }, "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "requires": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" }, "dependencies": { "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -34305,10 +35960,84 @@ } } }, + "tsconfig-paths-webpack-plugin": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz", + "integrity": "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==", + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tsconfig-paths": "^4.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "requires": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + } + } + }, "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "tsutils": { "version": "3.21.0", @@ -34344,7 +36073,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "devOptional": true, + "dev": true, "requires": { "prelude-ls": "^1.2.1" } @@ -34405,9 +36134,9 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" }, "unicode-property-aliases-ecmascript": { "version": "2.1.0", @@ -34432,10 +36161,13 @@ } } }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==" + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "requires": { + "crypto-random-string": "^2.0.0" + } }, "universal-analytics": { "version": "0.4.23", @@ -34455,20 +36187,15 @@ } }, "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" - }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -34505,10 +36232,15 @@ } } }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -34540,6 +36272,14 @@ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==" }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "requires": { + "prepend-http": "^2.0.0" + } + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -34588,22 +36328,28 @@ "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", "requires": {} }, + "user-agent-data-types": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/user-agent-data-types/-/user-agent-data-types-0.3.1.tgz", + "integrity": "sha512-vS7pZmuEVPlf2CQf+PfNbwWJZA4aQAEa8sH7xhMrjZ1zXNvW7HHEdzmSvI7z/qyyIRVD50DEi4ckuzZcebKHGg==" + }, + "util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, "utility-types": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", @@ -34657,6 +36403,11 @@ "extsprintf": "^1.2.0" } }, + "void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==" + }, "wait-on": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5.3.0.tgz", @@ -34692,21 +36443,21 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "version": "5.87.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.87.0.tgz", + "integrity": "sha512-GOu1tNbQ7p1bDEoFRs2YPcfyGs8xq52yyPBZ3m2VGnXGtV9MxjrkABHm4V9Ia280OefsSLzvbVoXcfLxjKY/Iw==", "requires": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -34715,33 +36466,22 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", + "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "dependencies": { "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "requires": {} + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -34754,83 +36494,40 @@ } } }, - "webpack-build-notifier": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/webpack-build-notifier/-/webpack-build-notifier-2.3.0.tgz", - "integrity": "sha512-+/s6GrvSRwP0CHqHOqZcta7EcqjL1MUR9KmBSlkJj6xJVZtFB/z68CTeLPrHnMED/umlXN9hcFV8wmGjeI/K2A==", - "requires": { - "node-notifier": "9.0.1", - "strip-ansi": "^6.0.0" - } - }, "webpack-bundle-analyzer": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.7.0.tgz", - "integrity": "sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz", + "integrity": "sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==", "requires": { + "@discoveryjs/json-ext": "0.5.7", "acorn": "^8.0.4", "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", "gzip-size": "^6.0.0", - "lodash": "^4.17.20", + "html-escaper": "^2.0.2", + "is-plain-object": "^5.0.0", "opener": "^1.5.2", - "sirv": "^1.0.7", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", "ws": "^7.3.1" }, "dependencies": { - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" }, - "has-flag": { + "escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" } } }, @@ -34851,28 +36548,17 @@ } }, "webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.1.tgz", + "integrity": "sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ==", "requires": { "colorette": "^2.0.10", - "memfs": "^3.4.3", + "memfs": "^3.4.12", "mime-types": "^2.1.31", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" }, "dependencies": { - "ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, "ajv-keywords": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", @@ -34881,28 +36567,23 @@ "fast-deep-equal": "^3.1.3" } }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "requires": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" } } } }, "webpack-hot-middleware": { - "version": "2.25.2", - "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.2.tgz", - "integrity": "sha512-CVgm3NAQyfdIonRvXisRwPTUYuSbyZ6BY7782tMeUzWOO7RmVI2NaBYuCp41qyD4gYCkJyTneAJdK69A13B0+A==", + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.26.1.tgz", + "integrity": "sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==", "requires": { "ansi-html-community": "0.0.8", "html-entities": "^2.1.0", @@ -34926,9 +36607,9 @@ } }, "webpack-stats-plugin": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/webpack-stats-plugin/-/webpack-stats-plugin-1.1.1.tgz", - "integrity": "sha512-aWwE/YuO2W7VCOyWwyDJ7BRSYRYjeXat+X31YiasMM3FS6/4X9W4Mb9Q0g+jIdVgArr1Mb08sHBJKMT5M9+gVA==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/webpack-stats-plugin/-/webpack-stats-plugin-1.1.3.tgz", + "integrity": "sha512-yUKYyy+e0iF/w31QdfioRKY+h3jDBRpthexBOWGKda99iu2l/wxYsI/XqdlP5IU58/0KB9CsJZgWNAl+/MPkRw==" }, "webpackbar": { "version": "5.0.2", @@ -34977,9 +36658,9 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "std-env": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.1.tgz", - "integrity": "sha512-3H20QlwQsSm2OvAxWIYhs+j01MzzqwMwGiiO1NQaJYZgJZFPuAbf95/DiKRBSTYIJ2FeGUc+B/6mPGcWP9dO3Q==" + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==" }, "supports-color": { "version": "7.2.0", @@ -35021,9 +36702,21 @@ } }, "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, + "which-typed-array": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", + "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", + "requires": { + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.5", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.1" + } }, "widest-line": { "version": "3.1.0", @@ -35037,13 +36730,230 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "devOptional": true + "dev": true }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" }, + "workbox-background-sync": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.1.tgz", + "integrity": "sha512-trJd3ovpWCvzu4sW0E8rV3FUyIcC0W8G+AZ+VcqzzA890AsWZlUGOTSxIMmIHVusUw/FDq1HFWfy/kC/WTRqSg==", + "requires": { + "idb": "^7.0.1", + "workbox-core": "6.6.1" + } + }, + "workbox-broadcast-update": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.1.tgz", + "integrity": "sha512-fBhffRdaANdeQ1V8s692R9l/gzvjjRtydBOvR6WCSB0BNE2BacA29Z4r9/RHd9KaXCPl6JTdI9q0bR25YKP8TQ==", + "requires": { + "workbox-core": "6.6.1" + } + }, + "workbox-build": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.1.tgz", + "integrity": "sha512-INPgDx6aRycAugUixbKgiEQBWD0MPZqU5r0jyr24CehvNuLPSXp/wGOpdRJmts656lNiXwqV7dC2nzyrzWEDnw==", + "requires": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.6.1", + "workbox-broadcast-update": "6.6.1", + "workbox-cacheable-response": "6.6.1", + "workbox-core": "6.6.1", + "workbox-expiration": "6.6.1", + "workbox-google-analytics": "6.6.1", + "workbox-navigation-preload": "6.6.1", + "workbox-precaching": "6.6.1", + "workbox-range-requests": "6.6.1", + "workbox-recipes": "6.6.1", + "workbox-routing": "6.6.1", + "workbox-strategies": "6.6.1", + "workbox-streams": "6.6.1", + "workbox-sw": "6.6.1", + "workbox-window": "6.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "requires": { + "whatwg-url": "^7.0.0" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "requires": { + "punycode": "^2.1.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "workbox-cacheable-response": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.1.tgz", + "integrity": "sha512-85LY4veT2CnTCDxaVG7ft3NKaFbH6i4urZXgLiU4AiwvKqS2ChL6/eILiGRYXfZ6gAwDnh5RkuDbr/GMS4KSag==", + "requires": { + "workbox-core": "6.6.1" + } + }, + "workbox-core": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.1.tgz", + "integrity": "sha512-ZrGBXjjaJLqzVothoE12qTbVnOAjFrHDXpZe7coCb6q65qI/59rDLwuFMO4PcZ7jcbxY+0+NhUVztzR/CbjEFw==" + }, + "workbox-expiration": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.1.tgz", + "integrity": "sha512-qFiNeeINndiOxaCrd2DeL1Xh1RFug3JonzjxUHc5WkvkD2u5abY3gZL1xSUNt3vZKsFFGGORItSjVTVnWAZO4A==", + "requires": { + "idb": "^7.0.1", + "workbox-core": "6.6.1" + } + }, + "workbox-google-analytics": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.1.tgz", + "integrity": "sha512-1TjSvbFSLmkpqLcBsF7FuGqqeDsf+uAXO/pjiINQKg3b1GN0nBngnxLcXDYo1n/XxK4N7RaRrpRlkwjY/3ocuA==", + "requires": { + "workbox-background-sync": "6.6.1", + "workbox-core": "6.6.1", + "workbox-routing": "6.6.1", + "workbox-strategies": "6.6.1" + } + }, + "workbox-navigation-preload": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.1.tgz", + "integrity": "sha512-DQCZowCecO+wRoIxJI2V6bXWK6/53ff+hEXLGlQL4Rp9ZaPDLrgV/32nxwWIP7QpWDkVEtllTAK5h6cnhxNxDA==", + "requires": { + "workbox-core": "6.6.1" + } + }, + "workbox-precaching": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.1.tgz", + "integrity": "sha512-K4znSJ7IKxCnCYEdhNkMr7X1kNh8cz+mFgx9v5jFdz1MfI84pq8C2zG+oAoeE5kFrUf7YkT5x4uLWBNg0DVZ5A==", + "requires": { + "workbox-core": "6.6.1", + "workbox-routing": "6.6.1", + "workbox-strategies": "6.6.1" + } + }, + "workbox-range-requests": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.1.tgz", + "integrity": "sha512-4BDzk28govqzg2ZpX0IFkthdRmCKgAKreontYRC5YsAPB2jDtPNxqx3WtTXgHw1NZalXpcH/E4LqUa9+2xbv1g==", + "requires": { + "workbox-core": "6.6.1" + } + }, + "workbox-recipes": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.1.tgz", + "integrity": "sha512-/oy8vCSzromXokDA+X+VgpeZJvtuf8SkQ8KL0xmRivMgJZrjwM3c2tpKTJn6PZA6TsbxGs3Sc7KwMoZVamcV2g==", + "requires": { + "workbox-cacheable-response": "6.6.1", + "workbox-core": "6.6.1", + "workbox-expiration": "6.6.1", + "workbox-precaching": "6.6.1", + "workbox-routing": "6.6.1", + "workbox-strategies": "6.6.1" + } + }, + "workbox-routing": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.1.tgz", + "integrity": "sha512-j4ohlQvfpVdoR8vDYxTY9rA9VvxTHogkIDwGdJ+rb2VRZQ5vt1CWwUUZBeD/WGFAni12jD1HlMXvJ8JS7aBWTg==", + "requires": { + "workbox-core": "6.6.1" + } + }, + "workbox-strategies": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.1.tgz", + "integrity": "sha512-WQLXkRnsk4L81fVPkkgon1rZNxnpdO5LsO+ws7tYBC6QQQFJVI6v98klrJEjFtZwzw/mB/HT5yVp7CcX0O+mrw==", + "requires": { + "workbox-core": "6.6.1" + } + }, + "workbox-streams": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.1.tgz", + "integrity": "sha512-maKG65FUq9e4BLotSKWSTzeF0sgctQdYyTMq529piEN24Dlu9b6WhrAfRpHdCncRS89Zi2QVpW5V33NX8PgH3Q==", + "requires": { + "workbox-core": "6.6.1", + "workbox-routing": "6.6.1" + } + }, + "workbox-sw": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.1.tgz", + "integrity": "sha512-R7whwjvU2abHH/lR6kQTTXLHDFU2izht9kJOvBRYK65FbwutT4VvnUAJIgHvfWZ/fokrOPhfoWYoPCMpSgUKHQ==" + }, + "workbox-webpack-plugin": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.1.tgz", + "integrity": "sha512-zpZ+ExFj9NmiI66cFEApyjk7hGsfJ1YMOaLXGXBoZf0v7Iu6hL0ZBe+83mnDq3YYWAfA3fnyFejritjOHkFcrA==", + "requires": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "6.6.1" + } + }, + "workbox-window": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.1.tgz", + "integrity": "sha512-wil4nwOY58nTdCvif/KEZjQ2NP8uk3gGeRNy2jPBbzypU4BT4D9L8xiwbmDBpZlSgJd2xsT9FvSNU0gsxV51JQ==", + "requires": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.6.1" + } + }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index a684a02e..5b35a9c8 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -30,26 +30,29 @@ "@tabler/icons-react": "2.14.0", "@tinkoff/request-plugin-cache-deduplicate": "0.8.9", "@tinkoff/request-plugin-cache-memory": "0.8.16", - "@tinkoff/url": "0.8.4", - "@tramvai/cli": "2.40.0", - "@tramvai/core": "2.40.0", - "@tramvai/module-client-hints": "2.40.0", - "@tramvai/module-common": "2.40.0", - "@tramvai/module-error-interceptor": "2.40.0", - "@tramvai/module-page-render-mode": "2.40.0", - "@tramvai/module-render": "2.40.0", - "@tramvai/module-router": "2.40.0", - "@tramvai/module-sentry": "2.40.0", - "@tramvai/module-seo": "2.40.0", - "@tramvai/module-server": "2.40.0", - "@tramvai/react": "2.40.0", - "@tramvai/state": "2.40.0", - "@tramvai/tokens-render": "2.40.0", - "@tramvai/tokens-router": "2.40.0", + "@tinkoff/url": "0.8.6", + "@tramvai/cli": "2.160.1", + "@tramvai/core": "2.160.1", + "@tramvai/module-client-hints": "2.160.1", + "@tramvai/module-common": "2.160.1", + "@tramvai/module-error-interceptor": "2.160.1", + "@tramvai/module-page-render-mode": "2.160.1", + "@tramvai/module-render": "2.160.1", + "@tramvai/module-router": "2.160.1", + "@tramvai/module-sentry": "2.160.1", + "@tramvai/module-seo": "2.160.1", + "@tramvai/module-server": "2.160.1", + "@tramvai/react": "2.160.1", + "@tramvai/state": "2.160.1", + "@tramvai/tokens-render": "2.160.1", + "@tramvai/tokens-router": "2.160.1", + "i18next": "23.10.0", + "i18next-browser-languagedetector": "7.2.0", "postcss-nested": "6.0.0", "react": "17.0.1", "react-dom": "17.0.1", "react-hook-form": "7.22.5", + "react-i18next": "14.0.5", "typescript": "4.9.3", "uuid": "9.0.0" } diff --git a/frontend/src/components/Copy/Copy.tsx b/frontend/src/components/Copy/Copy.tsx index 7a9685e7..bc8380df 100644 --- a/frontend/src/components/Copy/Copy.tsx +++ b/frontend/src/components/Copy/Copy.tsx @@ -4,6 +4,7 @@ import { Tooltip } from '@mantine/core'; // @ts-ignore for tree shaking purposes import IconCopy from '@tabler/icons-react/dist/esm/icons/IconCopy'; import copyToClipboard from 'src/infrastructure/helpers/copy-to-clipboard'; +import i18n from 'src/mockingbird/i18n'; import styles from './Copy.css'; type State = { @@ -42,7 +43,9 @@ export default class Copy extends PureComponent { copyToClipboard(this.props.targetValue, (err) => { this.setState({ tooltipVisible: !err, - message: err ? 'Не удалось скопировать' : 'Скопировано', + message: err + ? i18n.t('components.copy.error') + : i18n.t('components.copy.success'), }); if (last) last.focus(); this.timer = setTimeout(() => { diff --git a/frontend/src/components/List/ListEmpty.tsx b/frontend/src/components/List/ListEmpty.tsx index 6bebe0a9..ef48ed60 100755 --- a/frontend/src/components/List/ListEmpty.tsx +++ b/frontend/src/components/List/ListEmpty.tsx @@ -1,4 +1,5 @@ import React from 'react'; +import { useTranslation } from 'react-i18next'; import { Text } from '@mantine/core'; interface Props { @@ -6,6 +7,7 @@ interface Props { } export default function ListEmpty(props: Props) { - const { text = 'Данных нет' } = props; + const { t } = useTranslation(); + const { text = t('components.list.textDefault') } = props; return {text}; } diff --git a/frontend/src/components/List/ListError.tsx b/frontend/src/components/List/ListError.tsx index c75492fa..7206aa43 100755 --- a/frontend/src/components/List/ListError.tsx +++ b/frontend/src/components/List/ListError.tsx @@ -1,4 +1,5 @@ import React from 'react'; +import { useTranslation } from 'react-i18next'; import { Text, Button } from '@mantine/core'; interface Props { @@ -7,13 +8,14 @@ interface Props { } export default function ListError(props: Props) { - const { text = 'Ошибка при загрузке данных ', onRetry } = props; + const { t } = useTranslation(); + const { text = t('components.list.loadError'), onRetry } = props; return ( {text} {onRetry && ( )} diff --git a/frontend/src/infrastructure/helpers/copy-to-clipboard/index.ts b/frontend/src/infrastructure/helpers/copy-to-clipboard/index.ts index 2106b35c..0a2226fd 100644 --- a/frontend/src/infrastructure/helpers/copy-to-clipboard/index.ts +++ b/frontend/src/infrastructure/helpers/copy-to-clipboard/index.ts @@ -1,8 +1,10 @@ +import i18n from 'src/mockingbird/i18n'; + export default function copyToClipboard( text: string, callback: (error: Error) => void ) { - if (text == null) throw new Error('copyToClipboard: text can not be null'); + if (text == null) throw new Error(i18n.t('components.copy.textEmptyError')); const el = window.document.createElement('textarea'); el.readOnly = true; // подавляем экранную клавиатуру на touch-устройствах Object.assign( @@ -33,7 +35,7 @@ export default function copyToClipboard( el.select(); // для большинства el.setSelectionRange(0, text.length); // для iOS global.document.execCommand('copy'); - if (!eventFired) throw new Error('Copy to clipboard failed'); + if (!eventFired) throw new Error(i18n.t('components.copy.copyError')); if (callback) callback(); } catch (e) { if (callback) callback(e); diff --git a/frontend/src/infrastructure/notifications/utils.ts b/frontend/src/infrastructure/notifications/utils.ts index ebb99f2f..5a77a0a1 100644 --- a/frontend/src/infrastructure/notifications/utils.ts +++ b/frontend/src/infrastructure/notifications/utils.ts @@ -1,4 +1,5 @@ import { extractError } from 'src/mockingbird/infrastructure/helpers/state'; +import i18n from 'src/mockingbird/i18n'; import { addToast } from './store/store'; export function getSuccessToast(title: string) { @@ -10,15 +11,15 @@ export function getSuccessToast(title: string) { } export function getCreateErrorToast(e: any) { - return getErrorToast('Произошла ошибка при создании', e); + return getErrorToast(i18n.t('notifications.createError'), e); } export function getUpdateErrorToast(e: any) { - return getErrorToast('Произошла ошибка при обновлении', e); + return getErrorToast(i18n.t('notifications.updateError'), e); } export function getRemoveErrorToast(e: any) { - return getErrorToast('Произошла ошибка при удалении', e); + return getErrorToast(i18n.t('notifications.removeError'), e); } function getErrorToast(title: string, e: any) { diff --git a/frontend/src/mockingbird/components/Language/LanguagePicker.css b/frontend/src/mockingbird/components/Language/LanguagePicker.css new file mode 100644 index 00000000..4bd1aab6 --- /dev/null +++ b/frontend/src/mockingbird/components/Language/LanguagePicker.css @@ -0,0 +1,18 @@ +.control { + display: flex; + width: 150px; + justify-content: flex-end; + padding: 8px 16px; + border-radius: 16px; + transition: background-color 150ms ease; +} + +.itemContent { + align-content: center; + justify-content: space-between; +} + +.icon { + width: 1.2rem; + height: 1.2rem; +} diff --git a/frontend/src/mockingbird/components/Language/LanguagePicker.tsx b/frontend/src/mockingbird/components/Language/LanguagePicker.tsx new file mode 100644 index 00000000..801b3aef --- /dev/null +++ b/frontend/src/mockingbird/components/Language/LanguagePicker.tsx @@ -0,0 +1,54 @@ +import React, { useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { UnstyledButton, Menu, Group } from '@mantine/core'; +import IconCheck from '@tabler/icons-react/dist/esm/icons/IconCheck'; +import IconLanguage from '@tabler/icons-react/dist/esm/icons/IconLanguage'; +import styles from './LanguagePicker.css'; + +type LanguageItem = { label: string; value: string }; + +const data: LanguageItem[] = [ + { label: 'English', value: 'en' }, + { label: 'Русский', value: 'ru' }, +]; + +export function LanguagePicker() { + const { i18n } = useTranslation(); + const [opened, setOpened] = useState(false); + const [selected, setSelected] = useState(() => { + return data.find((item) => item.value === i18n.language) || data[0]; + }); + const handleSelectLanguage = (item: LanguageItem) => { + setOpened(false); + setSelected(item); + i18n.changeLanguage(item.value); + }; + const items = data.map((item) => ( + handleSelectLanguage(item)} key={item.label}> + + {item.label} + {item.value === selected.value && } + + + )); + + return ( + setOpened(true)} + onClose={() => setOpened(false)} + radius="md" + width="target" + withinPortal + > + + + + + + {items} + + ); +} diff --git a/frontend/src/mockingbird/components/Language/index.ts b/frontend/src/mockingbird/components/Language/index.ts new file mode 100644 index 00000000..bad7b8ac --- /dev/null +++ b/frontend/src/mockingbird/components/Language/index.ts @@ -0,0 +1 @@ +export { LanguagePicker } from './LanguagePicker'; diff --git a/frontend/src/mockingbird/components/Page/index.tsx b/frontend/src/mockingbird/components/Page/index.tsx index e30f2d0d..6987172f 100755 --- a/frontend/src/mockingbird/components/Page/index.tsx +++ b/frontend/src/mockingbird/components/Page/index.tsx @@ -1,3 +1,4 @@ +import React from 'react'; import type { ReactNode } from 'react'; import styles from './Page.css'; diff --git a/frontend/src/mockingbird/components/form/AttachFile/index.tsx b/frontend/src/mockingbird/components/form/AttachFile/index.tsx index 0154d6b6..ab6f2c2a 100755 --- a/frontend/src/mockingbird/components/form/AttachFile/index.tsx +++ b/frontend/src/mockingbird/components/form/AttachFile/index.tsx @@ -4,6 +4,7 @@ import { useController } from 'react-hook-form'; import type { FileInputProps } from '@mantine/core'; import { FileInput } from '@mantine/core'; import { extractError } from 'src/mockingbird/infrastructure/helpers/forms'; +import { useTranslation } from 'react-i18next'; type Props = FileInputProps & { name: string; @@ -20,6 +21,7 @@ export default function AttachFile(props: Props) { single = false, ...restProps } = props; + const { t } = useTranslation(); const { field, formState, fieldState } = useController({ name, control, @@ -38,7 +40,9 @@ export default function AttachFile(props: Props) { }, [onChangeField] ); - const defaultPlaceholder = single ? 'Выберите файл' : 'Выберите файлы'; + const defaultPlaceholder = single + ? t('form.attachFile.defaultPlaceholderSingle') + : t('form.attachFile.defaultPlaceholderPlural'); const uiPlaceholder = restProps.placeholder || defaultPlaceholder; const uiError = extractError(name, formState.errors) || fieldState.error?.message; diff --git a/frontend/src/mockingbird/components/form/InputSearchTagged/index.tsx b/frontend/src/mockingbird/components/form/InputSearchTagged/index.tsx index 23a40213..96fe57d1 100755 --- a/frontend/src/mockingbird/components/form/InputSearchTagged/index.tsx +++ b/frontend/src/mockingbird/components/form/InputSearchTagged/index.tsx @@ -7,6 +7,7 @@ import { mapSelectValue, extractError, } from 'src/mockingbird/infrastructure/helpers/forms'; +import { useTranslation } from 'react-i18next'; type Props = Omit & { name: string; @@ -25,6 +26,7 @@ export default function InputSearchTagged(props: Props) { disabled = false, ...restProps } = props; + const { t } = useTranslation(); const { field, formState, fieldState } = useController({ name, control, @@ -54,7 +56,9 @@ export default function InputSearchTagged(props: Props) { error={uiError} searchable creatable - getCreateLabel={(query) => `+ Добавить ${query}`} + getCreateLabel={(query) => + `${t('form.inputSearchTagged.label')} ${query}` + } onCreate={(q) => { const query = q.trim().toLowerCase(); const item = { value: query, label: q }; diff --git a/frontend/src/mockingbird/i18n.ts b/frontend/src/mockingbird/i18n.ts new file mode 100644 index 00000000..a231b6a9 --- /dev/null +++ b/frontend/src/mockingbird/i18n.ts @@ -0,0 +1,31 @@ +import i18n from 'i18next'; +import LanguageDetector from 'i18next-browser-languagedetector'; +import { initReactI18next } from 'react-i18next'; +import ru from './translations/ru.json'; +import en from './translations/en.json'; + +i18n + // detect user language + // learn more: https://github.com/i18next/i18next-browser-languageDetector + .use(LanguageDetector) + // pass the i18n instance to react-i18next. + .use(initReactI18next) + // init i18next + // for all options read: https://www.i18next.com/overview/configuration-options + .init({ + resources: { + ru: { + translation: ru, + }, + en: { + translation: en, + }, + }, + fallbackLng: 'en', + interpolation: { + escapeValue: false, // not needed for react! + }, + debug: false, + }); + +export default i18n; diff --git a/frontend/src/mockingbird/index.ts b/frontend/src/mockingbird/index.ts index 399cea84..95b9c126 100644 --- a/frontend/src/mockingbird/index.ts +++ b/frontend/src/mockingbird/index.ts @@ -3,6 +3,7 @@ import { Layout } from './layers/layout/Layout'; import Header from './layers/layout/Header'; import paths from './paths'; import { configureSettings } from './settings'; +import './i18n'; import './main.css'; createApp({ diff --git a/frontend/src/mockingbird/infrastructure/helpers/forms/index.ts b/frontend/src/mockingbird/infrastructure/helpers/forms/index.ts index 4a3502c3..50505c2c 100644 --- a/frontend/src/mockingbird/infrastructure/helpers/forms/index.ts +++ b/frontend/src/mockingbird/infrastructure/helpers/forms/index.ts @@ -1,4 +1,5 @@ import type { FieldErrors, FieldError } from 'react-hook-form'; +import i18n from 'src/mockingbird/i18n'; export function extractError(name: string, errors: FieldErrors): string | null { const error = errors[name]; @@ -10,14 +11,14 @@ function getErrorMessage(error: FieldError) { const { type, message } = error; switch (type) { case 'required': - return 'Поле обязательное'; + return i18n.t('validation.required'); case 'validate': return message; } } export function validateJSON(value: string) { - const message = 'Невалидный json-объект'; + const message = i18n.t('validation.invalidJson'); if (!value) return; try { if (!isObject(JSON.parse(value))) return message; @@ -27,7 +28,7 @@ export function validateJSON(value: string) { } export function validateJSONArray(value: string) { - const message = 'Невалидный json-массив'; + const message = i18n.t('validation.invalidArray'); if (!value) return; try { if (!Array.isArray(JSON.parse(value))) return message; diff --git a/frontend/src/mockingbird/layers/layout/Header.tsx b/frontend/src/mockingbird/layers/layout/Header.tsx index 433e35a4..6175ba2e 100755 --- a/frontend/src/mockingbird/layers/layout/Header.tsx +++ b/frontend/src/mockingbird/layers/layout/Header.tsx @@ -1,7 +1,8 @@ import React, { useState, useEffect } from 'react'; import { connect } from '@tramvai/state'; -import { Container, Space, Title } from '@mantine/core'; +import { Container, Title, Flex } from '@mantine/core'; import { getJson } from 'src/infrastructure/request'; +import { LanguagePicker } from 'src/mockingbird/components/Language'; import { Shadow } from './Shadow'; type Props = { @@ -21,9 +22,12 @@ function Header({ assetsPrefix }: Props) { return ( - - {title} - + + + {title} + + + ); diff --git a/frontend/src/mockingbird/layers/layout/Shadow.css b/frontend/src/mockingbird/layers/layout/Shadow.css index 27b5927a..8f4a42bc 100644 --- a/frontend/src/mockingbird/layers/layout/Shadow.css +++ b/frontend/src/mockingbird/layers/layout/Shadow.css @@ -1,3 +1,3 @@ .root { - box-shadow: 0 4px 56px rgba(0, 0, 0, 0.12); + box-shadow: 0 4px 56px rgb(0 0 0 / 12%); } diff --git a/frontend/src/mockingbird/layers/pages/Mock.tsx b/frontend/src/mockingbird/layers/pages/Mock.tsx index 2ccc5dd3..362fce86 100755 --- a/frontend/src/mockingbird/layers/pages/Mock.tsx +++ b/frontend/src/mockingbird/layers/pages/Mock.tsx @@ -1,4 +1,5 @@ import React, { useCallback, useEffect } from 'react'; +import { useTranslation } from 'react-i18next'; import { useActions, useStoreSelector } from '@tramvai/state'; import { useUrl } from '@tramvai/module-router'; import { Button, Text, Loader, Paper, Title } from '@mantine/core'; @@ -32,6 +33,7 @@ import type { const TYPES = ['http', 'scenario', 'grpc']; export default function Mock() { + const { t } = useTranslation(); const url = useUrl(); const serviceId = Array.isArray(url.query.service) ? url.query.service[0] @@ -100,8 +102,8 @@ export default function Mock() { return (
@@ -109,16 +111,16 @@ export default function Mock() { const pageHeader = ( ); const actions = ( - Удалить навсегда + {t('pages.mock.actionDeleteTitle')} - Мок будет немедленно удален, действие необратимо + {t('pages.mock.actionDeleteWarning')} ); @@ -135,7 +137,7 @@ export default function Mock() {
{pageHeader} - Неизвестный тип + {t('pages.mock.mockUnknownType')}
); @@ -150,7 +152,7 @@ export default function Mock() { serviceId={serviceId} data={mock} actions={actions} - submitText="Сохранить" + submitText={t('pages.mock.editText')} submitDisabled={status === 'updating'} onSubmit={onUpdate} /> @@ -161,7 +163,7 @@ export default function Mock() { serviceId={serviceId} data={mock} actions={actions} - submitText="Сохранить" + submitText={t('pages.mock.editText')} submitDisabled={status === 'updating'} onSubmit={onUpdate} /> @@ -172,7 +174,7 @@ export default function Mock() { serviceId={serviceId} data={mock} actions={actions} - submitText="Сохранить" + submitText={t('pages.mock.editText')} submitDisabled disabled onSubmit={onUpdate} @@ -182,15 +184,15 @@ export default function Mock() { ); } -function formatTitle(type: string) { +function formatTitle(type: string, t: any) { switch (type) { case 'http': - return 'Редактирование HTTP'; + return t('pages.mock.mockHeaderTitleHttp'); case 'scenario': - return 'Редактирование scenario'; + return t('pages.mock.mockHeaderTitleScenario'); case 'grpc': - return 'Просмотр GRPC'; + return t('pages.mock.mockHeaderTitleGrpc'); default: - return 'Редактирование'; + return t('pages.mock.mockHeaderTitleDefault'); } } diff --git a/frontend/src/mockingbird/layers/pages/MockNew.tsx b/frontend/src/mockingbird/layers/pages/MockNew.tsx index e9eb9b89..177c7471 100755 --- a/frontend/src/mockingbird/layers/pages/MockNew.tsx +++ b/frontend/src/mockingbird/layers/pages/MockNew.tsx @@ -1,4 +1,5 @@ import React, { useState, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useUrl } from '@tramvai/module-router'; import { SegmentedControl } from '@mantine/core'; import PageHeader from 'src/components/PageHeader/PageHeader'; @@ -25,6 +26,7 @@ const TYPES = [ ]; export default function MockNew() { + const { t } = useTranslation(); const url = useUrl(); const serviceId = Array.isArray(url.query.service) ? url.query.service[0] @@ -42,8 +44,8 @@ export default function MockNew() { return (
- Создать + {t('pages.mock.createText')} } /> {responseMode && ( @@ -102,16 +112,22 @@ function MessageForm({ callback, ...props }: FormProps) { } function MessageFormFields({ control, serviceId }: FieldsProps) { + const { t } = useTranslation(); return ( <> - + ); } @@ -132,6 +148,7 @@ type FormBaseProps = FormProps & { }; function FormBase(props: FormBaseProps) { + const { t } = useTranslation(); const { edit, Fields, @@ -161,7 +178,7 @@ function FormBase(props: FormBaseProps) {
diff --git a/frontend/src/mockingbird/layers/pages/mock/Callbacks.tsx b/frontend/src/mockingbird/layers/pages/mock/Callbacks.tsx index 572aa260..fa1e1433 100755 --- a/frontend/src/mockingbird/layers/pages/mock/Callbacks.tsx +++ b/frontend/src/mockingbird/layers/pages/mock/Callbacks.tsx @@ -1,4 +1,5 @@ import React, { useCallback, useState } from 'react'; +import { useTranslation } from 'react-i18next'; import { v4 as generateId } from 'uuid'; import type { BoxProps } from '@mantine/core'; import { Box, Button, Text, Paper, Flex } from '@mantine/core'; @@ -25,6 +26,7 @@ export default function Callbacks({ onChange, ...restProps }: Props) { + const { t } = useTranslation(); const [index, setIndex] = useState(-1); const handleCreate = useCallback(() => { setIndex(callbacks.length); @@ -53,7 +55,7 @@ export default function Callbacks({ return (
- Коллбэки + {t('pages.mock.callbacksTitle')} diff --git a/frontend/src/mockingbird/layers/pages/mock/FormGrpc.tsx b/frontend/src/mockingbird/layers/pages/mock/FormGrpc.tsx index af973853..291b1e1a 100755 --- a/frontend/src/mockingbird/layers/pages/mock/FormGrpc.tsx +++ b/frontend/src/mockingbird/layers/pages/mock/FormGrpc.tsx @@ -1,4 +1,5 @@ import type { ReactNode } from 'react'; +import { useTranslation } from 'react-i18next'; import React, { useCallback } from 'react'; import { useForm } from 'react-hook-form'; import { @@ -35,12 +36,13 @@ type Props = { }; export default function FormGrpc(props: Props) { + const { t } = useTranslation(); const { labels, serviceId = '', data, actions, - submitText = 'Создать', + submitText = t('pages.mock.grpcSubmitTextDefault'), submitDisabled = false, disabled = false, onSubmit: onSubmitParent, @@ -62,7 +64,7 @@ export default function FormGrpc(props: Props) {
- Запрос + {t('pages.mock.grpcRequestTitle')} {!disabled && ( )} )} - Действия + + {t('pages.mock.actionsTitle')} + {actions} diff --git a/frontend/src/mockingbird/layers/pages/mock/FormHttp.tsx b/frontend/src/mockingbird/layers/pages/mock/FormHttp.tsx index 594c971f..ee4ca7be 100755 --- a/frontend/src/mockingbird/layers/pages/mock/FormHttp.tsx +++ b/frontend/src/mockingbird/layers/pages/mock/FormHttp.tsx @@ -1,4 +1,5 @@ import React, { useCallback, useState } from 'react'; +import { useTranslation } from 'react-i18next'; import { useForm } from 'react-hook-form'; import { Flex, Box, Space, Button, Accordion } from '@mantine/core'; import { Input } from 'src/mockingbird/components/form/Input'; @@ -25,12 +26,13 @@ type Props = { }; export default function FormHttp(props: Props) { + const { t } = useTranslation(); const { labels, serviceId = '', data, actions, - submitText = 'Создать', + submitText = t('pages.mock.formHttpSubmitTextDefault'), submitDisabled = false, onSubmit: onSubmitParent, } = props; @@ -55,14 +57,14 @@ export default function FormHttp(props: Props) { @@ -158,7 +160,9 @@ export default function FormHttp(props: Props) { {actions && ( - Действия + + {t('pages.mock.actionsTitle')} + {actions} diff --git a/frontend/src/mockingbird/layers/pages/mock/FormScenario.tsx b/frontend/src/mockingbird/layers/pages/mock/FormScenario.tsx index ffa87e88..e5a8fbe5 100755 --- a/frontend/src/mockingbird/layers/pages/mock/FormScenario.tsx +++ b/frontend/src/mockingbird/layers/pages/mock/FormScenario.tsx @@ -17,6 +17,7 @@ import Sources from 'src/mockingbird/modules/sources'; import Destinations from 'src/mockingbird/modules/destinations'; import { InputJson } from 'src/mockingbird/components/form/InputJson'; import type { TScenarioMock } from 'src/mockingbird/models/mock/types'; +import { useTranslation } from 'react-i18next'; import Callbacks from './Callbacks'; import JSONRequest from './JSONRequest'; import { mapScenarioToFormData, mapFormDataToScenario } from './utils'; @@ -34,12 +35,13 @@ type Props = { }; export default function FormScenario(props: Props) { + const { t } = useTranslation(); const { labels, serviceId, data, actions, - submitText = 'Создать', + submitText = t('pages.mock.scenarioSubmitTextDefault'), submitDisabled = false, onSubmit: onSubmitParent, } = props; @@ -62,14 +64,14 @@ export default function FormScenario(props: Props) { {status === 'loading' && } @@ -58,7 +60,7 @@ export default function PageDestination() { {destination && ( diff --git a/frontend/src/mockingbird/modules/destination/ui/PageDestinationNew.tsx b/frontend/src/mockingbird/modules/destination/ui/PageDestinationNew.tsx index 2f37a077..7af34486 100755 --- a/frontend/src/mockingbird/modules/destination/ui/PageDestinationNew.tsx +++ b/frontend/src/mockingbird/modules/destination/ui/PageDestinationNew.tsx @@ -5,6 +5,7 @@ import PageHeader from 'src/components/PageHeader/PageHeader'; import Page from 'src/mockingbird/components/Page'; import { getPathDestinations } from 'src/mockingbird/paths'; import { selectorAsIs } from 'src/mockingbird/infrastructure/helpers/state'; +import { useTranslation } from 'react-i18next'; import Form from './Form'; import { createAction } from '../actions'; import { createStore } from '../reducers'; @@ -12,6 +13,7 @@ import { mapFormDataToDestination } from '../utils'; import type { DestinationFormData } from '../types'; export default function MockNew() { + const { t } = useTranslation(); const url = useUrl(); const serviceId = Array.isArray(url.query.service) ? url.query.service[0] @@ -30,8 +32,8 @@ export default function MockNew() { return ( diff --git a/frontend/src/mockingbird/modules/destination/utils.ts b/frontend/src/mockingbird/modules/destination/utils.ts index f309ce22..5476f663 100755 --- a/frontend/src/mockingbird/modules/destination/utils.ts +++ b/frontend/src/mockingbird/modules/destination/utils.ts @@ -2,6 +2,7 @@ import { parseJSON, stringifyJSON, } from 'src/mockingbird/infrastructure/utils/forms'; +import i18n from 'src/mockingbird/i18n'; import { DEFAULT_REQUEST } from './refs'; import type { Destination, DestinationFormData } from './types'; @@ -11,7 +12,7 @@ export function mapDestinationToFormData( if (!data) return { name: 'test_out', - description: 'Получатель ***', + description: i18n.t('destination.inputDescription'), request: stringifyJSON(DEFAULT_REQUEST), init: stringifyJSON([]), shutdown: stringifyJSON([]), diff --git a/frontend/src/mockingbird/modules/destinations/ui/PageDestinations.tsx b/frontend/src/mockingbird/modules/destinations/ui/PageDestinations.tsx index 141efdd8..2796f75c 100755 --- a/frontend/src/mockingbird/modules/destinations/ui/PageDestinations.tsx +++ b/frontend/src/mockingbird/modules/destinations/ui/PageDestinations.tsx @@ -11,6 +11,7 @@ import { selectorAsIs } from 'src/mockingbird/infrastructure/helpers/state'; import Page from 'src/mockingbird/components/Page'; import { getPathServices, getPathDestinationNew } from 'src/mockingbird/paths'; import useService from 'src/mockingbird/modules/service'; +import { useTranslation } from 'react-i18next'; import DestinationItem from './DestinationItem'; import type { State } from '../reducers'; import store from '../reducers'; @@ -19,6 +20,7 @@ import { fetchAction, resetAction } from '../actions'; const DESTINATION_ITEM_HEIGHT = 80; export default function PageDestinations() { + const { t } = useTranslation(); const url = useUrl(); const serviceId = Array.isArray(url.query.service) ? url.query.service[0] @@ -42,12 +44,14 @@ export default function PageDestinations() { return ( - Создать + {t('destinations.listCreate')} } /> diff --git a/frontend/src/mockingbird/modules/services/actions/createAction.ts b/frontend/src/mockingbird/modules/services/actions/createAction.ts index be58de7b..6c24a775 100644 --- a/frontend/src/mockingbird/modules/services/actions/createAction.ts +++ b/frontend/src/mockingbird/modules/services/actions/createAction.ts @@ -7,13 +7,11 @@ import { reset, } from '../reducers/createStore'; - type ServiceRequestParams = { - name: string, - suffix: string + name: string; + suffix: string; }; - export const createAction = createActionCore({ name: 'CREATE_SERVICE_ACTION', fn: ({ dispatch, getState }, body: ServiceRequestParams) => { @@ -36,15 +34,13 @@ export const createAction = createActionCore({ }, }); - function normalizeRequest(params: ServiceRequestParams): ServiceRequestParams { return { name: params.name.trim(), - suffix: params.suffix.trim() + suffix: params.suffix.trim(), }; } - export const resetCreateStateAction = createActionCore({ name: 'RESET_CREATE_SERVICE_ACTION', fn: ({ dispatch }) => dispatch(reset()), diff --git a/frontend/src/mockingbird/modules/services/reducers/createStore.ts b/frontend/src/mockingbird/modules/services/reducers/createStore.ts index fa62846b..a84df872 100644 --- a/frontend/src/mockingbird/modules/services/reducers/createStore.ts +++ b/frontend/src/mockingbird/modules/services/reducers/createStore.ts @@ -1,4 +1,5 @@ import { createReducer, createEvent } from '@tramvai/state'; +import i18n from 'src/mockingbird/i18n'; export type ServiceState = { status: 'none' | 'loading' | 'complete' | 'error'; @@ -23,7 +24,7 @@ const reducer = createReducer(storeName, initialState) })) .on(createFail, (state, e) => ({ status: 'error', - errorMessage: (e && e.body && e.body.error) || 'Попробуйте еще раз', + errorMessage: (e && e.body && e.body.error) || i18n.t('services.tryAgain'), })) .on(setLoading, () => ({ status: 'loading', diff --git a/frontend/src/mockingbird/modules/services/ui/CreatePopup.tsx b/frontend/src/mockingbird/modules/services/ui/CreatePopup.tsx index 25840b75..ed8ab421 100755 --- a/frontend/src/mockingbird/modules/services/ui/CreatePopup.tsx +++ b/frontend/src/mockingbird/modules/services/ui/CreatePopup.tsx @@ -1,4 +1,5 @@ import React, { useCallback, useEffect } from 'react'; +import { useTranslation } from 'react-i18next'; import { useForm } from 'react-hook-form'; import { useNavigate } from '@tramvai/module-router'; import { useActions, useStoreSelector } from '@tramvai/state'; @@ -17,6 +18,7 @@ interface Props { } export default function CreatePopup({ opened, onClose }: Props) { + const { t } = useTranslation(); const navigate = useNavigate(); const { status, id, errorMessage } = useStoreSelector( createServiceStore, @@ -30,19 +32,19 @@ export default function CreatePopup({ opened, onClose }: Props) { if (status === 'complete' && id) { addToast({ type: 'success', - title: 'Сервис успешно создан', + title: t('services.createSuccess'), timer: 3000, }); navigate(getPathMocks(id)); } else if (status === 'error' && errorMessage) { addToast({ type: 'error', - title: 'Произошла ошибка при создании', + title: t('services.createError'), children: errorMessage, timer: 5000, }); } - }, [status, id, errorMessage, addToast, navigate]); + }, [t, status, id, errorMessage, addToast, navigate]); const { control, handleSubmit } = useForm({ defaultValues: { name: '', @@ -52,25 +54,30 @@ export default function CreatePopup({ opened, onClose }: Props) { }); const onSubmit = useCallback((data: Service) => create(data), [create]); return ( - + diff --git a/frontend/src/mockingbird/modules/services/ui/ServiceItem.tsx b/frontend/src/mockingbird/modules/services/ui/ServiceItem.tsx index a085e3f3..389906bf 100755 --- a/frontend/src/mockingbird/modules/services/ui/ServiceItem.tsx +++ b/frontend/src/mockingbird/modules/services/ui/ServiceItem.tsx @@ -1,4 +1,5 @@ import React, { useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useNavigate } from '@tramvai/module-router'; import { Paper, Anchor, Text } from '@mantine/core'; import { @@ -15,6 +16,7 @@ interface Props { } export default function ServiceItem({ execApiPath, item }: Props) { + const { t } = useTranslation(); const { name, suffix } = item; const navigate = useNavigate(getPathMocks(suffix)); const navigateSources = useNavigate(getPathSources(suffix)); @@ -46,7 +48,7 @@ export default function ServiceItem({ execApiPath, item }: Props) { type="button" onClick={navigateSources} > - Источники + {t('services.sources')} - Получатели + {t('services.destinations')}
diff --git a/frontend/src/mockingbird/modules/services/ui/Services.tsx b/frontend/src/mockingbird/modules/services/ui/Services.tsx index d90d16fe..c13e0fb2 100755 --- a/frontend/src/mockingbird/modules/services/ui/Services.tsx +++ b/frontend/src/mockingbird/modules/services/ui/Services.tsx @@ -1,4 +1,5 @@ import React, { useEffect } from 'react'; +import { useTranslation } from 'react-i18next'; import { connect, useActions, useStoreSelector } from '@tramvai/state'; import { Button } from '@mantine/core'; import { useDisclosure } from '@mantine/hooks'; @@ -21,6 +22,7 @@ type Props = { const SERVICE_ITEM_HEIGHT = 80; function Services({ execApiPath }: Props) { + const { t } = useTranslation(); const fetchServices = useActions(fetchAction); const { services, status } = useStoreSelector( servicesStore, @@ -35,14 +37,14 @@ function Services({ execApiPath }: Props) { return ( <> - Создать + {t('services.createText')} } /> diff --git a/frontend/src/mockingbird/modules/source/actions/index.ts b/frontend/src/mockingbird/modules/source/actions/index.ts index 703339cf..53aa6ce9 100644 --- a/frontend/src/mockingbird/modules/source/actions/index.ts +++ b/frontend/src/mockingbird/modules/source/actions/index.ts @@ -8,6 +8,7 @@ import { getRemoveErrorToast, } from 'src/infrastructure/notifications'; import { getPathSource } from 'src/mockingbird/paths'; +import i18n from 'src/mockingbird/i18n'; import { setCreating, createSuccess, @@ -37,7 +38,7 @@ export const createAction = createActionCore({ }) .then((response) => { if (response.status === 'success' && response.id) { - dispatch(getSuccessToast('Источник успешно создан')); + dispatch(getSuccessToast(i18n.t('source.createSuccess'))); pageService.navigate(getPathSource(serviceId, response.id)); return dispatch(createSuccess()); } @@ -81,7 +82,7 @@ export const updateAction = createActionCore({ return patchJson(`${MOCKINGBIRD_API}/v3/source/${name}`, { body: data }) .then((response) => { if (response.status === 'success' && response.id) { - dispatch(getSuccessToast('Источник успешно обновлен')); + dispatch(getSuccessToast(i18n.t('source.updateSuccess'))); return dispatch(updateSuccess(data)); } dispatch(getUpdateErrorToast(null)); @@ -106,7 +107,7 @@ export const deleteAction = createActionCore({ }) .then((response) => { if (response.status === 'success') { - dispatch(getSuccessToast('Источник успешно удален')); + dispatch(getSuccessToast(i18n.t('source.deleteSuccess'))); pageService.navigate(basePath); return dispatch(deleteSuccess()); } diff --git a/frontend/src/mockingbird/modules/source/ui/Form.tsx b/frontend/src/mockingbird/modules/source/ui/Form.tsx index 2410da6f..a1b5f85a 100755 --- a/frontend/src/mockingbird/modules/source/ui/Form.tsx +++ b/frontend/src/mockingbird/modules/source/ui/Form.tsx @@ -1,4 +1,5 @@ import React, { useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useForm } from 'react-hook-form'; import { Button, Accordion } from '@mantine/core'; import { validateJSONArray } from 'src/mockingbird/infrastructure/helpers/forms'; @@ -16,10 +17,11 @@ type Props = { }; export default function Form(props: Props) { + const { t } = useTranslation(); const { actions, data, - submitText = 'Создать', + submitText = t('source.formSubmitTextDefault'), disabled = false, onSubmit: onSubmitParent, } = props; @@ -36,7 +38,7 @@ export default function Form(props: Props) {
- Действия + {t('source.actionsText')} {actions} diff --git a/frontend/src/mockingbird/modules/source/ui/PageSource.tsx b/frontend/src/mockingbird/modules/source/ui/PageSource.tsx index 3115e906..c4cd2e18 100755 --- a/frontend/src/mockingbird/modules/source/ui/PageSource.tsx +++ b/frontend/src/mockingbird/modules/source/ui/PageSource.tsx @@ -1,4 +1,5 @@ import React, { useCallback, useEffect } from 'react'; +import { useTranslation } from 'react-i18next'; import { useActions, useStoreSelector } from '@tramvai/state'; import { useUrl } from '@tramvai/module-router'; import { Paper, Text, Title, Button } from '@mantine/core'; @@ -22,6 +23,7 @@ import type { SourceFormData } from '../types'; const SOURCE_HEIGHT_ITEM = 80; export default function PageSource() { + const { t } = useTranslation(); const url = useUrl(); const serviceId = Array.isArray(url.query.service) ? url.query.service[0] @@ -62,9 +64,9 @@ export default function PageSource() { }, [deleteSource, name, basePath]); const actions = ( - Удалить навсегда + {t('source.actionTitle')} - Источник будет немедленно удален, действие необратимо + {t('source.actionWarning')} ); return (
{status === 'loading' && } @@ -89,7 +91,7 @@ export default function PageSource() { diff --git a/frontend/src/mockingbird/modules/source/ui/PageSourceNew.tsx b/frontend/src/mockingbird/modules/source/ui/PageSourceNew.tsx index 43369737..d051f85e 100755 --- a/frontend/src/mockingbird/modules/source/ui/PageSourceNew.tsx +++ b/frontend/src/mockingbird/modules/source/ui/PageSourceNew.tsx @@ -1,4 +1,5 @@ import React, { useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useUrl } from '@tramvai/module-router'; import { useActions, useStoreSelector } from '@tramvai/state'; import PageHeader from 'src/components/PageHeader/PageHeader'; @@ -12,6 +13,7 @@ import { mapFormDataToSource } from '../utils'; import type { SourceFormData } from '../types'; export default function MockNew() { + const { t } = useTranslation(); const url = useUrl(); const serviceId = Array.isArray(url.query.service) ? url.query.service[0] @@ -30,8 +32,8 @@ export default function MockNew() { return ( diff --git a/frontend/src/mockingbird/modules/source/utils.ts b/frontend/src/mockingbird/modules/source/utils.ts index 779e47ef..51151126 100755 --- a/frontend/src/mockingbird/modules/source/utils.ts +++ b/frontend/src/mockingbird/modules/source/utils.ts @@ -2,6 +2,7 @@ import { parseJSON, stringifyJSON, } from 'src/mockingbird/infrastructure/utils/forms'; +import i18n from 'src/mockingbird/i18n'; import { DEFAULT_REQUEST } from './refs'; import type { Source, SourceFormData } from './types'; @@ -9,7 +10,7 @@ export function mapSourceToFormData(data?: Source): SourceFormData { if (!data) return { name: 'test_in', - description: 'Источник ***', + description: i18n.t('source.inputDescription'), request: stringifyJSON(DEFAULT_REQUEST), init: stringifyJSON([]), shutdown: stringifyJSON([]), diff --git a/frontend/src/mockingbird/modules/sources/ui/PageSources.tsx b/frontend/src/mockingbird/modules/sources/ui/PageSources.tsx index 335b966c..affa6c53 100755 --- a/frontend/src/mockingbird/modules/sources/ui/PageSources.tsx +++ b/frontend/src/mockingbird/modules/sources/ui/PageSources.tsx @@ -11,11 +11,13 @@ import { selectorAsIs } from 'src/mockingbird/infrastructure/helpers/state'; import Page from 'src/mockingbird/components/Page'; import { getPathServices, getPathSourceNew } from 'src/mockingbird/paths'; import useService from 'src/mockingbird/modules/service'; +import { useTranslation } from 'react-i18next'; import SourceItem from './SourceItem'; import sourcesStore from '../reducers'; import { fetchAction, resetAction } from '../actions'; export default function PageSources() { + const { t } = useTranslation(); const url = useUrl(); const serviceId = Array.isArray(url.query.service) ? url.query.service[0] @@ -36,12 +38,14 @@ export default function PageSources() { return ( - Создать + {t('sources.listCreate')} } /> diff --git a/frontend/src/mockingbird/translations/en.json b/frontend/src/mockingbird/translations/en.json new file mode 100644 index 00000000..82d06f53 --- /dev/null +++ b/frontend/src/mockingbird/translations/en.json @@ -0,0 +1,181 @@ +{ + "models": { + "mock": { + "createSuccess": "Mock has been created", + "updateSuccess": "Mock has been updated", + "deleteSuccess": "Mock has been deleted" + }, + "mockCreate": { + "httpSuccess": "Stub has been created", + "scenarioSuccess": "Scenario has been created", + "grpcSuccess": "GRPC has been created" + } + }, + "destination": { + "createSuccess": "Destination has been created", + "updateSuccess": "Destination has been updated", + "inputDescription": "Destination ***", + "formSubmitTextDefault": "Create", + "formSubmitText": "Save", + "nameLabel": "Title", + "descriptionLabel": "Description", + "requestLabel": "Request", + "initLabel": "init", + "shutdownLabel": "shutdown", + "editHeaderTitle": "Edit destination", + "editHeaderBackText": "Back to list", + "createHeaderTitle": "Create destination", + "createHeaderBackText": "Back to list" + }, + "destinations": { + "listHeaderTitle": "Service's destinations", + "listHeaderBackText": "Back to list", + "listCreate": "Create" + }, + "services": { + "tryAgain": "Try again", + "createSuccess": "Service has been created", + "createError": "Can't create service", + "title": "Create service", + "nameLabel": "Title", + "suffixLabel": "Suffix", + "submitText": "Create", + "sources": "Sources", + "destinations": "Destinations", + "listTitle": "Services", + "createText": "Create" + }, + "source": { + "createSuccess": "Source has been created", + "updateSuccess": "Source has been updated", + "deleteSuccess": "Source has been deleted", + "formSubmitTextDefault": "Create", + "formSubmitText": "Save", + "nameLabel": "Title", + "descriptionLabel": "Description", + "requestLabel": "Request", + "initLabel": "init", + "shutdownLabel": "shutdown", + "reInitTriggersLabel": "reInitTriggers", + "actionsText": "Actions", + "actionTitle": "Remove entirely", + "actionWarning": "Source will be removed entirely", + "actionText": "Remove", + "editHeaderTitle": "Edit source", + "editHeaderBackText": "Back to list", + "createHeaderTitle": "Create source", + "createHeaderBackText": "Back to list", + "inputDescription": "Source ***" + }, + "sources": { + "listHeaderTitle": "Sources of service", + "listHeaderBackText": "Back to list", + "listCreate": "Create" + }, + "pages": { + "mock": { + "editCallbackText": "Edit callback", + "createCallbackText": "Create callback", + "responseModeLabel": "Response mode", + "persistLabel": "Data that will be written to DB", + "destinationLabel": "Destination", + "outputLabel": "Output", + "typeLabel": "Type", + "delayLabel": "Delay", + "pattern": "Pattern", + "editText": "Save", + "createText": "Create", + "cancelText": "Cancel", + "callbacksTitle": "Callbacks", + "grpcSubmitTextDefault": "Create", + "grpcRequestTitle": "Request", + "nameLabel": "Title", + "labelsLabel": "Labels", + "scopeLabel": "Scope", + "timesLabel": "Number of invokes", + "methodNameLabel": "Method", + "requestCodecsLabel": "Proto file", + "requestSchemaLabel": "Proto schema", + "requestClassLabel": "Class", + "requestPredicatesLabel": "Predicate", + "responseCodecsLabel": "Proto file", + "responseSchemaLabel": "Proto schema", + "responseClassLabel": "Class", + "requestLabel": "Request", + "responseLabel": "Response", + "stateLabel": "Predicate for state search", + "seedLabel": "Vars generation", + "actionsTitle": "Actions", + "formHttpSubmitTextDefault": "Create", + "pathLabel": "Path", + "isPathPatternLabel": "RegExp path", + "scenarioSubmitTextDefault": "Create", + "scenarioSourceTitle": "Source", + "sourceLabel": "Event's source", + "inputLabel": "Request", + "showAsJson": "Show JSON", + "jsonRequestDescription": "Don't forget to save MOCK", + "scopesPersistentLabel": "Persistent", + "scopesEphemeralLabel": "Ephemeral", + "scopesCountdownLabel": "Countdown", + "stubInputDescription": "Stub ***", + "scenarioInputDescription": "Scenario ***", + "grpcInputDescription": "GRPC ***", + "missedCallbackError": "Missed callback type while mapping", + "left": "Left", + "callSingle": "call", + "callPlural1": "calls", + "callPlural2": "calls", + "mockHeaderTitle": "Edit", + "mockHeaderCreateText": "Back to list", + "mockHeaderBackText": "Back to list", + "mockListHeaderBackText": "Back to list", + "mockHeaderTitleHttp": "Edit HTTP", + "mockHeaderTitleScenario": "Edit scenario", + "mockHeaderTitleGrpc": "View GRPC", + "mockHeaderTitleDefault": "Edit", + "actionDeleteTitle": "Remove entirely", + "actionDeleteWarning": "Mock will be removed entirely", + "actionDeleteText": "Remove", + "mockUnknownType": "Unknown mock", + "searchPlaceholder": "Search", + "typePlaceholder": "Type", + "filterPlaceholder": "Label's filter", + "loadMore": "Load more" + }, + "notFound": "Page Not Found", + "goBack": "Go back" + }, + "components": { + "copy": { + "success": "Copied", + "error": "Copy failed", + "textEmptyError": "copyToClipboard: text can not be null", + "copyError": "Copy to clipboard failed" + }, + "list": { + "textDefault": "No data", + "loadError": "Failed to load", + "tryAgain": "Try again" + } + }, + "notifications": { + "createError": "Error while creating", + "updateError": "Error while updating", + "removeError": "Error while removing" + }, + "form": { + "attachFile": { + "defaultPlaceholderSingle": "Choose file", + "defaultPlaceholderPlural": "Choose files" + }, + "inputSearchTagged": { + "label": "+ Add" + } + }, + "validation": { + "required": "Required field", + "invalidJson": "Invalid JSON object", + "invalidArray": "Invalid JSON array" + } +} diff --git a/frontend/src/mockingbird/translations/ru.json b/frontend/src/mockingbird/translations/ru.json new file mode 100644 index 00000000..9b466d30 --- /dev/null +++ b/frontend/src/mockingbird/translations/ru.json @@ -0,0 +1,181 @@ +{ + "models": { + "mock": { + "createSuccess": "Мок успешно создан", + "updateSuccess": "Мок успешно обновлен", + "deleteSuccess": "Мок успешно удален" + }, + "mockCreate": { + "httpSuccess": "Стаб успешно создан", + "scenarioSuccess": "Сценарий успешно создан", + "grpcSuccess": "GRPC успешно создан" + } + }, + "destination": { + "createSuccess": "Получатель успешно создан", + "updateSuccess": "Получатель успешно обновлен", + "inputDescription": "Получатель ***", + "formSubmitTextDefault": "Создать", + "formSubmitText": "Сохранить", + "nameLabel": "Название", + "descriptionLabel": "Описание", + "requestLabel": "Запрос", + "initLabel": "init", + "shutdownLabel": "shutdown", + "editHeaderTitle": "Редактирование получателя", + "editHeaderBackText": "К списку получателей", + "createHeaderTitle": "Создание получателя", + "createHeaderBackText": "К списку получателей" + }, + "destinations": { + "listHeaderTitle": "Получатели сервиса", + "listHeaderBackText": "К списку сервисов", + "listCreate": "Создать" + }, + "services": { + "tryAgain": "Попробуйте еще раз", + "createSuccess": "Сервис успешно создан", + "createError": "Произошла ошибка при создании", + "title": "Создание сервиса", + "nameLabel": "Название", + "suffixLabel": "Суффикс", + "submitText": "Создать", + "sources": "Источники", + "destinations": "Получатели", + "listTitle": "Сервисы", + "createText": "Создать" + }, + "source": { + "createSuccess": "Источник успешно создан", + "updateSuccess": "Источник успешно обновлен", + "deleteSuccess": "Источник успешно удален", + "formSubmitTextDefault": "Создать", + "formSubmitText": "Сохранить", + "nameLabel": "Название", + "descriptionLabel": "Описание", + "requestLabel": "Запрос", + "initLabel": "init", + "shutdownLabel": "shutdown", + "reInitTriggersLabel": "reInitTriggers", + "actionsText": "Действия", + "actionTitle": "Удалить навсегда", + "actionWarning": "Источник будет немедленно удален, действие необратимо", + "actionText": "Удалить", + "editHeaderTitle": "Редактирование источника", + "editHeaderBackText": "К списку источников", + "createHeaderTitle": "Создание источника", + "createHeaderBackText": "К списку источников", + "inputDescription": "Источник ***" + }, + "sources": { + "listHeaderTitle": "Источники сервиса", + "listHeaderBackText": "К списку сервисов", + "listCreate": "Создать" + }, + "pages": { + "mock": { + "editCallbackText": "Редактирование коллбэка", + "createCallbackText": "Создание коллбэка", + "responseModeLabel": "Тип ответа", + "persistLabel": "Данные, записываемые в базу", + "destinationLabel": "Получатель событий", + "outputLabel": "Ответ", + "typeLabel": "Тип", + "delayLabel": "Задержка", + "pattern": "Паттерн", + "editText": "Сохранить", + "createText": "Создать", + "cancelText": "Отмена", + "callbacksTitle": "Коллбэки", + "grpcSubmitTextDefault": "Создать", + "grpcRequestTitle": "Запрос", + "nameLabel": "Название", + "labelsLabel": "Лейблы", + "scopeLabel": "Время жизни", + "timesLabel": "Количество срабатываний", + "methodNameLabel": "Метод", + "requestCodecsLabel": "Proto файл", + "requestSchemaLabel": "Proto схема", + "requestClassLabel": "Класс", + "requestPredicatesLabel": "Предикаты", + "responseCodecsLabel": "Proto файл", + "responseSchemaLabel": "Proto схема", + "responseClassLabel": "Класс", + "requestLabel": "Запрос", + "responseLabel": "Ответ", + "stateLabel": "Предикат для поиска состояния", + "seedLabel": "Генерация переменных", + "actionsTitle": "Действия", + "formHttpSubmitTextDefault": "Создать", + "pathLabel": "Путь", + "isPathPatternLabel": "Путь-регулярка", + "scenarioSubmitTextDefault": "Создать", + "scenarioSourceTitle": "Источник", + "sourceLabel": "Источник событий", + "inputLabel": "Запрос", + "showAsJson": "Показать как JSON", + "jsonRequestDescription": "Чтобы ваш МОК наверняка работал, рекомендуем предварительно\nсохранить, если вы вносили правки", + "scopesPersistentLabel": "Вечный", + "scopesEphemeralLabel": "Эфемерный", + "scopesCountdownLabel": "N-разовый", + "stubInputDescription": "Стаб ***", + "scenarioInputDescription": "Сценарий ***", + "grpcInputDescription": "GRPC ***", + "missedCallbackError": "Missed callback type while mapping", + "left": "Осталось", + "callSingle": "вызов", + "callPlural1": "вызова", + "callPlural2": "вызовов", + "mockHeaderTitle": "Редактирование", + "mockHeaderCreateText": "К списку моков", + "mockHeaderBackText": "К списку моков", + "mockListHeaderBackText": "К списку сервисов", + "mockHeaderTitleHttp": "Редактирование HTTP", + "mockHeaderTitleScenario": "Редактирование scenario", + "mockHeaderTitleGrpc": "Просмотр GRPC", + "mockHeaderTitleDefault": "Редактирование", + "actionDeleteTitle": "Удалить навсегда", + "actionDeleteWarning": "Мок будет немедленно удален, действие необратимо", + "actionDeleteText": "Удалить", + "mockUnknownType": "Неизвестный тип", + "searchPlaceholder": "Поиск", + "typePlaceholder": "Тип", + "filterPlaceholder": "Фильтр по лейблам", + "loadMore": "Загрузить еще" + }, + "notFound": "Страница не найдена", + "goBack": "Вернуться на главную" + }, + "components": { + "copy": { + "success": "Скопировано", + "error": "Не удалось скопировать", + "textEmptyError": "copyToClipboard: text can not be null", + "copyError": "Copy to clipboard failed" + }, + "list": { + "textDefault": "Данных нет", + "loadError": "Ошибка при загрузке данных", + "tryAgain": "Попробовать снова" + } + }, + "notifications": { + "createError": "Произошла ошибка при создании", + "updateError": "Произошла ошибка при обновлении", + "removeError": "Произошла ошибка при удалении" + }, + "form": { + "attachFile": { + "defaultPlaceholderSingle": "Выберите файл", + "defaultPlaceholderPlural": "Выберите файлы" + }, + "inputSearchTagged": { + "label": "+ Добавить" + } + }, + "validation": { + "required": "Поле обязательное", + "invalidJson": "Невалидный json-объект", + "invalidArray": "Невалидный json-массив" + } +} diff --git a/frontend/tramvai.json b/frontend/tramvai.json index b41830df..d50f1bf9 100644 --- a/frontend/tramvai.json +++ b/frontend/tramvai.json @@ -5,26 +5,18 @@ "name": "mockingbird", "root": "src/mockingbird", "type": "application", - "commands": { - "build": { - "options": { - "server": "src/mockingbird/index.ts", - "vendor": "src/vendor.ts" - }, - "configurations": { - "sourceMap": true, - "dedupeIgnore": ["@platform-ui/"], - "postcss": { - "config": "src/mockingbird/postcss" - } - } - }, - "serve": { - "configurations": { - "hotRefresh": true, - "modern": true - } - } + "sourceMap": true, + "postcss": { + "config": "src/mockingbird/postcss", + "cssLocalIdentName": {} + }, + "dedupe": { + "ignore": [ + "@platform-ui/" + ] + }, + "hotRefresh": { + "enabled": true } } } diff --git a/message-brokers.md b/message-brokers.md index 23305685..8de53e81 100644 --- a/message-brokers.md +++ b/message-brokers.md @@ -1,273 +1,270 @@ -# Работа с очередями - -Mockingbird взаимодействует с брокерами сообщений через HTTP API, благодаря чему теоретически поддерживаются любые возможные MQ. -На практике некоторе брокеры требуют установки дополнительных sidecar-коробок, как, например, HTTP-Bridge для WebsphereMQ или rest-proxy для Kafka. -Здесь мы рассмотрим примеры настройки mockingbird для работы с различными MQ. -Примеры ниже являются шаблонами, по которым можно самостоятельно настроить Mockingbird через UI - -## RabbitMQ - -RabbitMQ имеет встроенный rest API, благодаря чему установка доплнительных решений не требуется. - -Официальная документация: https://www.rabbitmq.com/management.html#http-api - -Пример конфигурации source (mockingbird читает из очереди): -``` -Запрос: - -{ - "body": "{\"count\":1,\"ackmode\":\"ack_requeue_false\",\"encoding\":\"auto\"}", - "headers": { - "Authorization": "Basic xxxxxxx" - }, - "jenumerate": "$", - "jextract": "payload", - "jstringdecode": true, - "method": "POST", - "url": "http://:15672/api/queues///get" -} -``` - -Назначение большинства полей понятно из названий, но назначение некоторых поля стоит раскрыть подробно: -- `jenumerate` - наличие этого поля означает, что в ответе метода может быть несколько сообщений, значение представляет собой путь до поля с массивом. В данном случае массив находится непосредственно в корне ответа -- `jextract` - путь до содержимого сообщения в ответе. В данном случае это поле `payload` -- `jstringdecode` - признак того, что сообщение является json-строкой, в которой содержится экранированый JSON. При установке jstringdecode в true этот JSON будет распаршен - -Использование этих трёх полей имеет смысл только для API, возвращающих JSON и может в ином случае приводить к ошибкам - -Пример конфигурации destination (mockingbird пишет в очередь): -``` -Запрос: - -{ - "body": { - "payload": "${_message}", // сюда подставляется ответ, который сформировал мок - "payload_encoding": "string", - "properties": {}, - "routing_key": "" - }, - "headers": { - "Authorization": "Basic xxxxxxx" - }, - "method": "POST", - "stringifybody": true, - "url": "http://:15672/api/exchanges///publish" -} -``` - -Назначение большинства полей понятно из названий, но назначение некоторых поля стоит раскрыть подробно: -- `stringifybody` - означает, что ответ, сформированый моком, нужно заэкранировать и передать в шаблонизатор как JSON строку - -## WebsphereMQ - -Для работы с WebsphereMQ требуется установка [IBM MQ bridge for HTTP](https://www.ibm.com/docs/en/ibm-mq/8.0?topic=mq-bridge-http) - -Пример конфигурации source (mockingbird читает из очереди): -``` -Запрос: - -{ - "bypassCodes": [504], - "headers": { - "Authorization": "Basic xxxxxxx" - }, - "method": "DELETE", - "url": "http://:8080/WMQHTTP2/msg/queue//" -} -``` - -Назначение большинства полей понятно из названий, но назначение некоторых поля стоит раскрыть подробно: -- `bypassCodes` - коды ответа сервера, которые не следует считать ошибочными. В данном случае 504 это признак отсутсвия сообщений, что является нормой - -Пример конфигурации destination (mockingbird пишет в очередь): -``` -Запрос: - -{ - "headers": { - "Authorization": "Basic xxxxxxx", - "Content-Type": "text/xml", - "x-msg-class": "TEXT" - }, - "method": "POST", - "url": "http://:8080/WMQHTTP2/msg/queue//" -} -``` - -## Kafka - -Для работы с Kafka требуется установить и настроить [Kafka REST Proxy](https://github.com/confluentinc/kafka-rest) - -Чтение из топиков кафки с помощью Kafka REST Proxy требует дополнительного созданию (и удаления) консьюмеров и подписок, для этого предусмотрены блоки Init и Shutdown. - -`` и `` - произвольные уникальные в рамках конфига имена - -Пример конфигурации source (mockingbird читает JSON из топика): -``` -Запрос: - -{ - "headers": { - "Accept": "application/vnd.kafka.json.v2+json" - }, - "jenumerate": "$", - "jextract": "value", - "method": "GET", - "url": "http:///consumers//instances//records" -} - -Init: - -[ - { - "body": "{\"name\": \"\", \"format\": \"json\", \"auto.offset.reset\": \"earliest\"}", - "headers": { - "Content-Type": "application/vnd.kafka.v2+json" - }, - "method": "POST", - "url": "http:///consumers/" - }, - { - "body": "{\"topics\":[\"\"]}", - "headers": { - "Content-Type": "application/vnd.kafka.v2+json" - }, - "method": "POST", - "url": "http:///consumers//instances//subscription" - } -] - -Shutdown: - -[ - { - "method": "DELETE", - "url": "http:///consumers//instances/" - } -] - -ReInit triggers: - -[ - { - "mode": "json", - "code": 404, - "body": {"error_code":40403,"message":"Consumer instance not found."} - } -] -``` - -Пример конфигурации source (mockingbird читает Avro из топика): -``` -Запрос: - -{ - "headers": { - "Accept": "application/vnd.kafka.avro.v2+json" - }, - "jenumerate": "$", - "jextract": "value", - "method": "GET", - "url": "http:///consumers//instances//records" -} - -Init: - -[ - { - "body": "{\"name\": \"\", \"format\": \"avro\", \"auto.offset.reset\": \"earliest\"}", - "headers": { - "Content-Type": "application/vnd.kafka.v2+json" - }, - "method": "POST", - "url": "http:///consumers/" - }, - { - "body": "{\"topics\":[\"\"]}", - "headers": { - "Content-Type": "application/vnd.kafka.v2+json" - }, - "method": "POST", - "url": "http:///consumers//instances//subscription" - } -] - -Shutdown: - -[ - { - "method": "DELETE", - "url": "http:///consumers//instances/" - } -] - -ReInit triggers: - -[ - { - "mode": "json", - "code": 404, - "body": {"error_code":40403,"message":"Consumer instance not found."} - } -] -``` - -Назначение большинства полей понятно из названий, но назначение некоторых поля стоит раскрыть подробно: -- `jenumerate` - наличие этого поля означает, что в ответе метода может быть несколько сообщений, значение представляет собой путь до поля с массивом. В данном случае массив находится непосредственно в корне ответа -- `jextract` - путь до содержимого сообщения в ответе. В данном случае это поле `value` - -kafka-rest-proxy на данный момент (май 2022) [не поддерживает](https://github.com/confluentinc/kafka-rest/issues/620) топики, в которых сообщение сериализуется в Avro, а ключ - нет - -Пример конфигурации destination (mockingbird пишет JSON в топик): -``` -Запрос: - -{ - "body": { - "records": [ - { - "value": "${_message}" //сюда подставляется ответ, который сформировал мок - } - ] - }, - "headers": { - "Content-Type": "application/vnd.kafka.json.v2+json" - }, - "method": "POST", - "url": "http:///topics/" -} -``` - -Пример конфигурации destination (mockingbird пишет Avro в топик): -``` -Запрос: - -{ - "body": { - "key_schema_id": , - "records": [ - { - "key": "${_message.key}", - "value": "${_message.value}" - } - ], - "value_schema_id": - }, - "headers": { - "Content-Type": "application/vnd.kafka.avro.v2+json" - }, - "method": "POST", - "url": "http:///topics/" -} -``` - -Дополнительные пояснения: -данный пример предполагает, что ответ мока выглядит следующим образом: -``` -{ - "key": <содержимое ключа>, - "value": <содержимое сообщения> -} -``` - -kafka-rest-proxy на данный момент (май 2022) [не поддерживает](https://github.com/confluentinc/kafka-rest/issues/620) топики, в которых сообщение сериализуется в Avro, а ключ - нет \ No newline at end of file +# Working with Queues + +Mockingbird interacts with message brokers through an HTTP API, theoretically supporting any possible MQ. In practice, some brokers require the installation of additional sidecar solutions, such as an HTTP-Bridge for WebsphereMQ or a rest-proxy for Kafka. Here, we will look at examples of configuring Mockingbird to work with various MQs. The examples below are templates that you can use to configure Mockingbird through the UI. + +## RabbitMQ + +RabbitMQ has a built-in rest API, eliminating the need for additional solutions. + +Official documentation: https://www.rabbitmq.com/management.html#http-api + +Example configuration for source (mockingbird reads from a queue): +``` +Request: + +{ + "body": "{\"count\":1,\"ackmode\":\"ack_requeue_false\",\"encoding\":\"auto\"}", + "headers": { + "Authorization": "Basic xxxxxxx" + }, + "jenumerate": "$", + "jextract": "payload", + "jstringdecode": true, + "method": "POST", + "url": "http://:15672/api/queues///get" +} +``` + +The purpose of most fields is clear from their names, but some require detailed explanation: +- `jenumerate` - the presence of this field means that the method response can contain multiple messages, and the value represents the path to the array field. In this case, the array is directly at the root of the response. +- `jextract` - the path to the message content in the response. In this case, it is the `payload` field. +- `jstringdecode` - indicates that the message is a json-string containing escaped JSON. Setting `jstringdecode` to true will parse this JSON. + +Using these three fields makes sense only for APIs that return JSON and may otherwise lead to errors. + +Example configuration for destination (mockingbird writes to a queue): +``` +Request: + +{ + "body": { + "payload": "${_message}", // here, the mock's response is inserted + "payload_encoding": "string", + "properties": {}, + "routing_key": "" + }, + "headers": { + "Authorization": "Basic xxxxxxx" + }, + "method": "POST", + "stringifybody": true, + "url": "http://:15672/api/exchanges///publish" +} +``` + +The purpose of most fields is clear from their names, but some require detailed explanation: +- `stringifybody` - means that the mock's response should be escaped and passed to the templating engine as a JSON string. + +## WebsphereMQ + +Working with WebsphereMQ requires the installation of [IBM MQ bridge for HTTP](https://www.ibm.com/docs/en/ibm-mq/8.0?topic=mq-bridge-http). + +Example configuration for source (mockingbird reads from a queue): +``` +Request: + +{ + "bypassCodes": [504], + "headers": { + "Authorization": "Basic xxxxxxx" + }, + "method": "DELETE", + "url": "http://:8080/WMQHTTP2/msg/queue//" +} +``` + +The purpose of most fields is clear from their names, but some require detailed explanation: +- `bypassCodes` - server response codes that should not be considered errors. In this case, 504 indicates no messages, which is normal. + +Example configuration for destination (mockingbird writes to a queue): +``` +Request: + +{ + "headers": { + "Authorization": "Basic xxxxxxx", + "Content-Type": "text/xml", + "x-msg-class": "TEXT" + }, + "method": "POST", + "url": "http://:8080/WMQHTTP2/msg/queue//" +} +``` + +## Kafka + +Working with Kafka requires the installation and configuration of the [Kafka REST Proxy](https://github.com/confluentinc/kafka-rest). + +Reading from Kafka topics via the Kafka REST Proxy requires additional creation (and deletion) of consumers and subscriptions, for which the Init and Shutdown blocks are provided. + +`` and `` are arbitrary unique names within the config. + +Example configuration for source (mockingbird reads JSON from a topic): +``` +Request: + +{ + "headers": { + "Accept": "application/vnd.kafka.json.v2+json" + }, + "jenumerate": "$", + "jextract": "value", + "method": "GET", + "url": "http:///consumers//instances//records" +} + +Init: + +[ + { + "body": "{\"name\": \"\", \"format\": \"json\", \"auto.offset.reset\": \"earliest\"}", + "headers": { + "Content-Type": "application/vnd.kafka.v2+json" + }, + "method": "POST", + "url": "http:///consumers/" + }, + { + "body": "{\"topics\":[\"\"]}", + "headers": { + "Content-Type": "application/vnd.kafka.v2+json" + }, + "method": "POST", + "url": "http:///consumers//instances//subscription" + } +] + +Shutdown: + +[ + { + "method": "DELETE", + "url": "http:///consumers//instances/" + } +] + +ReInit triggers: + +[ + { + "mode": "json", + "code": 404, + "body": {"error_code":40403,"message":"Consumer instance not found."} + } +] +``` + +Example configuration for source (mockingbird reads Avro from a topic): +``` +Request: + +{ + "headers": { + "Accept": "application/vnd.kafka.avro.v2+json" + }, + "jenumerate": "$", + "jextract": "value", + "method": "GET", + "url": "http:///consumers//instances//records" +} + +Init: + +[ + { + "body": "{\"name\": \"\", \"format\": \"avro\", \"auto.offset.reset\": \"earliest\"}", + "headers": { + "Content-Type": "application/vnd.kafka.v2+json" + }, + "method": "POST", + "url": "http:///consumers/" + }, + { + "body": "{\"topics\":[\"\"]}", + "headers": { + "Content-Type": "application/vnd.kafka.v2+json" + }, + "method": "POST", + "url": "http:///consumers//instances//subscription" + } +] + +Shutdown: + +[ + { + "method": "DELETE", + "url": "http:///consumers//instances/" + } +] + +ReInit triggers: + +[ + { + "mode": "json", + "code": 404, + "body": {"error_code":40403,"message":"Consumer instance not found."} + } +] +``` + +The purpose of most fields is clear from their names, but the purpose of some fields is worth detailing: +- `jenumerate` - the presence of this field means that the method response can contain multiple messages, with the value representing the path to the array field. In this case, the array is directly at the root of the response. +- `jextract` - the path to the content of the message in the response. In this case, it is the `value` field. + +As of May 2022, kafka-rest-proxy [does not support](https://github.com/confluentinc/kafka-rest/issues/620) topics in which the message is serialized in Avro but the key is not. + +Example configuration for destination (mockingbird writes JSON to a topic): +``` +Request: + +{ + "body": { + "records": [ + { + "value": "${_message}" // here, the mock's response is inserted + } + ] + }, + "headers": { + "Content-Type": "application/vnd.kafka.json.v2+json" + }, + "method": "POST", + "url": "http:///topics/" +} +``` + +Example configuration for destination (mockingbird writes Avro to a topic): +``` +Request: + +{ + "body": { + "key_schema_id": , + "records": [ + { + "key": "${_message.key}", + "value": "${_message.value}" + } + ], + "value_schema_id": + }, + "headers": { + "Content-Type": "application/vnd.kafka.avro.v2+json" + }, + "method": "POST", + "url": "http:///topics/" +} +``` + +Additional explanations: +This example assumes that the mock's response looks as follows: +``` +{ + "key": , + "value": +} +``` + +As of May 2022, kafka-rest-proxy [does not support](https://github.com/confluentinc/kafka-rest/issues/620) topics in which the message is serialized in Avro but the key is not. diff --git a/message-brokers_ru.md b/message-brokers_ru.md new file mode 100644 index 00000000..23305685 --- /dev/null +++ b/message-brokers_ru.md @@ -0,0 +1,273 @@ +# Работа с очередями + +Mockingbird взаимодействует с брокерами сообщений через HTTP API, благодаря чему теоретически поддерживаются любые возможные MQ. +На практике некоторе брокеры требуют установки дополнительных sidecar-коробок, как, например, HTTP-Bridge для WebsphereMQ или rest-proxy для Kafka. +Здесь мы рассмотрим примеры настройки mockingbird для работы с различными MQ. +Примеры ниже являются шаблонами, по которым можно самостоятельно настроить Mockingbird через UI + +## RabbitMQ + +RabbitMQ имеет встроенный rest API, благодаря чему установка доплнительных решений не требуется. + +Официальная документация: https://www.rabbitmq.com/management.html#http-api + +Пример конфигурации source (mockingbird читает из очереди): +``` +Запрос: + +{ + "body": "{\"count\":1,\"ackmode\":\"ack_requeue_false\",\"encoding\":\"auto\"}", + "headers": { + "Authorization": "Basic xxxxxxx" + }, + "jenumerate": "$", + "jextract": "payload", + "jstringdecode": true, + "method": "POST", + "url": "http://:15672/api/queues///get" +} +``` + +Назначение большинства полей понятно из названий, но назначение некоторых поля стоит раскрыть подробно: +- `jenumerate` - наличие этого поля означает, что в ответе метода может быть несколько сообщений, значение представляет собой путь до поля с массивом. В данном случае массив находится непосредственно в корне ответа +- `jextract` - путь до содержимого сообщения в ответе. В данном случае это поле `payload` +- `jstringdecode` - признак того, что сообщение является json-строкой, в которой содержится экранированый JSON. При установке jstringdecode в true этот JSON будет распаршен + +Использование этих трёх полей имеет смысл только для API, возвращающих JSON и может в ином случае приводить к ошибкам + +Пример конфигурации destination (mockingbird пишет в очередь): +``` +Запрос: + +{ + "body": { + "payload": "${_message}", // сюда подставляется ответ, который сформировал мок + "payload_encoding": "string", + "properties": {}, + "routing_key": "" + }, + "headers": { + "Authorization": "Basic xxxxxxx" + }, + "method": "POST", + "stringifybody": true, + "url": "http://:15672/api/exchanges///publish" +} +``` + +Назначение большинства полей понятно из названий, но назначение некоторых поля стоит раскрыть подробно: +- `stringifybody` - означает, что ответ, сформированый моком, нужно заэкранировать и передать в шаблонизатор как JSON строку + +## WebsphereMQ + +Для работы с WebsphereMQ требуется установка [IBM MQ bridge for HTTP](https://www.ibm.com/docs/en/ibm-mq/8.0?topic=mq-bridge-http) + +Пример конфигурации source (mockingbird читает из очереди): +``` +Запрос: + +{ + "bypassCodes": [504], + "headers": { + "Authorization": "Basic xxxxxxx" + }, + "method": "DELETE", + "url": "http://:8080/WMQHTTP2/msg/queue//" +} +``` + +Назначение большинства полей понятно из названий, но назначение некоторых поля стоит раскрыть подробно: +- `bypassCodes` - коды ответа сервера, которые не следует считать ошибочными. В данном случае 504 это признак отсутсвия сообщений, что является нормой + +Пример конфигурации destination (mockingbird пишет в очередь): +``` +Запрос: + +{ + "headers": { + "Authorization": "Basic xxxxxxx", + "Content-Type": "text/xml", + "x-msg-class": "TEXT" + }, + "method": "POST", + "url": "http://:8080/WMQHTTP2/msg/queue//" +} +``` + +## Kafka + +Для работы с Kafka требуется установить и настроить [Kafka REST Proxy](https://github.com/confluentinc/kafka-rest) + +Чтение из топиков кафки с помощью Kafka REST Proxy требует дополнительного созданию (и удаления) консьюмеров и подписок, для этого предусмотрены блоки Init и Shutdown. + +`` и `` - произвольные уникальные в рамках конфига имена + +Пример конфигурации source (mockingbird читает JSON из топика): +``` +Запрос: + +{ + "headers": { + "Accept": "application/vnd.kafka.json.v2+json" + }, + "jenumerate": "$", + "jextract": "value", + "method": "GET", + "url": "http:///consumers//instances//records" +} + +Init: + +[ + { + "body": "{\"name\": \"\", \"format\": \"json\", \"auto.offset.reset\": \"earliest\"}", + "headers": { + "Content-Type": "application/vnd.kafka.v2+json" + }, + "method": "POST", + "url": "http:///consumers/" + }, + { + "body": "{\"topics\":[\"\"]}", + "headers": { + "Content-Type": "application/vnd.kafka.v2+json" + }, + "method": "POST", + "url": "http:///consumers//instances//subscription" + } +] + +Shutdown: + +[ + { + "method": "DELETE", + "url": "http:///consumers//instances/" + } +] + +ReInit triggers: + +[ + { + "mode": "json", + "code": 404, + "body": {"error_code":40403,"message":"Consumer instance not found."} + } +] +``` + +Пример конфигурации source (mockingbird читает Avro из топика): +``` +Запрос: + +{ + "headers": { + "Accept": "application/vnd.kafka.avro.v2+json" + }, + "jenumerate": "$", + "jextract": "value", + "method": "GET", + "url": "http:///consumers//instances//records" +} + +Init: + +[ + { + "body": "{\"name\": \"\", \"format\": \"avro\", \"auto.offset.reset\": \"earliest\"}", + "headers": { + "Content-Type": "application/vnd.kafka.v2+json" + }, + "method": "POST", + "url": "http:///consumers/" + }, + { + "body": "{\"topics\":[\"\"]}", + "headers": { + "Content-Type": "application/vnd.kafka.v2+json" + }, + "method": "POST", + "url": "http:///consumers//instances//subscription" + } +] + +Shutdown: + +[ + { + "method": "DELETE", + "url": "http:///consumers//instances/" + } +] + +ReInit triggers: + +[ + { + "mode": "json", + "code": 404, + "body": {"error_code":40403,"message":"Consumer instance not found."} + } +] +``` + +Назначение большинства полей понятно из названий, но назначение некоторых поля стоит раскрыть подробно: +- `jenumerate` - наличие этого поля означает, что в ответе метода может быть несколько сообщений, значение представляет собой путь до поля с массивом. В данном случае массив находится непосредственно в корне ответа +- `jextract` - путь до содержимого сообщения в ответе. В данном случае это поле `value` + +kafka-rest-proxy на данный момент (май 2022) [не поддерживает](https://github.com/confluentinc/kafka-rest/issues/620) топики, в которых сообщение сериализуется в Avro, а ключ - нет + +Пример конфигурации destination (mockingbird пишет JSON в топик): +``` +Запрос: + +{ + "body": { + "records": [ + { + "value": "${_message}" //сюда подставляется ответ, который сформировал мок + } + ] + }, + "headers": { + "Content-Type": "application/vnd.kafka.json.v2+json" + }, + "method": "POST", + "url": "http:///topics/" +} +``` + +Пример конфигурации destination (mockingbird пишет Avro в топик): +``` +Запрос: + +{ + "body": { + "key_schema_id": , + "records": [ + { + "key": "${_message.key}", + "value": "${_message.value}" + } + ], + "value_schema_id": + }, + "headers": { + "Content-Type": "application/vnd.kafka.avro.v2+json" + }, + "method": "POST", + "url": "http:///topics/" +} +``` + +Дополнительные пояснения: +данный пример предполагает, что ответ мока выглядит следующим образом: +``` +{ + "key": <содержимое ключа>, + "value": <содержимое сообщения> +} +``` + +kafka-rest-proxy на данный момент (май 2022) [не поддерживает](https://github.com/confluentinc/kafka-rest/issues/620) топики, в которых сообщение сериализуется в Avro, а ключ - нет \ No newline at end of file diff --git a/readme.md b/readme.md index c83acea1..85c96691 100644 --- a/readme.md +++ b/readme.md @@ -1,767 +1,750 @@ - - -# mockingbird - -mockingbird - сервис эмуляции REST-сервисов и сервисов с интерфейсами-очередями - -[Руководство по инсталляции](deployment.md) - -[Руководство по настройке](configuration.md) - -[Работа с очередями](message-brokers.md) - -## Общие принципы работы - -mockingbird поддерживает следующие сценарии: - -* прогон конкретного кейса с конкретным набором событий и HTTP/GRPC ответов -* постоянная имитация happy-path для обеспечения автономности контура(ов) - -Типы конфигураций: -* countdown - автономные конфигурации для тестирования конкретного сценария. Имеют наивысший приоритет при разрешении неоднозначностей. Каждый мок срабатывает n раз (количество задаётся при создании). Автоматически удаляются в полночь. -* ephemeral - конфигурации, автоматически удаляемые в полночь. Если одновременно вызывают метод/приходит сообщение, для которого подходит countdown и ephemeral моки - сработает countdown. -* persistent - конфигурация, предназначеная для постоянной работы. Имеет наименьший приоритет - ->Пример небольшого кейса (короткая заявка) - в конце спецификации - -## Сервисы - -Для упорядочения моков в UI и минимизации количества конфликтных ситуаций в mockingbird реализованы т.н. сервисы. Каждый мок (как HTTP так и сценарий) всегда принадлежит к какому-то из сервисом. -Сервисы создаются заранее и хранятся в базе. Сервис имеет suffix (являющийся по совместительству уникальным id сервиса) и человекочитаемый name. - -## Шаблонизатор JSON - -Для достижения гибкости при сохранении относительной простоты конфигов в сервисе реализован JSON шаблонизатор. Для начала простой пример: - -Шаблон: -```javascript -{ - "description": "${description}", - "topic": "${extras.topic}", - "comment": "${extras.comments.[0].text}", - "meta": { - "field1": "${extras.fields.[0]}" - } -} -``` - -Значения для подстановки: -```javascript -{ - "description": "Some description", - "extras": { - "fields": ["f1", "f2"], - "topic": "Main topic", - "comments": [ - {"text": "First nah!"}, {"text": "Okay"} - ] - } -} -``` - -Результат: -```javascript -{ - "description": "Some description", - "topic": "Main topic", - "comment": "First nah!", - "meta": { - "field1": "f1" - } -} -``` - -В данный момент поддерживается следующий синтаксис: -* `${a.[0].b}` - подстановка значения (JSON) -* `${/a/b/c}` - подстановка значения (XPath) - -ВНИМАНИЕ! НЕ ИСПОЛЬЗУЙТЕ НЕЙМСПЕЙСЫ В XPATH ВЫРАЖЕНИЯХ - -## Шаблонизатор XML - -Шаблон: -``` - - ${/r/t1} - ${/r/t2} - -``` - -Значения для подстановки: -``` - - test - 42 - -``` - -Результат: -``` - - test - 42 - -``` - -## Состояния (state) - -Для поддержки сложных сценариев сервис поддерживает сохранение произвольных состояний. Состояние - документ с произвольной схемой, технически состояние - документ в mongodb. Запись новых состояний может происходить: -* при записи в state (секция persist) с пустым (или отсутствующим) предикатом (секция state) - -## Манипуляции со state - -State аккумулятивно дописывается. Разрешено переписывание полей. - -Поля, по которым будем производиться поиск (используемые в предикатах) должны начинаться с "_". -> для таких полей будет автоматически создаваться sparse индекс - -Префиксы: -* `seed` - значения из блока seed (рандомизируемые на старте заявки) -* `state` - текущий state -* `req` - тело запроса (режимы json, jlens, xpath) -* `message` - тело собщения (в сценариях) -* `query` - query параметры (в заглушках) -* `pathParts` - значения, извлекаемые из URL (в заглушках) см. `Экстрация данных из URL` -* `extracted` - извлечённые значения -* `headers` - HTTP заголовки - -```javascript -{ - "a": "Просто строка", //В поле "a" записывается константа (может быть любое JSON значение) - "b": "${req.fieldB}", //В поле "b" записывается значение из поля fieldB запроса - "c": "${state.c}", //В поле "c" записывается значение из поля "c" текущего состояния - "d": "${req.fieldA}: ${state.a}" //В поле d запишется строка, содержащая req.fieldA и state.a -} -``` - -## Поиск state - -Предикаты для поиска state перечисляются в блоке `state`. Пустой объект (`{}`) в поле state недопустим. -Для поиска state можно использовать данные запроса (без префикса), query параметры (префикс `__query`), значения, извлекаемые из URL (префикс `__segments`) и HTTP заголовки (префикс `__headers`) - -Пример: - -```javascript -{ - "_a": "${fieldB}", //поле из тела запроса - "_b": "${__query.arg1}", //query параметр - "_c": "${__segments.id}", //сегмент URL, см. `Экстрация данных из URL` - "_d": "${__headers.Accept}" //HTTP заголовок -} -``` - - -## Seeding - -Иногда возникает необходимость сгенерировать случайное значение и сохранить и/или вернуть его в результате работы мока. -Для поддержки таких сценариев сделано поле seed, позволяющее задать переменные, которые будут сгенерированы -при инициализации мока. Это позволяет избежать необходимости пересоздавать моки с захардкожеными id - -В seed'ах поддерживается синтаксис псевдофункций: -* `%{randomString(n)}` - подстановка случайной строки длиной n -* `%{randomString("ABCDEF1234567890", m, n)}` - подстановка случайной строки, состоящей из символов `ABCDEF1234567890` длиной в интервале [m, n) -* `%{randomNumericString(n)}` - подстановка случайной строки, состоящей только из цифр, длиной n -* `%{randomInt(n)}` - подстановка случайного Int в диапазоне [0, n) -* `%{randomInt(m,n)}` - подстановка случайного Int в диапазоне [m, n) -* `%{randomLong(n)}` - подстановка случайного Long в диапазоне [0, n) -* `%{randomLong(m,n)}` - подстановка случайного Long в диапазоне [m, n) -* `%{UUID}` - подстановка случайного UUID -* `%{now(yyyy-MM-dd'T'HH:mm:ss)}` - текущее время в заданном [формате](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html) -* `%{today(yyyy-MM-dd)}` - текущая дата в заданном [формате](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html) - -Можно определять строки со сложным форматом: `%{randomInt(10)}: %{randomLong(10)} | %{randomString(12)}`, поддерживаются все псевдофункции из списка выше - -## Резолвинг заглушек/сценариев - -> Найденые заглушки - кандидаты, оставшиеся после валидации URL, заголовков и тела запроса -> Найденые сценарии - кандидаты, оставшиеся после валидации тела сообщения - -| Найденые заглушки (сценарии) | Требуется состояние | Найдено состояний | Результат | -| --------------------------- | ------------------- | ----------------- | --------- | -| №1 | нет | - | Сработает №1 | -| №1 | да | 0 | Ошибка | -| №1 | да | 1 | Сработает №1 | -| №1
№2 | нет
нет | - | Ошибка | -| №1
№2 | нет
да | -
0 | Сработает №1 | -| №1
№2 | нет
да | -
1 | Сработает №2 | -| №1
№2 | нет
да | -
2 (и более) | Ошибка | -| №1
№2 | да
да | 0
0 | Ошибка | -| №1
№2 | да
да | 0
1 | Сработает №2 | -| №1
№2 | да
да | 0
2 (и более) | Ошибка | -| №1
№2 | да
да | 1
1 (и более) | Ошибка | -| №1
№2
№3 | да
да
да | 0
1
0 | Сработает №2 | -| №1
№2
№3 | да
да
да | 0
1
1 | Ошибка | -| №1
№2
№3 | да
да
да | 0
2
0 | Ошибка | - -## Эмуляция REST сервисов - -Алгоритм работы: - -1. Поиск мока по URL/HTTP-verb/заголовков -2. Валидация body -3. Поиск state по предикату -4. Подстановка значений в шаблон ответа -5. Модификация state -6. Отдача response - -### Конфигурация HTTP заглушек - -HTTP заголовки валидируются на полное соответствие значений, лишние заголовки не являются ошибкой - -Валидация тела запросы в HTTP заглушках может работать в следующих режимах: -* no_body - запрос должен быть без тела -* any_body - тело запроса должно быть не пустым, при этом никак не парсится и не проверяется -* raw - тело запроса никак не парсится и проверяется на полное соответствие с содержимым request.body -* json - тело запроса должно быть валидным JSON'ом и проверяется на соответствие с содержимым request.body -* xml - тело запроса должно быть валидным XML и проверяется на соответствие с содержимым request.body -* jlens - тело запроса должно быть валидным JSON'ом и валидируется по условиям, описаным в request.body -* xpath - тело запроса должно быть валидным XML и валидируется по условиям, описаным в request.body -* web_form - тело запроса должно быть в формате x-www-form-urlencoded и валидируется по условиям, описаным в request.body -* multipart - тело запроса должно быть в формате multipart/form-data. Правила валидации частей конфигурируются индивидуально (см. раздел ниже) - -ВНИМАНИЕ! multipart запросы необходимо выполнять на отдельный метод - -/api/mockingbird/execmp - -Для ответов поддерживаются следующие режимы: -* raw -* json -* xml -* binary -* proxy -* json-proxy -* xml-proxy -* no_body - -Режим `no_body` в ответе нужен если заглушка возвращает код 204 или 304. Данные коды выделяются от остальных тем, что у них не может быть никакого тела в ответе, данное поведение описано в [RFC 7231](https://datatracker.ietf.org/doc/html/rfc7231#section-6.3.5) и [RFC 7232](https://datatracker.ietf.org/doc/html/rfc7232#section-4.1). Режим `no_body` можно использовать и с остальными HTTP кодами, но для указных он является обязательным. - -Режимы request и response полностью независимы друг от друга (можно сконфигурировать ответ xml'ем на json запрос при желании, кроме режимов json-proxy и xml-proxy). - -В поле delay можно передать корректный FiniteDuration не дольше 30 секунд - -### Экстрация данных из URL -Бывает, что URL содержит какой-нибудь идентификатор не как параметр, а как непосредственно часть пути. В таких случаях становится невозможным -описать persistent заглушку из-за невозможности полного совпадения пути. На помощь приходит поле pathPattern, в которое можно передать регулярку, -на соответствие которой будет проверяться путь. Отмечу, что хоть сопоставление и производится в монге эффективным способом, злоупотребять этой -возможностью не стоит и при возможности сопоставления по полному совпадению не следует использовать pathPattern - -Пример: -```javascript -{ - "name": "Sample stub", - "scope": "persistent", - "pathPattern": "/pattern/(?\d+)", - "method": "GET", - "request": { - "headers": {}, - "mode": "no_body", - "body": {} - }, - "response": { - "code": 200, - "mode": "json", - "headers": {"Content-Type": "application/json"}, - "body": {"id": "${pathParts.id}"} - } -} -``` -То, что нужно извлечь из пути, нужно делать _именованой_ группой, групп может быть сколько угодно, впоследствии на них можно ссылаться через `pathParts.<имя_группы>` - -### Экстракторы -В некоторых случаях нужно подставить в ответ данные, которые невозможно извлечь простыми средствами. Для этих целей были добавлены экстракторы - -#### Экстрактор xcdata - -Достаёт значения из XML, лежащего в CDATA - -конфигурация: -```javascript -{ - "type": "xcdata", - "prefix": "/root/inner/tag", //Путь до тэга с CDATA - "path": "/path/to" //Путь до нужного тэга -} -``` - -#### Экстрактор jcdata - -Достаёт значения из JSON, лежащего в CDATA - -конфигурация: -```javascript -{ - "type": "jcdata", - "prefix": "/root/inner/tag", //Путь до тэга с CDATA - "path": "path.to" //Путь до нужного значения -} -``` - -#### CDATA inlining -Иногда приходится иметь дело с запросами, в которых внутри CDATA лежит XML. В таких случаях можно заинлайнить содержимое DATA с помощью параметра `inlineCData` (поддерживается в `xpath` и `xml`) - -### Примеры - -#### Полное совпадение, режим json - -```javascript -{ - "name": "Sample stub", - "method": "POST", - "path": "/pos-loans/api/cl/get_partner_lead_info", - "state": { - // Предикаты - }, - "request": { - "headers": {"Content-Type": "application/json"}, - "mode": "json", - "body": { - "trace_id": "42", - "account_number": "228" - } - }, - "persist": { - // Модификации состояния - }, - "response": { - "code": 200, - "mode": "json", - "body": { - "code": 0, - "credit_amount": 802400, - "credit_term": 120, - "interest_rate": 13.9, - "partnum": "CL3.15" - }, - "headers": {"Content-Type": "application/json"}, - "delay": "1 second" - } -} -``` - -#### Полное совпадение, режим raw - -```javascript -{ - "name": "Sample stub", - "method": "POST", - "path": "/pos-loans/api/evil/soap/service" - "state": { - // Предикаты - }, - "request": { - "headers": {"Content-Type": "application/xml"}, - "mode": "raw" - "body": "" - }, - "persist": { - // Модификации состояния - }, - "response": { - "code": 200, - "mode": "raw" - "body": "", - "headers": {"Content-Type": "application/xml"}, - "delay": "1 second" - } -} -``` - -#### Валидация по условиям, режим jlens - -```javascript -{ - "name": "Sample stub", - "method": "POST", - "path": "/pos-loans/api/cl/get_partner_lead_info", - "state": { - // Предикаты - }, - "request": { - "headers": {"Content-Type": "application/json"}, - "mode": "jlens", - "body": { - "meta.id": {"==": 42} - } - }, - "persist": { - // Модификации состояния - }, - "response": { - "code": 200, - "mode": "json", - "body": { - "code": 0, - "credit_amount": 802400, - "credit_term": 120, - "interest_rate": 13.9, - "partnum": "CL3.15" - }, - "headers": {"Content-Type": "application/json"}, - "delay": "1 second" - } -} -``` - -#### Валидация по условиям, режим xpath - -ВНИМАНИЕ! НЕ ИСПОЛЬЗУЙТЕ НЕЙМСПЕЙСЫ В XPATH ВЫРАЖЕНИЯХ - -```javascript -{ - "name": "Sample stub", - "method": "POST", - "path": "/pos-loans/api/cl/get_partner_lead_info", - "state": { - // Предикаты - }, - "request": { - "headers": {"Content-Type": "application/xml"}, - "mode": "xpath", - "body": { - "/payload/response/id": {"==": 42} - }, - "extractors": {"name": {...}, ...} //опционально - }, - "persist": { - // Модификации состояния - }, - "response": { - "code": 200, - "mode": "raw" - "body": "", - "headers": {"Content-Type": "application/xml"}, - "delay": "1 second" - } -} -``` - -#### Валидация по условиям, режим multipart - -ВНИМАНИЕ! multipart запросы необходимо выполнять на отдельный метод - -/api/mockingbird/execmp - -Режимы валидании part: -* `any` - значение никак не валидируется -* `raw` - полное соответствие -* `json` - полное соответствие, значение парсится как Json -* `xml` - полное соответствие, значение парсится как XML -* `urlencoded` - аналогично режиму `web_form` для валидации всего тела -* `jlens` - проверка Json по условиям -* `xpath` - проверка XML по условиям - -```javascript -{ - "name": "Sample stub", - "method": "POST", - "path": "/test/multipart", - "state": { - // Предикаты - }, - "request": { - "headers": {}, - "mode": "multipart", - "body": { - "part1": { - "mode": "json", //режим валидации - "headers": {}, //заголовки part - "value": {} //спецификация значения для валидатора - }, - "part2": { - ... - } - }, - "bypassUnknownParts": true //флаг, позволяющий игнорировать все partы, отсутвующие в спецификации валидатора - //по умолчанию флаг включен, можно передавать только для отключения (false) - }, - "persist": { - // Модификации состояния - }, - "response": { - "code": 200, - "mode": "json", - "body": { - "code": 0, - "credit_amount": 802400, - "credit_term": 120, - "interest_rate": 13.9, - "partnum": "CL3.15" - }, - "headers": {"Content-Type": "application/json"}, - "delay": "1 second" - } -} -``` - -#### Простое проксирование запроса - -```javascript -{ - "name": "Simple proxy", - "method": "POST", - "path": "/pos-loans/api/cl/get_partner_lead_info", - "state": { - // Предикаты - }, - "request": { - // Спецификация запроса - }, - "response": { - "mode": "proxy", - "uri": "http://some.host/api/cl/get_partner_lead_info" - } -} -``` - -#### Проксирование с модификацией JSON ответа - -```javascript -{ - "name": "Simple proxy", - "method": "POST", - "path": "/pos-loans/api/cl/get_partner_lead_info", - "state": { - // Предикаты - }, - "request": { - // Спецификация запроса, mode json или jlens - }, - "response": { - "mode": "json-proxy", - "uri": "http://some.host/api/cl/get_partner_lead_info", - "patch": { - "field.innerField": "${req.someRequestField}" - } - } -} -``` - -#### Проксирование с модификацией XML ответа - -```javascript -{ - "name": "Simple proxy", - "method": "POST", - "path": "/pos-loans/api/cl/get_partner_lead_info", - "state": { - // Предикаты - }, - "request": { - // Спецификация запроса, mode xml или xpath - }, - "response": { - "mode": "xml-proxy", - "uri": "http://some.host/api/cl/get_partner_lead_info", - "patch": { - "/env/someTag": "${/some/requestTag}" - } - } -} -``` - -### DSL предикатов валидации JSON и XML - -в режимах jlens и xpath поддерживается следующее: - -```javascript -{ - "a": {"==": "some value"}, //полное соответствие - "b": {"!=": "some value"}, //не равно - "c": {">": 42} | {">=": 42} | {"<": 42} | {"<=": 42}, //сравнения, только для чисел, комбинируются - "d": {"~=": "\d+"}, //сопоставление с regexp, - "e": {"size": 10}, //длина, для массивов и строк - "f": {"exists": true} //проверка существования -} -``` -Ключами в таких объектах является либо путь в json ("a.b.[0].c") либо xpath ("/a/b/c") -Замечание: в данный момент функции сравнения могут некорректно работать с xpath, указывающими на XML атрибуты. -Обойти проблему можно проверкой на существование/несуществование: -```/tag/otherTag/[@attr='2']": {"exists": true}``` - -в режиме jlens дополнительно поддерживаются следующие операции: -```javascript -{ - "g": {"[_]": ["1", 2, true]}, //поле должно содержать одно из перечисленых значений - "h": {"![_]": ["1", 2, true]}, //поле НЕ должно содержать ни одно из перечисленых знаечний - "i": {"&[_]": ["1", 2, true]} // поле должно быть массивом и содержать все перечисленные значения (при этом порядок не важен) -} -``` - -в режиме xpath дополнительно поддерживаются следующие операции: -```javascript - "/some/tag": {"cdata": {"==": "test"}}, //валидация на полное совпадение CDATA, аргумент должен быть СТРОКОЙ - "/some/tag": {"cdata": {"~=": "\d+"}}, //валидация DATA регуляркой, аргумент должен быть СТРОКОЙ - "/some/tag": {"jcdata": {"a": {"==": 42}}}, //валидируем содержимое CDATA как JSON, поддерживаются все доступные предикаты - "/other/tag": {"xcdata": {"/b": {"==": 42}}} //валидируем содержимое CDATA как XML, поддерживаются все доступные предикаты -``` - -в режиме web_form поддерживаются ТОЛЬКО следующие операции: -`==`, `!=`, `~=`, `size`, `[_]`, `![_]`, `&[_]` - -## Эмуляция GRPC сервисов - -Как это устроено под капотом: -При создании мока вложеные в запрос proto файлы парсятся и преобразуются в json-представление protobuf схемы. В базе хранится именно json-представление, -а не оригинальный proto файл. Первое срабатывание мока может занимать немного больше времени, чем последующие, т.к. при первом срабатывании из -json-представляения генерируется декодер protobuf сообщений. После декодирования данные преобразуются в json, который проверяется json-предикатами, -задаными в поле requestPredicates. Если условия выполняются - то json из response.data (в режиме fill) сериализуется в protobuf и отдаётся в качестве ответа. - -Алгоритм работы: - -1. Поиск мока(-ов) по имени метода -2. Валидация body -3. Поиск state по предикату -4. Подстановка значений в шаблон ответа -5. Модификация state -6. Отдача response - -### Конфигурация GRPC заглушек - -```javascript -{ - "name": "Sample stub", - "scope": "..", - "service": "test", - "methodName": "/pos-loans/api/cl/get_partner_lead_info", - "seed": { - "integrationId": "%{randomString(20)}" //пример - }, - "state": { - // Предикаты - }, - "requestCodecs": "..", //proto-файл схемы запроса в base64 - "requestClass": "..", //имя типа запроса из proto файла - "responseCodecs": "..", //proto-файл схемы ответа в base64 - "responseClass": "..", //имя типа ответа из proto файла - "requestPredicates": { - "meta.id": {"==": 42} - }, - "persist": { - // Модификации состояния - }, - "response": { - "mode": "fill", - "data": { - "code": 0, - "credit_amount": 802400, - "credit_term": 120, - "interest_rate": 13.9, - "partnum": "CL3.15" - }, - "delay": "1 second" - } -} -``` - -## Эмуляция шинных сервисов - -Алгоритм работы: - -1. Поиск мока по source -2. Поиск state по предикату -3. Валидация входящего сообщения -4. Подстановка значений в шаблон ответа -5. Модификация state -6. Отправка response -7. Выполнение колбеков (см. раздел "конфигурация колбеков") - -### Конфигурация - -[Работа с очередями](message-brokers.md) - -### Конфигурация мока - -Для input поддерживаются режимы: -* raw -* json -* xml -* jlens -* xpath - -Для output поддерживаются режимы: -* raw -* json -* xml - -```javascript -{ - "name": "Пришла весна", - "service": "test", - "source": "rmq_example_autobroker_decision", //source из конфига - "input": { - "mode": .. //как для HTTP заглушек - "payload": .. //как body для HTTP заглушек - }, - "state": { - // Предикаты - }, - "persist": { //Опционально - // Модификации состояния - }, - "destination": "rmq_example_q1", // destination из конфига, опционально - "output": { //Опционально - "mode": "raw", - "payload": "..", - "delay": "1 second" - }, - "callback": { .. } -} -``` - -### Конфигурация колбеков - -Для имитации поведения реального мира иногда нужно выполнить вызов HTTP сервиса (пример - забрать GBO когда приходит сообщение) или отправлять дополнительные сообщения в очереди. Для этого можно использовать колбеки. Результат вызова сервиса можно при необходимости распарсить и сохранить в состояние. Коллбеки используют состяние вызвавшего. - -#### Вызов HTTP метода - -Для request поддерживаются режимы -* no_body -* raw -* json -* xml - -Для response поддерживаются режимы -* json -* xml - ->Обратите внимание! ->В всю цепочку колбеков передаётся первоначальный стейт, он не изменяется блоком perist (!!!) - -```javascript -{ - "type": "http", - "request": { - "url": "http://some.host/api/v2/peka", - "method": "POST", - "headers": {"Content-Type": "application/json"}, - "mode": "json", - "body": { - "trace_id": "42", - "account_number": "228" - } - }, - "responseMode": "json" | "xml", //Обязательно только при наличии блока persist - "persist": { //Опционально - // Модификации состояния - }, - "delay": "1 second", //Задержка ПЕРЕД выполнением колбека, опционально - "callback": { .. } //Опционально -} -``` - -#### Отправка сообщения - -Для output поддерживаются режимы: -* raw -* json -* xml - -```javascript -{ - "type": "message", - "destination": "rmq_example_q1", // destination из конфига - "output": { - "mode": "raw", - "payload": ".." - }, - "callback": { .. } //Опционально -} -``` + + +# mockingbird + +mockingbird - a service for emulating REST services and queue-interface services + +[Installation Guide](deployment.md) + +[Configuration Guide](configuration.md) + +[Working with Message Brokers](message-brokers.md) + +[Readme in Russian](readme_ru.md) + +## Important note + +Leviysoft mockingbird is an independently maintained fork of Tinkoff/mockingbird and is not related to Tinkoff in any kind. + +## General Principles of Operation + +mockingbird supports the following scenarios: + +* Execution of a specific case with a specific set of events and HTTP/GRPC responses +* Constant emulation of a happy-path to ensure autonomy of the stage environment(s) + +Types of configurations: +* countdown - standalone configurations for testing a specific scenario. They have the highest priority when resolving ambiguities. Each mock is triggered n times (the number is set during creation). Automatically deleted at midnight. +* ephemeral - configurations that are automatically deleted at midnight. If a method/message is called/arrives simultaneously, for which both countdown and ephemeral mocks are suitable - countdown will be triggered. +* persistent - configuration intended for continuous operation. Has the lowest priority + +## Services + +To organize mocks in the UI and minimize the number of conflict situations, so-called services are implemented in mockingbird. Each mock (both HTTP and scenario) always belongs to one of the services. +Services are created in advance and stored in the database. A service has a suffix (which also serves as the unique service id) and a human-readable name. + +## JSON Templating + +To achieve flexibility while maintaining the relative simplicity of configurations, a JSON templating feature is implemented in the service. To start, here's a simple example: + +Template: +```javascript +{ + "description": "${description}", + "topic": "${extras.topic}", + "comment": "${extras.comments.[0].text}", + "meta": { + "field1": "${extras.fields.[0]}" + } +} +``` + +Values for substitution: +```javascript +{ + "description": "Some description", + "extras": { + "fields": ["f1", "f2"], + "topic": "Main topic", + "comments": [ + {"text": "First nah!"}, {"text": "Okay"} + ] + } +} +``` + +Result: +```javascript +{ + "description": "Some description", + "topic": "Main topic", + "comment": "First nah!", + "meta": { + "field1": "f1" + } +} +``` + +Currently, the following syntax is supported: +* `${a.[0].b}` - value substitution (JSON) +* `${/a/b/c}` - value substitution (XPath) + +WARNING! DO NOT USE NAMESPACES IN XPATH EXPRESSIONS + +## XML Templating + +Template: +``` + + ${/r/t1} + ${/r/t2} + +``` + +Values for substitution: +``` + + test + 42 + +``` + +Result: +``` + + test + 42 + +``` + +## States (state) + +To support complex scenarios, the service supports saving arbitrary states. A state is a document with an arbitrary schema, technically a state is a document in MongoDB. Writing new states can occur: +* when writing to state (the persist section) with an empty (or missing) predicate (the state section) + +## State Manipulations + +State is cumulatively appended. Overwriting fields is allowed. + +Fields used for searching (used in predicates) must start with "_". +> a sparse index will be automatically created for such fields + +Prefixes: +* `seed` - values from the seed block (randomized at the start of the application) +* `state` - the current state +* `req` - the request body (modes json, jlens, xpath) +* `message` - the message body (in scenarios) +* `query` - query parameters (in stubs) +* `pathParts` - values extracted from the URL (in stubs) see `Data Extraction from URL` +* `extracted` - extracted values +* `headers` - HTTP headers + +```javascript +{ + "a": "Just a string", //The field "a" is assigned a constant (can be any JSON value) + "b": "${req.fieldB}", //The field "b" is assigned the value from the fieldB of the request + "c": "${state.c}", //The field "c" is assigned the value from the "c" field of the current state + "d": "${req.fieldA}: ${state.a}" //The field d will contain a string consisting of req.fieldA and state.a +} +``` + +## State Search + +Predicates for state search are listed in the `state` block. An empty object (`{}`) in the state field is not allowed. +For state search, request data (without prefix), query parameters (prefix `__query`), values extracted from the URL (prefix `__segments`), and HTTP headers (prefix `__headers`) can be used + +Example: + +```javascript +{ + "_a": "${fieldB}", //field from the request body + "_b": "${__query.arg1}", //query parameter + "_c": "${__segments.id}", //URL segment, see `Data Extraction from URL` + "_d": "${__headers.Accept}" //HTTP header +} +``` + +## Seeding + +Sometimes there is a need to generate a random value and save and/or return it as a result of the mock's operation. +To support such scenarios, a seed field is provided, allowing to set variables that will be generated +at the mock's initialization. This avoids the need to recreate mocks with hardcoded ids + +JavaScript evaluation is supported in seeds. The following functions are defined for backwards compatibility with "pseudofunctions": +* `%{randomString(n)}` - substitution of a random string of length n +* `%{randomString("ABCDEF1234567890", m, n)}` - substitution of a random string consisting of `ABCDEF1234567890` characters in the range [m, n) +* `%{randomNumericString(n)}` - substitution of a random string consisting only of digits, of length n +* `%{randomInt(n)}` - substitution of a random Int in the range [0, n) +* `%{randomInt(m,n)}` - substitution of a random Int in the range [m, n) +* `%{randomLong(n)}` - substitution of a random Long in the range [0, n) +* `%{randomLong(m,n)}` - substitution of a random Long in the range [m, n) +* `%{UUID}` - substitution of a random UUID +* `%{now(yyyy-MM-dd'T'HH:mm:ss)}` - the current time in the specified [format](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html) +* `%{today(yyyy-MM-dd)}` - the current date in the specified [format](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html) + +Complex formatted strings can be defined: `%{randomInt(10)}: %{randomLong(10)} | %{randomString(12)}`, all pseudo-functions from the list above are supported + +## Resolving Stubs/Scenarios + +> Found stubs - candidates remaining after validation of URL, headers, and request body +> Found scenarios - candidates remaining after validation of the message body + +| Found Stubs (Scenarios) | State Required | States Found | Result | +| ---------------------------- | ------------------- | ------------------ | -------------- | +| №1 | No | - | №1 is triggered | +| №1 | Yes | 0 | Error | +| №1 | Yes | 1 | №1 is triggered | +| №1
№2 | No
No | - | Error | +| №1
№2 | No
Yes | -
0 | №1 is triggered | +| №1
№2 | No
Yes | -
1 | №2 is triggered | +| №1
№2 | No
Yes | -
2 (and more) | Error | +| №1
№2 | Yes
Yes | 0
0 | Error | +| №1
№2 | Yes
Yes | 0
1 | №2 is triggered | +| №1
№2 | Yes
Yes | 0
2 (and more) | Error | +| №1
№2 | Yes
Yes | 1
1 (and more) | Error | +| №1
№2
№3 | Yes
Yes
Yes | 0
1
0 | №2 is triggered | +| №1
№2
№3 | Yes
Yes
Yes | 0
1
1 | Error | +| №1
№2
№3 | Yes
Yes
Yes | 0
2
0 | Error | + +## Emulating REST Services + +Workflow: +1. Search for a mock by URL/HTTP-verb/headers +2. Body validation +3. Search for state by predicate +4. Substitution of values in the response template +5. State modification +6. Sending the response + +### Configuration of HTTP Stubs + +HTTP headers are validated for exact match values, extra headers are not considered an error + +Request body validation in HTTP stubs can work in the following modes: +* no_body - the request must be without a body +* any_body - the request body must be non-empty, while it is not parsed or checked +* raw - the request body is not parsed and is checked for full correspondence with the content of request.body +* json - the request body must be a valid JSON and is checked for correspondence with the content of request.body +* xml - the request body must be a valid XML and is checked for correspondence with the content of request.body +* jlens - the request body must be a valid JSON and is validated according to conditions described in request.body +* xpath - the request body must be a valid XML and is validated according to conditions described in request.body +* web_form - the request body must be in x-www-form-urlencoded format and is validated according to conditions described in request.body +* multipart - the request body must be in multipart/form-data format. Validation rules for parts are configured individually (see the section below) + +ATTENTION! multipart requests must be made to a separate method - +/api/mockingbird/execmp + +For responses, the following modes are supported: +* raw +* json +* xml +* binary +* proxy +* json-proxy +* xml-proxy +* no_body + +The `no_body` mode in the response is needed if the stub returns a 204 or 304 code. These codes are distinguished from others by the fact that they cannot have any body in the response, this behavior is described in [RFC 7231](https://datatracker.ietf.org/doc/html/rfc7231#section-6.3.5) and [RFC 7232](https://datatracker.ietf.org/doc/html/rfc7232#section-4.1). The `no_body` mode can also be used with other HTTP codes, but it is mandatory for the specified ones. + +Request and response modes are completely independent of each other (you can configure a response in XML to a JSON request if desired, except for json-proxy and xml-proxy modes). + +In the delay field, you can pass a correct FiniteDuration no longer than 30 seconds + +### Data Extraction from URL +Sometimes, a URL contains an identifier not as a parameter but as a direct part of the path. In such cases, it becomes impossible to describe a persistent stub due to the inability to have a full path match. This is where the `pathPattern` field comes in handy, into which a regex can be passed, and the path will be checked for a match against this regex. It should be noted that although the matching is done in MongoDB in an efficient manner, this feature should not be abused, and the `pathPattern` should not be used if matching by full equality is possible. + +Example: +```javascript +{ + "name": "Sample stub", + "scope": "persistent", + "pathPattern": "/pattern/(?\d+)", + "method": "GET", + "request": { + "headers": {}, + "mode": "no_body", + "body": {} + }, + "response": { + "code": 200, + "mode": "json", + "headers": {"Content-Type": "application/json"}, + "body": {"id": "${pathParts.id}"} + } +} +``` +Anything that needs to be extracted from the path should be done with a _named_ group, and there can be as many groups as needed. Later on, these can be referred to through `pathParts.`. + +### Extractors +In some cases, it's necessary to insert into the response data that cannot be extracted by simple means. For these purposes, extractors have been added. + +#### jcdata Extractor + +Extracts values from JSON located within CDATA. + +Configuration: +```javascript +{ + "type": "jcdata", + "prefix": "/root/inner/tag", // Path to the tag with CDATA + "path": "path.to" // Path to the desired value +} +``` + +#### CDATA Inlining +Sometimes you have to deal with requests in which XML is nested inside CDATA. In such cases, you can inline the CDATA content using the `inlineCData` parameter (supported in `xpath` and `xml`). + +### Examples + +#### Exact Match, json Mode + +```javascript +{ + "name": "Sample stub", + "method": "POST", + "path": "/pos-loans/api/cl/get_partner_lead_info", + "state": { + // Predicates + }, + "request": { + "headers": {"Content-Type": "application/json"}, + "mode": "json", + "body": { + "trace_id": "42", + "account_number": "228" + } + }, + "persist": { + // State modifications + }, + "response": { + "code": 200, + "mode": "json", + "body": { + "code": 0, + "credit_amount": 802400, + "credit_term": 120, + "interest_rate": 13.9, + "partnum": "CL3.15" + }, + "headers": {"Content-Type": "application/json"}, + "delay": "1 second" + } +} +``` + +#### Exact Match, raw Mode + +```javascript +{ + "name": "Sample stub", + "method": "POST", + "path": "/pos-loans/api/evil/soap/service", + "state": { + // Predicates + }, + "request": { + "headers": {"Content-Type": "application/xml"}, + "mode": "raw", + "body": "" + }, + "persist": { + // State modifications + }, + "response": { + "code": 200, + "mode": "raw", + "body": "", + "headers": {"Content-Type": "application/xml"}, + "delay": "1 second" + } +} +``` + +#### Condition Validation, jlens Mode + +```javascript +{ + "name": "Sample stub", + "method": "POST", + "path": "/pos-loans/api/cl/get_partner_lead_info", + "state": { + // Predicates + }, + "request": { + "headers": {"Content-Type": "application/json"}, + "mode": "jlens", + "body": { + "meta.id": {"==": 42} + } + }, + "persist": { + // State modifications + }, + "response": { + "code": 200, + "mode": "json", + "body": { + "code": 0, + "credit_amount": 802400, + "credit_term": 120, + "interest_rate": 13.9, + "partnum": "CL3.15" + }, + "headers": {"Content-Type": "application/json"}, + "delay": "1 second" + } +} +``` + +#### Condition Validation, xpath Mode + +WARNING! DO NOT USE NAMESPACES IN XPATH EXPRESSIONS + +```javascript +{ + "name": "Sample stub", + "method": "POST", + "path": "/pos-loans/api/cl/get_partner_lead_info", + "state": { + // Predicates + }, + "request": { + "headers": {"Content-Type": "application/xml"}, + "mode": "xpath", + "body": { + "/payload/response/id": {"==": 42} + }, + "extractors": {"name": {...}, ...} //optional + }, + "persist": { + // State modifications + }, + "response": { + "code": 200, + "mode": "raw", + "body": "", + "headers": {"Content-Type": "application/xml"}, + "delay": "1 second" + } +} +``` + +#### Condition Validation, multipart Mode + +WARNING! multipart requests must be performed on a separate method - +/api/mockingbird/execmp + +Part validation modes: +* `any` - value is not validated +* `raw` - exact match +* `json` - exact match, value parsed as Json +* `xml` - exact match, value parsed as XML +* `urlencoded` - similar to `web_form` mode for validating the entire body +* `jlens` - Json condition check +* `xpath` - XML condition check + +```javascript +{ + "name": "Sample stub", + "method": "POST", + "path": "/test/multipart", + "state": { + // Predicates + }, + "request": { + "headers": {}, + "mode": "multipart", + "body": { + "part1": { + "mode": "json", //validation mode + "headers": {}, //part headers + "value": {} //value specification for the validator + }, + "part2": { + ... + } + }, + "bypassUnknownParts": true //flag allowing to ignore all parts not present in the validator's specification + //by default, the flag is enabled, can be passed only to disable (false) + }, + "persist": { + // State modifications + }, + "response": { + "code": 200, + "mode": "json", + "body": { + "code": 0, + "credit_amount": 802400, + "credit_term": 120, + "interest_rate": 13.9, + "partnum": "CL3.15" + }, + "headers": {"Content-Type": "application/json"}, + "delay": "1 second" + } +} +``` + +#### Simple Request Proxying + +```javascript +{ + "name": "Simple proxy", + "method": "POST", + "path": "/pos-loans/api/cl/get_partner_lead_info", + "state": { + // Predicates + }, + "request": { + // Request specification + }, + "response": { + "mode": "proxy", + "uri": "http://some.host/api/cl/get_partner_lead_info" + } +} +``` + +#### Proxying with JSON Response Modification + +```javascript +{ + "name": "Simple proxy", + "method": "POST", + "path": "/pos-loans/api/cl/get_partner_lead_info", + "state": { + // Predicates + }, + "request": { + // Request specification, mode json or jlens + }, + "response": { + "mode": "json-proxy", + "uri": "http://some.host/api/cl/get_partner_lead_info", + "patch": { + "field.innerField": "${req.someRequestField}" + } + } +} +``` + +#### Proxying with XML Response Modification + +```javascript +{ + "name": "Simple proxy", + "method": "POST", + "path": "/pos-loans/api/cl/get_partner_lead_info", + "state": { + // Predicates + }, + "request": { + // Request specification, mode xml or xpath + }, + "response": { + "mode": "xml-proxy", + "uri": "http://some.host/api/cl/get_partner_lead_info", + "patch": { + "/env/someTag": "${/some/requestTag}" + } + } +} +``` + +### DSL for JSON and XML Validation Predicates + +In jlens and xpath modes, the following is supported: + +```javascript +{ + "a": {"==": "some value"}, //exact match + "b": {"!=": "some value"}, //not equal + "c": {">": 42} | {">=": 42} | {"<": 42} | {"<=": 42}, //comparisons, for numbers only, can be combined + "d": {"~=": "\\d+"}, //regexp match + "e": {"size": 10}, //length, for arrays and strings + "f": {"exists": true} //existence check +} +``` +Keys in such objects are either a path in json ("a.b.[0].c") or xpath ("/a/b/c"). +Note: Currently, comparison functions may not work correctly with xpath pointing to XML attributes. +The problem can be bypassed by checking for existence/non-existence: +```/tag/otherTag/[@attr='2']": {"exists": true}``` + +In jlens mode, the following operations are additionally supported: +```javascript +{ + "g": {"[_]": ["1", 2, true]}, //the field must contain one of the listed values + "h": {"![_]": ["1", 2, true]}, //the field must NOT contain any of the listed values + "i": {"&[_]": ["1", 2, true]} //the field must be an array containing all listed values (order does not matter) +} +``` + +In xpath mode, the following operations are additionally supported: +```javascript + "/some/tag": {"cdata": {"==": "test"}}, //validation for exact match of CDATA, argument must be a STRING + "/some/tag": {"cdata": {"~=": "\d+"}}, //CDATA regex validation, argument must be a STRING + "/some/tag": {"jcdata": {"a": {"==": 42}}}, //validating CDATA content as JSON, all available predicates are supported + "/other/tag": {"xcdata": {"/b": {"==": 42}}} //validating CDATA content as XML, all available predicates are supported +``` + +In web_form mode, ONLY the following operations are supported: +`==`, `!=`, `~=`, `size`, `[_]`, `![_]`, `&[_]` + +## Emulating GRPC Services + +How it works under the hood: +When creating a mock, the proto files nested in the request are parsed and transformed into a json representation of the protobuf schema. The database stores the json representation, not the original proto file. The first triggering of the mock may take a little longer than subsequent ones because a protobuf message decoder is generated from the json representation on the first trigger. After decoding, the data is transformed into json, which is checked by json predicates specified in the requestPredicates field. If the conditions are met, then the json from response.data (in fill mode) is serialized into protobuf and returned as a response. + +Workflow: + +1. Search for mocks by method name +2. Body validation +3. Search for state by predicate +4. Substituting values in the response template +5. State modification +6. Response delivery + +### Configuration of GRPC Stubs + +```javascript +{ + "name": "Sample stub", + "scope": "..", + "service": "test", + "methodName": "/pos-loans/api/cl/get_partner_lead_info", + "seed": { + "integrationId": "%{randomString(20)}" //example + }, + "state": { + // Predicates + }, + "requestCodecs": "..", //request schema proto-file in base64 + "requestClass": "..", //name of the request type from proto file + "responseCodecs": "..", //response schema proto-file in base64 + "responseClass": "..", //name of the response type from proto file + "requestPredicates": { + "meta.id": {"==": 42} + }, + "persist": { + // State modifications + }, + "response": { + "mode": "fill", + "data": { + "code": 0, + "credit_amount": 802400, + "credit_term": 120, + "interest_rate": 13.9, + "partnum": "CL3.15" + }, + "delay": "1 second" + } +} +``` + +## Emulating Bus Services + +Workflow: + +1. Search for the mock by source. +2. Search for state by predicate. +3. Validate incoming message. +4. Substitute values into the response template. +5. Modify state. +6. Send response. +7. Execute callbacks (see the "callbacks configuration" section). + +### Configuration + +[Working with Message Brokers](message-brokers.md) + +### Mock Configuration + +Supported modes for input: +* raw +* json +* xml +* jlens +* xpath + +Supported modes for output: +* raw +* json +* xml + +```javascript +{ + "name": "Spring has come", + "service": "test", + "source": "rmq_example_autobroker_decision", //source from the config + "input": { + "mode": .. //as for HTTP stubs + "payload": .. //as body for HTTP stubs + }, + "state": { + // Predicates + }, + "persist": { //Optional + // State modifications + }, + "destination": "rmq_example_q1", // destination from the config, optional + "output": { //Optional + "mode": "raw", + "payload": "..", + "delay": "1 second" + }, + "callback": { .. } +} +``` + +### Callback Configuration + +To mimic the behavior of the real world, sometimes it is necessary to call an HTTP service (for example, to fetch GBO when a message arrives) or to send additional messages to queues. For this purpose, callbacks can be used. The result of the service call can be parsed and saved in the state if necessary. Callbacks use the state of the caller. + +#### Calling an HTTP Method + +Supported modes for request: +* no_body +* raw +* json +* xml + +Supported modes for response: +* json +* xml + +>Please note! +>The initial state is passed along the entire chain of callbacks, and it is not modified by the persist block (!!!) + +```javascript +{ + "type": "http", + "request": { + "url": "http://some.host/api/v2/peka", + "method": "POST", + "headers": {"Content-Type": "application/json"}, + "mode": "json", + "body": { + "trace_id": "42", + "account_number": "228" + } + }, + "responseMode": "json" | "xml", //Mandatory only if the persist block is present + "persist": { //Optional + // State modifications + }, + "delay": "1 second", //Delay BEFORE executing the callback, optional + "callback": { .. } //Optional +} +``` + +#### Sending a Message + +Supported modes for output: +* raw +* json +* xml + +```javascript +{ + "type": "message", + "destination": "rmq_example_q1", // destination from the config + "output": { + "mode": "raw", + "payload": ".." + }, + "callback": { .. } //Optional +} +``` diff --git a/readme_ru.md b/readme_ru.md new file mode 100644 index 00000000..71e8dd41 --- /dev/null +++ b/readme_ru.md @@ -0,0 +1,752 @@ + + +# mockingbird + +mockingbird - сервис эмуляции REST-сервисов и сервисов с интерфейсами-очередями + +[Руководство по инсталляции](deployment_ru.md) + +[Руководство по настройке](configuration_ru.md) + +[Работа с очередями](message-brokers_ru.md) + +## Общие принципы работы + +mockingbird поддерживает следующие сценарии: + +* прогон конкретного кейса с конкретным набором событий и HTTP/GRPC ответов +* постоянная имитация happy-path для обеспечения автономности контура(ов) + +Типы конфигураций: +* countdown - автономные конфигурации для тестирования конкретного сценария. Имеют наивысший приоритет при разрешении неоднозначностей. Каждый мок срабатывает n раз (количество задаётся при создании). Автоматически удаляются в полночь. +* ephemeral - конфигурации, автоматически удаляемые в полночь. Если одновременно вызывают метод/приходит сообщение, для которого подходит countdown и ephemeral моки - сработает countdown. +* persistent - конфигурация, предназначеная для постоянной работы. Имеет наименьший приоритет + +## Сервисы + +Для упорядочения моков в UI и минимизации количества конфликтных ситуаций в mockingbird реализованы т.н. сервисы. Каждый мок (как HTTP так и сценарий) всегда принадлежит к какому-то из сервисом. +Сервисы создаются заранее и хранятся в базе. Сервис имеет suffix (являющийся по совместительству уникальным id сервиса) и человекочитаемый name. + +## Шаблонизатор JSON + +Для достижения гибкости при сохранении относительной простоты конфигов в сервисе реализован JSON шаблонизатор. Для начала простой пример: + +Шаблон: +```javascript +{ + "description": "${description}", + "topic": "${extras.topic}", + "comment": "${extras.comments.[0].text}", + "meta": { + "field1": "${extras.fields.[0]}" + } +} +``` + +Значения для подстановки: +```javascript +{ + "description": "Some description", + "extras": { + "fields": ["f1", "f2"], + "topic": "Main topic", + "comments": [ + {"text": "First nah!"}, {"text": "Okay"} + ] + } +} +``` + +Результат: +```javascript +{ + "description": "Some description", + "topic": "Main topic", + "comment": "First nah!", + "meta": { + "field1": "f1" + } +} +``` + +В данный момент поддерживается следующий синтаксис: +* `${a.[0].b}` - подстановка значения (JSON) +* `${/a/b/c}` - подстановка значения (XPath) + +ВНИМАНИЕ! НЕ ИСПОЛЬЗУЙТЕ НЕЙМСПЕЙСЫ В XPATH ВЫРАЖЕНИЯХ + +## Шаблонизатор XML + +Шаблон: +``` + + ${/r/t1} + ${/r/t2} + +``` + +Значения для подстановки: +``` + + test + 42 + +``` + +Результат: +``` + + test + 42 + +``` + +## Состояния (state) + +Для поддержки сложных сценариев сервис поддерживает сохранение произвольных состояний. Состояние - документ с произвольной схемой, технически состояние - документ в mongodb. Запись новых состояний может происходить: +* при записи в state (секция persist) с пустым (или отсутствующим) предикатом (секция state) + +## Манипуляции со state + +State аккумулятивно дописывается. Разрешено переписывание полей. + +Поля, по которым будем производиться поиск (используемые в предикатах) должны начинаться с "_". +> для таких полей будет автоматически создаваться sparse индекс + +Префиксы: +* `seed` - значения из блока seed (рандомизируемые на старте заявки) +* `state` - текущий state +* `req` - тело запроса (режимы json, jlens, xpath) +* `message` - тело собщения (в сценариях) +* `query` - query параметры (в заглушках) +* `pathParts` - значения, извлекаемые из URL (в заглушках) см. `Экстрация данных из URL` +* `extracted` - извлечённые значения +* `headers` - HTTP заголовки + +```javascript +{ + "a": "Просто строка", //В поле "a" записывается константа (может быть любое JSON значение) + "b": "${req.fieldB}", //В поле "b" записывается значение из поля fieldB запроса + "c": "${state.c}", //В поле "c" записывается значение из поля "c" текущего состояния + "d": "${req.fieldA}: ${state.a}" //В поле d запишется строка, содержащая req.fieldA и state.a +} +``` + +## Поиск state + +Предикаты для поиска state перечисляются в блоке `state`. Пустой объект (`{}`) в поле state недопустим. +Для поиска state можно использовать данные запроса (без префикса), query параметры (префикс `__query`), значения, извлекаемые из URL (префикс `__segments`) и HTTP заголовки (префикс `__headers`) + +Пример: + +```javascript +{ + "_a": "${fieldB}", //поле из тела запроса + "_b": "${__query.arg1}", //query параметр + "_c": "${__segments.id}", //сегмент URL, см. `Экстрация данных из URL` + "_d": "${__headers.Accept}" //HTTP заголовок +} +``` + + +## Seeding + +Иногда возникает необходимость сгенерировать случайное значение и сохранить и/или вернуть его в результате работы мока. +Для поддержки таких сценариев сделано поле seed, позволяющее задать переменные, которые будут сгенерированы +при инициализации мока. Это позволяет избежать необходимости пересоздавать моки с захардкожеными id + +В seed'ах поддерживается выполнение JavaScript, для поддержки обратной совместимости с синтаксисом псевдофункций определены следующие функции: +* `%{randomString(n)}` - подстановка случайной строки длиной n +* `%{randomString("ABCDEF1234567890", m, n)}` - подстановка случайной строки, состоящей из символов `ABCDEF1234567890` длиной в интервале [m, n) +* `%{randomNumericString(n)}` - подстановка случайной строки, состоящей только из цифр, длиной n +* `%{randomInt(n)}` - подстановка случайного Int в диапазоне [0, n) +* `%{randomInt(m,n)}` - подстановка случайного Int в диапазоне [m, n) +* `%{randomLong(n)}` - подстановка случайного Long в диапазоне [0, n) +* `%{randomLong(m,n)}` - подстановка случайного Long в диапазоне [m, n) +* `%{UUID()}` - подстановка случайного UUID +* `%{now("yyyy-MM-dd'T'HH:mm:ss")}` - текущее время в заданном [формате](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html) +* `%{today("yyyy-MM-dd")}` - текущая дата в заданном [формате](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html) + +Можно определять строки со сложным форматом: `%{randomInt(10) +': ' + randomLong(10) + ' | ' + {randomString(12)}`, поддерживаются все псевдофункции из списка выше + +## Резолвинг заглушек/сценариев + +> Найденые заглушки - кандидаты, оставшиеся после валидации URL, заголовков и тела запроса +> Найденые сценарии - кандидаты, оставшиеся после валидации тела сообщения + +| Найденые заглушки (сценарии) | Требуется состояние | Найдено состояний | Результат | +| --------------------------- | ------------------- | ----------------- | --------- | +| №1 | нет | - | Сработает №1 | +| №1 | да | 0 | Ошибка | +| №1 | да | 1 | Сработает №1 | +| №1
№2 | нет
нет | - | Ошибка | +| №1
№2 | нет
да | -
0 | Сработает №1 | +| №1
№2 | нет
да | -
1 | Сработает №2 | +| №1
№2 | нет
да | -
2 (и более) | Ошибка | +| №1
№2 | да
да | 0
0 | Ошибка | +| №1
№2 | да
да | 0
1 | Сработает №2 | +| №1
№2 | да
да | 0
2 (и более) | Ошибка | +| №1
№2 | да
да | 1
1 (и более) | Ошибка | +| №1
№2
№3 | да
да
да | 0
1
0 | Сработает №2 | +| №1
№2
№3 | да
да
да | 0
1
1 | Ошибка | +| №1
№2
№3 | да
да
да | 0
2
0 | Ошибка | + +## Эмуляция REST сервисов + +Алгоритм работы: + +1. Поиск мока по URL/HTTP-verb/заголовков +2. Валидация body +3. Поиск state по предикату +4. Подстановка значений в шаблон ответа +5. Модификация state +6. Отдача response + +### Конфигурация HTTP заглушек + +HTTP заголовки валидируются на полное соответствие значений, лишние заголовки не являются ошибкой + +Валидация тела запросы в HTTP заглушках может работать в следующих режимах: +* no_body - запрос должен быть без тела +* any_body - тело запроса должно быть не пустым, при этом никак не парсится и не проверяется +* raw - тело запроса никак не парсится и проверяется на полное соответствие с содержимым request.body +* json - тело запроса должно быть валидным JSON'ом и проверяется на соответствие с содержимым request.body +* xml - тело запроса должно быть валидным XML и проверяется на соответствие с содержимым request.body +* jlens - тело запроса должно быть валидным JSON'ом и валидируется по условиям, описаным в request.body +* xpath - тело запроса должно быть валидным XML и валидируется по условиям, описаным в request.body +* web_form - тело запроса должно быть в формате x-www-form-urlencoded и валидируется по условиям, описаным в request.body +* multipart - тело запроса должно быть в формате multipart/form-data. Правила валидации частей конфигурируются индивидуально (см. раздел ниже) + +ВНИМАНИЕ! multipart запросы необходимо выполнять на отдельный метод - +/api/mockingbird/execmp + +Для ответов поддерживаются следующие режимы: +* raw +* json +* xml +* binary +* proxy +* json-proxy +* xml-proxy +* no_body + +Режим `no_body` в ответе нужен если заглушка возвращает код 204 или 304. Данные коды выделяются от остальных тем, что у них не может быть никакого тела в ответе, данное поведение описано в [RFC 7231](https://datatracker.ietf.org/doc/html/rfc7231#section-6.3.5) и [RFC 7232](https://datatracker.ietf.org/doc/html/rfc7232#section-4.1). Режим `no_body` можно использовать и с остальными HTTP кодами, но для указных он является обязательным. + +Режимы request и response полностью независимы друг от друга (можно сконфигурировать ответ xml'ем на json запрос при желании, кроме режимов json-proxy и xml-proxy). + +В поле delay можно передать корректный FiniteDuration не дольше 30 секунд + +### Экстрация данных из URL +Бывает, что URL содержит какой-нибудь идентификатор не как параметр, а как непосредственно часть пути. В таких случаях становится невозможным +описать persistent заглушку из-за невозможности полного совпадения пути. На помощь приходит поле pathPattern, в которое можно передать регулярку, +на соответствие которой будет проверяться путь. Отмечу, что хоть сопоставление и производится в монге эффективным способом, злоупотребять этой +возможностью не стоит и при возможности сопоставления по полному совпадению не следует использовать pathPattern + +Пример: +```javascript +{ + "name": "Sample stub", + "scope": "persistent", + "pathPattern": "/pattern/(?\d+)", + "method": "GET", + "request": { + "headers": {}, + "mode": "no_body", + "body": {} + }, + "response": { + "code": 200, + "mode": "json", + "headers": {"Content-Type": "application/json"}, + "body": {"id": "${pathParts.id}"} + } +} +``` +То, что нужно извлечь из пути, нужно делать _именованой_ группой, групп может быть сколько угодно, впоследствии на них можно ссылаться через `pathParts.<имя_группы>` + +### Экстракторы +В некоторых случаях нужно подставить в ответ данные, которые невозможно извлечь простыми средствами. Для этих целей были добавлены экстракторы + +#### Экстрактор jcdata + +Достаёт значения из JSON, лежащего в CDATA + +конфигурация: +```javascript +{ + "type": "jcdata", + "prefix": "/root/inner/tag", //Путь до тэга с CDATA + "path": "path.to" //Путь до нужного значения +} +``` + +#### CDATA inlining +Иногда приходится иметь дело с запросами, в которых внутри CDATA лежит XML. В таких случаях можно заинлайнить содержимое DATA с помощью параметра `inlineCData` (поддерживается в `xpath` и `xml`) + +### Примеры + +#### Полное совпадение, режим json + +```javascript +{ + "name": "Sample stub", + "method": "POST", + "path": "/pos-loans/api/cl/get_partner_lead_info", + "state": { + // Предикаты + }, + "request": { + "headers": {"Content-Type": "application/json"}, + "mode": "json", + "body": { + "trace_id": "42", + "account_number": "228" + } + }, + "persist": { + // Модификации состояния + }, + "response": { + "code": 200, + "mode": "json", + "body": { + "code": 0, + "credit_amount": 802400, + "credit_term": 120, + "interest_rate": 13.9, + "partnum": "CL3.15" + }, + "headers": {"Content-Type": "application/json"}, + "delay": "1 second" + } +} +``` + +#### Полное совпадение, режим raw + +```javascript +{ + "name": "Sample stub", + "method": "POST", + "path": "/pos-loans/api/evil/soap/service" + "state": { + // Предикаты + }, + "request": { + "headers": {"Content-Type": "application/xml"}, + "mode": "raw" + "body": "" + }, + "persist": { + // Модификации состояния + }, + "response": { + "code": 200, + "mode": "raw" + "body": "", + "headers": {"Content-Type": "application/xml"}, + "delay": "1 second" + } +} +``` + +#### Валидация по условиям, режим jlens + +```javascript +{ + "name": "Sample stub", + "method": "POST", + "path": "/pos-loans/api/cl/get_partner_lead_info", + "state": { + // Предикаты + }, + "request": { + "headers": {"Content-Type": "application/json"}, + "mode": "jlens", + "body": { + "meta.id": {"==": 42} + } + }, + "persist": { + // Модификации состояния + }, + "response": { + "code": 200, + "mode": "json", + "body": { + "code": 0, + "credit_amount": 802400, + "credit_term": 120, + "interest_rate": 13.9, + "partnum": "CL3.15" + }, + "headers": {"Content-Type": "application/json"}, + "delay": "1 second" + } +} +``` + +#### Валидация по условиям, режим xpath + +ВНИМАНИЕ! НЕ ИСПОЛЬЗУЙТЕ НЕЙМСПЕЙСЫ В XPATH ВЫРАЖЕНИЯХ + +```javascript +{ + "name": "Sample stub", + "method": "POST", + "path": "/pos-loans/api/cl/get_partner_lead_info", + "state": { + // Предикаты + }, + "request": { + "headers": {"Content-Type": "application/xml"}, + "mode": "xpath", + "body": { + "/payload/response/id": {"==": 42} + }, + "extractors": {"name": {...}, ...} //опционально + }, + "persist": { + // Модификации состояния + }, + "response": { + "code": 200, + "mode": "raw" + "body": "", + "headers": {"Content-Type": "application/xml"}, + "delay": "1 second" + } +} +``` + +#### Валидация по условиям, режим multipart + +ВНИМАНИЕ! multipart запросы необходимо выполнять на отдельный метод - +/api/mockingbird/execmp + +Режимы валидании part: +* `any` - значение никак не валидируется +* `raw` - полное соответствие +* `json` - полное соответствие, значение парсится как Json +* `xml` - полное соответствие, значение парсится как XML +* `urlencoded` - аналогично режиму `web_form` для валидации всего тела +* `jlens` - проверка Json по условиям +* `xpath` - проверка XML по условиям + +```javascript +{ + "name": "Sample stub", + "method": "POST", + "path": "/test/multipart", + "state": { + // Предикаты + }, + "request": { + "headers": {}, + "mode": "multipart", + "body": { + "part1": { + "mode": "json", //режим валидации + "headers": {}, //заголовки part + "value": {} //спецификация значения для валидатора + }, + "part2": { + ... + } + }, + "bypassUnknownParts": true //флаг, позволяющий игнорировать все partы, отсутвующие в спецификации валидатора + //по умолчанию флаг включен, можно передавать только для отключения (false) + }, + "persist": { + // Модификации состояния + }, + "response": { + "code": 200, + "mode": "json", + "body": { + "code": 0, + "credit_amount": 802400, + "credit_term": 120, + "interest_rate": 13.9, + "partnum": "CL3.15" + }, + "headers": {"Content-Type": "application/json"}, + "delay": "1 second" + } +} +``` + +#### Простое проксирование запроса + +```javascript +{ + "name": "Simple proxy", + "method": "POST", + "path": "/pos-loans/api/cl/get_partner_lead_info", + "state": { + // Предикаты + }, + "request": { + // Спецификация запроса + }, + "response": { + "mode": "proxy", + "uri": "http://some.host/api/cl/get_partner_lead_info" + } +} +``` + +#### Проксирование с модификацией JSON ответа + +```javascript +{ + "name": "Simple proxy", + "method": "POST", + "path": "/pos-loans/api/cl/get_partner_lead_info", + "state": { + // Предикаты + }, + "request": { + // Спецификация запроса, mode json или jlens + }, + "response": { + "mode": "json-proxy", + "uri": "http://some.host/api/cl/get_partner_lead_info", + "patch": { + "field.innerField": "${req.someRequestField}" + } + } +} +``` + +#### Проксирование с модификацией XML ответа + +```javascript +{ + "name": "Simple proxy", + "method": "POST", + "path": "/pos-loans/api/cl/get_partner_lead_info", + "state": { + // Предикаты + }, + "request": { + // Спецификация запроса, mode xml или xpath + }, + "response": { + "mode": "xml-proxy", + "uri": "http://some.host/api/cl/get_partner_lead_info", + "patch": { + "/env/someTag": "${/some/requestTag}" + } + } +} +``` + +### DSL предикатов валидации JSON и XML + +в режимах jlens и xpath поддерживается следующее: + +```javascript +{ + "a": {"==": "some value"}, //полное соответствие + "b": {"!=": "some value"}, //не равно + "c": {">": 42} | {">=": 42} | {"<": 42} | {"<=": 42}, //сравнения, только для чисел, комбинируются + "d": {"~=": "\d+"}, //сопоставление с regexp, + "e": {"size": 10}, //длина, для массивов и строк + "f": {"exists": true} //проверка существования +} +``` +Ключами в таких объектах является либо путь в json ("a.b.[0].c") либо xpath ("/a/b/c") +Замечание: в данный момент функции сравнения могут некорректно работать с xpath, указывающими на XML атрибуты. +Обойти проблему можно проверкой на существование/несуществование: +```/tag/otherTag/[@attr='2']": {"exists": true}``` + +в режиме jlens дополнительно поддерживаются следующие операции: +```javascript +{ + "g": {"[_]": ["1", 2, true]}, //поле должно содержать одно из перечисленых значений + "h": {"![_]": ["1", 2, true]}, //поле НЕ должно содержать ни одно из перечисленых знаечний + "i": {"&[_]": ["1", 2, true]} // поле должно быть массивом и содержать все перечисленные значения (при этом порядок не важен) +} +``` + +в режиме xpath дополнительно поддерживаются следующие операции: +```javascript + "/some/tag": {"cdata": {"==": "test"}}, //валидация на полное совпадение CDATA, аргумент должен быть СТРОКОЙ + "/some/tag": {"cdata": {"~=": "\d+"}}, //валидация DATA регуляркой, аргумент должен быть СТРОКОЙ + "/some/tag": {"jcdata": {"a": {"==": 42}}}, //валидируем содержимое CDATA как JSON, поддерживаются все доступные предикаты + "/other/tag": {"xcdata": {"/b": {"==": 42}}} //валидируем содержимое CDATA как XML, поддерживаются все доступные предикаты +``` + +в режиме web_form поддерживаются ТОЛЬКО следующие операции: +`==`, `!=`, `~=`, `size`, `[_]`, `![_]`, `&[_]` + +## Эмуляция GRPC сервисов + +Как это устроено под капотом: +При создании мока вложеные в запрос proto файлы парсятся и преобразуются в json-представление protobuf схемы. В базе хранится именно json-представление, +а не оригинальный proto файл. Первое срабатывание мока может занимать немного больше времени, чем последующие, т.к. при первом срабатывании из +json-представляения генерируется декодер protobuf сообщений. После декодирования данные преобразуются в json, который проверяется json-предикатами, +задаными в поле requestPredicates. Если условия выполняются - то json из response.data (в режиме fill) сериализуется в protobuf и отдаётся в качестве ответа. + +Алгоритм работы: + +1. Поиск мока(-ов) по имени метода +2. Валидация body +3. Поиск state по предикату +4. Подстановка значений в шаблон ответа +5. Модификация state +6. Отдача response + +### Конфигурация GRPC заглушек + +```javascript +{ + "name": "Sample stub", + "scope": "..", + "service": "test", + "methodName": "/pos-loans/api/cl/get_partner_lead_info", + "seed": { + "integrationId": "%{randomString(20)}" //пример + }, + "state": { + // Предикаты + }, + "requestCodecs": "..", //proto-файл схемы запроса в base64 + "requestClass": "..", //имя типа запроса из proto файла + "responseCodecs": "..", //proto-файл схемы ответа в base64 + "responseClass": "..", //имя типа ответа из proto файла + "requestPredicates": { + "meta.id": {"==": 42} + }, + "persist": { + // Модификации состояния + }, + "response": { + "mode": "fill", + "data": { + "code": 0, + "credit_amount": 802400, + "credit_term": 120, + "interest_rate": 13.9, + "partnum": "CL3.15" + }, + "delay": "1 second" + } +} +``` + +## Эмуляция шинных сервисов + +Алгоритм работы: + +1. Поиск мока по source +2. Поиск state по предикату +3. Валидация входящего сообщения +4. Подстановка значений в шаблон ответа +5. Модификация state +6. Отправка response +7. Выполнение колбеков (см. раздел "конфигурация колбеков") + +### Конфигурация + +[Работа с очередями](message-brokers.md) + +### Конфигурация мока + +Для input поддерживаются режимы: +* raw +* json +* xml +* jlens +* xpath + +Для output поддерживаются режимы: +* raw +* json +* xml + +```javascript +{ + "name": "Пришла весна", + "service": "test", + "source": "rmq_example_autobroker_decision", //source из конфига + "input": { + "mode": .. //как для HTTP заглушек + "payload": .. //как body для HTTP заглушек + }, + "state": { + // Предикаты + }, + "persist": { //Опционально + // Модификации состояния + }, + "destination": "rmq_example_q1", // destination из конфига, опционально + "output": { //Опционально + "mode": "raw", + "payload": "..", + "delay": "1 second" + }, + "callback": { .. } +} +``` + +### Конфигурация колбеков + +Для имитации поведения реального мира иногда нужно выполнить вызов HTTP сервиса (пример - забрать GBO когда приходит сообщение) или отправлять дополнительные сообщения в очереди. Для этого можно использовать колбеки. Результат вызова сервиса можно при необходимости распарсить и сохранить в состояние. Коллбеки используют состяние вызвавшего. + +#### Вызов HTTP метода + +Для request поддерживаются режимы +* no_body +* raw +* json +* xml + +Для response поддерживаются режимы +* json +* xml + +>Обратите внимание! +>В всю цепочку колбеков передаётся первоначальный стейт, он не изменяется блоком perist (!!!) + +```javascript +{ + "type": "http", + "request": { + "url": "http://some.host/api/v2/peka", + "method": "POST", + "headers": {"Content-Type": "application/json"}, + "mode": "json", + "body": { + "trace_id": "42", + "account_number": "228" + } + }, + "responseMode": "json" | "xml", //Обязательно только при наличии блока persist + "persist": { //Опционально + // Модификации состояния + }, + "delay": "1 second", //Задержка ПЕРЕД выполнением колбека, опционально + "callback": { .. } //Опционально +} +``` + +#### Отправка сообщения + +Для output поддерживаются режимы: +* raw +* json +* xml + +```javascript +{ + "type": "message", + "destination": "rmq_example_q1", // destination из конфига + "output": { + "mode": "raw", + "payload": ".." + }, + "callback": { .. } //Опционально +} +```