diff --git a/.github/workflows/build.yml b/.github/workflows/build-container.yml similarity index 100% rename from .github/workflows/build.yml rename to .github/workflows/build-container.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy-container.yml similarity index 100% rename from .github/workflows/deploy.yml rename to .github/workflows/deploy-container.yml diff --git a/.github/workflows/deploy-serverless.yml b/.github/workflows/deploy-serverless.yml new file mode 100644 index 0000000..a1e7541 --- /dev/null +++ b/.github/workflows/deploy-serverless.yml @@ -0,0 +1,82 @@ +name: Deploy + +on: + workflow_call: + inputs: + environment: + required: true + description: Environment name + type: string + stage_name: + type: string + required: true + description: Название стенда + secrets: + YC_SA_JSON_CREDENTIALS: + description: Json, содержащий авторизованные ключи для сервисного аккаунта. Подробнее https://cloud.yandex.ru/docs/container-registry/operations/authentication#sa-json + DEPLOY_SA_ID: + FOLDER_ID: + TF_STATE_AWS_ACCESS_KEY_ID: + TF_STATE_AWS_SECRET_ACCESS_KEY: + + outputs: + domain: + description: Доменное имя развернутого стенда + value: ${{ jobs.deploy.outputs.domain }} + +jobs: + deploy: + name: Terraform + environment: + name: ${{ inputs.environment }} + url: ${{ steps.terraform-output.outputs.domain }}/ + outputs: + domain: ${{ steps.terraform-output.outputs.domain }} + runs-on: ubuntu-latest + defaults: + run: + working-directory: deploy/open-next + env: + YC_SERVICE_ACCOUNT_KEY_FILE: ${{ secrets.YC_SA_JSON_CREDENTIALS }} + TF_CLI_CONFIG_FILE: '${{ github.workspace }}/.github/files/terraformrc' + TF_VAR_folder_path: '../../.open-next' + # TF_VAR_folder_id: ${{ secrets.FOLDER_ID }} + # TF_VAR_service_account_id: ${{ secrets.DEPLOY_SA_ID }} + AWS_ACCESS_KEY_ID: ${{ secrets.TF_STATE_AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.TF_STATE_AWS_SECRET_ACCESS_KEY }} + steps: + - uses: actions/checkout@v4 + + - name: Terraform setup + uses: hashicorp/setup-terraform@v3 + with: + terraform_version: '1.7.1' + terraform_wrapper: false + + - name: Terraform Init + run: terraform init -backend-config="key=${{ inputs.stage_name }}/terraform.tfstate" + + - name: Terraform Plan + id: plan + run: terraform plan -input=false -no-color -out tf.plan + + - name: Terraform Apply + run: terraform apply -input=false tf.plan + + - name: Terraform get output + id: terraform-output + run: echo "domain=$(terraform output -raw api_gateway_domain)" >> "$GITHUB_OUTPUT" + + # - name: Purge CDN cache + # uses: yc-actions/yc-cdn-cache@v1 + # with: + # yc-sa-json-credentials: ${{ secrets.YC_SA_JSON_CREDENTIALS }} + # cdn-resource-id: bc8eyazsip6i4r4bqjsa + + e2e-test: + # Хороший end-to-end тест представляет из себя более сложную конструкцию, чем curl, проверяющий статус ответа главной страницы стенда. Такой простой тест использован для целей демонстрации + runs-on: ubuntu-latest + needs: deploy + steps: + - run: | + curl '${{ needs.deploy.outputs.domain }}/' diff --git a/.github/workflows/pr-deploy.yml b/.github/workflows/pr-deploy-container.yml similarity index 91% rename from .github/workflows/pr-deploy.yml rename to .github/workflows/pr-deploy-container.yml index 9c9ec0d..2512141 100644 --- a/.github/workflows/pr-deploy.yml +++ b/.github/workflows/pr-deploy-container.yml @@ -13,7 +13,7 @@ concurrency: jobs: build: name: Build - uses: ./.github/workflows/build.yml + uses: ./.github/workflows/build-container.yml with: environment: development secrets: @@ -26,7 +26,7 @@ jobs: deploy: name: Deploy needs: build - uses: ./.github/workflows/deploy.yml + uses: ./.github/workflows/deploy-container.yml with: image_id: ${{ needs.build.outputs.docker_image }} stage_name: pr-${{ github.event.number }} diff --git a/.github/workflows/release.yml b/.github/workflows/release-container.yml similarity index 96% rename from .github/workflows/release.yml rename to .github/workflows/release-container.yml index f7664fd..1c339a7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release-container.yml @@ -33,7 +33,7 @@ jobs: build: name: Build # needs: release-name - uses: ./.github/workflows/build.yml + uses: ./.github/workflows/build-container.yml with: environment: production secrets: @@ -48,7 +48,7 @@ jobs: name: Deploy needs: - build - uses: ./.github/workflows/deploy.yml + uses: ./.github/workflows/deploy-container.yml with: image_id: ${{ needs.build.outputs.docker_image }} stage_name: production diff --git a/.gitignore b/.gitignore index c1a1038..d79d3e7 100644 --- a/.gitignore +++ b/.gitignore @@ -102,5 +102,12 @@ override.tf.json # Ignore CLI configuration files .terraformrc terraform.rc + # Sentry Config File .sentryclirc + +# @yandex-cloud/serverless-live-debug +.live-debug + +# OpenNext +.open-next diff --git a/.npmrc b/.npmrc index e698dc1..cda15a3 100644 --- a/.npmrc +++ b/.npmrc @@ -1,3 +1,8 @@ # https://pnpm.io/npmrc#registry # The base URL of the npm package registry (trailing slash included). registry=https://registry.npmjs.org/ + +# https://pnpm.io/npmrc#node-linker +# Your project is deployed to a serverless hosting provider. Some serverless providers (for instance, AWS Lambda) don't support symlinks. +# An alternative solution for this problem is to bundle your application before deployment. +node-linker=hoisted \ No newline at end of file diff --git a/deploy/modules/tf-yc-function/main.tf b/deploy/modules/tf-yc-function/main.tf new file mode 100644 index 0000000..f6986ac --- /dev/null +++ b/deploy/modules/tf-yc-function/main.tf @@ -0,0 +1,270 @@ +locals { + prefix = var.prefix == null ? "" : "${var.prefix}-" + suffix = var.suffix == null ? "" : "-${var.suffix}" + + should_use_zip = var.function_code.zip != null + # trigger_on_schedule = var.schedule != null + + # alias_names = var.aliases.create ? var.aliases.names : [] +} + +data "yandex_client_config" "client" {} + +resource "yandex_iam_service_account" "service_account" { + name = "${local.prefix}${var.function_name}-sa" + description = "Service account for invoking server function" +} + +resource "yandex_resourcemanager_folder_iam_binding" "service_account_functions_invoker_binding" { + folder_id = data.yandex_client_config.client.folder_id + members = ["serviceAccount:${yandex_iam_service_account.service_account.id}"] + role = "serverless.functions.invoker" +} + +# Lambda + +resource "yandex_function" "server_function" { + name = "${local.prefix}${var.function_name}${local.suffix}" + # TODO: + user_hash = local.should_use_zip ? try(var.function_code.zip.hash) : uuid() + entrypoint = var.handler + runtime = var.runtime + memory = var.memory_size + # content { + # zip_filename = local.should_use_zip ? try(var.function_code.zip.path) : null + # } + package { + bucket_name = local.should_use_zip ? null : var.function_code.s3.bucket + object_name = local.should_use_zip ? null : var.function_code.s3.key + } + execution_timeout = var.timeout + service_account_id = yandex_iam_service_account.service_account.id + + environment = var.environment_variables + + + # TODO: support s3 bucket source code + + # s3_bucket = local.should_use_zip ? null : try(var.function_code.s3.bucket) + # s3_key = local.should_use_zip ? null : try(var.function_code.s3.key) + # s3_object_version = local.should_use_zip ? null : try(var.function_code.s3.object_version) + + # role = aws_iam_role.lambda_iam.arn + + # layers = var.layers + # architectures = var.run_at_edge == false ? [var.architecture] : ["x86_64"] + # publish = var.publish + # environment { + # variables = var.environment_variables + # } + + # dynamic "tracing_config" { + # for_each = var.xray_tracing.enable == true ? [var.xray_tracing] : [] + # content { + # mode = tracing_config.value.mode + # } + # } + + # dynamic "vpc_config" { + # for_each = var.vpc != null ? [var.vpc] : [] + + # content { + # security_group_ids = vpc_config.value.security_group_ids + # subnet_ids = vpc_config.value.subnet_ids + # } + # } + + # timeouts { + # create = try(var.timeouts.create, null) + # update = try(var.timeouts.update, null) + # delete = try(var.timeouts.delete, null) + # } +} + +# resource "aws_lambda_alias" "lambda_alias" { +# for_each = var.run_at_edge == false ? toset(local.alias_names) : [] +# name = each.value +# function_name = aws_lambda_function.lambda_function.function_name +# function_version = aws_lambda_function.lambda_function.version + +# lifecycle { +# ignore_changes = [ +# function_version +# ] +# } +# } +# resource "terraform_data" "update_alias" { +# count = var.run_at_edge == false && var.aliases.create ? 1 : 0 +# triggers_replace = [aws_lambda_function.lambda_function.version, var.aliases.alias_to_update] + +# provisioner "local-exec" { +# command = "${coalesce(try(var.scripts.update_alias_script.interpreter, var.scripts.interpreter, null), "/bin/bash")} ${try(var.scripts.update_alias_script.path, "${path.module}/scripts/update-alias.sh")}" + +# environment = merge({ +# "FUNCTION_NAME" = aws_lambda_function.lambda_function.function_name +# "FUNCTION_VERSION" = aws_lambda_function.lambda_function.version +# "FUNCTION_ALIAS" = var.aliases.alias_to_update +# }, try(var.scripts.additional_environment_variables, {}), try(var.scripts.update_alias_script.additional_environment_variables, {})) +# } + +# depends_on = [aws_lambda_alias.lambda_alias] +# } + +# resource "aws_lambda_function_url" "function_url" { +# for_each = var.run_at_edge == false && var.function_url.create ? toset(local.alias_names) : [] + +# function_name = aws_lambda_function.lambda_function.function_name +# qualifier = aws_lambda_alias.lambda_alias[each.value].name +# authorization_type = var.function_url.authorization_type +# invoke_mode = var.function_url.enable_streaming == true ? "RESPONSE_STREAM" : "BUFFERED" +# } + +# resource "aws_lambda_permission" "function_url_permission" { +# count = var.run_at_edge == false && var.function_url.create ? 1 : 0 + +# action = "lambda:InvokeFunctionUrl" +# function_name = aws_lambda_function.lambda_function.function_name +# principal = "*" +# function_url_auth_type = var.function_url.authorization_type +# } + +# # Cloudwatch Logs + +# resource "aws_cloudwatch_log_group" "lambda_log_group" { +# count = var.run_at_edge == false ? 1 : 0 + +# name = "/aws/lambda/${local.prefix}${var.function_name}${local.suffix}" +# retention_in_days = var.cloudwatch_log.retention_in_days +# } + +# # IAM + +# resource "aws_iam_role" "lambda_iam" { +# name = "${local.prefix}${var.function_name}-role${local.suffix}" +# path = var.iam.path +# permissions_boundary = var.iam.permissions_boundary + +# assume_role_policy = jsonencode({ +# "Version" : "2012-10-17", +# "Statement" : concat([ +# { +# "Action" : "sts:AssumeRole", +# "Principal" : { +# "Service" : "lambda.amazonaws.com" +# }, +# "Effect" : "Allow" +# } +# ], var.run_at_edge ? [ +# { +# "Action" : "sts:AssumeRole", +# "Principal" : { +# "Service" : "edgelambda.amazonaws.com" +# }, +# "Effect" : "Allow" +# } +# ] : []) +# }) + +# provider = aws.iam +# } + +# resource "aws_iam_policy" "lambda_policy" { +# name = "${local.prefix}${var.function_name}-lambda-policy${local.suffix}" +# path = var.iam.path + +# policy = jsonencode({ +# "Version" : "2012-10-17", +# "Statement" : concat([ +# { +# "Action" : concat([ +# "logs:CreateLogStream", +# "logs:PutLogEvents" +# ], var.run_at_edge ? ["logs:CreateLogGroup"] : []), +# "Resource" : var.run_at_edge ? "*" : "${one(aws_cloudwatch_log_group.lambda_log_group[*].arn)}:*", +# "Effect" : "Allow" +# } +# ], +# var.vpc != null ? [ +# { +# "Action" : [ +# "ec2:CreateNetworkInterface", +# "ec2:DescribeNetworkInterfaces", +# "ec2:DeleteNetworkInterface", +# "ec2:AssignPrivateIpAddresses", +# "ec2:UnassignPrivateIpAddresses" +# ], +# "Resource" : "*" +# "Effect" : "Allow" +# } +# ] : [], +# var.xray_tracing.enable ? [ +# { +# "Action" : [ +# "xray:PutTraceSegments", +# "xray:PutTelemetryRecords" +# ], +# "Resource" : "*", +# "Effect" : "Allow" +# } +# ] : [], +# var.iam_policy_statements) +# }) + +# provider = aws.iam +# } + +# resource "aws_iam_role_policy_attachment" "policy_attachment" { +# role = aws_iam_role.lambda_iam.name +# policy_arn = aws_iam_policy.lambda_policy.arn + +# provider = aws.iam +# } + +# resource "aws_iam_policy" "additional_policy" { +# for_each = { +# for additional_iam_policy in var.additional_iam_policies : additional_iam_policy.name => additional_iam_policy if additional_iam_policy.policy != null +# } +# name = "${local.prefix}${var.function_name}-${each.key}${local.suffix}" +# path = var.iam.path + +# policy = each.value.policy + +# provider = aws.iam +# } + +# resource "aws_iam_role_policy_attachment" "additional_policy_attachment" { +# for_each = { +# for additional_iam_policy in var.additional_iam_policies : additional_iam_policy.name => additional_iam_policy +# } +# role = aws_iam_role.lambda_iam.name +# policy_arn = coalesce(each.value.arn, aws_iam_policy.additional_policy[each.key].arn) + +# provider = aws.iam +# } + +# # Event Rule (CRON) + +# resource "aws_cloudwatch_event_rule" "cron" { +# count = local.trigger_on_schedule ? 1 : 0 + +# name = "${local.prefix}${var.function_name}-cron${local.suffix}" +# schedule_expression = var.schedule +# } + +# resource "aws_cloudwatch_event_target" "trigger_lambda_on_schedule" { +# count = local.trigger_on_schedule ? 1 : 0 + +# rule = aws_cloudwatch_event_rule.cron[0].name +# target_id = "lambda" +# arn = try(aws_lambda_alias.lambda_alias[0].arn, aws_lambda_function.lambda_function.arn) +# } + +# resource "aws_lambda_permission" "allow_eventbridge_to_invoke_lambda" { +# count = local.trigger_on_schedule ? 1 : 0 + +# statement_id = "AllowExecutionFromEventbridge" +# action = "lambda:InvokeFunction" +# function_name = try(aws_lambda_alias.lambda_alias[local.alias_names[0]].function_name, aws_lambda_function.lambda_function.function_name) +# principal = "events.amazonaws.com" +# source_arn = aws_cloudwatch_event_rule.cron[0].arn +# } diff --git a/deploy/modules/tf-yc-function/outputs.tf b/deploy/modules/tf-yc-function/outputs.tf new file mode 100644 index 0000000..381cf5a --- /dev/null +++ b/deploy/modules/tf-yc-function/outputs.tf @@ -0,0 +1,34 @@ +output "id" { + description = "The lambda function id" + value = yandex_function.server_function.id +} + +output "name" { + description = "The lambda function name" + value = yandex_function.server_function.name +} + +# output "arn" { +# description = "The lambda ARN" +# value = yandex_function.server_function.arn +# } + +output "version" { + description = "The function version that is deployed" + value = yandex_function.server_function.version +} + +# output "qualified_arn" { +# description = "The function qualified ARN" +# value = yandex_function.server_function.qualified_arn +# } + +# output "url_hostnames" { +# description = "The hostname for the lambda function urls" +# value = length(aws_lambda_function_url.function_url) > 0 ? { for url in aws_lambda_function_url.function_url : url.qualifier => trimsuffix(trimprefix(aws_lambda_function_url.function_url[url.qualifier].function_url, "https://"), "/") } : {} +# } + +output "function_service_account_id" { + description = "Service account id for invoking server function" + value = yandex_iam_service_account.service_account.id +} diff --git a/deploy/modules/tf-yc-function/variables.tf b/deploy/modules/tf-yc-function/variables.tf new file mode 100644 index 0000000..9d2aa96 --- /dev/null +++ b/deploy/modules/tf-yc-function/variables.tf @@ -0,0 +1,187 @@ +variable "prefix" { + description = "A prefix which will be attached to resource name to esnure resources are random" + type = string +} + +variable "suffix" { + description = "A suffix which will be attached to resource name to esnure resources are random" + type = string +} + +variable "function_name" { + description = "The name of the lambda function" + type = string +} + +variable "function_code" { + type = object({ + zip = optional(object({ + path = string + hash = string + })) + s3 = optional(object({ + bucket = string + key = string + object_version = optional(string) + })) + }) +} + +variable "runtime" { + description = "The runtime of the lambda function" + type = string +} + +variable "handler" { + description = "The handler of the lambda function" + type = string +} + +variable "memory_size" { + description = "The memory size of the lambda function" + type = number +} + +variable "timeout" { + description = "The timeout of the lambda function" + type = number +} + +# variable "iam" { +# description = "Override the default IAM configuration" +# type = object({ +# path = optional(string, "/") +# permissions_boundary = optional(string) +# }) +# default = {} +# } + +# variable "cloudwatch_log" { +# description = "Override the Cloudwatch logs configuration" +# type = object({ +# retention_in_days = number +# }) +# default = { +# retention_in_days = 7 +# } +# } + +variable "environment_variables" { + description = "Specify environment variables for the lambda function" + type = map(string) + default = {} +} + +# variable "iam_policy_statements" { +# description = "Additional IAM policy statements to attach to the role in addition to the default cloudwatch logs, xray and kms permissions" +# type = any +# default = [] +# } + +# variable "additional_iam_policies" { +# description = "Specify additional IAM policies to attach to the lambda execution role" +# type = list(object({ +# name = string, +# arn = optional(string) +# policy = optional(string) +# })) +# default = [] + +# validation { +# condition = alltrue([ +# for additional_iam_policy in var.additional_iam_policies : additional_iam_policy.arn != null || additional_iam_policy.policy != null +# ]) +# error_message = "Either the ARN or policy must be specified for each additional IAM policy" +# } +# } + +# variable "vpc" { +# description = "The configuration to run the lambda in a VPC" +# type = object({ +# security_group_ids = list(string), +# subnet_ids = list(string) +# }) +# default = null +# } + +# variable "publish" { +# description = "Whether to publish a new lambda version" +# type = bool +# default = true +# } + +# variable "function_url" { +# description = "Configure function URL" +# type = object({ +# create = optional(bool, true) +# authorization_type = optional(string, "NONE") +# enable_streaming = optional(bool, false) +# }) +# default = {} +# } + +# variable "architecture" { +# description = "Instruction set architecture for the lambda function" +# type = string +# } + +variable "run_at_edge" { + description = "Whether the function runs at the edge" + type = bool + default = false +} + +# variable "aliases" { +# description = "List of aliases to create" +# type = object({ +# create = optional(bool, true) +# names = optional(list(string), ["stable"]) +# alias_to_update = optional(string, "stable") +# }) +# default = {} +# } + +# variable "xray_tracing" { +# description = "Configuration for AWS tracing on the function" +# type = object({ +# enable = optional(bool, false), +# mode = optional(string, "Active") +# }) +# default = {} +# } + +# variable "layers" { +# description = "A list of layer arns to associate with the lambda" +# type = list(string) +# default = null +# } + +# variable "timeouts" { +# description = "Define maximum timeout for creating, updating, and deleting function" +# type = object({ +# create = optional(string) +# update = optional(string) +# delete = optional(string) +# }) +# default = {} +# } + +# variable "schedule" { +# description = "The schedule to invoke the function" +# type = string +# default = null +# } + +# variable "scripts" { +# description = "Modify default script behaviours" +# type = object({ +# interpreter = optional(string) +# additional_environment_variables = optional(map(string)) +# update_alias_script = optional(object({ +# interpreter = optional(string) +# path = optional(string) +# additional_environment_variables = optional(map(string)) +# })) +# }) +# default = {} +# } diff --git a/deploy/modules/tf-yc-function/versions.tf b/deploy/modules/tf-yc-function/versions.tf new file mode 100644 index 0000000..c2e8dba --- /dev/null +++ b/deploy/modules/tf-yc-function/versions.tf @@ -0,0 +1,14 @@ +terraform { + required_version = ">= 1.7.1" + + required_providers { + yandex = { + source = "yandex-cloud/yandex" + version = ">= 0.107.0" + } + + # terraform = { + # source = "terraform.io/builtin/terraform" + # } + } +} diff --git a/deploy/modules/tf-yc-open-next-s3-assets/main.tf b/deploy/modules/tf-yc-open-next-s3-assets/main.tf new file mode 100644 index 0000000..92e843b --- /dev/null +++ b/deploy/modules/tf-yc-open-next-s3-assets/main.tf @@ -0,0 +1,44 @@ +locals { + assets_folder = "${var.folder_path}/assets" + cache_folder = "${var.folder_path}/cache" + content_type_lookup = { + css = "text/css" + woff2 = "font/woff2" + js = "text/javascript" + svg = "image/svg+xml" + ico = "image/x-icon" + html = "text/html" + htm = "text/html" + json = "application/json" + png = "image/png" + jpg = "image/jpeg" + jpeg = "image/jpeg" + } +} + +# Static Assets +resource "yandex_storage_object" "assets" { + for_each = fileset(local.assets_folder, "**") + + bucket = var.bucket_name + key = "assets/${each.value}" + source = "${local.assets_folder}/${each.value}" + source_hash = filemd5("${local.assets_folder}/${each.value}") + # cache_control = length(regexall(var.cache_control_immutable_assets_regex, file)) > 0 ? "public,max-age=31536000,immutable" : "public,max-age=0,s-maxage=31536000,must-revalidate" + content_type = lookup(local.content_type_lookup, split(".", each.value)[length(split(".", each.value)) - 1], "text/plain") + access_key = var.access_key + secret_key = var.secret_key +} + +# Cached Files +resource "yandex_storage_object" "cache" { + for_each = fileset(local.cache_folder, "**") + + bucket = var.bucket_name + key = "cache/${each.value}" + source = "${local.cache_folder}/${each.value}" + source_hash = filemd5("${local.cache_folder}/${each.value}") + content_type = lookup(local.content_type_lookup, split(".", each.value)[length(split(".", each.value)) - 1], "text/plain") + access_key = var.access_key + secret_key = var.secret_key +} diff --git a/deploy/modules/tf-yc-open-next-s3-assets/ouputs.tf b/deploy/modules/tf-yc-open-next-s3-assets/ouputs.tf new file mode 100644 index 0000000..5b86749 --- /dev/null +++ b/deploy/modules/tf-yc-open-next-s3-assets/ouputs.tf @@ -0,0 +1,24 @@ +# output "cloudfront_asset_mappings" { +# description = "Assets to be added as behaviours in CloudFront" +# value = sort(distinct([for file in local.assets : "/${file.path_parts[0]}${length(file.path_parts) > 1 ? "/*" : ""}" if !contains(["_next", "BUILD_ID"], file.path_parts[0])])) +# } + +# output "file_hashes" { +# description = "List of md5 hashes for each file uploaded" +# value = concat([for asset in local.assets : asset.md5], [for cache in local.cache_assets : cache.md5], [for additional_file in local.additional_files : additional_file.md5]) +# } + +# output "asset_key_prefix" { +# description = "The prefix for assets in the bucket" +# value = local.asset_key_prefix +# } + +# output "origin_asset_path" { +# description = "The origin path for assets in the bucket" +# value = local.origin_asset_path +# } + +# output "cache_key_prefix" { +# description = "The prefix for assets in the bucket" +# value = local.cache_key_prefix +# } diff --git a/deploy/modules/tf-yc-open-next-s3-assets/variables.tf b/deploy/modules/tf-yc-open-next-s3-assets/variables.tf new file mode 100644 index 0000000..1e23a66 --- /dev/null +++ b/deploy/modules/tf-yc-open-next-s3-assets/variables.tf @@ -0,0 +1,29 @@ +variable "folder_path" { + description = "The path to the open next artifacts" + type = string +} + +variable "cache_control_immutable_assets_regex" { + description = "Regex to set public,max-age=31536000,immutable on immutable resources" + type = string + default = "^.*(\\.next)$" +} + +variable "bucket_name" { + description = "The name of the bucket to upload files to" + type = string +} + +variable "access_key" { + description = "(Optional) The access key to use when applying changes. If omitted, storage_access_key specified in config is used." + type = string + default = null + +} + +variable "secret_key" { + description = "(Optional) The secret key to use when applying changes. If omitted, storage_secret_key specified in config is used." + type = string + sensitive = true + default = null +} diff --git a/deploy/modules/tf-yc-open-next-s3-assets/versions.tf b/deploy/modules/tf-yc-open-next-s3-assets/versions.tf new file mode 100644 index 0000000..293c0bf --- /dev/null +++ b/deploy/modules/tf-yc-open-next-s3-assets/versions.tf @@ -0,0 +1,15 @@ +terraform { + required_version = ">= 1.7.1" + + required_providers { + yandex = { + source = "yandex-cloud/yandex" + version = ">= 0.107.0" + } + } + + # terraform = { + # source = "terraform.io/builtin/terraform" + # } +} + diff --git a/deploy/modules/tf-yc-open-next/apigw.yaml b/deploy/modules/tf-yc-open-next/apigw.yaml new file mode 100644 index 0000000..07e1a2e --- /dev/null +++ b/deploy/modules/tf-yc-open-next/apigw.yaml @@ -0,0 +1,41 @@ +openapi: 3.0.0 +info: + title: Profile + version: 1.0.0 +paths: + /_next/static/{file+}: + get: + parameters: + - name: file + in: path + required: true + schema: + type: string + x-yc-apigateway-integration: + type: object_storage + bucket: ${bucket_name} + object: 'assets/_next/static/{file}' + service_account_id: ${bucket_service_account_id} + /_next/image: + x-yc-apigateway-any-method: + x-yc-apigateway-integration: + type: cloud_functions + function_id: ${image_optimization_function_id} + service_account_id: ${image_optimization_function_service_account_id} + payload_format_version: '1.0' + /{proxy+}: + x-yc-apigateway-any-method: + x-yc-apigateway-integration: + type: cloud_functions + function_id: ${server_function_id} + service_account_id: ${server_function_service_account_id} + payload_format_version: '1.0' + parameters: + - explode: false + in: path + name: proxy + required: false + schema: + default: '-' + type: string + style: simple diff --git a/deploy/modules/tf-yc-open-next/main.tf b/deploy/modules/tf-yc-open-next/main.tf new file mode 100644 index 0000000..83dd543 --- /dev/null +++ b/deploy/modules/tf-yc-open-next/main.tf @@ -0,0 +1,446 @@ +locals { + # should_create_isr_tag_mapping = var.tag_mapping_db.deployment == "CREATE" + # isr_tag_mapping_file_path = "${var.folder_path}/dynamodb-provider/dynamodb-cache.json" + # isr_tag_mapping = local.should_create_isr_tag_mapping && fileexists(local.isr_tag_mapping_file_path) ? jsondecode(file(local.isr_tag_mapping_file_path)) : [] + # isr_tag_mapping_with_tf_key = [for tag_mapping in local.isr_tag_mapping : merge(tag_mapping, { tf_key = length([for isr_tag_mapping in local.isr_tag_mapping : isr_tag_mapping if isr_tag_mapping.tag.S == tag_mapping.tag.S]) > 1 ? "${tag_mapping.tag.S}-${tag_mapping.path.S}" : tag_mapping.tag.S })] + # isr_tag_mapping_db_name = local.should_create_isr_tag_mapping ? one(yandex_ydb_table.isr_table[*].path) : null + # isr_tag_mapping_db_arn = local.should_create_isr_tag_mapping ? one(yandex_ydb_table.isr_table[*].arn) : null + + should_create_website_bucket = var.website_bucket.deployment == "CREATE" + + # website_bucket_arn = local.should_create_website_bucket ? one(aws_s3_bucket.bucket[*].arn) : var.website_bucket.arn + website_bucket_name = local.should_create_website_bucket ? one(module.bucket[*].bucket_name) : var.website_bucket.name + # website_bucket_region = local.should_create_website_bucket ? data.aws_region.current.name : var.website_bucket.region + # website_bucket_domain_name = local.should_create_website_bucket ? one(aws_s3_bucket.bucket[*].bucket_regional_domain_name) : var.website_bucket.domain_name + + # create_distribution = var.distribution.deployment == "CREATE" + + prefix = var.prefix == null ? "" : "${var.prefix}-" + suffix = var.suffix == null ? "" : "-${var.suffix}" + + server_at_edge = var.server_function.backend_deployment_type == "EDGE_LAMBDA" + server_function_env_variables = merge( + { + "X_YCF_NO_RUNTIME_POOL" : 1, + "AWS_ENDPOINT_URL" = "https://storage.yandexcloud.net", + "AWS_REGION" = "ru-central1", + "AWS_ACCESS_KEY_ID" = one(module.bucket[*].storage_admin_access_key) + "AWS_SECRET_ACCESS_KEY" = one(module.bucket[*].storage_admin_secret_key), + "CACHE_BUCKET_NAME" : local.website_bucket_name, + "CACHE_BUCKET_REGION" : "ru-central1", + "CACHE_BUCKET_KEY_PREFIX" : "cache", + # "REVALIDATION_QUEUE_URL" : aws_sqs_queue.revalidation_queue.url, + # "REVALIDATION_QUEUE_REGION" : data.aws_region.current.name, + }, + # local.isr_tag_mapping_db_name != null ? { "CACHE_DYNAMO_TABLE" : local.isr_tag_mapping_db_name } : {}, + var.server_function.additional_environment_variables + ) +} + +# S3 + +module "bucket" { + count = local.should_create_website_bucket ? 1 : 0 + + source = "github.com/terraform-yc-modules/terraform-yc-s3" + acl = "public-read" + bucket_name = "${local.prefix}website-bucket${local.suffix}" + force_destroy = var.website_bucket.force_destroy + + # anonymous_access_flags = { + # read = true + # list = false + # config_read = false + # } +} + +# resource "aws_s3_bucket_policy" "bucket_policy" { +# bucket = one(aws_s3_bucket.bucket[*].id) +# policy = jsonencode({ +# "Version" : "2012-10-17", +# "Statement" : [ +# { +# "Principal" : { +# "Service" : "cloudfront.amazonaws.com" +# }, +# "Action" : [ +# "s3:GetObject" +# ], +# "Resource" : "${one(aws_s3_bucket.bucket[*].arn)}/*", +# "Effect" : "Allow", +# "Condition" : { +# "StringEquals" : { +# "AWS:SourceArn" : compact([try(one(module.public_resources[*].arn), null), try(one(module.public_resources[*].staging_arn), null)]) +# } +# } +# } +# ] +# }) +# } + +module "s3_assets" { + source = "../tf-yc-open-next-s3-assets" + + bucket_name = local.website_bucket_name + folder_path = var.folder_path + cache_control_immutable_assets_regex = var.cache_control_immutable_assets_regex + + access_key = one(module.bucket[*].storage_admin_access_key) + secret_key = one(module.bucket[*].storage_admin_secret_key) +} + +# Server Function + +# As lambda@edge does not support environment variables, the module will injected them at the top of the server code prior to the code being uploaded to AWS, credit to SST for the inspiration behind this. https://github.com/sst/sst/blob/3b792053d90c49d9ca693308646a3389babe9ceb/packages/sst/src/constructs/EdgeFunction.ts#L193 +# resource "local_file" "lambda_at_edge_modifications" { +# count = local.server_at_edge && try(var.server_function.function_code.zip, null) == null && try(var.server_function.function_code.s3, null) == null ? 1 : 0 + +# content = "process.env = { ...process.env, ...${jsonencode(local.server_function_env_variables)} };\r\n${file("${var.folder_path}/server-function/index.mjs")}" +# filename = "${var.folder_path}/server-function/index.js" +# } + +module "server_function" { + source = "../tf-yc-function" + + function_name = "server-function" + function_code = { + zip = try(var.server_function.function_code.zip, null) + s3 = try(var.server_function.function_code.s3, null) + } + + runtime = var.server_function.runtime + handler = try(var.server_function.function_code.handler, "index.handler") + + memory_size = var.server_function.memory_size + timeout = var.server_function.timeout + + # additional_iam_policies = var.server_function.additional_iam_policies + # iam_policy_statements = [ + # { + # "Action" : [ + # "s3:GetObject*", + # "s3:GetBucket*", + # "s3:List*", + # "s3:DeleteObject*", + # "s3:PutObject", + # "s3:PutObjectLegalHold", + # "s3:PutObjectRetention", + # "s3:PutObjectTagging", + # "s3:PutObjectVersionTagging", + # "s3:Abort*" + # ], + # "Resource" : [ + # local.website_bucket_arn, + # "${local.website_bucket_arn}/*" + # ], + # "Effect" : "Allow" + # }, + # { + # "Action" : [ + # "sqs:SendMessage" + # ], + # "Resource" : aws_sqs_queue.revalidation_queue.arn, + # "Effect" : "Allow" + # }, + # { + # "Action" : [ + # "dynamodb:GetItem", + # "dynamodb:Query" + # ], + # "Resource" : [ + # local.isr_tag_mapping_db_arn, + # "${local.isr_tag_mapping_db_arn}/index/*" + # ], + # "Effect" : "Allow" + # } + # ] + + environment_variables = local.server_at_edge ? {} : local.server_function_env_variables + + # architecture = try(coalesce(var.server_function.function_architecture, var.function_architecture), null) + # cloudwatch_log = try(coalesce(var.server_function.cloudwatch_log, var.cloudwatch_log), null) + # iam = try(coalesce(var.server_function.iam, var.iam), null) + # vpc = try(coalesce(var.server_function.vpc, var.vpc), null) + + prefix = var.prefix + suffix = var.suffix + + # aliases = { + # create = true + # names = local.aliases + # alias_to_update = local.staging_alias + # } + + run_at_edge = local.server_at_edge + + # function_url = { + # create = local.server_at_edge == false + # authorization_type = var.server_function.backend_deployment_type == "REGIONAL_LAMBDA_WITH_AUTH_LAMBDA" ? "AWS_IAM" : "NONE" + # enable_streaming = var.server_function.enable_streaming + # } + + # scripts = var.scripts + + # providers = { + # aws = aws.server_function + # aws.iam = aws.iam + # } +} + +# Warmer Function + +# module "warmer_function" { +# for_each = toset(try(var.warmer_function.warm_staging.enabled, false) && var.continuous_deployment.deployment != "NONE" ? local.aliases : var.warmer_function.enabled ? [local.production_alias] : []) +# source = "../tf-aws-lambda" + +# function_name = "${each.value}-warmer-function" +# function_code = { +# zip = try(var.warmer_function.function_code.s3, null) == null ? coalesce(try(var.warmer_function.function_code.zip, null), { +# path = one(data.archive_file.warmer_function[*].output_path) +# hash = one(data.archive_file.warmer_function[*].output_base64sha256) +# }) : null +# s3 = try(var.warmer_function.function_code.s3, null) +# } + +# runtime = var.warmer_function.runtime +# handler = try(var.warmer_function.function_code.handler, "index.handler") + +# memory_size = var.warmer_function.memory_size +# timeout = var.warmer_function.timeout + +# environment_variables = merge({ +# "FUNCTION_NAME" : "${module.server_function.name}:${each.value}", +# "CONCURRENCY" : each.value == local.production_alias ? var.warmer_function.concurrency : coalesce(try(var.warmer_function.warm_staging.concurrency, null), var.warmer_function.concurrency) +# }, var.warmer_function.additional_environment_variables) + +# additional_iam_policies = var.warmer_function.additional_iam_policies +# iam_policy_statements = [ +# { +# "Action" : [ +# "lambda:InvokeFunction" +# ], +# "Resource" : "${module.server_function.arn}:${each.value}", +# "Effect" : "Allow" +# } +# ] + +# architecture = try(coalesce(var.warmer_function.function_architecture, var.function_architecture), null) +# cloudwatch_log = try(coalesce(var.warmer_function.cloudwatch_log, var.cloudwatch_log, null)) +# iam = try(coalesce(var.warmer_function.iam, var.iam), null) +# vpc = try(coalesce(var.warmer_function.vpc, var.vpc), null) + +# prefix = var.prefix +# suffix = var.suffix + +# function_url = { +# create = false +# } + +# schedule = var.warmer_function.schedule +# timeouts = var.warmer_function.timeouts + +# scripts = var.scripts + +# providers = { +# aws.iam = aws.iam +# } +# } + +# Image Optimization Function + +module "image_optimization_function" { + count = var.image_optimization_function.create ? 1 : 0 + source = "../tf-yc-function" + + function_name = "image-optimization-function" + function_code = { + zip = try(var.image_optimization_function.function_code.zip, null) + s3 = try(var.image_optimization_function.function_code.s3, null) + } + + runtime = var.image_optimization_function.runtime + handler = try(var.image_optimization_function.function_code.handler, "index.handler") + + memory_size = var.image_optimization_function.memory_size + timeout = var.image_optimization_function.timeout + + + environment_variables = merge({ + "AWS_ENDPOINT_URL" = "https://storage.yandexcloud.net", + "AWS_REGION" = "ru-central1", + "AWS_ACCESS_KEY_ID" = one(module.bucket[*].storage_admin_access_key) + "AWS_SECRET_ACCESS_KEY" = one(module.bucket[*].storage_admin_secret_key), + "BUCKET_NAME" = local.website_bucket_name, + "BUCKET_KEY_PREFIX" = "assets" + }, var.image_optimization_function.additional_environment_variables) + + # additional_iam_policies = var.image_optimization_function.additional_iam_policies + # iam_policy_statements = [ + # { + # "Action" : [ + # "s3:GetObject" + # ], + # "Resource" : "${local.website_bucket_arn}/*", + # "Effect" : "Allow" + # } + # ] + + # architecture = try(coalesce(var.image_optimization_function.function_architecture, var.function_architecture), null) + # cloudwatch_log = try(coalesce(var.image_optimization_function.cloudwatch_log, var.cloudwatch_log), null) + # iam = try(coalesce(var.image_optimization_function.iam, var.iam), null) + # vpc = try(coalesce(var.image_optimization_function.vpc, var.vpc), null) + + prefix = var.prefix + suffix = var.suffix + + # function_url = { + # create = true + # authorization_type = var.image_optimization_function.backend_deployment_type == "REGIONAL_LAMBDA_WITH_AUTH_LAMBDA" ? "AWS_IAM" : "NONE" + # } + + # aliases = { + # create = true + # names = local.aliases + # alias_to_update = local.staging_alias + # } + + # timeouts = var.image_optimization_function.timeouts + + # scripts = var.scripts + + # providers = { + # aws.iam = aws.iam + # } +} + +# Revalidation Function + +# module "revalidation_function" { +# source = "../tf-aws-lambda" + +# function_name = "revalidation-function" +# function_code = { +# zip = try(var.revalidation_function.function_code.s3, null) == null ? coalesce(try(var.revalidation_function.function_code.zip, null), { +# path = one(data.archive_file.revalidation_function[*].output_path) +# hash = one(data.archive_file.revalidation_function[*].output_base64sha256) +# }) : null +# s3 = try(var.revalidation_function.function_code.s3, null) +# } + +# runtime = var.revalidation_function.runtime +# handler = try(var.revalidation_function.function_code.handler, "index.handler") + +# memory_size = var.revalidation_function.memory_size +# timeout = var.revalidation_function.timeout + +# environment_variables = var.revalidation_function.additional_environment_variables + +# additional_iam_policies = var.revalidation_function.additional_iam_policies +# iam_policy_statements = [ +# { +# "Action" : [ +# "sqs:ReceiveMessage", +# "sqs:ChangeMessageVisibility", +# "sqs:GetQueueUrl", +# "sqs:DeleteMessage", +# "sqs:GetQueueAttributes" +# ], +# "Resource" : aws_sqs_queue.revalidation_queue.arn, +# "Effect" : "Allow" +# } +# ] + +# architecture = try(coalesce(var.revalidation_function.function_architecture, var.function_architecture), null) +# cloudwatch_log = try(coalesce(var.revalidation_function.cloudwatch_log, var.cloudwatch_log), null) +# iam = try(coalesce(var.revalidation_function.iam, var.iam), null) +# vpc = try(coalesce(var.revalidation_function.vpc, var.vpc), null) + +# prefix = var.prefix +# suffix = var.suffix + +# scripts = var.scripts + +# providers = { +# aws.iam = aws.iam +# } +# } + +# SQS + +# resource "aws_sqs_queue" "revalidation_queue" { +# name = "${local.prefix}isr-queue${local.suffix}.fifo" +# fifo_queue = true +# content_based_deduplication = true +# } + +# resource "aws_lambda_event_source_mapping" "revalidation_queue_source" { +# event_source_arn = aws_sqs_queue.revalidation_queue.arn +# function_name = module.revalidation_function.arn +# } + +# DynamoDB + +# resource "yandex_ydb_database_serverless" "isr_database" { +# count = local.should_create_isr_tag_mapping ? 1 : 0 +# name = "${local.prefix}isr-tag-mapping${local.suffix}" +# folder_id = data.yandex_client_config.client.folder_id + +# deletion_protection = true +# } + +# resource "yandex_ydb_table" "isr_table" { +# count = local.should_create_isr_tag_mapping ? 1 : 0 +# path = "isr" +# connection_string = one(yandex_ydb_database_serverless.isr_database[*].ydb_full_endpoint) + +# column { +# name = "tag" +# type = "Utf8" +# } +# column { +# name = "path" +# type = "Utf8" +# } +# column { +# name = "revalidatedAt" +# type = "Int32" +# } + +# primary_key = ["tag"] +# } + +# resource "terraform_data" "isr_table_item" { +# for_each = { for item in local.isr_tag_mapping_with_tf_key : item.tf_key => item } + +# provisioner "local-exec" { +# command = "/bin/bash ${path.module}/scripts/save-item-to-dynamo.sh" + +# environment = { +# "ENDPOINT" = one(yandex_ydb_database_serverless.isr_database[*].document_api_endpoint) +# "TABLE_NAME" = local.isr_tag_mapping_db_name +# "ITEM" = jsonencode({ for name, value in each.value : name => value if name != "tf_key" }) +# } +# } +# } + +data "yandex_client_config" "client" {} + +resource "yandex_api_gateway" "this" { + name = "${local.prefix}server-gw${local.suffix}" + # custom_domains { + # fqdn = "test.example.com" + # certificate_id = "" + # } + log_options { + folder_id = data.yandex_client_config.client.folder_id + min_level = "ERROR" + } + spec = templatefile("${path.module}/apigw.yaml", { + bucket_name = local.website_bucket_name, + bucket_service_account_id = one(module.bucket[*].storage_admin_service_account_id) + server_function_id = module.server_function.id, + server_function_service_account_id = module.server_function.function_service_account_id + image_optimization_function_id = one(module.image_optimization_function[*].id) + image_optimization_function_service_account_id = one(module.image_optimization_function[*].function_service_account_id) + }) +} diff --git a/deploy/modules/tf-yc-open-next/outputs.tf b/deploy/modules/tf-yc-open-next/outputs.tf new file mode 100644 index 0000000..44c17b1 --- /dev/null +++ b/deploy/modules/tf-yc-open-next/outputs.tf @@ -0,0 +1,54 @@ +# output "alias_details" { +# description = "The alias config" +# value = var.aliases != null ? null : one(module.open_next_aliases[*].updated_alias_mapping) +# } + +# output "bucket_name" { +# description = "The name of the s3 bucket" +# value = local.should_create_website_bucket ? one(aws_s3_bucket.bucket[*].id) : null +# } + +# output "bucket_arn" { +# description = "The ARN of the s3 bucket" +# value = local.should_create_website_bucket ? one(aws_s3_bucket.bucket[*].arn) : null +# } + +# output "zone_config" { +# description = "The zone config" +# value = local.zone +# } + +# output "behaviours" { +# description = "The behaviours for the zone" +# value = local.behaviours +# } + +# output "custom_error_responses" { +# description = "The custom error responses for the zone" +# value = local.custom_error_responses +# } + +# output "cloudfront_url" { +# description = "The URL for the cloudfront distribution" +# value = local.create_distribution ? one(module.public_resources[*].url) : null +# } + +# output "cloudfront_distribution_id" { +# description = "The ID for the cloudfront distribution" +# value = local.create_distribution ? one(module.public_resources[*].id) : null +# } + +# output "cloudfront_staging_distribution_id" { +# description = "The ID for the cloudfront staging distribution" +# value = local.create_distribution ? one(module.public_resources[*].staging_id) : null +# } + +# output "alternate_domain_names" { +# description = "Extra CNAMEs (alternate domain names) associated with the cloudfront distribution" +# value = local.create_distribution ? one(module.public_resources[*].aliases) : null +# } + + +output "api_gateway_domain" { + value = "https://${yandex_api_gateway.this.domain}" +} diff --git a/deploy/modules/tf-yc-open-next/scripts/save-item-to-dynamo.sh b/deploy/modules/tf-yc-open-next/scripts/save-item-to-dynamo.sh new file mode 100644 index 0000000..f910224 --- /dev/null +++ b/deploy/modules/tf-yc-open-next/scripts/save-item-to-dynamo.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +## Setup + +set -e + +## Validation + +exitcode=0 + +if [ ! -x "$(command -v aws)" ]; then + exitcode=1 + echo "Error: AWS CLI not found. See https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html to install the CLI" +fi + +if [ -z $TABLE_NAME ]; then + exitcode=1 + echo "Error: table name was not supplied" +fi + +if [ -z $ITEM ]; then + exitcode=1 + echo "Error: item was not supplied" +fi + +if [ -z $ENDPOINT ]; then + exitcode=1 + echo "Error: endpoint was not supplied" +fi + +if [ $exitcode -ne 0 ]; then + exit $exitcode +fi + +## Script + +aws dynamodb put-item --table-name $TABLE_NAME --item $ITEM --endpoint $ENDPOINT \ No newline at end of file diff --git a/deploy/modules/tf-yc-open-next/variables.tf b/deploy/modules/tf-yc-open-next/variables.tf new file mode 100644 index 0000000..b569d37 --- /dev/null +++ b/deploy/modules/tf-yc-open-next/variables.tf @@ -0,0 +1,355 @@ +variable "prefix" { + description = "A prefix which will be attached to the resource name to ensure resources are random" + type = string + default = null +} + +variable "suffix" { + description = "A suffix which will be attached to the resource name to ensure resources are random" + type = string + default = null +} + +# variable "s3_folder_prefix" { +# description = "An optional folder to store files under" +# type = string +# default = null +# } + +# variable "zone_suffix" { +# description = "An optional zone suffix to add to the assets and cache folder to allow files to be loaded correctly" +# type = string +# default = null +# } + +variable "folder_path" { + description = "The path to the open next artifacts" + type = string + default = "./.open-next" +} + +# variable "s3_exclusion_regex" { +# description = "A regex of files to exclude from the s3 copy" +# type = string +# default = null +# } + +# variable "function_architecture" { +# description = "The default instruction set architecture for the lambda functions. This can be overridden for each function" +# type = string +# default = "arm64" +# } + +# variable "iam" { +# description = "The default IAM configuration. This can be overridden for each function" +# type = object({ +# path = optional(string, "/") +# permissions_boundary = optional(string) +# }) +# default = {} +# } + +# variable "cloudwatch_log" { +# description = "The default cloudwatch log group. This can be overridden for each function" +# type = object({ +# retention_in_days = number +# }) +# default = { +# retention_in_days = 7 +# } +# } + +# variable "vpc" { +# description = "The default VPC configuration for the lambda resources. This can be overridden for each function" +# type = object({ +# security_group_ids = list(string), +# subnet_ids = list(string) +# }) +# default = null +# } + +# variable "aliases" { +# description = "The production and staging aliases to use" +# type = object({ +# production = string +# staging = string +# }) +# default = null +# } + +variable "cache_control_immutable_assets_regex" { + description = "Regex to set public,max-age=31536000,immutable on immutable resources" + type = string + default = "^.*(\\.next)$" +} + +# variable "warmer_function" { +# description = "Configuration for the warmer function" +# type = object({ +# enabled = optional(bool, false) +# warm_staging = optional(object({ +# enabled = optional(bool, false) +# concurrency = optional(number) +# })) +# function_code = optional(object({ +# handler = optional(string, "index.handler") +# zip = optional(object({ +# path = string +# hash = string +# })) +# s3 = optional(object({ +# bucket = string +# key = string +# object_version = optional(string) +# })) +# })) +# runtime = optional(string, "nodejs20.x") +# concurrency = optional(number, 20) +# timeout = optional(number, 15 * 60) // 15 minutes +# memory_size = optional(number, 1024) +# function_architecture = optional(string) +# schedule = optional(string, "rate(5 minutes)") +# additional_environment_variables = optional(map(string), {}) +# additional_iam_policies = optional(list(object({ +# name = string, +# arn = optional(string) +# policy = optional(string) +# })), []) +# vpc = optional(object({ +# security_group_ids = list(string), +# subnet_ids = list(string) +# })) +# iam = optional(object({ +# path = optional(string) +# permissions_boundary = optional(string) +# })) +# cloudwatch_log = optional(object({ +# retention_in_days = number +# })) +# timeouts = optional(object({ +# create = optional(string) +# update = optional(string) +# delete = optional(string) +# }), {}) +# }) +# default = {} +# } + +variable "server_function" { + description = "Configuration for the server function" + type = object({ + function_code = optional(object({ + # open-next exports function in index.mjs as handler + handler = optional(string, "index.handler") + zip = optional(object({ + path = string + hash = string + })) + s3 = optional(object({ + bucket = string + key = string + object_version = optional(string) + })) + })) + # enable_streaming = optional(bool, false) + runtime = optional(string, "nodejs18") + backend_deployment_type = optional(string, "REGIONAL_LAMBDA") + timeout = optional(number, 10) + memory_size = optional(number, 1024) + # function_architecture = optional(string) + additional_environment_variables = optional(map(string), {}) + # additional_iam_policies = optional(list(object({ + # name = string, + # arn = optional(string) + # policy = optional(string) + # })), []) + # vpc = optional(object({ + # security_group_ids = list(string), + # subnet_ids = list(string) + # })) + # iam = optional(object({ + # path = optional(string) + # permissions_boundary = optional(string) + # })) + # cloudwatch_log = optional(object({ + # retention_in_days = number + # })) + # timeouts = optional(object({ + # create = optional(string) + # update = optional(string) + # delete = optional(string) + # }), {}) + }) + default = {} + + # validation { + # condition = contains(["REGIONAL_LAMBDA_WITH_AUTH_LAMBDA", "REGIONAL_LAMBDA", "EDGE_LAMBDA"], var.server_function.backend_deployment_type) + # error_message = "The server function backend deployment type can be one of REGIONAL_LAMBDA_WITH_AUTH_LAMBDA, REGIONAL_LAMBDA or EDGE_LAMBDA" + # } +} + +variable "image_optimization_function" { + description = "Configuration for the image optimization function" + type = object({ + create = optional(bool, true) + function_code = optional(object({ + handler = optional(string, "index.handler") + zip = optional(object({ + path = string + hash = string + })) + s3 = optional(object({ + bucket = string + key = string + object_version = optional(string) + hash = string + })) + })) + runtime = optional(string, "nodejs18") + backend_deployment_type = optional(string, "REGIONAL_LAMBDA") + timeout = optional(number, 25) + memory_size = optional(number, 1536) + additional_environment_variables = optional(map(string), {}) + # function_architecture = optional(string) + # additional_iam_policies = optional(list(object({ + # name = string, + # arn = optional(string) + # policy = optional(string) + # })), []) + # vpc = optional(object({ + # security_group_ids = list(string), + # subnet_ids = list(string) + # })) + # iam = optional(object({ + # path = optional(string) + # permissions_boundary = optional(string) + # })) + # cloudwatch_log = optional(object({ + # retention_in_days = number + # })) + # timeouts = optional(object({ + # create = optional(string) + # update = optional(string) + # delete = optional(string) + # }), {}) + }) + default = {} + + # validation { + # condition = contains(["REGIONAL_LAMBDA_WITH_AUTH_LAMBDA", "REGIONAL_LAMBDA"], var.image_optimisation_function.backend_deployment_type) + # error_message = "The server function backend deployment type can be one of REGIONAL_LAMBDA_WITH_AUTH_LAMBDA or REGIONAL_LAMBDA" + # } +} + +# variable "revalidation_function" { +# description = "Configuration for the revalidation function" +# type = object({ +# function_code = optional(object({ +# handler = optional(string, "index.handler") +# zip = optional(object({ +# path = string +# hash = string +# })) +# s3 = optional(object({ +# bucket = string +# key = string +# object_version = optional(string) +# })) +# })) +# runtime = optional(string, "nodejs20.x") +# timeout = optional(number, 25) +# memory_size = optional(number, 1536) +# additional_environment_variables = optional(map(string), {}) +# function_architecture = optional(string) +# additional_iam_policies = optional(list(object({ +# name = string, +# arn = optional(string) +# policy = optional(string) +# })), []) +# vpc = optional(object({ +# security_group_ids = list(string), +# subnet_ids = list(string) +# })) +# iam = optional(object({ +# path = optional(string) +# permissions_boundary = optional(string) +# })) +# cloudwatch_log = optional(object({ +# retention_in_days = number +# })) +# timeouts = optional(object({ +# create = optional(string) +# update = optional(string) +# delete = optional(string) +# }), {}) +# }) +# default = {} +# } + +variable "tag_mapping_db" { + description = "Configuration for the ISR tag mapping database" + type = object({ + deployment = optional(string, "CREATE") + revalidate_gsi = optional(object({ + read_capacity = optional(number) + write_capacity = optional(number) + }), {}) + }) + default = {} +} + +variable "website_bucket" { + description = "Configuration for the website S3 bucket" + type = object({ + deployment = optional(string, "CREATE") + create_bucket_policy = optional(bool, true) + force_destroy = optional(bool, false) + arn = optional(string) + region = optional(string) + name = optional(string) + domain_name = optional(string) + }) + default = {} +} + +# variable "domain_config" { +# description = "Configuration for CloudFront distribution domain" +# type = object({ +# evaluate_target_health = optional(bool, true) +# sub_domain = optional(string) +# hosted_zones = list(object({ +# name = string +# id = optional(string) +# private_zone = optional(bool, false) +# })) +# create_route53_entries = optional(bool, true) +# viewer_certificate = optional(object({ +# acm_certificate_arn = string +# ssl_support_method = optional(string, "sni-only") +# minimum_protocol_version = optional(string, "TLSv1.2_2021") +# })) +# }) +# default = null +# } + +# variable "continuous_deployment" { +# description = "Configuration for continuous deployment config for CloudFront" +# type = object({ +# use = optional(bool, true) +# deployment = optional(string, "NONE") +# traffic_config = optional(object({ +# header = optional(object({ +# name = string +# value = string +# })) +# weight = optional(object({ +# percentage = number +# session_stickiness = optional(object({ +# idle_ttl = number +# maximum_ttl = number +# })) +# })) +# })) +# }) +# default = {} +# } diff --git a/deploy/modules/tf-yc-open-next/versions.tf b/deploy/modules/tf-yc-open-next/versions.tf new file mode 100644 index 0000000..c6e1946 --- /dev/null +++ b/deploy/modules/tf-yc-open-next/versions.tf @@ -0,0 +1,24 @@ +terraform { + required_version = ">= 1.7.1" + + required_providers { + archive = { + source = "hashicorp/archive" + version = ">= 2.3.0" + } + + yandex = { + source = "yandex-cloud/yandex" + version = ">= 0.107.0" + } + + local = { + source = "hashicorp/local" + version = ">= 2.4.0" + } + + # terraform = { + # source = "terraform.io/builtin/terraform" + # } + } +} diff --git a/deploy/open-next/main.tf b/deploy/open-next/main.tf new file mode 100644 index 0000000..8afcd28 --- /dev/null +++ b/deploy/open-next/main.tf @@ -0,0 +1,81 @@ +data "archive_file" "server_function" { + type = "zip" + output_path = "${var.folder_path}/server-function.zip" + source_dir = "${var.folder_path}/server-function" + # Ignore package.json because YCloud tries to install packages even if node_modules are present already + excludes = ["package.json"] +} + +data "archive_file" "image_optimization_function" { + type = "zip" + output_path = "${var.folder_path}/image-optimization-function.zip" + source_dir = "${var.folder_path}/image-optimization-function" + # Ignore package.json because YCloud tries to install packages even if node_modules are present already + excludes = ["package.json", "package-lock.json"] +} + +module "bucket" { + source = "github.com/terraform-yc-modules/terraform-yc-s3" + acl = "public-read" + bucket_name = "functions-sources-bucket" + # 50GB + max_size = 53687091200 + storage_admin_service_account = { + name_prefix = "storage-admin" + } + anonymous_access_flags = { + read = true + list = false + config_read = false + } +} + +resource "yandex_storage_object" "server_function_zip" { + bucket = module.bucket.bucket_name + key = replace( + basename(data.archive_file.server_function.output_path), + ".zip", + "-${data.archive_file.server_function.output_md5}.zip" + ) + source = data.archive_file.server_function.output_path + access_key = module.bucket.storage_admin_access_key + secret_key = module.bucket.storage_admin_secret_key +} + +resource "yandex_storage_object" "image_optimization_function_zip" { + bucket = module.bucket.bucket_name + key = replace( + basename(data.archive_file.image_optimization_function.output_path), + ".zip", + "-${data.archive_file.image_optimization_function.output_md5}.zip" + ) + source = data.archive_file.image_optimization_function.output_path + access_key = module.bucket.storage_admin_access_key + secret_key = module.bucket.storage_admin_secret_key +} + +module "single_zone" { + source = "../modules/tf-yc-open-next" + folder_path = var.folder_path + website_bucket = { + force_destroy = true + } + server_function = { + function_code = { + s3 = { + bucket = yandex_storage_object.server_function_zip.bucket + key = yandex_storage_object.server_function_zip.id + hash = data.archive_file.server_function.output_base64sha256 + } + } + } + image_optimization_function = { + function_code = { + s3 = { + bucket = yandex_storage_object.image_optimization_function_zip.bucket + key = yandex_storage_object.image_optimization_function_zip.id + hash = data.archive_file.image_optimization_function.output_base64sha256 + } + } + } +} diff --git a/deploy/open-next/outputs.tf b/deploy/open-next/outputs.tf new file mode 100644 index 0000000..083748f --- /dev/null +++ b/deploy/open-next/outputs.tf @@ -0,0 +1,3 @@ +output "api_gateway_domain" { + value = module.single_zone.api_gateway_domain +} diff --git a/deploy/open-next/variables.tf b/deploy/open-next/variables.tf new file mode 100644 index 0000000..5143fc2 --- /dev/null +++ b/deploy/open-next/variables.tf @@ -0,0 +1,842 @@ +variable "prefix" { + description = "A prefix which will be attached to the resource name to ensure resources are random" + type = string + default = "" +} + +variable "suffix" { + description = "A suffix which will be attached to the resource name to ensure resources are random" + type = string + default = "" +} + +# variable "s3_folder_prefix" { +# description = "An optional folder to store files under" +# type = string +# default = null +# } + +# variable "zone_suffix" { +# description = "An optional zone suffix to add to the assets and cache folder to allow files to be loaded correctly" +# type = string +# default = null +# } + +variable "folder_path" { + description = "The path to the open next artifacts" + type = string + default = "./.open-next" +} + +# variable "s3_exclusion_regex" { +# description = "A regex of files to exclude from the s3 copy" +# type = string +# default = null +# } + +# variable "function_architecture" { +# description = "The default instruction set architecture for the lambda functions. This can be overridden for each function" +# type = string +# default = "arm64" +# } + +# variable "iam" { +# description = "The default IAM configuration. This can be overridden for each function" +# type = object({ +# path = optional(string, "/") +# permissions_boundary = optional(string) +# }) +# default = {} +# } + +# variable "cloudwatch_log" { +# description = "The default cloudwatch log group. This can be overridden for each function" +# type = object({ +# retention_in_days = number +# }) +# default = { +# retention_in_days = 7 +# } +# } + +# variable "vpc" { +# description = "The default VPC configuration for the lambda resources. This can be overridden for each function" +# type = object({ +# security_group_ids = list(string), +# subnet_ids = list(string) +# }) +# default = null +# } + +# variable "aliases" { +# description = "The production and staging aliases to use" +# type = object({ +# production = string +# staging = string +# }) +# default = null +# } + +# variable "cache_control_immutable_assets_regex" { +# description = "Regex to set public,max-age=31536000,immutable on immutable resources" +# type = string +# default = "^.*(\\.next)$" +# } + +# variable "content_types" { +# description = "The MIME type mapping and default for artefacts generated by Open Next" +# type = object({ +# mapping = optional(map(string), { +# "svg" = "image/svg+xml", +# "js" = "application/javascript", +# "css" = "text/css", +# "html" = "text/html" +# }) +# default = optional(string, "binary/octet-stream") +# }) +# default = {} +# } + +# variable "warmer_function" { +# description = "Configuration for the warmer function" +# type = object({ +# enabled = optional(bool, false) +# warm_staging = optional(object({ +# enabled = optional(bool, false) +# concurrency = optional(number) +# })) +# function_code = optional(object({ +# handler = optional(string, "index.handler") +# zip = optional(object({ +# path = string +# hash = string +# })) +# s3 = optional(object({ +# bucket = string +# key = string +# object_version = optional(string) +# })) +# })) +# runtime = optional(string, "nodejs20.x") +# concurrency = optional(number, 20) +# timeout = optional(number, 15 * 60) // 15 minutes +# memory_size = optional(number, 1024) +# function_architecture = optional(string) +# schedule = optional(string, "rate(5 minutes)") +# additional_environment_variables = optional(map(string), {}) +# additional_iam_policies = optional(list(object({ +# name = string, +# arn = optional(string) +# policy = optional(string) +# })), []) +# vpc = optional(object({ +# security_group_ids = list(string), +# subnet_ids = list(string) +# })) +# iam = optional(object({ +# path = optional(string) +# permissions_boundary = optional(string) +# })) +# cloudwatch_log = optional(object({ +# retention_in_days = number +# })) +# timeouts = optional(object({ +# create = optional(string) +# update = optional(string) +# delete = optional(string) +# }), {}) +# }) +# default = {} +# } + +variable "server_function" { + description = "Configuration for the server function" + type = object({ + function_code = optional(object({ + # open-next exports function in index.mjs as handler + handler = optional(string, "index.handler") + zip = optional(object({ + path = string + hash = string + })) + s3 = optional(object({ + bucket = string + key = string + object_version = optional(string) + })) + })) + # enable_streaming = optional(bool, false) + runtime = optional(string, "nodejs18") + backend_deployment_type = optional(string, "REGIONAL_LAMBDA") + timeout = optional(number, 10) + memory_size = optional(number, 1024) + # function_architecture = optional(string) + additional_environment_variables = optional(map(string), {}) + # additional_iam_policies = optional(list(object({ + # name = string, + # arn = optional(string) + # policy = optional(string) + # })), []) + # vpc = optional(object({ + # security_group_ids = list(string), + # subnet_ids = list(string) + # })) + # iam = optional(object({ + # path = optional(string) + # permissions_boundary = optional(string) + # })) + # cloudwatch_log = optional(object({ + # retention_in_days = number + # })) + # timeouts = optional(object({ + # create = optional(string) + # update = optional(string) + # delete = optional(string) + # }), {}) + }) + default = {} + + # validation { + # condition = contains(["REGIONAL_LAMBDA_WITH_AUTH_LAMBDA", "REGIONAL_LAMBDA", "EDGE_LAMBDA"], var.server_function.backend_deployment_type) + # error_message = "The server function backend deployment type can be one of REGIONAL_LAMBDA_WITH_AUTH_LAMBDA, REGIONAL_LAMBDA or EDGE_LAMBDA" + # } +} + +# variable "image_optimisation_function" { +# description = "Configuration for the image optimisation function" +# type = object({ +# create = optional(bool, true) +# function_code = optional(object({ +# handler = optional(string, "index.handler") +# zip = optional(object({ +# path = string +# hash = string +# })) +# s3 = optional(object({ +# bucket = string +# key = string +# object_version = optional(string) +# })) +# })) +# runtime = optional(string, "nodejs20.x") +# backend_deployment_type = optional(string, "REGIONAL_LAMBDA") +# timeout = optional(number, 25) +# memory_size = optional(number, 1536) +# additional_environment_variables = optional(map(string), {}) +# function_architecture = optional(string) +# additional_iam_policies = optional(list(object({ +# name = string, +# arn = optional(string) +# policy = optional(string) +# })), []) +# vpc = optional(object({ +# security_group_ids = list(string), +# subnet_ids = list(string) +# })) +# iam = optional(object({ +# path = optional(string) +# permissions_boundary = optional(string) +# })) +# cloudwatch_log = optional(object({ +# retention_in_days = number +# })) +# timeouts = optional(object({ +# create = optional(string) +# update = optional(string) +# delete = optional(string) +# }), {}) +# }) +# default = {} + +# validation { +# condition = contains(["REGIONAL_LAMBDA_WITH_AUTH_LAMBDA", "REGIONAL_LAMBDA"], var.image_optimisation_function.backend_deployment_type) +# error_message = "The server function backend deployment type can be one of REGIONAL_LAMBDA_WITH_AUTH_LAMBDA or REGIONAL_LAMBDA" +# } +# } + +# variable "revalidation_function" { +# description = "Configuration for the revalidation function" +# type = object({ +# function_code = optional(object({ +# handler = optional(string, "index.handler") +# zip = optional(object({ +# path = string +# hash = string +# })) +# s3 = optional(object({ +# bucket = string +# key = string +# object_version = optional(string) +# })) +# })) +# runtime = optional(string, "nodejs20.x") +# timeout = optional(number, 25) +# memory_size = optional(number, 1536) +# additional_environment_variables = optional(map(string), {}) +# function_architecture = optional(string) +# additional_iam_policies = optional(list(object({ +# name = string, +# arn = optional(string) +# policy = optional(string) +# })), []) +# vpc = optional(object({ +# security_group_ids = list(string), +# subnet_ids = list(string) +# })) +# iam = optional(object({ +# path = optional(string) +# permissions_boundary = optional(string) +# })) +# cloudwatch_log = optional(object({ +# retention_in_days = number +# })) +# timeouts = optional(object({ +# create = optional(string) +# update = optional(string) +# delete = optional(string) +# }), {}) +# }) +# default = {} +# } + +# variable "tag_mapping_db" { +# description = "Configuration for the ISR tag mapping database" +# type = object({ +# deployment = optional(string, "CREATE") +# billing_mode = optional(string, "PAY_PER_REQUEST") +# read_capacity = optional(number) +# write_capacity = optional(number) +# revalidate_gsi = optional(object({ +# read_capacity = optional(number) +# write_capacity = optional(number) +# }), {}) +# }) +# default = {} +# } + +# variable "website_bucket" { +# description = "Configuration for the website S3 bucket" +# type = object({ +# deployment = optional(string, "CREATE") +# create_bucket_policy = optional(bool, true) +# force_destroy = optional(bool, false) +# arn = optional(string) +# region = optional(string) +# name = optional(string) +# domain_name = optional(string) +# }) +# default = {} +# } + +# variable "distribution" { +# description = "Configuration for the CloudFront distribution. NOTE: please use ID as ARN for the cache policy is deprecated" +# type = object({ +# deployment = optional(string, "CREATE") +# enabled = optional(bool, true) +# ipv6_enabled = optional(bool, true) +# http_version = optional(string, "http2") +# price_class = optional(string, "PriceClass_100") +# geo_restrictions = optional(object({ +# type = optional(string, "none"), +# locations = optional(list(string), []) +# }), {}) +# x_forwarded_host_function = optional(object({ +# runtime = optional(string) +# code = optional(string) +# }), {}) +# auth_function = optional(object({ +# deployment = optional(string, "NONE") +# qualified_arn = optional(string) +# function_code = optional(object({ +# handler = optional(string, "index.handler") +# zip = optional(object({ +# path = string +# hash = string +# })) +# s3 = optional(object({ +# bucket = string +# key = string +# object_version = optional(string) +# })) +# })) +# runtime = optional(string, "nodejs20.x") +# timeout = optional(number, 10) +# memory_size = optional(number, 256) +# additional_iam_policies = optional(list(object({ +# name = string, +# arn = optional(string) +# policy = optional(string) +# })), []) +# iam = optional(object({ +# path = optional(string) +# permissions_boundary = optional(string) +# })) +# cloudwatch_log = optional(object({ +# retention_in_days = number +# })) +# timeouts = optional(object({ +# create = optional(string) +# update = optional(string) +# delete = optional(string) +# }), {}) +# }), {}) +# cache_policy = optional(object({ +# deployment = optional(string, "CREATE") +# arn = optional(string) +# id = optional(string) +# default_ttl = optional(number, 0) +# max_ttl = optional(number, 31536000) +# min_ttl = optional(number, 0) +# cookie_behavior = optional(string, "all") +# header_behavior = optional(string, "whitelist") +# header_items = optional(list(string), ["accept", "rsc", "next-router-prefetch", "next-router-state-tree", "next-url"]) +# query_string_behavior = optional(string, "all") +# }), {}) +# }) +# default = {} +# } + +# variable "behaviours" { +# description = "Override the default behaviour config" +# type = object({ +# custom_error_responses = optional(object({ +# path_overrides = optional(map(object({ +# allowed_methods = optional(list(string)) +# cached_methods = optional(list(string)) +# cache_policy_id = optional(string) +# origin_request_policy_id = optional(string) +# compress = optional(bool) +# viewer_protocol_policy = optional(string) +# viewer_request = optional(object({ +# type = string +# arn = string +# include_body = optional(bool) +# })) +# viewer_response = optional(object({ +# type = string +# arn = string +# })) +# origin_request = optional(object({ +# arn = string +# include_body = bool +# })) +# origin_response = optional(object({ +# arn = string +# })) +# }))) +# allowed_methods = optional(list(string)) +# cached_methods = optional(list(string)) +# cache_policy_id = optional(string) +# origin_request_policy_id = optional(string) +# compress = optional(bool) +# viewer_protocol_policy = optional(string) +# viewer_request = optional(object({ +# type = string +# arn = string +# include_body = optional(bool) +# })) +# viewer_response = optional(object({ +# type = string +# arn = string +# })) +# origin_request = optional(object({ +# type = string +# arn = string +# include_body = optional(bool) +# })) +# origin_response = optional(object({ +# type = string +# arn = string +# })) +# })) +# static_assets = optional(object({ +# paths = optional(list(string)) +# additional_paths = optional(list(string)) +# path_overrides = optional(map(object({ +# allowed_methods = optional(list(string)) +# cached_methods = optional(list(string)) +# cache_policy_id = optional(string) +# origin_request_policy_id = optional(string) +# compress = optional(bool) +# viewer_protocol_policy = optional(string) +# viewer_request = optional(object({ +# type = string +# arn = string +# include_body = optional(bool) +# })) +# viewer_response = optional(object({ +# type = string +# arn = string +# })) +# origin_request = optional(object({ +# arn = string +# include_body = bool +# })) +# origin_response = optional(object({ +# arn = string +# })) +# }))) +# allowed_methods = optional(list(string)) +# cached_methods = optional(list(string)) +# cache_policy_id = optional(string) +# origin_request_policy_id = optional(string) +# compress = optional(bool) +# viewer_protocol_policy = optional(string) +# viewer_request = optional(object({ +# type = string +# arn = string +# include_body = optional(bool) +# })) +# viewer_response = optional(object({ +# type = string +# arn = string +# })) +# origin_request = optional(object({ +# type = string +# arn = string +# include_body = optional(bool) +# })) +# origin_response = optional(object({ +# type = string +# arn = string +# })) +# })) +# server = optional(object({ +# paths = optional(list(string)) +# path_overrides = optional(map(object({ +# allowed_methods = optional(list(string)) +# cached_methods = optional(list(string)) +# cache_policy_id = optional(string) +# origin_request_policy_id = optional(string) +# compress = optional(bool) +# viewer_protocol_policy = optional(string) +# viewer_request = optional(object({ +# type = string +# arn = string +# include_body = optional(bool) +# })) +# viewer_response = optional(object({ +# type = string +# arn = string +# })) +# origin_request = optional(object({ +# arn = string +# include_body = bool +# })) +# origin_response = optional(object({ +# arn = string +# })) +# }))) +# allowed_methods = optional(list(string)) +# cached_methods = optional(list(string)) +# cache_policy_id = optional(string) +# origin_request_policy_id = optional(string) +# compress = optional(bool) +# viewer_protocol_policy = optional(string) +# viewer_request = optional(object({ +# type = string +# arn = string +# include_body = optional(bool) +# })) +# viewer_response = optional(object({ +# type = string +# arn = string +# })) +# origin_request = optional(object({ +# type = string +# arn = string +# include_body = optional(bool) +# })) +# origin_response = optional(object({ +# type = string +# arn = string +# })) +# })) +# image_optimisation = optional(object({ +# paths = optional(list(string)) +# path_overrides = optional(map(object({ +# allowed_methods = optional(list(string)) +# cached_methods = optional(list(string)) +# cache_policy_id = optional(string) +# origin_request_policy_id = optional(string) +# compress = optional(bool) +# viewer_protocol_policy = optional(string) +# viewer_request = optional(object({ +# type = string +# arn = string +# include_body = optional(bool) +# })) +# viewer_response = optional(object({ +# type = string +# arn = string +# })) +# origin_request = optional(object({ +# arn = string +# include_body = bool +# })) +# origin_response = optional(object({ +# arn = string +# })) +# }))) +# allowed_methods = optional(list(string)) +# cached_methods = optional(list(string)) +# cache_policy_id = optional(string) +# origin_request_policy_id = optional(string) +# compress = optional(bool) +# viewer_protocol_policy = optional(string) +# viewer_request = optional(object({ +# type = string +# arn = string +# include_body = optional(bool) +# })) +# viewer_response = optional(object({ +# type = string +# arn = string +# })) +# origin_request = optional(object({ +# type = string +# arn = string +# include_body = optional(bool) +# })) +# origin_response = optional(object({ +# type = string +# arn = string +# })) +# })) +# }) +# default = {} +# } + +# variable "waf" { +# description = "Configuration for the CloudFront distribution WAF. For enforce basic auth, to protect the secret value, the encoded string has been marked as sensitive. I would make this configurable to allow it to be marked as sensitive or not however Terraform panics when you use the sensitive function as part of a ternary. If you need to see all rules, see this discussion https://discuss.hashicorp.com/t/how-to-show-sensitive-values/24076/4" +# type = object({ +# deployment = optional(string, "NONE") +# web_acl_id = optional(string) +# aws_managed_rules = optional(list(object({ +# priority = optional(number) +# name = string +# aws_managed_rule_name = string +# })), [{ +# name = "amazon-ip-reputation-list" +# aws_managed_rule_name = "AWSManagedRulesAmazonIpReputationList" +# }, { +# name = "common-rule-set" +# aws_managed_rule_name = "AWSManagedRulesCommonRuleSet" +# }, { +# name = "known-bad-inputs" +# aws_managed_rule_name = "AWSManagedRulesKnownBadInputsRuleSet" +# }]) +# rate_limiting = optional(object({ +# enabled = optional(bool, false) +# limits = optional(list(object({ +# priority = optional(number) +# rule_name_suffix = optional(string) +# limit = optional(number, 1000) +# action = optional(string, "BLOCK") +# geo_match_scope = optional(list(string)) +# })), []) +# }), {}) +# sqli = optional(object({ +# enabled = optional(bool, false) +# priority = optional(number) +# }), {}) +# account_takeover_protection = optional(object({ +# enabled = optional(bool, false) +# priority = optional(number) +# login_path = string +# enable_regex_in_path = optional(bool) +# request_inspection = optional(object({ +# username_field_identifier = string +# password_field_identifier = string +# payload_type = string +# })) +# response_inspection = optional(object({ +# failure_codes = list(string) +# success_codes = list(string) +# })) +# })) +# account_creation_fraud_prevention = optional(object({ +# enabled = optional(bool, false) +# priority = optional(number) +# creation_path = string +# registration_page_path = string +# enable_regex_in_path = optional(bool) +# request_inspection = optional(object({ +# email_field_identifier = string +# username_field_identifier = string +# password_field_identifier = string +# payload_type = string +# })) +# response_inspection = optional(object({ +# failure_codes = list(string) +# success_codes = list(string) +# })) +# })) +# enforce_basic_auth = optional(object({ +# enabled = optional(bool, false) +# priority = optional(number) +# response_code = optional(number, 401) +# response_header = optional(object({ +# name = optional(string, "WWW-Authenticate") +# value = optional(string, "Basic realm=\"Requires basic auth\"") +# }), {}) +# header_name = optional(string, "authorization") +# credentials = optional(object({ +# username = string +# password = string +# mark_as_sensitive = optional(bool, true) +# })) +# ip_address_restrictions = optional(list(object({ +# action = optional(string, "BYPASS") +# arn = optional(string) +# name = optional(string) +# }))) +# })) +# additional_rules = optional(list(object({ +# enabled = optional(bool, false) +# priority = optional(number) +# name = string +# action = optional(string, "COUNT") +# block_action = optional(object({ +# response_code = number +# response_header = optional(object({ +# name = string +# value = string +# })) +# custom_response_body_key = optional(string) +# })) +# ip_address_restrictions = list(object({ +# action = optional(string, "BYPASS") +# arn = optional(string) +# name = optional(string) +# })) +# }))) +# default_action = optional(object({ +# action = optional(string, "ALLOW") +# block_action = optional(object({ +# response_code = number +# response_header = optional(object({ +# name = string +# value = string +# })) +# custom_response_body_key = optional(string) +# })) +# })) +# ip_addresses = optional(map(object({ +# description = optional(string) +# ip_address_version = string +# addresses = list(string) +# }))) +# custom_response_bodies = optional(list(object({ +# key = string +# content = string +# content_type = string +# }))) +# }) +# default = {} +# } + +# variable "domain_config" { +# description = "Configuration for CloudFront distribution domain" +# type = object({ +# evaluate_target_health = optional(bool, true) +# sub_domain = optional(string) +# hosted_zones = list(object({ +# name = string +# id = optional(string) +# private_zone = optional(bool, false) +# })) +# create_route53_entries = optional(bool, true) +# viewer_certificate = optional(object({ +# acm_certificate_arn = string +# ssl_support_method = optional(string, "sni-only") +# minimum_protocol_version = optional(string, "TLSv1.2_2021") +# })) +# }) +# default = null +# } + +# variable "continuous_deployment" { +# description = "Configuration for continuous deployment config for CloudFront" +# type = object({ +# use = optional(bool, true) +# deployment = optional(string, "NONE") +# traffic_config = optional(object({ +# header = optional(object({ +# name = string +# value = string +# })) +# weight = optional(object({ +# percentage = number +# session_stickiness = optional(object({ +# idle_ttl = number +# maximum_ttl = number +# })) +# })) +# })) +# }) +# default = {} +# } + +# variable "custom_error_responses" { +# description = "Allow custom error responses to be set on the distributions" +# type = list(object({ +# error_code = string +# error_caching_min_ttl = optional(number) +# response_code = optional(string) +# response_page = optional(object({ +# source = string +# path_prefix = string +# })) +# })) +# default = [] +# } + +# variable "scripts" { +# description = "Modify default script behaviours" +# type = object({ +# interpreter = optional(string) +# additional_environment_variables = optional(map(string)) +# delete_folder_script = optional(object({ +# interpreter = optional(string) +# path = optional(string) +# additional_environment_variables = optional(map(string)) +# })) +# file_sync_script = optional(object({ +# interpreter = optional(string) +# path = optional(string) +# additional_environment_variables = optional(map(string)) +# })) +# invalidate_cloudfront_script = optional(object({ +# interpreter = optional(string) +# path = optional(string) +# additional_environment_variables = optional(map(string)) +# })) +# promote_distribution_script = optional(object({ +# interpreter = optional(string) +# path = optional(string) +# additional_environment_variables = optional(map(string)) +# })) +# remove_continuous_deployment_policy_id_script = optional(object({ +# interpreter = optional(string) +# path = optional(string) +# additional_environment_variables = optional(map(string)) +# })) +# save_item_to_dynamo_script = optional(object({ +# interpreter = optional(string) +# path = optional(string) +# additional_environment_variables = optional(map(string)) +# })) +# update_alias_script = optional(object({ +# interpreter = optional(string) +# path = optional(string) +# additional_environment_variables = optional(map(string)) +# })) +# update_parameter_script = optional(object({ +# interpreter = optional(string) +# path = optional(string) +# additional_environment_variables = optional(map(string)) +# })) +# }) +# default = {} +# } diff --git a/deploy/open-next/versions.tf b/deploy/open-next/versions.tf new file mode 100644 index 0000000..b9cef46 --- /dev/null +++ b/deploy/open-next/versions.tf @@ -0,0 +1,35 @@ +terraform { + required_version = ">= 1.7.1" + + required_providers { + archive = { + source = "hashicorp/archive" + version = ">= 2.3.0" + } + + yandex = { + source = "yandex-cloud/yandex" + version = ">= 0.107.0" + } + + local = { + source = "hashicorp/local" + version = ">= 2.4.0" + } + + # terraform = { + # source = "terraform.io/builtin/terraform" + # } + } +} + +# https://terraform-provider.yandexcloud.net/ +provider "yandex" { + folder_id = "b1gtlpgu6rv8iuols96r" +} + +provider "aws" { + skip_region_validation = true + skip_credentials_validation = true + skip_requesting_account_id = true +} diff --git a/deploy/serverless-container/apigw.yaml b/deploy/serverless-container/apigw.yaml new file mode 100644 index 0000000..86939af --- /dev/null +++ b/deploy/serverless-container/apigw.yaml @@ -0,0 +1,20 @@ +openapi: 3.0.0 +info: + title: Profile + version: 1.0.0 +paths: + /{proxy+}: + x-yc-apigateway-any-method: + x-yc-apigateway-integration: + type: serverless_containers + container_id: ${container_id} + service_account_id: ${service_account_id} + parameters: + - explode: false + in: path + name: proxy + required: false + schema: + default: '-' + type: string + style: simple diff --git a/deploy/serverless-container/main.tf b/deploy/serverless-container/main.tf new file mode 100644 index 0000000..717502d --- /dev/null +++ b/deploy/serverless-container/main.tf @@ -0,0 +1,37 @@ +resource "yandex_serverless_container" "this" { + name = var.name_prefix + folder_id = var.folder_id + memory = 128 + execution_timeout = "3s" + cores = 1 + core_fraction = 100 + service_account_id = var.service_account_id + image { + url = var.image_url + } + log_options { + folder_id = var.folder_id + min_level = "ERROR" + } +} + +resource "yandex_api_gateway" "this" { + name = "${var.name_prefix}-gw" + folder_id = var.folder_id + # custom_domains { + # fqdn = "test.example.com" + # certificate_id = "" + # } + log_options { + folder_id = var.folder_id + min_level = "ERROR" + } + spec = templatefile("apigw.yaml", { + container_id = yandex_serverless_container.this.id, + service_account_id = var.service_account_id, + }) +} + +output "api_gateway_domain" { + value = "https://${yandex_api_gateway.this.domain}" +} diff --git a/deploy/serverless-container/variables.tf b/deploy/serverless-container/variables.tf new file mode 100644 index 0000000..4b9847c --- /dev/null +++ b/deploy/serverless-container/variables.tf @@ -0,0 +1,22 @@ +variable "name_prefix" { + description = "(Required) Prefix name of serverless container and api gateway." + type = string +} + +variable "folder_id" { + description = < { + webpack: (config, { webpack, isServer }) => { + // https://github.com/open-telemetry/opentelemetry-js/issues/4173#issuecomment-1822938936 + if (isServer) config.ignoreWarnings = [{ module: /@opentelemetry\// }]; + config.plugins.push( // https://docs.sentry.io/platforms/javascript/configuration/tree-shaking/#tree-shaking-optional-code-with-webpack new webpack.DefinePlugin({ diff --git a/package.json b/package.json index cc79084..04562aa 100644 --- a/package.json +++ b/package.json @@ -10,11 +10,16 @@ "pnpm": "8.x" }, "private": true, + "type": "module", "scripts": { "analyze": "ANALYZE=\"true\" next build --no-lint", "dev": "next dev", "build": "next build", "start": "next start", + "build:open-next": "open-next build --minify --dangerously-disable-incremental-cache", + "build:open-next:debug": "OPEN_NEXT_DEBUG=true open-next build", + "serverless-debug-deploy": "serverless-live-debug deploy", + "serverless-debug": "serverless-live-debug run", "format:check": "prettier . --cache --check", "format:fix": "pnpm run format:check --write", "lint:check": "run-p --continue-on-error \"lint:*:check\"", @@ -51,9 +56,9 @@ "devicon": "^2.16.0", "embla-carousel-autoplay": "8.0.0", "embla-carousel-react": "8.0.0", - "framer-motion": "^11.0.20", + "framer-motion": "^11.0.22", "lucide-react": "^0.363.0", - "next": "14.1.4", + "next": "14.2.0-canary.43", "next-compose-plugins": "^2.2.1", "next-intl": "^3.10.0", "next-pwa": "^5.6.0", @@ -86,7 +91,7 @@ "@types/is-ci": "^3.0.4", "@types/jest": "^29.5.12", "@types/node": "20.11.1", - "@types/react": "^18.2.70", + "@types/react": "^18.2.72", "@types/react-dom": "^18.2.22", "autoprefixer": "^10.4.19", "chromatic": "^11.2.0", @@ -100,13 +105,14 @@ "jest-environment-jsdom": "^29.7.0", "lint-staged": "^15.2.2", "npm-run-all2": "^6.1.2", + "open-next": "^2.3.8", "postcss": "^8.4.38", "prettier": "3.2.5", "prettier-plugin-tailwindcss": "^0.5.12", "puppeteer": "^22.6.1", "simple-git-hooks": "^2.11.1", "storybook": "^8.0.4", - "stylelint": "^16.3.0", + "stylelint": "^16.3.1", "stylelint-config-standard": "^36.0.0", "tailwindcss": "^3.4.1", "typescript": "^5.4.3" @@ -114,6 +120,9 @@ "pnpm": { "overrides": { "jsdom": "24.0.0" + }, + "patchedDependencies": { + "open-next@2.3.8": "patches/open-next@2.3.8.patch" } }, "browserslist": { diff --git a/patches/open-next@2.3.8.patch b/patches/open-next@2.3.8.patch new file mode 100644 index 0000000..3fae29f --- /dev/null +++ b/patches/open-next@2.3.8.patch @@ -0,0 +1,48 @@ +diff --git a/dist/adapters/event-mapper.js b/dist/adapters/event-mapper.js +index 222bd449117a7ce54cff480828ed0c4c7daad7c7..ae1882750d9cf939d1eeca95851d3a8c0bd2a2f1 100644 +--- a/dist/adapters/event-mapper.js ++++ b/dist/adapters/event-mapper.js +@@ -5,7 +5,7 @@ export function isAPIGatewayProxyEventV2(event) { + return event.version === "2.0"; + } + export function isAPIGatewayProxyEvent(event) { +- return event.version === undefined && !isCloudFrontRequestEvent(event); ++ return event.version === "1.0" && !isCloudFrontRequestEvent(event); + } + export function isCloudFrontRequestEvent(event) { + return event.Records !== undefined; +diff --git a/dist/build.js b/dist/build.js +index af487fee5e7269ce2e57bfac9ea45ee1ed4a16e1..4ccd1afde47a039d8d4524cf48c71534ca70e6ce 100644 +--- a/dist/build.js ++++ b/dist/build.js +@@ -228,7 +228,7 @@ async function createImageOptimizationBundle() { + path.join(__dirname, "adapters", "image-optimization-adapter.js"), + ], + external: ["sharp", "next"], +- outfile: path.join(outputPath, "index.mjs"), ++ outfile: path.join(outputPath, "index.js"), + plugins, + }); + // Build Lambda code (2nd pass) +@@ -236,10 +236,10 @@ async function createImageOptimizationBundle() { + // "next" package. And the "next" package from user's app should + // be used. + esbuildSync({ +- entryPoints: [path.join(outputPath, "index.mjs")], ++ entryPoints: [path.join(outputPath, "index.js")], + external: ["sharp"], + allowOverwrite: true, +- outfile: path.join(outputPath, "index.mjs"), ++ outfile: path.join(outputPath, "index.js"), + banner: { + js: [ + "import { createRequire as topLevelCreateRequire } from 'module';", +@@ -515,7 +515,7 @@ async function createServerBundle(monorepoRoot, streaming = false) { + await esbuildAsync({ + entryPoints: [path.join(__dirname, "adapters", "server-adapter.js")], + external: ["next"], +- outfile: path.join(outputPath, packagePath, "index.mjs"), ++ outfile: path.join(outputPath, packagePath, "index.js"), + banner: { + js: [ + `globalThis.monorepoPackagePath = "${packagePath}";`, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a6a8de3..cf3be3a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,6 +7,11 @@ settings: overrides: jsdom: 24.0.0 +patchedDependencies: + open-next@2.3.8: + hash: w5su2wbiyfvrxphbi5gnosrjeq + path: patches/open-next@2.3.8.patch + dependencies: '@opentelemetry/resources': specifier: ^1.22.0 @@ -19,19 +24,19 @@ dependencies: version: 1.22.0 '@radix-ui/react-dropdown-menu': specifier: ^2.0.6 - version: 2.0.6(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) + version: 2.0.6(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-navigation-menu': specifier: ^1.1.4 - version: 1.1.4(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) + version: 1.1.4(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': specifier: ^1.0.2 - version: 1.0.2(@types/react@18.2.70)(react@18.2.0) + version: 1.0.2(@types/react@18.2.72)(react@18.2.0) '@radix-ui/react-tooltip': specifier: ^1.0.7 - version: 1.0.7(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.7(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) '@sentry/nextjs': specifier: ^7.108.0 - version: 7.108.0(next@14.1.4)(react@18.2.0)(webpack@5.90.3) + version: 7.108.0(next@14.2.0-canary.43)(react@18.2.0)(webpack@5.91.0) '@sentry/opentelemetry-node': specifier: ^7.108.0 version: 7.108.0(@opentelemetry/api@1.8.0)(@opentelemetry/core@1.22.0)(@opentelemetry/sdk-trace-base@1.22.0)(@opentelemetry/semantic-conventions@1.22.0) @@ -54,23 +59,23 @@ dependencies: specifier: 8.0.0 version: 8.0.0(react@18.2.0) framer-motion: - specifier: ^11.0.20 - version: 11.0.20(react-dom@18.2.0)(react@18.2.0) + specifier: ^11.0.22 + version: 11.0.22(react-dom@18.2.0)(react@18.2.0) lucide-react: specifier: ^0.363.0 version: 0.363.0(react@18.2.0) next: - specifier: 14.1.4 - version: 14.1.4(@babel/core@7.24.1)(@opentelemetry/api@1.8.0)(react-dom@18.2.0)(react@18.2.0) + specifier: 14.2.0-canary.43 + version: 14.2.0-canary.43(@babel/core@7.24.3)(@opentelemetry/api@1.8.0)(@playwright/test@1.42.1)(react-dom@18.2.0)(react@18.2.0) next-compose-plugins: specifier: ^2.2.1 version: 2.2.1 next-intl: specifier: ^3.10.0 - version: 3.10.0(next@14.1.4)(react@18.2.0) + version: 3.10.0(next@14.2.0-canary.43)(react@18.2.0) next-pwa: specifier: ^5.6.0 - version: 5.6.0(@babel/core@7.24.1)(esbuild@0.20.2)(next@14.1.4)(webpack@5.90.3) + version: 5.6.0(@babel/core@7.24.3)(esbuild@0.20.2)(next@14.2.0-canary.43)(webpack@5.91.0) next-themes: specifier: ^0.3.0 version: 0.3.0(react-dom@18.2.0)(react@18.2.0) @@ -91,7 +96,7 @@ dependencies: version: 1.0.7(tailwindcss@3.4.1) vaul: specifier: ^0.9.0 - version: 0.9.0(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) + version: 0.9.0(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) devDependencies: '@chromatic-com/storybook': @@ -117,7 +122,7 @@ devDependencies: version: 1.42.1 '@storybook/addon-essentials': specifier: ^8.0.4 - version: 8.0.4(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) + version: 8.0.4(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-interactions': specifier: ^8.0.4 version: 8.0.4(@types/jest@29.5.12)(jest@29.7.0) @@ -129,10 +134,10 @@ devDependencies: version: 8.0.4 '@storybook/blocks': specifier: ^8.0.4 - version: 8.0.4(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) + version: 8.0.4(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) '@storybook/nextjs': specifier: ^8.0.4 - version: 8.0.4(esbuild@0.20.2)(next@14.1.4)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.3)(webpack@5.90.3) + version: 8.0.4(esbuild@0.20.2)(next@14.2.0-canary.43)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.3)(webpack@5.91.0) '@storybook/react': specifier: ^8.0.4 version: 8.0.4(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.3) @@ -155,8 +160,8 @@ devDependencies: specifier: 20.11.1 version: 20.11.1 '@types/react': - specifier: ^18.2.70 - version: 18.2.70 + specifier: ^18.2.72 + version: 18.2.72 '@types/react-dom': specifier: ^18.2.22 version: 18.2.22 @@ -196,6 +201,9 @@ devDependencies: npm-run-all2: specifier: ^6.1.2 version: 6.1.2 + open-next: + specifier: ^2.3.8 + version: 2.3.8(patch_hash=w5su2wbiyfvrxphbi5gnosrjeq) postcss: specifier: ^8.4.38 version: 8.4.38 @@ -215,11 +223,11 @@ devDependencies: specifier: ^8.0.4 version: 8.0.4(react-dom@18.2.0)(react@18.2.0) stylelint: - specifier: ^16.3.0 - version: 16.3.0(typescript@5.4.3) + specifier: ^16.3.1 + version: 16.3.1(typescript@5.4.3) stylelint-config-standard: specifier: ^36.0.0 - version: 36.0.0(stylelint@16.3.0) + version: 36.0.0(stylelint@16.3.1) tailwindcss: specifier: ^3.4.1 version: 3.4.1 @@ -268,6 +276,822 @@ packages: default-browser-id: 3.0.0 dev: true + /@aws-crypto/crc32@3.0.0: + resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} + dependencies: + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.535.0 + tslib: 1.14.1 + dev: true + + /@aws-crypto/crc32c@3.0.0: + resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==} + dependencies: + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.535.0 + tslib: 1.14.1 + dev: true + + /@aws-crypto/ie11-detection@3.0.0: + resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} + dependencies: + tslib: 1.14.1 + dev: true + + /@aws-crypto/sha1-browser@3.0.0: + resolution: {integrity: sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==} + dependencies: + '@aws-crypto/ie11-detection': 3.0.0 + '@aws-crypto/supports-web-crypto': 3.0.0 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-locate-window': 3.535.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + dev: true + + /@aws-crypto/sha256-browser@3.0.0: + resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} + dependencies: + '@aws-crypto/ie11-detection': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-crypto/supports-web-crypto': 3.0.0 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-locate-window': 3.535.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + dev: true + + /@aws-crypto/sha256-js@3.0.0: + resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} + dependencies: + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.535.0 + tslib: 1.14.1 + dev: true + + /@aws-crypto/supports-web-crypto@3.0.0: + resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} + dependencies: + tslib: 1.14.1 + dev: true + + /@aws-crypto/util@3.0.0: + resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} + dependencies: + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + dev: true + + /@aws-sdk/client-dynamodb@3.540.0: + resolution: {integrity: sha512-AL4ZNb3q8WFZWlwybHNmipcBp1981pjzav6gIemWdmkrveVkNVEFmYHBEo9ONLKDDwoDsgxKUhATCLGrioWQJQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/core': 3.535.0 + '@aws-sdk/credential-provider-node': 3.540.0 + '@aws-sdk/middleware-endpoint-discovery': 3.535.0 + '@aws-sdk/middleware-host-header': 3.535.0 + '@aws-sdk/middleware-logger': 3.535.0 + '@aws-sdk/middleware-recursion-detection': 3.535.0 + '@aws-sdk/middleware-user-agent': 3.540.0 + '@aws-sdk/region-config-resolver': 3.535.0 + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-endpoints': 3.540.0 + '@aws-sdk/util-user-agent-browser': 3.535.0 + '@aws-sdk/util-user-agent-node': 3.535.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/core': 1.4.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.0 + '@smithy/middleware-retry': 2.2.0 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.0 + '@smithy/util-defaults-mode-node': 2.3.0 + '@smithy/util-endpoints': 1.2.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-retry': 2.2.0 + '@smithy/util-utf8': 2.3.0 + '@smithy/util-waiter': 2.2.0 + tslib: 2.6.2 + uuid: 9.0.1 + transitivePeerDependencies: + - aws-crt + dev: true + + /@aws-sdk/client-lambda@3.540.0: + resolution: {integrity: sha512-pAVEUlQqpzTCpOmdnSXub+wjTtyJAwJFdmGW7rHpYpwQ4HfPhmN/vB6bczdl2vQNArfwS86AzTJNsftc3ID46g==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/core': 3.535.0 + '@aws-sdk/credential-provider-node': 3.540.0 + '@aws-sdk/middleware-host-header': 3.535.0 + '@aws-sdk/middleware-logger': 3.535.0 + '@aws-sdk/middleware-recursion-detection': 3.535.0 + '@aws-sdk/middleware-user-agent': 3.540.0 + '@aws-sdk/region-config-resolver': 3.535.0 + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-endpoints': 3.540.0 + '@aws-sdk/util-user-agent-browser': 3.535.0 + '@aws-sdk/util-user-agent-node': 3.535.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/core': 1.4.0 + '@smithy/eventstream-serde-browser': 2.2.0 + '@smithy/eventstream-serde-config-resolver': 2.2.0 + '@smithy/eventstream-serde-node': 2.2.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.0 + '@smithy/middleware-retry': 2.2.0 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.0 + '@smithy/util-defaults-mode-node': 2.3.0 + '@smithy/util-endpoints': 1.2.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-retry': 2.2.0 + '@smithy/util-stream': 2.2.0 + '@smithy/util-utf8': 2.3.0 + '@smithy/util-waiter': 2.2.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: true + + /@aws-sdk/client-s3@3.540.0: + resolution: {integrity: sha512-rYBuNB7uqCO9xZc0OAwM2K6QJAo2Syt1L5OhEaf7zG7FulNMyrK6kJPg1WrvNE90tW6gUdDaTy3XsQ7lq6O7uA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha1-browser': 3.0.0 + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/core': 3.535.0 + '@aws-sdk/credential-provider-node': 3.540.0 + '@aws-sdk/middleware-bucket-endpoint': 3.535.0 + '@aws-sdk/middleware-expect-continue': 3.535.0 + '@aws-sdk/middleware-flexible-checksums': 3.535.0 + '@aws-sdk/middleware-host-header': 3.535.0 + '@aws-sdk/middleware-location-constraint': 3.535.0 + '@aws-sdk/middleware-logger': 3.535.0 + '@aws-sdk/middleware-recursion-detection': 3.535.0 + '@aws-sdk/middleware-sdk-s3': 3.535.0 + '@aws-sdk/middleware-signing': 3.535.0 + '@aws-sdk/middleware-ssec': 3.537.0 + '@aws-sdk/middleware-user-agent': 3.540.0 + '@aws-sdk/region-config-resolver': 3.535.0 + '@aws-sdk/signature-v4-multi-region': 3.535.0 + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-endpoints': 3.540.0 + '@aws-sdk/util-user-agent-browser': 3.535.0 + '@aws-sdk/util-user-agent-node': 3.535.0 + '@aws-sdk/xml-builder': 3.535.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/core': 1.4.0 + '@smithy/eventstream-serde-browser': 2.2.0 + '@smithy/eventstream-serde-config-resolver': 2.2.0 + '@smithy/eventstream-serde-node': 2.2.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-blob-browser': 2.2.0 + '@smithy/hash-node': 2.2.0 + '@smithy/hash-stream-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/md5-js': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.0 + '@smithy/middleware-retry': 2.2.0 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.0 + '@smithy/util-defaults-mode-node': 2.3.0 + '@smithy/util-endpoints': 1.2.0 + '@smithy/util-retry': 2.2.0 + '@smithy/util-stream': 2.2.0 + '@smithy/util-utf8': 2.3.0 + '@smithy/util-waiter': 2.2.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: true + + /@aws-sdk/client-sqs@3.540.0: + resolution: {integrity: sha512-PYyFIUZwN1LcrUtHQ/KJqNUgPgY3bNGjVp/SbwJ8cKGALBUvUNN6E7VpEDYglY1X/CuMolxK00TFZOSR9O056Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/core': 3.535.0 + '@aws-sdk/credential-provider-node': 3.540.0 + '@aws-sdk/middleware-host-header': 3.535.0 + '@aws-sdk/middleware-logger': 3.535.0 + '@aws-sdk/middleware-recursion-detection': 3.535.0 + '@aws-sdk/middleware-sdk-sqs': 3.535.0 + '@aws-sdk/middleware-user-agent': 3.540.0 + '@aws-sdk/region-config-resolver': 3.535.0 + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-endpoints': 3.540.0 + '@aws-sdk/util-user-agent-browser': 3.535.0 + '@aws-sdk/util-user-agent-node': 3.535.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/core': 1.4.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/md5-js': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.0 + '@smithy/middleware-retry': 2.2.0 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.0 + '@smithy/util-defaults-mode-node': 2.3.0 + '@smithy/util-endpoints': 1.2.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-retry': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: true + + /@aws-sdk/client-sso-oidc@3.540.0(@aws-sdk/credential-provider-node@3.540.0): + resolution: {integrity: sha512-LZYK0lBRQK8D8M3Sqc96XiXkAV2v70zhTtF6weyzEpgwxZMfSuFJjs0jFyhaeZBZbZv7BBghIdhJ5TPavNxGMQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@aws-sdk/credential-provider-node': ^3.540.0 + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/core': 3.535.0 + '@aws-sdk/credential-provider-node': 3.540.0 + '@aws-sdk/middleware-host-header': 3.535.0 + '@aws-sdk/middleware-logger': 3.535.0 + '@aws-sdk/middleware-recursion-detection': 3.535.0 + '@aws-sdk/middleware-user-agent': 3.540.0 + '@aws-sdk/region-config-resolver': 3.535.0 + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-endpoints': 3.540.0 + '@aws-sdk/util-user-agent-browser': 3.535.0 + '@aws-sdk/util-user-agent-node': 3.535.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/core': 1.4.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.0 + '@smithy/middleware-retry': 2.2.0 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.0 + '@smithy/util-defaults-mode-node': 2.3.0 + '@smithy/util-endpoints': 1.2.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-retry': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: true + + /@aws-sdk/client-sso@3.540.0: + resolution: {integrity: sha512-rrQZMuw4sxIo3eyAUUzPQRA336mPRnrAeSlSdVHBKZD8Fjvoy0lYry2vNhkPLpFZLso1J66KRyuIv4LzRR3v1Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/core': 3.535.0 + '@aws-sdk/middleware-host-header': 3.535.0 + '@aws-sdk/middleware-logger': 3.535.0 + '@aws-sdk/middleware-recursion-detection': 3.535.0 + '@aws-sdk/middleware-user-agent': 3.540.0 + '@aws-sdk/region-config-resolver': 3.535.0 + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-endpoints': 3.540.0 + '@aws-sdk/util-user-agent-browser': 3.535.0 + '@aws-sdk/util-user-agent-node': 3.535.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/core': 1.4.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.0 + '@smithy/middleware-retry': 2.2.0 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.0 + '@smithy/util-defaults-mode-node': 2.3.0 + '@smithy/util-endpoints': 1.2.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-retry': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: true + + /@aws-sdk/client-sts@3.540.0(@aws-sdk/credential-provider-node@3.540.0): + resolution: {integrity: sha512-ITHUQxvpqfQX6obfpIi3KYGzZYfe/I5Ixjfxoi5lB7ISCtmxqObKB1fzD93wonkMJytJ7LUO8panZl/ojiJ1uw==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@aws-sdk/credential-provider-node': ^3.540.0 + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/core': 3.535.0 + '@aws-sdk/credential-provider-node': 3.540.0 + '@aws-sdk/middleware-host-header': 3.535.0 + '@aws-sdk/middleware-logger': 3.535.0 + '@aws-sdk/middleware-recursion-detection': 3.535.0 + '@aws-sdk/middleware-user-agent': 3.540.0 + '@aws-sdk/region-config-resolver': 3.535.0 + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-endpoints': 3.540.0 + '@aws-sdk/util-user-agent-browser': 3.535.0 + '@aws-sdk/util-user-agent-node': 3.535.0 + '@smithy/config-resolver': 2.2.0 + '@smithy/core': 1.4.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/hash-node': 2.2.0 + '@smithy/invalid-dependency': 2.2.0 + '@smithy/middleware-content-length': 2.2.0 + '@smithy/middleware-endpoint': 2.5.0 + '@smithy/middleware-retry': 2.2.0 + '@smithy/middleware-serde': 2.3.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-body-length-browser': 2.2.0 + '@smithy/util-body-length-node': 2.3.0 + '@smithy/util-defaults-mode-browser': 2.2.0 + '@smithy/util-defaults-mode-node': 2.3.0 + '@smithy/util-endpoints': 1.2.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-retry': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: true + + /@aws-sdk/core@3.535.0: + resolution: {integrity: sha512-+Yusa9HziuaEDta1UaLEtMAtmgvxdxhPn7jgfRY6PplqAqgsfa5FR83sxy5qr2q7xjQTwHtV4MjQVuOjG9JsLw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/core': 1.4.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/signature-v4': 2.2.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + fast-xml-parser: 4.2.5 + tslib: 2.6.2 + dev: true + + /@aws-sdk/credential-provider-env@3.535.0: + resolution: {integrity: sha512-XppwO8c0GCGSAvdzyJOhbtktSEaShg14VJKg8mpMa1XcgqzmcqqHQjtDWbx5rZheY1VdpXZhpEzJkB6LpQejpA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.535.0 + '@smithy/property-provider': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/credential-provider-http@3.535.0: + resolution: {integrity: sha512-kdj1wCmOMZ29jSlUskRqN04S6fJ4dvt0Nq9Z32SA6wO7UG8ht6Ot9h/au/eTWJM3E1somZ7D771oK7dQt9b8yw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.535.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/property-provider': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/util-stream': 2.2.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/credential-provider-ini@3.540.0(@aws-sdk/credential-provider-node@3.540.0): + resolution: {integrity: sha512-igN/RbsnulIBwqXbwsWmR3srqmtbPF1dm+JteGvUY31FW65fTVvWvSr945Y/cf1UbhPmIQXntlsqESqpkhTHwg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-sts': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/credential-provider-env': 3.535.0 + '@aws-sdk/credential-provider-process': 3.535.0 + '@aws-sdk/credential-provider-sso': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/credential-provider-web-identity': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/types': 3.535.0 + '@smithy/credential-provider-imds': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + dev: true + + /@aws-sdk/credential-provider-node@3.540.0: + resolution: {integrity: sha512-HKQZJbLHlrHX9A0B1poiYNXIIQfy8whTjuosTCYKPDBhhUyVAQfxy/KG726j0v43IhaNPLgTGZCJve4hAsazSw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/credential-provider-env': 3.535.0 + '@aws-sdk/credential-provider-http': 3.535.0 + '@aws-sdk/credential-provider-ini': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/credential-provider-process': 3.535.0 + '@aws-sdk/credential-provider-sso': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/credential-provider-web-identity': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/types': 3.535.0 + '@smithy/credential-provider-imds': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: true + + /@aws-sdk/credential-provider-process@3.535.0: + resolution: {integrity: sha512-9O1OaprGCnlb/kYl8RwmH7Mlg8JREZctB8r9sa1KhSsWFq/SWO0AuJTyowxD7zL5PkeS4eTvzFFHWCa3OO5epA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.535.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/credential-provider-sso@3.540.0(@aws-sdk/credential-provider-node@3.540.0): + resolution: {integrity: sha512-tKkFqK227LF5ajc5EL6asXS32p3nkofpP8G7NRpU7zOEOQCg01KUc4JRX+ItI0T007CiN1J19yNoFqHLT/SqHg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-sso': 3.540.0 + '@aws-sdk/token-providers': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/types': 3.535.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + dev: true + + /@aws-sdk/credential-provider-web-identity@3.540.0(@aws-sdk/credential-provider-node@3.540.0): + resolution: {integrity: sha512-OpDm9w3A168B44hSjpnvECP4rvnFzD86rN4VYdGADuCvEa5uEcdA/JuT5WclFPDqdWEmFBqS1pxBIJBf0g2Q9Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-sts': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/types': 3.535.0 + '@smithy/property-provider': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + dev: true + + /@aws-sdk/endpoint-cache@3.535.0: + resolution: {integrity: sha512-sPG2l00iVuporK9AmPWq4UBcJURs2RN+vKA8QLRQANmQS3WFHWHamvGltxCjK79izkeqri882V4XlFpZfWhemA==} + engines: {node: '>=14.0.0'} + dependencies: + mnemonist: 0.38.3 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-bucket-endpoint@3.535.0: + resolution: {integrity: sha512-7sijlfQsc4UO9Fsl11mU26Y5f9E7g6UoNg/iJUBpC5pgvvmdBRO5UEhbB/gnqvOEPsBXyhmfzbstebq23Qdz7A==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-arn-parser': 3.535.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-config-provider': 2.3.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-endpoint-discovery@3.535.0: + resolution: {integrity: sha512-+EsqJB5A15RoTf0HxUdknF3hp+2WDg0HWc+QERUctzzYXy9l5LIQjmhQ96cWDyFttKmHE+4h6fjMZjJEeWOeYQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/endpoint-cache': 3.535.0 + '@aws-sdk/types': 3.535.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-expect-continue@3.535.0: + resolution: {integrity: sha512-hFKyqUBky0NWCVku8iZ9+PACehx0p6vuMw5YnZf8FVgHP0fode0b/NwQY6UY7oor/GftvRsAlRUAWGNFEGUpwA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.535.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-flexible-checksums@3.535.0: + resolution: {integrity: sha512-rBIzldY9jjRATxICDX7t77aW6ctqmVDgnuAOgbVT5xgHftt4o7PGWKoMvl/45hYqoQgxVFnCBof9bxkqSBebVA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/crc32': 3.0.0 + '@aws-crypto/crc32c': 3.0.0 + '@aws-sdk/types': 3.535.0 + '@smithy/is-array-buffer': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-host-header@3.535.0: + resolution: {integrity: sha512-0h6TWjBWtDaYwHMQJI9ulafeS4lLaw1vIxRjbpH0svFRt6Eve+Sy8NlVhECfTU2hNz/fLubvrUxsXoThaLBIew==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.535.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-location-constraint@3.535.0: + resolution: {integrity: sha512-SxfS9wfidUZZ+WnlKRTCRn3h+XTsymXRXPJj8VV6hNRNeOwzNweoG3YhQbTowuuNfXf89m9v6meYkBBtkdacKw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.535.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-logger@3.535.0: + resolution: {integrity: sha512-huNHpONOrEDrdRTvSQr1cJiRMNf0S52NDXtaPzdxiubTkP+vni2MohmZANMOai/qT0olmEVX01LhZ0ZAOgmg6A==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.535.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-recursion-detection@3.535.0: + resolution: {integrity: sha512-am2qgGs+gwqmR4wHLWpzlZ8PWhm4ktj5bYSgDrsOfjhdBlWNxvPoID9/pDAz5RWL48+oH7I6SQzMqxXsFDikrw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.535.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-sdk-s3@3.535.0: + resolution: {integrity: sha512-/dLG/E3af6ohxkQ5GBHT8tZfuPIg6eItKxCXuulvYj0Tqgf3Mb+xTsvSkxQsJF06RS4sH7Qsg/PnB8ZfrJrXpg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-arn-parser': 3.535.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/signature-v4': 2.2.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/util-config-provider': 2.3.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-sdk-sqs@3.535.0: + resolution: {integrity: sha512-E6En+QI7AFp5DsUhhA+DexMRjrJmYYte/wkArY47+6gw8VO6z7WYW6KtrhUP2OyJRYMil7o/1z76+j69vc2PBQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.535.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/util-hex-encoding': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-signing@3.535.0: + resolution: {integrity: sha512-Rb4sfus1Gc5paRl9JJgymJGsb/i3gJKK/rTuFZICdd1PBBE5osIOHP5CpzWYBtc5LlyZE1a2QoxPMCyG+QUGPw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.535.0 + '@smithy/property-provider': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/signature-v4': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/util-middleware': 2.2.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-ssec@3.537.0: + resolution: {integrity: sha512-2QWMrbwd5eBy5KCYn9a15JEWBgrK2qFEKQN2lqb/6z0bhtevIOxIRfC99tzvRuPt6nixFQ+ynKuBjcfT4ZFrdQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.535.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-user-agent@3.540.0: + resolution: {integrity: sha512-8Rd6wPeXDnOYzWj1XCmOKcx/Q87L0K1/EHqOBocGjLVbN3gmRxBvpmR1pRTjf7IsWfnnzN5btqtcAkfDPYQUMQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.535.0 + '@aws-sdk/util-endpoints': 3.540.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/region-config-resolver@3.535.0: + resolution: {integrity: sha512-IXOznDiaItBjsQy4Fil0kzX/J3HxIOknEphqHbOfUf+LpA5ugcsxuQQONrbEQusCBnfJyymrldBvBhFmtlU9Wg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.535.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-config-provider': 2.3.0 + '@smithy/util-middleware': 2.2.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/signature-v4-multi-region@3.535.0: + resolution: {integrity: sha512-tqCsEsEj8icW0SAh3NvyhRUq54Gz2pu4NM2tOSrFp7SO55heUUaRLSzYteNZCTOupH//AAaZvbN/UUTO/DrOog==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.535.0 + '@aws-sdk/types': 3.535.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/signature-v4': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/token-providers@3.540.0(@aws-sdk/credential-provider-node@3.540.0): + resolution: {integrity: sha512-9BvtiVEZe5Ev88Wa4ZIUbtT6BVcPwhxmVInQ6c12MYNb0WNL54BN6wLy/eknAfF05gpX2/NDU2pUDOyMPdm/+g==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-sso-oidc': 3.540.0(@aws-sdk/credential-provider-node@3.540.0) + '@aws-sdk/types': 3.535.0 + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + dev: true + + /@aws-sdk/types@3.535.0: + resolution: {integrity: sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/util-arn-parser@3.535.0: + resolution: {integrity: sha512-smVo29nUPAOprp8Z5Y3GHuhiOtw6c8/EtLCm5AVMtRsTPw4V414ZXL2H66tzmb5kEeSzQlbfBSBEdIFZoxO9kg==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: true + + /@aws-sdk/util-endpoints@3.540.0: + resolution: {integrity: sha512-1kMyQFAWx6f8alaI6UT65/5YW/7pDWAKAdNwL6vuJLea03KrZRX3PMoONOSJpAS5m3Ot7HlWZvf3wZDNTLELZw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.535.0 + '@smithy/types': 2.12.0 + '@smithy/util-endpoints': 1.2.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/util-locate-window@3.535.0: + resolution: {integrity: sha512-PHJ3SL6d2jpcgbqdgiPxkXpu7Drc2PYViwxSIqvvMKhDwzSB1W3mMvtpzwKM4IE7zLFodZo0GKjJ9AsoXndXhA==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: true + + /@aws-sdk/util-user-agent-browser@3.535.0: + resolution: {integrity: sha512-RWMcF/xV5n+nhaA/Ff5P3yNP3Kur/I+VNZngog4TEs92oB/nwOdAg/2JL8bVAhUbMrjTjpwm7PItziYFQoqyig==} + dependencies: + '@aws-sdk/types': 3.535.0 + '@smithy/types': 2.12.0 + bowser: 2.11.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/util-user-agent-node@3.535.0: + resolution: {integrity: sha512-dRek0zUuIT25wOWJlsRm97nTkUlh1NDcLsQZIN2Y8KxhwoXXWtJs5vaDPT+qAg+OpcNj80i1zLR/CirqlFg/TQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + dependencies: + '@aws-sdk/types': 3.535.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/util-utf8-browser@3.259.0: + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + dependencies: + tslib: 2.6.2 + dev: true + + /@aws-sdk/xml-builder@3.535.0: + resolution: {integrity: sha512-VXAq/Jz8KIrU84+HqsOJhIKZqG0PNTdi6n6PFQ4xJf44ZQHD/5C7ouH4qCFX5XgZXcgbRIcMVVYGC6Jye0dRng==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + /@babel/code-frame@7.24.2: resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} @@ -279,15 +1103,15 @@ packages: resolution: {integrity: sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==} engines: {node: '>=6.9.0'} - /@babel/core@7.24.1: - resolution: {integrity: sha512-F82udohVyIgGAY2VVj/g34TpFUG606rumIHjTfVbssPg2zTR7PuuEpZcX8JA6sgBfIYmJrFtWgPvHQuJamVqZQ==} + /@babel/core@7.24.3: + resolution: {integrity: sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.2 '@babel/generator': 7.24.1 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.1) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) '@babel/helpers': 7.24.1 '@babel/parser': 7.24.1 '@babel/template': 7.24.0 @@ -332,40 +1156,40 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.24.1): + /@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@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.24.1(@babel/core@7.24.1) + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) '@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@7.22.15(@babel/core@7.24.1): + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.3): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 - /@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.1): + /@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.3): resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.0 debug: 4.3.4 @@ -403,13 +1227,13 @@ packages: dependencies: '@babel/types': 7.24.0 - /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.1): + /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.3): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.24.1 '@babel/helper-simple-access': 7.22.5 @@ -426,24 +1250,24 @@ packages: resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} engines: {node: '>=6.9.0'} - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.1): + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.3): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@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@7.24.1(@babel/core@7.24.1): + /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 @@ -512,951 +1336,951 @@ packages: dependencies: '@babel/types': 7.24.0 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.1): + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.1): + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.1) + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.3) - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.1): + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.1): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.3): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.1): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.3): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.1): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.1): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.3): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.1): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.3): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.1): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.1): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-flow@7.24.1(@babel/core@7.24.1): + /@babel/plugin-syntax-flow@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.1): + /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.1): + /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.1): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.3): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.1): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.1): + /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.1): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.3): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.1): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.1): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.3): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.1): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.1): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.1): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.1): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.3): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.1): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.3): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.1): + /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.1): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.3): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.1 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-async-generator-functions@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-async-generator-functions@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-OTkLJM0OtmzcpOgF7MREERUCdCnCBtBsq3vVFbuq/RKMK0/jdYqdMexWi3zNs7Nzd95ase65MbTGrpFJflOb6A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.1) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.1) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.3) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.3) - /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-module-imports': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.1) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.3) - /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-block-scoping@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-block-scoping@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-class-static-block@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-class-static-block@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.24.1 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.1) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.3) - /@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@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.24.0 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.1) + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 - /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/template': 7.24.0 - /@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.3) - /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.3) - /@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.1) + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.3) dev: true - /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.3) - /@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.1) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.3) - /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-simple-access': 7.22.5 - /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.1) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-identifier': 7.22.20 - /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.1): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.3): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.1 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) - /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.1) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.3) - /@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.1) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.3) - /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.1) + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) - /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.3) - /@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) - /@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.1) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.3) - /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.1): + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.3): resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.3) dev: true - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.1): + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.3): resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-module-imports': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.1) + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) '@babel/types': 7.24.0 dev: true - /@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 regenerator-transform: 0.15.2 - /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-runtime@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-runtime@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-yHLX14/T+tO0gjgJroDb8JYjOcQuzVC+Brt4CjHAxq/Ghw4xBVG+N02d1rMEcyUnKUQBL4Yy2gA9R72GK961jQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-module-imports': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.1) - babel-plugin-polyfill-corejs3: 0.10.1(@babel/core@7.24.1) - babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.1) + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.3) + babel-plugin-polyfill-corejs3: 0.10.1(@babel/core@7.24.3) + babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.3) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-typescript@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-typescript@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.1) + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.3) dev: true - /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.1): + /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.1 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/preset-env@7.24.1(@babel/core@7.24.1): + /@babel/preset-env@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-CwCMz1Z28UHLI2iE+cbnWT2epPMV9bzzoBGM6A3mOS22VQd/1TPoWItV7S7iL9TkPmPEf5L/QzurmztyyDN9FA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.24.1 - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.1) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.1) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.1) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.1) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.1) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.1) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.1) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.1) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.1) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.1) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-async-generator-functions': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-block-scoping': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-class-static-block': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.1) - '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-typeof-symbol': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.1) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.1) - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.1) - babel-plugin-polyfill-corejs3: 0.10.1(@babel/core@7.24.1) - babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.1) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.3) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.3) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.3) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.3) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.3) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.3) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.3) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-async-generator-functions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-block-scoping': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-class-static-block': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.3) + '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-typeof-symbol': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.3) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.3) + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.3) + babel-plugin-polyfill-corejs3: 0.10.1(@babel/core@7.24.3) + babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.3) core-js-compat: 3.36.1 semver: 6.3.1 transitivePeerDependencies: - supports-color - /@babel/preset-flow@7.24.1(@babel/core@7.24.1): + /@babel/preset-flow@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.1) + '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.3) dev: true - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.1): + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.3): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/types': 7.24.0 esutils: 2.0.3 - /@babel/preset-react@7.24.1(@babel/core@7.24.1): + /@babel/preset-react@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.1) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.1) - '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.24.1) + '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.3) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.3) + '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.24.3) dev: true - /@babel/preset-typescript@7.24.1(@babel/core@7.24.1): + /@babel/preset-typescript@7.24.1(@babel/core@7.24.3): resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.1) + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.3) dev: true - /@babel/register@7.23.7(@babel/core@7.24.1): + /@babel/register@7.23.7(@babel/core@7.24.3): resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -1758,14 +2582,37 @@ packages: react: 18.2.0 dev: true - /@esbuild/aix-ppc64@0.20.2: - resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - requiresBuild: true - optional: true - + /@esbuild-plugins/node-resolve@0.2.2(esbuild@0.19.2): + resolution: {integrity: sha512-+t5FdX3ATQlb53UFDBRb4nqjYBz492bIrnVWvpQHpzZlu9BQL5HasMZhqc409ygUwOWCXZhrWr6NyZ6T6Y+cxw==} + peerDependencies: + esbuild: '*' + dependencies: + '@types/resolve': 1.20.6 + debug: 4.3.4 + esbuild: 0.19.2 + escape-string-regexp: 4.0.0 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@esbuild/aix-ppc64@0.20.2: + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + optional: true + + /@esbuild/android-arm64@0.19.2: + resolution: {integrity: sha512-lsB65vAbe90I/Qe10OjkmrdxSX4UJDjosDgb8sZUKcg3oefEuW2OT2Vozz8ef7wrJbMcmhvCC+hciF8jY/uAkw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm64@0.20.2: resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} engines: {node: '>=12'} @@ -1774,6 +2621,15 @@ packages: requiresBuild: true optional: true + /@esbuild/android-arm@0.19.2: + resolution: {integrity: sha512-tM8yLeYVe7pRyAu9VMi/Q7aunpLwD139EY1S99xbQkT4/q2qa6eA4ige/WJQYdJ8GBL1K33pPFhPfPdJ/WzT8Q==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm@0.20.2: resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} engines: {node: '>=12'} @@ -1782,6 +2638,15 @@ packages: requiresBuild: true optional: true + /@esbuild/android-x64@0.19.2: + resolution: {integrity: sha512-qK/TpmHt2M/Hg82WXHRc/W/2SGo/l1thtDHZWqFq7oi24AjZ4O/CpPSu6ZuYKFkEgmZlFoa7CooAyYmuvnaG8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64@0.20.2: resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} engines: {node: '>=12'} @@ -1790,6 +2655,15 @@ packages: requiresBuild: true optional: true + /@esbuild/darwin-arm64@0.19.2: + resolution: {integrity: sha512-Ora8JokrvrzEPEpZO18ZYXkH4asCdc1DLdcVy8TGf5eWtPO1Ie4WroEJzwI52ZGtpODy3+m0a2yEX9l+KUn0tA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64@0.20.2: resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} engines: {node: '>=12'} @@ -1798,6 +2672,15 @@ packages: requiresBuild: true optional: true + /@esbuild/darwin-x64@0.19.2: + resolution: {integrity: sha512-tP+B5UuIbbFMj2hQaUr6EALlHOIOmlLM2FK7jeFBobPy2ERdohI4Ka6ZFjZ1ZYsrHE/hZimGuU90jusRE0pwDw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64@0.20.2: resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} engines: {node: '>=12'} @@ -1806,6 +2689,15 @@ packages: requiresBuild: true optional: true + /@esbuild/freebsd-arm64@0.19.2: + resolution: {integrity: sha512-YbPY2kc0acfzL1VPVK6EnAlig4f+l8xmq36OZkU0jzBVHcOTyQDhnKQaLzZudNJQyymd9OqQezeaBgkTGdTGeQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64@0.20.2: resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} engines: {node: '>=12'} @@ -1814,6 +2706,15 @@ packages: requiresBuild: true optional: true + /@esbuild/freebsd-x64@0.19.2: + resolution: {integrity: sha512-nSO5uZT2clM6hosjWHAsS15hLrwCvIWx+b2e3lZ3MwbYSaXwvfO528OF+dLjas1g3bZonciivI8qKR/Hm7IWGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64@0.20.2: resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} engines: {node: '>=12'} @@ -1822,6 +2723,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-arm64@0.19.2: + resolution: {integrity: sha512-ig2P7GeG//zWlU0AggA3pV1h5gdix0MA3wgB+NsnBXViwiGgY77fuN9Wr5uoCrs2YzaYfogXgsWZbm+HGr09xg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64@0.20.2: resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} engines: {node: '>=12'} @@ -1830,6 +2740,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-arm@0.19.2: + resolution: {integrity: sha512-Odalh8hICg7SOD7XCj0YLpYCEc+6mkoq63UnExDCiRA2wXEmGlK5JVrW50vZR9Qz4qkvqnHcpH+OFEggO3PgTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm@0.20.2: resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} engines: {node: '>=12'} @@ -1838,6 +2757,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-ia32@0.19.2: + resolution: {integrity: sha512-mLfp0ziRPOLSTek0Gd9T5B8AtzKAkoZE70fneiiyPlSnUKKI4lp+mGEnQXcQEHLJAcIYDPSyBvsUbKUG2ri/XQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32@0.20.2: resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} engines: {node: '>=12'} @@ -1846,6 +2774,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-loong64@0.19.2: + resolution: {integrity: sha512-hn28+JNDTxxCpnYjdDYVMNTR3SKavyLlCHHkufHV91fkewpIyQchS1d8wSbmXhs1fiYDpNww8KTFlJ1dHsxeSw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64@0.20.2: resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} engines: {node: '>=12'} @@ -1854,6 +2791,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-mips64el@0.19.2: + resolution: {integrity: sha512-KbXaC0Sejt7vD2fEgPoIKb6nxkfYW9OmFUK9XQE4//PvGIxNIfPk1NmlHmMg6f25x57rpmEFrn1OotASYIAaTg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el@0.20.2: resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} engines: {node: '>=12'} @@ -1862,6 +2808,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-ppc64@0.19.2: + resolution: {integrity: sha512-dJ0kE8KTqbiHtA3Fc/zn7lCd7pqVr4JcT0JqOnbj4LLzYnp+7h8Qi4yjfq42ZlHfhOCM42rBh0EwHYLL6LEzcw==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64@0.20.2: resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} engines: {node: '>=12'} @@ -1870,6 +2825,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-riscv64@0.19.2: + resolution: {integrity: sha512-7Z/jKNFufZ/bbu4INqqCN6DDlrmOTmdw6D0gH+6Y7auok2r02Ur661qPuXidPOJ+FSgbEeQnnAGgsVynfLuOEw==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64@0.20.2: resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} engines: {node: '>=12'} @@ -1878,6 +2842,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-s390x@0.19.2: + resolution: {integrity: sha512-U+RinR6aXXABFCcAY4gSlv4CL1oOVvSSCdseQmGO66H+XyuQGZIUdhG56SZaDJQcLmrSfRmx5XZOWyCJPRqS7g==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x@0.20.2: resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} engines: {node: '>=12'} @@ -1886,6 +2859,15 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-x64@0.19.2: + resolution: {integrity: sha512-oxzHTEv6VPm3XXNaHPyUTTte+3wGv7qVQtqaZCrgstI16gCuhNOtBXLEBkBREP57YTd68P0VgDgG73jSD8bwXQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64@0.20.2: resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} engines: {node: '>=12'} @@ -1894,6 +2876,15 @@ packages: requiresBuild: true optional: true + /@esbuild/netbsd-x64@0.19.2: + resolution: {integrity: sha512-WNa5zZk1XpTTwMDompZmvQLHszDDDN7lYjEHCUmAGB83Bgs20EMs7ICD+oKeT6xt4phV4NDdSi/8OfjPbSbZfQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64@0.20.2: resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} engines: {node: '>=12'} @@ -1902,6 +2893,15 @@ packages: requiresBuild: true optional: true + /@esbuild/openbsd-x64@0.19.2: + resolution: {integrity: sha512-S6kI1aT3S++Dedb7vxIuUOb3oAxqxk2Rh5rOXOTYnzN8JzW1VzBd+IqPiSpgitu45042SYD3HCoEyhLKQcDFDw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64@0.20.2: resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} engines: {node: '>=12'} @@ -1910,6 +2910,15 @@ packages: requiresBuild: true optional: true + /@esbuild/sunos-x64@0.19.2: + resolution: {integrity: sha512-VXSSMsmb+Z8LbsQGcBMiM+fYObDNRm8p7tkUDMPG/g4fhFX5DEFmjxIEa3N8Zr96SjsJ1woAhF0DUnS3MF3ARw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64@0.20.2: resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} engines: {node: '>=12'} @@ -1918,6 +2927,15 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-arm64@0.19.2: + resolution: {integrity: sha512-5NayUlSAyb5PQYFAU9x3bHdsqB88RC3aM9lKDAz4X1mo/EchMIT1Q+pSeBXNgkfNmRecLXA0O8xP+x8V+g/LKg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64@0.20.2: resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} engines: {node: '>=12'} @@ -1926,6 +2944,15 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-ia32@0.19.2: + resolution: {integrity: sha512-47gL/ek1v36iN0wL9L4Q2MFdujR0poLZMJwhO2/N3gA89jgHp4MR8DKCmwYtGNksbfJb9JoTtbkoe6sDhg2QTA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32@0.20.2: resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} engines: {node: '>=12'} @@ -1934,6 +2961,15 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-x64@0.19.2: + resolution: {integrity: sha512-tcuhV7ncXBqbt/Ybf0IyrMcwVOAPDckMK9rXNHtF17UTK18OKLpg08glminN06pt2WCoALhXdLfSPbVvK/6fxw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64@0.20.2: resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} engines: {node: '>=12'} @@ -2529,7 +3565,7 @@ packages: resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 @@ -2636,14 +3672,14 @@ packages: - utf-8-validate dev: true - /@mdx-js/react@3.0.1(@types/react@18.2.70)(react@18.2.0): + /@mdx-js/react@3.0.1(@types/react@18.2.72)(react@18.2.0): resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} peerDependencies: '@types/react': '>=16' react: '>=16' dependencies: '@types/mdx': 2.0.11 - '@types/react': 18.2.70 + '@types/react': 18.2.72 react: 18.2.0 dev: true @@ -2664,8 +3700,8 @@ packages: - utf-8-validate dev: true - /@next/env@14.1.4: - resolution: {integrity: sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ==} + /@next/env@14.2.0-canary.43: + resolution: {integrity: sha512-jBjfC5J053shwv+g4kplFG+iH1TqWwMtLCIpDSplOmRDLdGeai6s3oKmWIxd+MbG5ETSZOl1vCN5A3nMgGkXfg==} /@next/eslint-plugin-next@14.1.4: resolution: {integrity: sha512-n4zYNLSyCo0Ln5b7qxqQeQ34OZKXwgbdcx6kmkQbywr+0k6M3Vinft0T72R6CDAcDrne2IAgSud4uWCzFgc5HA==} @@ -2673,78 +3709,102 @@ packages: glob: 10.3.10 dev: true - /@next/swc-darwin-arm64@14.1.4: - resolution: {integrity: sha512-ubmUkbmW65nIAOmoxT1IROZdmmJMmdYvXIe8211send9ZYJu+SqxSnJM4TrPj9wmL6g9Atvj0S/2cFmMSS99jg==} + /@next/swc-darwin-arm64@14.2.0-canary.43: + resolution: {integrity: sha512-M9Asj8J6GMVNdMRnDnR+hELiyjgaHSUYAZz4M7ro5Vd1X8wpg3jygd/RnkTv+hhHn3rqwV9jWyZ4xdyG3SORrg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@next/swc-darwin-x64@14.1.4: - resolution: {integrity: sha512-b0Xo1ELj3u7IkZWAKcJPJEhBop117U78l70nfoQGo4xUSvv0PJSTaV4U9xQBLvZlnjsYkc8RwQN1HoH/oQmLlQ==} + /@next/swc-darwin-x64@14.2.0-canary.43: + resolution: {integrity: sha512-3BQ5FirbYZgXAFOCUynDr/Sl0fcFfEiLiDVdGMaJO7754fuWJShcj5tODiFC2B7MgLsVkri/84prBzsjkg76jA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@next/swc-linux-arm64-gnu@14.1.4: - resolution: {integrity: sha512-457G0hcLrdYA/u1O2XkRMsDKId5VKe3uKPvrKVOyuARa6nXrdhJOOYU9hkKKyQTMru1B8qEP78IAhf/1XnVqKA==} + /@next/swc-linux-arm64-gnu@14.2.0-canary.43: + resolution: {integrity: sha512-VoCLYDTD2bkLsUkT0bACplrdpTw+IBKdFr5ih85atePrujCz6dMPUxeNMwH9aYL7r3PgzH6dR30r0Y5TFwUUSg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@next/swc-linux-arm64-musl@14.1.4: - resolution: {integrity: sha512-l/kMG+z6MB+fKA9KdtyprkTQ1ihlJcBh66cf0HvqGP+rXBbOXX0dpJatjZbHeunvEHoBBS69GYQG5ry78JMy3g==} + /@next/swc-linux-arm64-musl@14.2.0-canary.43: + resolution: {integrity: sha512-8c35oylAS4Ggu155txTpOv7VG4BzG8BTluVbUZuaneZwsZi6VTbjVKMVnLYmmdcdRkkvRgPc83oUr2HGxwxFBw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@next/swc-linux-x64-gnu@14.1.4: - resolution: {integrity: sha512-BapIFZ3ZRnvQ1uWbmqEGJuPT9cgLwvKtxhK/L2t4QYO7l+/DxXuIGjvp1x8rvfa/x1FFSsipERZK70pewbtJtw==} + /@next/swc-linux-x64-gnu@14.2.0-canary.43: + resolution: {integrity: sha512-PHy7clJ+ChZzNJ3c9A2IrWJN4aNa+FZ+v39XNdcjdkdhPvwu1QSvtirWSbxqKpAqgA/3sMhAGCvwOx6yeBs4Ug==} engines: {node: '>= 10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@next/swc-linux-x64-musl@14.1.4: - resolution: {integrity: sha512-mqVxTwk4XuBl49qn2A5UmzFImoL1iLm0KQQwtdRJRKl21ylQwwGCxJtIYo2rbfkZHoSKlh/YgztY0qH3wG1xIg==} + /@next/swc-linux-x64-musl@14.2.0-canary.43: + resolution: {integrity: sha512-pvma+GKwkDEzhQRrwl9P4oGu9A9NGJH/Za+SG/XwWph2i78+4OMDCKrmKEJ1T5BE6Bgo+Emfhdy8TmfqHPQQCg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@next/swc-win32-arm64-msvc@14.1.4: - resolution: {integrity: sha512-xzxF4ErcumXjO2Pvg/wVGrtr9QQJLk3IyQX1ddAC/fi6/5jZCZ9xpuL9Tzc4KPWMFq8GGWFVDMshZOdHGdkvag==} + /@next/swc-win32-arm64-msvc@14.2.0-canary.43: + resolution: {integrity: sha512-b1npBheIu7/BgMZTCFkuNYv0Q/N9u6+7MYY5xjZDVIutW8ut2V93JZqeC2SYWFm03I+LNdYjplRhn3TVerz9Xg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@next/swc-win32-ia32-msvc@14.1.4: - resolution: {integrity: sha512-WZiz8OdbkpRw6/IU/lredZWKKZopUMhcI2F+XiMAcPja0uZYdMTZQRoQ0WZcvinn9xZAidimE7tN9W5v9Yyfyw==} + /@next/swc-win32-ia32-msvc@14.2.0-canary.43: + resolution: {integrity: sha512-1bZDCGyQzvdRNxVUUhsjBZOzBEEoQlh1r91ifjUz9nhcFYOlmP6IplPMjaLmG+GJMUiI36j5svdPYO3LP08b8g==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@next/swc-win32-x64-msvc@14.1.4: - resolution: {integrity: sha512-4Rto21sPfw555sZ/XNLqfxDUNeLhNYGO2dlPqsnuCg8N8a2a9u1ltqBOPQ4vj1Gf7eJC0W2hHG2eYUHuiXgY2w==} + /@next/swc-win32-x64-msvc@14.2.0-canary.43: + resolution: {integrity: sha512-pU9gjLmp4yjYzBqCGa5bQ0iyJ5D73IRITEUFKrjZPi0XHUbFLrhcaaCsnVgMO4xfOQJgS7ODuQB7N0iPk7/EMw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] requiresBuild: true optional: true + /@node-minify/core@8.0.6: + resolution: {integrity: sha512-/vxN46ieWDLU67CmgbArEvOb41zlYFOkOtr9QW9CnTrBLuTyGgkyNWC2y5+khvRw3Br58p2B5ZVSx/PxCTru6g==} + engines: {node: '>=16.0.0'} + dependencies: + '@node-minify/utils': 8.0.6 + glob: 9.3.5 + mkdirp: 1.0.4 + dev: true + + /@node-minify/terser@8.0.6: + resolution: {integrity: sha512-grQ1ipham743ch2c3++C8Isk6toJnxJSyDiwUI/IWUCh4CZFD6aYVw6UAY40IpCnjrq5aXGwiv5OZJn6Pr0hvg==} + engines: {node: '>=16.0.0'} + dependencies: + '@node-minify/utils': 8.0.6 + terser: 5.16.9 + dev: true + + /@node-minify/utils@8.0.6: + resolution: {integrity: sha512-csY4qcR7jUwiZmkreNTJhcypQfts2aY2CK+a+rXgXUImZiZiySh0FvwHjRnlqWKvg+y6ae9lHFzDRjBTmqlTIQ==} + engines: {node: '>=16.0.0'} + dependencies: + gzip-size: 6.0.0 + dev: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -3041,9 +4101,8 @@ packages: hasBin: true dependencies: playwright: 1.42.1 - dev: true - /@pmmmwh/react-refresh-webpack-plugin@0.5.11(react-refresh@0.14.0)(webpack@5.90.3): + /@pmmmwh/react-refresh-webpack-plugin@0.5.11(react-refresh@0.14.0)(webpack@5.91.0): resolution: {integrity: sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==} engines: {node: '>= 10.13'} peerDependencies: @@ -3079,7 +4138,7 @@ packages: react-refresh: 0.14.0 schema-utils: 3.3.0 source-map: 0.7.4 - webpack: 5.90.3(esbuild@0.20.2) + webpack: 5.91.0(esbuild@0.20.2) dev: true /@polka/url@1.0.0-next.25: @@ -3168,7 +4227,7 @@ packages: '@babel/runtime': 7.24.1 dev: false - /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} peerDependencies: '@types/react': '*' @@ -3182,14 +4241,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.1 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.70 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.72 '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} peerDependencies: '@types/react': '*' @@ -3203,17 +4262,17 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.70)(react@18.2.0) - '@types/react': 18.2.70 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.72)(react@18.2.0) + '@types/react': 18.2.72 '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.70)(react@18.2.0): + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.72)(react@18.2.0): resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: '@types/react': '*' @@ -3223,10 +4282,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.1 - '@types/react': 18.2.70 + '@types/react': 18.2.72 react: 18.2.0 - /@radix-ui/react-context@1.0.1(@types/react@18.2.70)(react@18.2.0): + /@radix-ui/react-context@1.0.1(@types/react@18.2.72)(react@18.2.0): resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} peerDependencies: '@types/react': '*' @@ -3236,11 +4295,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.1 - '@types/react': 18.2.70 + '@types/react': 18.2.72 react: 18.2.0 dev: false - /@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} peerDependencies: '@types/react': '*' @@ -3255,26 +4314,26 @@ packages: dependencies: '@babel/runtime': 7.24.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@types/react': 18.2.70 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@types/react': 18.2.72 '@types/react-dom': 18.2.22 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.70)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.72)(react@18.2.0) dev: false - /@radix-ui/react-direction@1.0.1(@types/react@18.2.70)(react@18.2.0): + /@radix-ui/react-direction@1.0.1(@types/react@18.2.72)(react@18.2.0): resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} peerDependencies: '@types/react': '*' @@ -3284,11 +4343,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.1 - '@types/react': 18.2.70 + '@types/react': 18.2.72 react: 18.2.0 dev: false - /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} peerDependencies: '@types/react': '*' @@ -3303,17 +4362,17 @@ packages: dependencies: '@babel/runtime': 7.24.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.70)(react@18.2.0) - '@types/react': 18.2.70 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.72)(react@18.2.0) + '@types/react': 18.2.72 '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} peerDependencies: '@types/react': '*' @@ -3328,19 +4387,19 @@ packages: dependencies: '@babel/runtime': 7.24.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@types/react': 18.2.70 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@types/react': 18.2.72 '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.70)(react@18.2.0): + /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.72)(react@18.2.0): resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} peerDependencies: '@types/react': '*' @@ -3350,11 +4409,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.1 - '@types/react': 18.2.70 + '@types/react': 18.2.72 react: 18.2.0 dev: false - /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} peerDependencies: '@types/react': '*' @@ -3368,16 +4427,16 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@types/react': 18.2.70 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@types/react': 18.2.72 '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-id@1.0.1(@types/react@18.2.70)(react@18.2.0): + /@radix-ui/react-id@1.0.1(@types/react@18.2.72)(react@18.2.0): resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} peerDependencies: '@types/react': '*' @@ -3387,12 +4446,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.1 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@types/react': 18.2.70 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@types/react': 18.2.72 react: 18.2.0 dev: false - /@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} peerDependencies: '@types/react': '*' @@ -3407,30 +4466,30 @@ packages: dependencies: '@babel/runtime': 7.24.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@types/react': 18.2.70 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@types/react': 18.2.72 '@types/react-dom': 18.2.22 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.70)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.72)(react@18.2.0) dev: false - /@radix-ui/react-navigation-menu@1.1.4(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-navigation-menu@1.1.4(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Cc+seCS3PmWmjI51ufGG7zp1cAAIRqHVw7C9LOA2TZ+R4hG6rDvHcTqIsEEFLmZO3zNVH72jOOE7kKNy8W+RtA==} peerDependencies: '@types/react': '*' @@ -3445,26 +4504,26 @@ packages: dependencies: '@babel/runtime': 7.24.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.70 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.72 '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} peerDependencies: '@types/react': '*' @@ -3479,22 +4538,22 @@ packages: dependencies: '@babel/runtime': 7.24.1 '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.70)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.72)(react@18.2.0) '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.70 + '@types/react': 18.2.72 '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} peerDependencies: '@types/react': '*' @@ -3508,14 +4567,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.1 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.70 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.72 '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} peerDependencies: '@types/react': '*' @@ -3529,15 +4588,15 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@types/react': 18.2.70 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@types/react': 18.2.72 '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: '@types/react': '*' @@ -3551,14 +4610,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.1 - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.70)(react@18.2.0) - '@types/react': 18.2.70 + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.72)(react@18.2.0) + '@types/react': 18.2.72 '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} peerDependencies: '@types/react': '*' @@ -3573,21 +4632,21 @@ packages: dependencies: '@babel/runtime': 7.24.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@types/react': 18.2.70 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@types/react': 18.2.72 '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-slot@1.0.2(@types/react@18.2.70)(react@18.2.0): + /@radix-ui/react-slot@1.0.2(@types/react@18.2.72)(react@18.2.0): resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} peerDependencies: '@types/react': '*' @@ -3597,11 +4656,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@types/react': 18.2.70 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@types/react': 18.2.72 react: 18.2.0 - /@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==} peerDependencies: '@types/react': '*' @@ -3616,24 +4675,24 @@ packages: dependencies: '@babel/runtime': 7.24.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.70 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.72 '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.70)(react@18.2.0): + /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.72)(react@18.2.0): resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} peerDependencies: '@types/react': '*' @@ -3643,11 +4702,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.1 - '@types/react': 18.2.70 + '@types/react': 18.2.72 react: 18.2.0 dev: false - /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.70)(react@18.2.0): + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.72)(react@18.2.0): resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} peerDependencies: '@types/react': '*' @@ -3657,12 +4716,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.1 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@types/react': 18.2.70 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@types/react': 18.2.72 react: 18.2.0 dev: false - /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.70)(react@18.2.0): + /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.72)(react@18.2.0): resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} peerDependencies: '@types/react': '*' @@ -3672,12 +4731,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.1 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@types/react': 18.2.70 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@types/react': 18.2.72 react: 18.2.0 dev: false - /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.70)(react@18.2.0): + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.72)(react@18.2.0): resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} peerDependencies: '@types/react': '*' @@ -3687,11 +4746,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.1 - '@types/react': 18.2.70 + '@types/react': 18.2.72 react: 18.2.0 dev: false - /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.70)(react@18.2.0): + /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.72)(react@18.2.0): resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} peerDependencies: '@types/react': '*' @@ -3701,11 +4760,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.1 - '@types/react': 18.2.70 + '@types/react': 18.2.72 react: 18.2.0 dev: false - /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.70)(react@18.2.0): + /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.72)(react@18.2.0): resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} peerDependencies: '@types/react': '*' @@ -3716,11 +4775,11 @@ packages: dependencies: '@babel/runtime': 7.24.1 '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.70 + '@types/react': 18.2.72 react: 18.2.0 dev: false - /@radix-ui/react-use-size@1.0.1(@types/react@18.2.70)(react@18.2.0): + /@radix-ui/react-use-size@1.0.1(@types/react@18.2.72)(react@18.2.0): resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} peerDependencies: '@types/react': '*' @@ -3730,12 +4789,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.1 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.70)(react@18.2.0) - '@types/react': 18.2.70 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.72)(react@18.2.0) + '@types/react': 18.2.72 react: 18.2.0 dev: false - /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} peerDependencies: '@types/react': '*' @@ -3749,8 +4808,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.1 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.70 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.72 '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3762,7 +4821,7 @@ packages: '@babel/runtime': 7.24.1 dev: false - /@rollup/plugin-babel@5.3.1(@babel/core@7.24.1)(rollup@2.79.1): + /@rollup/plugin-babel@5.3.1(@babel/core@7.24.3)(rollup@2.79.1): resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -3773,7 +4832,7 @@ packages: '@types/babel__core': optional: true dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-module-imports': 7.24.1 '@rollup/pluginutils': 3.1.0(rollup@2.79.1) rollup: 2.79.1 @@ -3922,202 +4981,658 @@ packages: tslib: 1.14.1 dev: true - /@sentry/core@7.108.0: - resolution: {integrity: sha512-I/VNZCFgLASxHZaD0EtxZRM34WG9w2gozqgrKGNMzAymwmQ3K9g/1qmBy4e6iS3YRptb7J5UhQkZQHrcwBbjWQ==} - engines: {node: '>=8'} + /@sentry/core@7.108.0: + resolution: {integrity: sha512-I/VNZCFgLASxHZaD0EtxZRM34WG9w2gozqgrKGNMzAymwmQ3K9g/1qmBy4e6iS3YRptb7J5UhQkZQHrcwBbjWQ==} + engines: {node: '>=8'} + dependencies: + '@sentry/types': 7.108.0 + '@sentry/utils': 7.108.0 + dev: false + + /@sentry/hub@6.19.7: + resolution: {integrity: sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==} + engines: {node: '>=6'} + dependencies: + '@sentry/types': 6.19.7 + '@sentry/utils': 6.19.7 + tslib: 1.14.1 + dev: true + + /@sentry/integrations@7.108.0: + resolution: {integrity: sha512-b/WbK1f3x2rQ4aJJSA4VSwpBXrXFm1Nzrca3Y9qW0MI1wjZEYsDDrh9m6ulLdVBl4YDc2VqYp1COwU/NjuHlog==} + engines: {node: '>=8'} + dependencies: + '@sentry/core': 7.108.0 + '@sentry/types': 7.108.0 + '@sentry/utils': 7.108.0 + localforage: 1.10.0 + dev: false + + /@sentry/minimal@6.19.7: + resolution: {integrity: sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==} + engines: {node: '>=6'} + dependencies: + '@sentry/hub': 6.19.7 + '@sentry/types': 6.19.7 + tslib: 1.14.1 + dev: true + + /@sentry/nextjs@7.108.0(next@14.2.0-canary.43)(react@18.2.0)(webpack@5.91.0): + resolution: {integrity: sha512-etBrMSLRbNAzozetBeL6D+lR9lRAyHmV7NUBGCX9lQvgmcdxkQa15EX8pIKjsMejZ8xAZNsqYVIByIs67A77rg==} + engines: {node: '>=8'} + peerDependencies: + next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 || ^14.0 + react: 16.x || 17.x || 18.x + webpack: '>= 4.0.0' + peerDependenciesMeta: + webpack: + optional: true + dependencies: + '@rollup/plugin-commonjs': 24.0.0(rollup@2.78.0) + '@sentry/core': 7.108.0 + '@sentry/integrations': 7.108.0 + '@sentry/node': 7.108.0 + '@sentry/react': 7.108.0(react@18.2.0) + '@sentry/types': 7.108.0 + '@sentry/utils': 7.108.0 + '@sentry/vercel-edge': 7.108.0 + '@sentry/webpack-plugin': 1.21.0 + chalk: 3.0.0 + next: 14.2.0-canary.43(@babel/core@7.24.3)(@opentelemetry/api@1.8.0)(@playwright/test@1.42.1)(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + resolve: 1.22.8 + rollup: 2.78.0 + stacktrace-parser: 0.1.10 + webpack: 5.91.0(esbuild@0.20.2) + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@sentry/node@6.19.7: + resolution: {integrity: sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==} + engines: {node: '>=6'} + dependencies: + '@sentry/core': 6.19.7 + '@sentry/hub': 6.19.7 + '@sentry/types': 6.19.7 + '@sentry/utils': 6.19.7 + cookie: 0.4.2 + https-proxy-agent: 5.0.1 + lru_map: 0.3.3 + tslib: 1.14.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@sentry/node@7.108.0: + resolution: {integrity: sha512-pMxc9txnDDkU4Z8k2Uw/DPSLPehNtWV3mjJ3+my0AMORGYrXLkJI93tddlE5z/7k+GEJdj1HsOLgxUN0OU+HGA==} + engines: {node: '>=8'} + dependencies: + '@sentry-internal/tracing': 7.108.0 + '@sentry/core': 7.108.0 + '@sentry/types': 7.108.0 + '@sentry/utils': 7.108.0 + dev: false + + /@sentry/opentelemetry-node@7.108.0(@opentelemetry/api@1.8.0)(@opentelemetry/core@1.22.0)(@opentelemetry/sdk-trace-base@1.22.0)(@opentelemetry/semantic-conventions@1.22.0): + resolution: {integrity: sha512-fPBTxmy+8XcEGi1lPux+s4pU5l3/LUE4KgWXWY/yCGb+nF2iNIaHfcp99BPT888athmtCpHF6Eist+fgSRMg9A==} + engines: {node: '>=8'} + peerDependencies: + '@opentelemetry/api': 1.x + '@opentelemetry/core': 1.x + '@opentelemetry/sdk-trace-base': 1.x + '@opentelemetry/semantic-conventions': 1.x + dependencies: + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.22.0(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-trace-base': 1.22.0(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.22.0 + '@sentry/core': 7.108.0 + '@sentry/types': 7.108.0 + '@sentry/utils': 7.108.0 + dev: false + + /@sentry/react@7.108.0(react@18.2.0): + resolution: {integrity: sha512-C60arh5/gtO42eMU9l34aWlKDLZUO+1j1goaEf/XRSwUcyJS9tbJrs+mT4nbKxUsEG714It2gRbfSEvh1eXmCg==} + engines: {node: '>=8'} + peerDependencies: + react: 15.x || 16.x || 17.x || 18.x + dependencies: + '@sentry/browser': 7.108.0 + '@sentry/core': 7.108.0 + '@sentry/types': 7.108.0 + '@sentry/utils': 7.108.0 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + dev: false + + /@sentry/replay@7.108.0: + resolution: {integrity: sha512-jo8fDOzcZJclP1+4n9jUtVxTlBFT9hXwxhAMrhrt70FV/nfmCtYQMD3bzIj79nwbhUtFP6pN39JH1o7Xqt1hxQ==} + engines: {node: '>=12'} + dependencies: + '@sentry-internal/tracing': 7.108.0 + '@sentry/core': 7.108.0 + '@sentry/types': 7.108.0 + '@sentry/utils': 7.108.0 + dev: false + + /@sentry/types@6.19.7: + resolution: {integrity: sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==} + engines: {node: '>=6'} + dev: true + + /@sentry/types@7.108.0: + resolution: {integrity: sha512-bKtHITmBN3kqtqE5eVvL8mY8znM05vEodENwRpcm6TSrrBjC2RnwNWVwGstYDdHpNfFuKwC8mLY9bgMJcENo8g==} + engines: {node: '>=8'} + dev: false + + /@sentry/utils@6.19.7: + resolution: {integrity: sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==} + engines: {node: '>=6'} + dependencies: + '@sentry/types': 6.19.7 + tslib: 1.14.1 + dev: true + + /@sentry/utils@7.108.0: + resolution: {integrity: sha512-a45yEFD5qtgZaIFRAcFkG8C8lnDzn6t4LfLXuV4OafGAy/3ZAN3XN8wDnrruHkiUezSSANGsLg3bXaLW/JLvJw==} + engines: {node: '>=8'} + dependencies: + '@sentry/types': 7.108.0 + dev: false + + /@sentry/vercel-edge@7.108.0: + resolution: {integrity: sha512-dUuUEswaVIzsJnzTfaJxrvkfOowrlJxxHo2AybPDym2rob7CdaLdDJIYJa83X7QeAKMkTgLny/gYSQYC0E4UyA==} + engines: {node: '>=8'} + dependencies: + '@sentry-internal/tracing': 7.108.0 + '@sentry/core': 7.108.0 + '@sentry/types': 7.108.0 + '@sentry/utils': 7.108.0 + dev: false + + /@sentry/webpack-plugin@1.21.0: + resolution: {integrity: sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==} + engines: {node: '>= 8'} + dependencies: + '@sentry/cli': 1.77.3 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@sinonjs/commons@3.0.1: + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.1 + dev: true + + /@smithy/abort-controller@2.2.0: + resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@smithy/chunked-blob-reader-native@2.2.0: + resolution: {integrity: sha512-VNB5+1oCgX3Fzs072yuRsUoC2N4Zg/LJ11DTxX3+Qu+Paa6AmbIF0E9sc2wthz9Psrk/zcOlTCyuposlIhPjZQ==} + dependencies: + '@smithy/util-base64': 2.3.0 + tslib: 2.6.2 + dev: true + + /@smithy/chunked-blob-reader@2.2.0: + resolution: {integrity: sha512-3GJNvRwXBGdkDZZOGiziVYzDpn4j6zfyULHMDKAGIUo72yHALpE9CbhfQp/XcLNVoc1byfMpn6uW5H2BqPjgaQ==} + dependencies: + tslib: 2.6.2 + dev: true + + /@smithy/config-resolver@2.2.0: + resolution: {integrity: sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/node-config-provider': 2.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-config-provider': 2.3.0 + '@smithy/util-middleware': 2.2.0 + tslib: 2.6.2 + dev: true + + /@smithy/core@1.4.0: + resolution: {integrity: sha512-uu9ZDI95Uij4qk+L6kyFjdk11zqBkcJ3Lv0sc6jZrqHvLyr0+oeekD3CnqMafBn/5PRI6uv6ulW3kNLRBUHeVw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/middleware-endpoint': 2.5.0 + '@smithy/middleware-retry': 2.2.0 + '@smithy/middleware-serde': 2.3.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/util-middleware': 2.2.0 + tslib: 2.6.2 + dev: true + + /@smithy/credential-provider-imds@2.3.0: + resolution: {integrity: sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/node-config-provider': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + tslib: 2.6.2 + dev: true + + /@smithy/eventstream-codec@2.2.0: + resolution: {integrity: sha512-8janZoJw85nJmQZc4L8TuePp2pk1nxLgkxIR0TUjKJ5Dkj5oelB9WtiSSGXCQvNsJl0VSTvK/2ueMXxvpa9GVw==} + dependencies: + '@aws-crypto/crc32': 3.0.0 + '@smithy/types': 2.12.0 + '@smithy/util-hex-encoding': 2.2.0 + tslib: 2.6.2 + dev: true + + /@smithy/eventstream-serde-browser@2.2.0: + resolution: {integrity: sha512-UaPf8jKbcP71BGiO0CdeLmlg+RhWnlN8ipsMSdwvqBFigl5nil3rHOI/5GE3tfiuX8LvY5Z9N0meuU7Rab7jWw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/eventstream-serde-universal': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@smithy/eventstream-serde-config-resolver@2.2.0: + resolution: {integrity: sha512-RHhbTw/JW3+r8QQH7PrganjNCiuiEZmpi6fYUAetFfPLfZ6EkiA08uN3EFfcyKubXQxOwTeJRZSQmDDCdUshaA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@smithy/eventstream-serde-node@2.2.0: + resolution: {integrity: sha512-zpQMtJVqCUMn+pCSFcl9K/RPNtQE0NuMh8sKpCdEHafhwRsjP50Oq/4kMmvxSRy6d8Jslqd8BLvDngrUtmN9iA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/eventstream-serde-universal': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@smithy/eventstream-serde-universal@2.2.0: + resolution: {integrity: sha512-pvoe/vvJY0mOpuF84BEtyZoYfbehiFj8KKWk1ds2AT0mTLYFVs+7sBJZmioOFdBXKd48lfrx1vumdPdmGlCLxA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/eventstream-codec': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@smithy/fetch-http-handler@2.5.0: + resolution: {integrity: sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==} + dependencies: + '@smithy/protocol-http': 3.3.0 + '@smithy/querystring-builder': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/util-base64': 2.3.0 + tslib: 2.6.2 + dev: true + + /@smithy/hash-blob-browser@2.2.0: + resolution: {integrity: sha512-SGPoVH8mdXBqrkVCJ1Hd1X7vh1zDXojNN1yZyZTZsCno99hVue9+IYzWDjq/EQDDXxmITB0gBmuyPh8oAZSTcg==} + dependencies: + '@smithy/chunked-blob-reader': 2.2.0 + '@smithy/chunked-blob-reader-native': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@smithy/hash-node@2.2.0: + resolution: {integrity: sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.12.0 + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 + dev: true + + /@smithy/hash-stream-node@2.2.0: + resolution: {integrity: sha512-aT+HCATOSRMGpPI7bi7NSsTNVZE/La9IaxLXWoVAYMxHT5hGO3ZOGEMZQg8A6nNL+pdFGtZQtND1eoY084HgHQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.12.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 + dev: true + + /@smithy/invalid-dependency@2.2.0: + resolution: {integrity: sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==} + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@smithy/is-array-buffer@2.2.0: + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: true + + /@smithy/md5-js@2.2.0: + resolution: {integrity: sha512-M26XTtt9IIusVMOWEAhIvFIr9jYj4ISPPGJROqw6vXngO3IYJCnVVSMFn4Tx1rUTG5BiKJNg9u2nxmBiZC5IlQ==} + dependencies: + '@smithy/types': 2.12.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 + dev: true + + /@smithy/middleware-content-length@2.2.0: + resolution: {integrity: sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@smithy/middleware-endpoint@2.5.0: + resolution: {integrity: sha512-OBhI9ZEAG8Xen0xsFJwwNOt44WE2CWkfYIxTognC8x42Lfsdf0VN/wCMqpdkySMDio/vts10BiovAxQp0T0faA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/middleware-serde': 2.3.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-middleware': 2.2.0 + tslib: 2.6.2 + dev: true + + /@smithy/middleware-retry@2.2.0: + resolution: {integrity: sha512-PsjDOLpbevgn37yJbawmfVoanru40qVA8UEf2+YA1lvOefmhuhL6ZbKtGsLAWDRnE1OlAmedsbA/htH6iSZjNA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/node-config-provider': 2.3.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/service-error-classification': 2.1.5 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-retry': 2.2.0 + tslib: 2.6.2 + uuid: 8.3.2 + dev: true + + /@smithy/middleware-serde@2.3.0: + resolution: {integrity: sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@smithy/middleware-stack@2.2.0: + resolution: {integrity: sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@smithy/node-config-provider@2.3.0: + resolution: {integrity: sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@smithy/node-http-handler@2.5.0: + resolution: {integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/abort-controller': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/querystring-builder': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@smithy/property-provider@2.2.0: + resolution: {integrity: sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@smithy/protocol-http@3.3.0: + resolution: {integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@smithy/querystring-builder@2.2.0: + resolution: {integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.12.0 + '@smithy/util-uri-escape': 2.2.0 + tslib: 2.6.2 + dev: true + + /@smithy/querystring-parser@2.2.0: + resolution: {integrity: sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@smithy/service-error-classification@2.1.5: + resolution: {integrity: sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.12.0 + dev: true + + /@smithy/shared-ini-file-loader@2.4.0: + resolution: {integrity: sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true + + /@smithy/signature-v4@2.2.0: + resolution: {integrity: sha512-+B5TNzj/fRZzVW3z8UUJOkNx15+4E0CLuvJmJUA1JUIZFp3rdJ/M2H5r2SqltaVPXL0oIxv/6YK92T9TsFGbFg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/eventstream-codec': 2.2.0 + '@smithy/is-array-buffer': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/util-hex-encoding': 2.2.0 + '@smithy/util-middleware': 2.2.0 + '@smithy/util-uri-escape': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 + dev: true + + /@smithy/smithy-client@2.5.0: + resolution: {integrity: sha512-DDXWHWdimtS3y/Kw1Jo46KQ0ZYsDKcldFynQERUGBPDpkW1lXOTHy491ALHjwfiBQvzsVKVxl5+ocXNIgJuX4g==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/middleware-endpoint': 2.5.0 + '@smithy/middleware-stack': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-stream': 2.2.0 + tslib: 2.6.2 + dev: true + + /@smithy/types@2.12.0: + resolution: {integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==} + engines: {node: '>=14.0.0'} dependencies: - '@sentry/types': 7.108.0 - '@sentry/utils': 7.108.0 - dev: false + tslib: 2.6.2 + dev: true - /@sentry/hub@6.19.7: - resolution: {integrity: sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==} - engines: {node: '>=6'} + /@smithy/url-parser@2.2.0: + resolution: {integrity: sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==} dependencies: - '@sentry/types': 6.19.7 - '@sentry/utils': 6.19.7 - tslib: 1.14.1 + '@smithy/querystring-parser': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: true - /@sentry/integrations@7.108.0: - resolution: {integrity: sha512-b/WbK1f3x2rQ4aJJSA4VSwpBXrXFm1Nzrca3Y9qW0MI1wjZEYsDDrh9m6ulLdVBl4YDc2VqYp1COwU/NjuHlog==} - engines: {node: '>=8'} + /@smithy/util-base64@2.3.0: + resolution: {integrity: sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==} + engines: {node: '>=14.0.0'} dependencies: - '@sentry/core': 7.108.0 - '@sentry/types': 7.108.0 - '@sentry/utils': 7.108.0 - localforage: 1.10.0 - dev: false + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 + dev: true - /@sentry/minimal@6.19.7: - resolution: {integrity: sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==} - engines: {node: '>=6'} + /@smithy/util-body-length-browser@2.2.0: + resolution: {integrity: sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==} dependencies: - '@sentry/hub': 6.19.7 - '@sentry/types': 6.19.7 - tslib: 1.14.1 + tslib: 2.6.2 dev: true - /@sentry/nextjs@7.108.0(next@14.1.4)(react@18.2.0)(webpack@5.90.3): - resolution: {integrity: sha512-etBrMSLRbNAzozetBeL6D+lR9lRAyHmV7NUBGCX9lQvgmcdxkQa15EX8pIKjsMejZ8xAZNsqYVIByIs67A77rg==} - engines: {node: '>=8'} - peerDependencies: - next: ^10.0.8 || ^11.0 || ^12.0 || ^13.0 || ^14.0 - react: 16.x || 17.x || 18.x - webpack: '>= 4.0.0' - peerDependenciesMeta: - webpack: - optional: true + /@smithy/util-body-length-node@2.3.0: + resolution: {integrity: sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==} + engines: {node: '>=14.0.0'} dependencies: - '@rollup/plugin-commonjs': 24.0.0(rollup@2.78.0) - '@sentry/core': 7.108.0 - '@sentry/integrations': 7.108.0 - '@sentry/node': 7.108.0 - '@sentry/react': 7.108.0(react@18.2.0) - '@sentry/types': 7.108.0 - '@sentry/utils': 7.108.0 - '@sentry/vercel-edge': 7.108.0 - '@sentry/webpack-plugin': 1.21.0 - chalk: 3.0.0 - next: 14.1.4(@babel/core@7.24.1)(@opentelemetry/api@1.8.0)(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - resolve: 1.22.8 - rollup: 2.78.0 - stacktrace-parser: 0.1.10 - webpack: 5.90.3(esbuild@0.20.2) - transitivePeerDependencies: - - encoding - - supports-color - dev: false + tslib: 2.6.2 + dev: true - /@sentry/node@6.19.7: - resolution: {integrity: sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==} - engines: {node: '>=6'} + /@smithy/util-buffer-from@2.2.0: + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} dependencies: - '@sentry/core': 6.19.7 - '@sentry/hub': 6.19.7 - '@sentry/types': 6.19.7 - '@sentry/utils': 6.19.7 - cookie: 0.4.2 - https-proxy-agent: 5.0.1 - lru_map: 0.3.3 - tslib: 1.14.1 - transitivePeerDependencies: - - supports-color + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.6.2 dev: true - /@sentry/node@7.108.0: - resolution: {integrity: sha512-pMxc9txnDDkU4Z8k2Uw/DPSLPehNtWV3mjJ3+my0AMORGYrXLkJI93tddlE5z/7k+GEJdj1HsOLgxUN0OU+HGA==} - engines: {node: '>=8'} + /@smithy/util-config-provider@2.3.0: + resolution: {integrity: sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==} + engines: {node: '>=14.0.0'} dependencies: - '@sentry-internal/tracing': 7.108.0 - '@sentry/core': 7.108.0 - '@sentry/types': 7.108.0 - '@sentry/utils': 7.108.0 - dev: false + tslib: 2.6.2 + dev: true - /@sentry/opentelemetry-node@7.108.0(@opentelemetry/api@1.8.0)(@opentelemetry/core@1.22.0)(@opentelemetry/sdk-trace-base@1.22.0)(@opentelemetry/semantic-conventions@1.22.0): - resolution: {integrity: sha512-fPBTxmy+8XcEGi1lPux+s4pU5l3/LUE4KgWXWY/yCGb+nF2iNIaHfcp99BPT888athmtCpHF6Eist+fgSRMg9A==} - engines: {node: '>=8'} - peerDependencies: - '@opentelemetry/api': 1.x - '@opentelemetry/core': 1.x - '@opentelemetry/sdk-trace-base': 1.x - '@opentelemetry/semantic-conventions': 1.x + /@smithy/util-defaults-mode-browser@2.2.0: + resolution: {integrity: sha512-2okTdZaCBvOJszAPU/KSvlimMe35zLOKbQpHhamFJmR7t95HSe0K3C92jQPjKY3PmDBD+7iMkOnuW05F5OlF4g==} + engines: {node: '>= 10.0.0'} dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.22.0(@opentelemetry/api@1.8.0) - '@opentelemetry/sdk-trace-base': 1.22.0(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.22.0 - '@sentry/core': 7.108.0 - '@sentry/types': 7.108.0 - '@sentry/utils': 7.108.0 - dev: false + '@smithy/property-provider': 2.2.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + bowser: 2.11.0 + tslib: 2.6.2 + dev: true - /@sentry/react@7.108.0(react@18.2.0): - resolution: {integrity: sha512-C60arh5/gtO42eMU9l34aWlKDLZUO+1j1goaEf/XRSwUcyJS9tbJrs+mT4nbKxUsEG714It2gRbfSEvh1eXmCg==} - engines: {node: '>=8'} - peerDependencies: - react: 15.x || 16.x || 17.x || 18.x + /@smithy/util-defaults-mode-node@2.3.0: + resolution: {integrity: sha512-hfKXnNLmsW9cmLb/JXKIvtuO6Cf4SuqN5PN1C2Ru/TBIws+m1wSgb+A53vo0r66xzB6E82inKG2J7qtwdi+Kkw==} + engines: {node: '>= 10.0.0'} dependencies: - '@sentry/browser': 7.108.0 - '@sentry/core': 7.108.0 - '@sentry/types': 7.108.0 - '@sentry/utils': 7.108.0 - hoist-non-react-statics: 3.3.2 - react: 18.2.0 - dev: false + '@smithy/config-resolver': 2.2.0 + '@smithy/credential-provider-imds': 2.3.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/property-provider': 2.2.0 + '@smithy/smithy-client': 2.5.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true - /@sentry/replay@7.108.0: - resolution: {integrity: sha512-jo8fDOzcZJclP1+4n9jUtVxTlBFT9hXwxhAMrhrt70FV/nfmCtYQMD3bzIj79nwbhUtFP6pN39JH1o7Xqt1hxQ==} - engines: {node: '>=12'} + /@smithy/util-endpoints@1.2.0: + resolution: {integrity: sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==} + engines: {node: '>= 14.0.0'} dependencies: - '@sentry-internal/tracing': 7.108.0 - '@sentry/core': 7.108.0 - '@sentry/types': 7.108.0 - '@sentry/utils': 7.108.0 - dev: false - - /@sentry/types@6.19.7: - resolution: {integrity: sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==} - engines: {node: '>=6'} + '@smithy/node-config-provider': 2.3.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: true - /@sentry/types@7.108.0: - resolution: {integrity: sha512-bKtHITmBN3kqtqE5eVvL8mY8znM05vEodENwRpcm6TSrrBjC2RnwNWVwGstYDdHpNfFuKwC8mLY9bgMJcENo8g==} - engines: {node: '>=8'} - dev: false - - /@sentry/utils@6.19.7: - resolution: {integrity: sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==} - engines: {node: '>=6'} + /@smithy/util-hex-encoding@2.2.0: + resolution: {integrity: sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==} + engines: {node: '>=14.0.0'} dependencies: - '@sentry/types': 6.19.7 - tslib: 1.14.1 + tslib: 2.6.2 dev: true - /@sentry/utils@7.108.0: - resolution: {integrity: sha512-a45yEFD5qtgZaIFRAcFkG8C8lnDzn6t4LfLXuV4OafGAy/3ZAN3XN8wDnrruHkiUezSSANGsLg3bXaLW/JLvJw==} - engines: {node: '>=8'} + /@smithy/util-middleware@2.2.0: + resolution: {integrity: sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==} + engines: {node: '>=14.0.0'} dependencies: - '@sentry/types': 7.108.0 - dev: false + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true - /@sentry/vercel-edge@7.108.0: - resolution: {integrity: sha512-dUuUEswaVIzsJnzTfaJxrvkfOowrlJxxHo2AybPDym2rob7CdaLdDJIYJa83X7QeAKMkTgLny/gYSQYC0E4UyA==} - engines: {node: '>=8'} + /@smithy/util-retry@2.2.0: + resolution: {integrity: sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==} + engines: {node: '>= 14.0.0'} dependencies: - '@sentry-internal/tracing': 7.108.0 - '@sentry/core': 7.108.0 - '@sentry/types': 7.108.0 - '@sentry/utils': 7.108.0 - dev: false + '@smithy/service-error-classification': 2.1.5 + '@smithy/types': 2.12.0 + tslib: 2.6.2 + dev: true - /@sentry/webpack-plugin@1.21.0: - resolution: {integrity: sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==} - engines: {node: '>= 8'} + /@smithy/util-stream@2.2.0: + resolution: {integrity: sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==} + engines: {node: '>=14.0.0'} dependencies: - '@sentry/cli': 1.77.3 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - encoding - - supports-color - dev: false + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-hex-encoding': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 + dev: true - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + /@smithy/util-uri-escape@2.2.0: + resolution: {integrity: sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 dev: true - /@sinonjs/commons@3.0.1: - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + /@smithy/util-utf8@2.3.0: + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} dependencies: - type-detect: 4.0.8 + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.6.2 dev: true - /@sinonjs/fake-timers@10.3.0: - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + /@smithy/util-waiter@2.2.0: + resolution: {integrity: sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==} + engines: {node: '>=14.0.0'} dependencies: - '@sinonjs/commons': 3.0.1 + '@smithy/abort-controller': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.6.2 dev: true /@storybook/addon-actions@8.0.4: @@ -4139,10 +5654,10 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/addon-controls@8.0.4(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /@storybook/addon-controls@8.0.4(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-K5EYBTsUOTJlvIdA7p6Xj31wnV+RbZAkk56UKQvA7nJD7oDuLOq3E9u46F/uZD1vxddd9zFhf2iONfMe3KTTwQ==} dependencies: - '@storybook/blocks': 8.0.4(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) + '@storybook/blocks': 8.0.4(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) lodash: 4.17.21 ts-dedent: 2.2.0 transitivePeerDependencies: @@ -4156,11 +5671,11 @@ packages: /@storybook/addon-docs@8.0.4: resolution: {integrity: sha512-m0Y7qGAMnNPLEOEgzW/SBm8GX0xabJBaRN+aYijO6UKTln7F6oXXVve+xPC0Y4s6Gc9HZFdJY8WXZr1YSGEUVA==} dependencies: - '@babel/core': 7.24.1 - '@mdx-js/react': 3.0.1(@types/react@18.2.70)(react@18.2.0) - '@storybook/blocks': 8.0.4(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) + '@babel/core': 7.24.3 + '@mdx-js/react': 3.0.1(@types/react@18.2.72)(react@18.2.0) + '@storybook/blocks': 8.0.4(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) '@storybook/client-logger': 8.0.4 - '@storybook/components': 8.0.4(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) + '@storybook/components': 8.0.4(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) '@storybook/csf-plugin': 8.0.4 '@storybook/csf-tools': 8.0.4 '@storybook/global': 5.0.0 @@ -4169,7 +5684,7 @@ packages: '@storybook/react-dom-shim': 8.0.4(react-dom@18.2.0)(react@18.2.0) '@storybook/theming': 8.0.4(react-dom@18.2.0)(react@18.2.0) '@storybook/types': 8.0.4 - '@types/react': 18.2.70 + '@types/react': 18.2.72 fs-extra: 11.2.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4181,12 +5696,12 @@ packages: - supports-color dev: true - /@storybook/addon-essentials@8.0.4(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /@storybook/addon-essentials@8.0.4(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-mUIqhAkSz6Qv7nRqAAyCqMLiXBWVsY/8qN7HEIoaMQgdFq38KW3rYwNdzd2JLeXNWP1bBXwfvfcFe7/eqhYJFA==} dependencies: '@storybook/addon-actions': 8.0.4 '@storybook/addon-backgrounds': 8.0.4 - '@storybook/addon-controls': 8.0.4(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-controls': 8.0.4(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-docs': 8.0.4 '@storybook/addon-highlight': 8.0.4 '@storybook/addon-measure': 8.0.4 @@ -4273,7 +5788,7 @@ packages: memoizerific: 1.11.3 dev: true - /@storybook/blocks@8.0.4(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /@storybook/blocks@8.0.4(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-9dRXk9zLJVPOmEWsSXm10XUmIfvS/tVgeBgFXNbusFQZXPpexIPNdRgB004pDGg9RvlY78ykpnd3yP143zaXMg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4286,7 +5801,7 @@ packages: dependencies: '@storybook/channels': 8.0.4 '@storybook/client-logger': 8.0.4 - '@storybook/components': 8.0.4(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) + '@storybook/components': 8.0.4(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) '@storybook/core-events': 8.0.4 '@storybook/csf': 0.1.3 '@storybook/docs-tools': 8.0.4 @@ -4360,25 +5875,25 @@ packages: case-sensitive-paths-webpack-plugin: 2.4.0 cjs-module-lexer: 1.2.3 constants-browserify: 1.0.0 - css-loader: 6.10.0(webpack@5.90.3) - es-module-lexer: 1.4.2 + css-loader: 6.10.0(webpack@5.91.0) + es-module-lexer: 1.5.0 express: 4.18.3 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.4.3)(webpack@5.90.3) + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.4.3)(webpack@5.91.0) fs-extra: 11.2.0 - html-webpack-plugin: 5.6.0(webpack@5.90.3) + html-webpack-plugin: 5.6.0(webpack@5.91.0) magic-string: 0.30.8 path-browserify: 1.0.1 process: 0.11.10 semver: 7.6.0 - style-loader: 3.3.4(webpack@5.90.3) - terser-webpack-plugin: 5.3.10(esbuild@0.20.2)(webpack@5.90.3) + style-loader: 3.3.4(webpack@5.91.0) + terser-webpack-plugin: 5.3.10(esbuild@0.20.2)(webpack@5.91.0) ts-dedent: 2.2.0 typescript: 5.4.3 url: 0.11.3 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.90.3(esbuild@0.20.2) - webpack-dev-middleware: 6.1.2(webpack@5.90.3) + webpack: 5.91.0(esbuild@0.20.2) + webpack-dev-middleware: 6.1.2(webpack@5.91.0) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.5.0 transitivePeerDependencies: @@ -4405,7 +5920,7 @@ packages: resolution: {integrity: sha512-8jb8hrulRMfyFyNXFEapxHBS51xb42ZZGfVAacXIsHOJtjOd5CnOoSUYn0aOkVl19VF/snoa9JOW7BaW/50Eqw==} hasBin: true dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/types': 7.24.0 '@ndelangen/get-tarball': 3.0.9 '@storybook/codemod': 8.0.4 @@ -4460,8 +5975,8 @@ packages: /@storybook/codemod@8.0.4: resolution: {integrity: sha512-bysG46P4wjlR3RCpr/ntNAUaupWpzLcWYWti3iNtIyZ/iPrX6KtXoA9QCIwJZrlv41us6F+KEZbzLzkgWbymtQ==} dependencies: - '@babel/core': 7.24.1 - '@babel/preset-env': 7.24.1(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/preset-env': 7.24.1(@babel/core@7.24.3) '@babel/types': 7.24.0 '@storybook/csf': 0.1.3 '@storybook/csf-tools': 8.0.4 @@ -4479,13 +5994,13 @@ packages: - supports-color dev: true - /@storybook/components@8.0.4(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /@storybook/components@8.0.4(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-i5ngl5GTOLB9nZ1cmpxTjtWct5IuH9UxzFC73a0jHMkCwN26w16IqufRVDaoQv0AvZN4pd4fNM2in/XVHA10dw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.70)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.72)(react@18.2.0) '@storybook/client-logger': 8.0.4 '@storybook/csf': 0.1.3 '@storybook/global': 5.0.0 @@ -4546,7 +6061,7 @@ packages: resolution: {integrity: sha512-/633Pp7LPcDWXkPLSW+W9VUYUbVkdVBG6peXjuzogV0vzdM0dM9af/T0uV2NQxUhzoy6/7QdSDljE+eEOBs2Lw==} dependencies: '@aw-web-design/x-default-browser': 1.4.126 - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@discoveryjs/json-ext': 0.5.7 '@storybook/builder-manager': 8.0.4 '@storybook/channels': 8.0.4 @@ -4720,7 +6235,7 @@ packages: resolution: {integrity: sha512-M5IofDSxbIQIdAglxUtZOGKjZ1EAq1Mdbh4UolVsF1PKF6dAvBQJLVW6TiLjEbmPBtqgeYKMgrmmYiFNqVcdBQ==} dev: true - /@storybook/nextjs@8.0.4(esbuild@0.20.2)(next@14.1.4)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.3)(webpack@5.90.3): + /@storybook/nextjs@8.0.4(esbuild@0.20.2)(next@14.2.0-canary.43)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.3)(webpack@5.91.0): resolution: {integrity: sha512-60OmklpKB48l57Tfo3X5+RxSuz15iudjrwyeTJBq6Afi0fFa7hWk4jq/n+LdCjhOxavLtHRv/qFEQrMDmGH0gA==} engines: {node: '>=18.0.0'} peerDependencies: @@ -4735,20 +6250,20 @@ packages: webpack: optional: true dependencies: - '@babel/core': 7.24.1 - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-runtime': 7.24.1(@babel/core@7.24.1) - '@babel/preset-env': 7.24.1(@babel/core@7.24.1) - '@babel/preset-react': 7.24.1(@babel/core@7.24.1) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-runtime': 7.24.1(@babel/core@7.24.3) + '@babel/preset-env': 7.24.1(@babel/core@7.24.3) + '@babel/preset-react': 7.24.1(@babel/core@7.24.3) + '@babel/preset-typescript': 7.24.1(@babel/core@7.24.3) '@babel/runtime': 7.24.1 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(webpack@5.90.3) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(webpack@5.91.0) '@storybook/addon-actions': 8.0.4 '@storybook/builder-webpack5': 8.0.4(esbuild@0.20.2)(typescript@5.4.3) '@storybook/core-common': 8.0.4 @@ -4760,31 +6275,31 @@ packages: '@storybook/types': 8.0.4 '@types/node': 18.19.26 '@types/semver': 7.5.8 - babel-loader: 9.1.3(@babel/core@7.24.1)(webpack@5.90.3) - css-loader: 6.10.0(webpack@5.90.3) + babel-loader: 9.1.3(@babel/core@7.24.3)(webpack@5.91.0) + css-loader: 6.10.0(webpack@5.91.0) find-up: 5.0.0 fs-extra: 11.2.0 image-size: 1.1.1 loader-utils: 3.2.1 - next: 14.1.4(@babel/core@7.24.1)(@opentelemetry/api@1.8.0)(react-dom@18.2.0)(react@18.2.0) - node-polyfill-webpack-plugin: 2.0.1(webpack@5.90.3) + next: 14.2.0-canary.43(@babel/core@7.24.3)(@opentelemetry/api@1.8.0)(@playwright/test@1.42.1)(react-dom@18.2.0)(react@18.2.0) + node-polyfill-webpack-plugin: 2.0.1(webpack@5.91.0) pnp-webpack-plugin: 1.7.0(typescript@5.4.3) postcss: 8.4.38 - postcss-loader: 7.3.4(postcss@8.4.38)(typescript@5.4.3)(webpack@5.90.3) + postcss-loader: 7.3.4(postcss@8.4.38)(typescript@5.4.3)(webpack@5.91.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-refresh: 0.14.0 resolve-url-loader: 5.0.0 - sass-loader: 12.6.0(webpack@5.90.3) + sass-loader: 12.6.0(webpack@5.91.0) semver: 7.6.0 sharp: 0.32.6 - style-loader: 3.3.4(webpack@5.90.3) - styled-jsx: 5.1.1(@babel/core@7.24.1)(react@18.2.0) + style-loader: 3.3.4(webpack@5.91.0) + styled-jsx: 5.1.1(@babel/core@7.24.3)(react@18.2.0) ts-dedent: 2.2.0 tsconfig-paths: 4.2.0 tsconfig-paths-webpack-plugin: 4.1.0 typescript: 5.4.3 - webpack: 5.90.3(esbuild@0.20.2) + webpack: 5.91.0(esbuild@0.20.2) transitivePeerDependencies: - '@rspack/core' - '@swc/core' @@ -4825,7 +6340,7 @@ packages: '@storybook/docs-tools': 8.0.4 '@storybook/node-logger': 8.0.4 '@storybook/react': 8.0.4(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.3) - '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.4.3)(webpack@5.90.3) + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.4.3)(webpack@5.91.0) '@types/node': 18.19.26 '@types/semver': 7.5.8 find-up: 5.0.0 @@ -4838,7 +6353,7 @@ packages: semver: 7.6.0 tsconfig-paths: 4.2.0 typescript: 5.4.3 - webpack: 5.90.3(esbuild@0.20.2) + webpack: 5.91.0(esbuild@0.20.2) transitivePeerDependencies: - '@swc/core' - encoding @@ -4871,7 +6386,7 @@ packages: resolution: {integrity: sha512-dJa13bIxQBfa5ZsXAeL6X/oXI6b87Fy31pvpKPkW1o+7M6MC4OvwGQBqgAd7m8yn6NuIHxrdwjEupa7l7PGb6w==} dev: true - /@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.4.3)(webpack@5.90.3): + /@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.4.3)(webpack@5.91.0): resolution: {integrity: sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q==} peerDependencies: typescript: '>= 4.x' @@ -4885,7 +6400,7 @@ packages: react-docgen-typescript: 2.2.2(typescript@5.4.3) tslib: 2.6.2 typescript: 5.4.3 - webpack: 5.90.3(esbuild@0.20.2) + webpack: 5.91.0(esbuild@0.20.2) transitivePeerDependencies: - supports-color dev: true @@ -5022,9 +6537,13 @@ packages: string.prototype.matchall: 4.0.10 dev: false - /@swc/helpers@0.5.2: - resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + /@swc/helpers@0.5.5: + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} dependencies: + '@swc/counter': 0.1.3 tslib: 2.6.2 /@testing-library/dom@9.3.4: @@ -5106,6 +6625,10 @@ packages: engines: {node: '>=10.13.0'} dev: true + /@tsconfig/node18@1.0.3: + resolution: {integrity: sha512-RbwvSJQsuN9TB04AQbGULYfOGE/RnSFk/FLQ5b0NmDf5Kx2q/lABZbHQPKCO1vZ6Fiwkplu+yb9pGdLy1iGseQ==} + dev: true + /@types/aria-query@5.0.4: resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} dev: true @@ -5357,13 +6880,12 @@ packages: /@types/react-dom@18.2.22: resolution: {integrity: sha512-fHkBXPeNtfvri6gdsMYyW+dW7RXFo6Ad09nLFK0VQWR7yGLai/Cyvyj696gbwYvBnhGtevUG9cET0pmUbMtoPQ==} dependencies: - '@types/react': 18.2.70 + '@types/react': 18.2.72 - /@types/react@18.2.70: - resolution: {integrity: sha512-hjlM2hho2vqklPhopNkXkdkeq6Lv8WSZTpr7956zY+3WS5cfYUewtCzsJLsbW5dEv3lfSeQ4W14ZFeKC437JRQ==} + /@types/react@18.2.72: + resolution: {integrity: sha512-/e7GWxGzXQF7OJAua7UAYqYi/4VpXEfbGtmYQcAQwP3SjjjAXfybTf/JK5S+SaetB/ChXl8Y2g1hCsj7jDXxcg==} dependencies: '@types/prop-types': 15.7.11 - '@types/scheduler': 0.16.8 csstype: 3.1.3 /@types/resolve@1.17.1: @@ -5376,9 +6898,6 @@ packages: resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} dev: true - /@types/scheduler@0.16.8: - resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} - /@types/semver@7.5.8: resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} dev: true @@ -6219,25 +7738,25 @@ packages: resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} dev: true - /babel-core@7.0.0-bridge.0(@babel/core@7.24.1): + /babel-core@7.0.0-bridge.0(@babel/core@7.24.3): resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 dev: true - /babel-jest@29.7.0(@babel/core@7.24.1): + /babel-jest@29.7.0(@babel/core@7.24.3): resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.24.1) + babel-preset-jest: 29.6.3(@babel/core@7.24.3) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -6245,32 +7764,32 @@ packages: - supports-color dev: true - /babel-loader@8.3.0(@babel/core@7.24.1)(webpack@5.90.3): + /babel-loader@8.3.0(@babel/core@7.24.3)(webpack@5.91.0): resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} engines: {node: '>= 8.9'} peerDependencies: '@babel/core': ^7.0.0 webpack: '>=2' dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 find-cache-dir: 3.3.2 loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.90.3(esbuild@0.20.2) + webpack: 5.91.0(esbuild@0.20.2) dev: false - /babel-loader@9.1.3(@babel/core@7.24.1)(webpack@5.90.3): + /babel-loader@9.1.3(@babel/core@7.24.3)(webpack@5.91.0): resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} engines: {node: '>= 14.15.0'} peerDependencies: '@babel/core': ^7.12.0 webpack: '>=5' dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.90.3(esbuild@0.20.2) + webpack: 5.91.0(esbuild@0.20.2) dev: true /babel-plugin-istanbul@6.1.1: @@ -6296,68 +7815,68 @@ packages: '@types/babel__traverse': 7.20.5 dev: true - /babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.1): + /babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.3): resolution: {integrity: sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/compat-data': 7.24.1 - '@babel/core': 7.24.1 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3) semver: 6.3.1 transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-corejs3@0.10.1(@babel/core@7.24.1): + /babel-plugin-polyfill-corejs3@0.10.1(@babel/core@7.24.3): resolution: {integrity: sha512-XiFei6VGwM4ii6nKC1VCenGD8Z4bjiNYcrdkM8oqM3pbuemmyb8biMgrDX1ZHSbIuMLXatM6JJ/StPYIuTl6MQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.24.1 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3) core-js-compat: 3.36.1 transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.1): + /babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.3): resolution: {integrity: sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.24.1 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3) transitivePeerDependencies: - supports-color - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.1): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.3): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.1 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.1) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.1) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.1) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.1) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.1) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.1) - dev: true - - /babel-preset-jest@29.6.3(@babel/core@7.24.1): + '@babel/core': 7.24.3 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.3) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.3) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.3) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.24.3): resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.1) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.3) dev: true /balanced-match@1.0.2: @@ -6466,6 +7985,10 @@ packages: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: true + /bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + dev: true + /bplist-parser@0.2.0: resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} engines: {node: '>= 5.10.0'} @@ -6861,14 +8384,14 @@ packages: engines: {node: '>=6'} dev: true - /clean-webpack-plugin@4.0.0(webpack@5.90.3): + /clean-webpack-plugin@4.0.0(webpack@5.91.0): resolution: {integrity: sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==} engines: {node: '>=10.0.0'} peerDependencies: webpack: '>=4.0.0 <6.0.0' dependencies: del: 4.1.1 - webpack: 5.90.3(esbuild@0.20.2) + webpack: 5.91.0(esbuild@0.20.2) dev: false /cli-cursor@2.1.0: @@ -7346,7 +8869,7 @@ packages: engines: {node: '>=12 || >=16'} dev: true - /css-loader@6.10.0(webpack@5.90.3): + /css-loader@6.10.0(webpack@5.91.0): resolution: {integrity: sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -7366,7 +8889,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.38) postcss-value-parser: 4.2.0 semver: 7.6.0 - webpack: 5.90.3(esbuild@0.20.2) + webpack: 5.91.0(esbuild@0.20.2) dev: true /css-select@4.3.0: @@ -8188,8 +9711,8 @@ packages: safe-array-concat: 1.1.2 dev: true - /es-module-lexer@1.4.2: - resolution: {integrity: sha512-7nOqkomXZEaxUDJw21XZNtRk739QvrPSoZoRtbsEfcii00vdzZUh6zh1CQwHhrib8MdEtJfv5rJiGeb4KuV/vw==} + /es-module-lexer@1.5.0: + resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==} /es-object-atoms@1.0.0: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} @@ -8234,6 +9757,36 @@ packages: - supports-color dev: true + /esbuild@0.19.2: + resolution: {integrity: sha512-G6hPax8UbFakEj3hWO0Vs52LQ8k3lnBhxZWomUJDxfz3rZTLqF5k/FCzuNdLx2RbpBiQQF9H9onlDDH1lZsnjg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.19.2 + '@esbuild/android-arm64': 0.19.2 + '@esbuild/android-x64': 0.19.2 + '@esbuild/darwin-arm64': 0.19.2 + '@esbuild/darwin-x64': 0.19.2 + '@esbuild/freebsd-arm64': 0.19.2 + '@esbuild/freebsd-x64': 0.19.2 + '@esbuild/linux-arm': 0.19.2 + '@esbuild/linux-arm64': 0.19.2 + '@esbuild/linux-ia32': 0.19.2 + '@esbuild/linux-loong64': 0.19.2 + '@esbuild/linux-mips64el': 0.19.2 + '@esbuild/linux-ppc64': 0.19.2 + '@esbuild/linux-riscv64': 0.19.2 + '@esbuild/linux-s390x': 0.19.2 + '@esbuild/linux-x64': 0.19.2 + '@esbuild/netbsd-x64': 0.19.2 + '@esbuild/openbsd-x64': 0.19.2 + '@esbuild/sunos-x64': 0.19.2 + '@esbuild/win32-arm64': 0.19.2 + '@esbuild/win32-ia32': 0.19.2 + '@esbuild/win32-x64': 0.19.2 + dev: true + /esbuild@0.20.2: resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} engines: {node: '>=12'} @@ -8794,6 +10347,13 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true + /fast-xml-parser@4.2.5: + resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} + hasBin: true + dependencies: + strnum: 1.0.5 + dev: true + /fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} @@ -8986,7 +10546,7 @@ packages: cross-spawn: 7.0.3 signal-exit: 4.1.0 - /fork-ts-checker-webpack-plugin@8.0.0(typescript@5.4.3)(webpack@5.90.3): + /fork-ts-checker-webpack-plugin@8.0.0(typescript@5.4.3)(webpack@5.91.0): resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} engines: {node: '>=12.13.0', yarn: '>=1.0.0'} peerDependencies: @@ -9006,7 +10566,7 @@ packages: semver: 7.6.0 tapable: 2.2.1 typescript: 5.4.3 - webpack: 5.90.3(esbuild@0.20.2) + webpack: 5.91.0(esbuild@0.20.2) dev: true /form-data@4.0.0: @@ -9027,8 +10587,8 @@ packages: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: true - /framer-motion@11.0.20(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-YSDmWznt3hpdERosbE0UAPYWoYhTnmQ0J1qWPsgpCia9NgY8Xsz5IpOiUEGGj/nzCAW29fSrWugeLRkdp5de7g==} + /framer-motion@11.0.22(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-kWyldNJLyKDvLWjPYFmgngQYLiU8973BtAeVBc83r2cnil/NBUQJb1ff/6/EweNQYb5BW3PaXFjZa4D3pn/W2Q==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 @@ -9111,7 +10671,6 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true - dev: true optional: true /fsevents@2.3.3: @@ -9303,6 +10862,16 @@ packages: minimatch: 5.1.6 once: 1.4.0 + /glob@9.3.5: + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + fs.realpath: 1.0.0 + minimatch: 8.0.4 + minipass: 4.2.8 + path-scurry: 1.10.1 + dev: true + /global-directory@4.0.1: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} @@ -9548,7 +11117,7 @@ packages: engines: {node: '>=8'} dev: true - /html-webpack-plugin@5.6.0(webpack@5.90.3): + /html-webpack-plugin@5.6.0(webpack@5.91.0): resolution: {integrity: sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==} engines: {node: '>=10.13.0'} peerDependencies: @@ -9565,7 +11134,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.90.3(esbuild@0.20.2) + webpack: 5.91.0(esbuild@0.20.2) dev: true /htmlparser2@6.1.0: @@ -10172,7 +11741,7 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/parser': 7.24.1 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -10185,7 +11754,7 @@ packages: resolution: {integrity: sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/parser': 7.24.1 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -10328,11 +11897,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 '@types/node': 20.11.1 - babel-jest: 29.7.0(@babel/core@7.24.1) + babel-jest: 29.7.0(@babel/core@7.24.3) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -10590,15 +12159,15 @@ packages: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/generator': 7.24.1 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.1) + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.3) '@babel/types': 7.24.0 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.1) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.3) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -10744,18 +12313,18 @@ packages: '@babel/preset-env': optional: true dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/parser': 7.24.1 - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.1) - '@babel/preset-env': 7.24.1(@babel/core@7.24.1) - '@babel/preset-flow': 7.24.1(@babel/core@7.24.1) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.1) - '@babel/register': 7.23.7(@babel/core@7.24.1) - babel-core: 7.0.0-bridge.0(@babel/core@7.24.1) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.3) + '@babel/preset-env': 7.24.1(@babel/core@7.24.3) + '@babel/preset-flow': 7.24.1(@babel/core@7.24.3) + '@babel/preset-typescript': 7.24.1(@babel/core@7.24.3) + '@babel/register': 7.23.7(@babel/core@7.24.3) + babel-core: 7.0.0-bridge.0(@babel/core@7.24.3) chalk: 4.1.2 flow-parser: 0.231.0 graceful-fs: 4.2.11 @@ -11448,6 +13017,13 @@ packages: dependencies: brace-expansion: 2.0.1 + /minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} @@ -11464,6 +13040,11 @@ packages: yallist: 4.0.0 dev: true + /minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + dev: true + /minipass@5.0.0: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} @@ -11501,6 +13082,12 @@ packages: hasBin: true dev: true + /mnemonist@0.38.3: + resolution: {integrity: sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==} + dependencies: + obliterator: 1.6.1 + dev: true + /module-details-from-path@1.0.3: resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} dev: false @@ -11561,7 +13148,7 @@ packages: resolution: {integrity: sha512-OjJ+fV15FXO2uQXQagLD4C0abYErBjyjE0I0FHpOEIB8upw0hg1ldFP6cqHTJBH1cZqy96OeR3u1dJ+Ez2D4Bg==} dev: false - /next-intl@3.10.0(next@14.1.4)(react@18.2.0): + /next-intl@3.10.0(next@14.2.0-canary.43)(react@18.2.0): resolution: {integrity: sha512-kqQvOxLvI3ZjvcMFwOBjh71ufNWxHEMaEgxhFZGIXYAvkRI//9zbqeQJkQMwEpI6mDBM+6n+SJd0+pLt0t5GVw==} peerDependencies: next: ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 @@ -11569,22 +13156,22 @@ packages: dependencies: '@formatjs/intl-localematcher': 0.2.32 negotiator: 0.6.3 - next: 14.1.4(@babel/core@7.24.1)(@opentelemetry/api@1.8.0)(react-dom@18.2.0)(react@18.2.0) + next: 14.2.0-canary.43(@babel/core@7.24.3)(@opentelemetry/api@1.8.0)(@playwright/test@1.42.1)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 use-intl: 3.10.0(react@18.2.0) dev: false - /next-pwa@5.6.0(@babel/core@7.24.1)(esbuild@0.20.2)(next@14.1.4)(webpack@5.90.3): + /next-pwa@5.6.0(@babel/core@7.24.3)(esbuild@0.20.2)(next@14.2.0-canary.43)(webpack@5.91.0): resolution: {integrity: sha512-XV8g8C6B7UmViXU8askMEYhWwQ4qc/XqJGnexbLV68hzKaGHZDMtHsm2TNxFcbR7+ypVuth/wwpiIlMwpRJJ5A==} peerDependencies: next: '>=9.0.0' dependencies: - babel-loader: 8.3.0(@babel/core@7.24.1)(webpack@5.90.3) - clean-webpack-plugin: 4.0.0(webpack@5.90.3) + babel-loader: 8.3.0(@babel/core@7.24.3)(webpack@5.91.0) + clean-webpack-plugin: 4.0.0(webpack@5.91.0) globby: 11.1.0 - next: 14.1.4(@babel/core@7.24.1)(@opentelemetry/api@1.8.0)(react-dom@18.2.0)(react@18.2.0) - terser-webpack-plugin: 5.3.10(esbuild@0.20.2)(webpack@5.90.3) - workbox-webpack-plugin: 6.6.0(webpack@5.90.3) + next: 14.2.0-canary.43(@babel/core@7.24.3)(@opentelemetry/api@1.8.0)(@playwright/test@1.42.1)(react-dom@18.2.0)(react@18.2.0) + terser-webpack-plugin: 5.3.10(esbuild@0.20.2)(webpack@5.91.0) + workbox-webpack-plugin: 6.6.0(webpack@5.91.0) workbox-window: 6.6.0 transitivePeerDependencies: - '@babel/core' @@ -11606,41 +13193,45 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /next@14.1.4(@babel/core@7.24.1)(@opentelemetry/api@1.8.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-1WTaXeSrUwlz/XcnhGTY7+8eiaFvdet5z9u3V2jb+Ek1vFo0VhHKSAIJvDWfQpttWjnyw14kBeq28TPq7bTeEQ==} + /next@14.2.0-canary.43(@babel/core@7.24.3)(@opentelemetry/api@1.8.0)(@playwright/test@1.42.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-tL5fxsleOuRS7Momx5wRwkCOPLybQKwgJnpzgMGVReQs+kA9lkQiBANvlYdAsrvZ3vjzx2H+9mSqKDcKaC8UXQ==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true + '@playwright/test': + optional: true sass: optional: true dependencies: - '@next/env': 14.1.4 + '@next/env': 14.2.0-canary.43 '@opentelemetry/api': 1.8.0 - '@swc/helpers': 0.5.2 + '@playwright/test': 1.42.1 + '@swc/helpers': 0.5.5 busboy: 1.6.0 caniuse-lite: 1.0.30001599 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.24.1)(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.24.3)(react@18.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 14.1.4 - '@next/swc-darwin-x64': 14.1.4 - '@next/swc-linux-arm64-gnu': 14.1.4 - '@next/swc-linux-arm64-musl': 14.1.4 - '@next/swc-linux-x64-gnu': 14.1.4 - '@next/swc-linux-x64-musl': 14.1.4 - '@next/swc-win32-arm64-msvc': 14.1.4 - '@next/swc-win32-ia32-msvc': 14.1.4 - '@next/swc-win32-x64-msvc': 14.1.4 + '@next/swc-darwin-arm64': 14.2.0-canary.43 + '@next/swc-darwin-x64': 14.2.0-canary.43 + '@next/swc-linux-arm64-gnu': 14.2.0-canary.43 + '@next/swc-linux-arm64-musl': 14.2.0-canary.43 + '@next/swc-linux-x64-gnu': 14.2.0-canary.43 + '@next/swc-linux-x64-musl': 14.2.0-canary.43 + '@next/swc-win32-arm64-msvc': 14.2.0-canary.43 + '@next/swc-win32-ia32-msvc': 14.2.0-canary.43 + '@next/swc-win32-x64-msvc': 14.2.0-canary.43 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -11693,7 +13284,7 @@ packages: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true - /node-polyfill-webpack-plugin@2.0.1(webpack@5.90.3): + /node-polyfill-webpack-plugin@2.0.1(webpack@5.91.0): resolution: {integrity: sha512-ZUMiCnZkP1LF0Th2caY6J/eKKoA0TefpoVa68m/LQU1I/mE8rGt4fNYGgNuCcK+aG8P8P43nbeJ2RqJMOL/Y1A==} engines: {node: '>=12'} peerDependencies: @@ -11724,7 +13315,7 @@ packages: url: 0.11.3 util: 0.12.5 vm-browserify: 1.1.2 - webpack: 5.90.3(esbuild@0.20.2) + webpack: 5.91.0(esbuild@0.20.2) dev: true /node-releases@2.0.14: @@ -11883,6 +13474,10 @@ packages: resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==} dev: true + /obliterator@1.6.1: + resolution: {integrity: sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==} + dev: true + /ohash@1.1.3: resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} dev: true @@ -11925,6 +13520,27 @@ packages: mimic-fn: 4.0.0 dev: true + /open-next@2.3.8(patch_hash=w5su2wbiyfvrxphbi5gnosrjeq): + resolution: {integrity: sha512-+GFJfLPPtcEmrS2Ojk2hoBjEhf4TJIs6oC9BwDpuwd754jpVdMNLSBa2rUKJyERemSReMOIWcUhS1k+hM3trCA==} + hasBin: true + dependencies: + '@aws-sdk/client-dynamodb': 3.540.0 + '@aws-sdk/client-lambda': 3.540.0 + '@aws-sdk/client-s3': 3.540.0 + '@aws-sdk/client-sqs': 3.540.0 + '@esbuild-plugins/node-resolve': 0.2.2(esbuild@0.19.2) + '@node-minify/core': 8.0.6 + '@node-minify/terser': 8.0.6 + '@tsconfig/node18': 1.0.3 + esbuild: 0.19.2 + path-to-regexp: 6.2.1 + promise.series: 0.2.0 + transitivePeerDependencies: + - aws-crt + - supports-color + dev: true + patched: true + /open@7.4.2: resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} engines: {node: '>=8'} @@ -12185,6 +13801,10 @@ packages: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} dev: true + /path-to-regexp@6.2.1: + resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} + dev: true + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -12288,7 +13908,6 @@ packages: resolution: {integrity: sha512-mxz6zclokgrke9p1vtdy/COWBH+eOZgYUVVU34C73M+4j4HLlQJHtfcqiqqxpP0o8HhMkflvfbquLX5dg6wlfA==} engines: {node: '>=16'} hasBin: true - dev: true /playwright@1.42.1: resolution: {integrity: sha512-PgwB03s2DZBcNRoW+1w9E+VkLBxweib6KTXM0M3tkiT4jVxKSi6PmVJ591J+0u10LUrgxB7dLRbiJqO5s2QPMg==} @@ -12298,7 +13917,6 @@ packages: playwright-core: 1.42.1 optionalDependencies: fsevents: 2.3.2 - dev: true /pnp-webpack-plugin@1.7.0(typescript@5.4.3): resolution: {integrity: sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==} @@ -12427,7 +14045,7 @@ packages: postcss: 8.4.38 yaml: 2.4.1 - /postcss-loader@7.3.4(postcss@8.4.38)(typescript@5.4.3)(webpack@5.90.3): + /postcss-loader@7.3.4(postcss@8.4.38)(typescript@5.4.3)(webpack@5.91.0): resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -12438,7 +14056,7 @@ packages: jiti: 1.21.0 postcss: 8.4.38 semver: 7.6.0 - webpack: 5.90.3(esbuild@0.20.2) + webpack: 5.91.0(esbuild@0.20.2) transitivePeerDependencies: - typescript dev: true @@ -12876,6 +14494,11 @@ packages: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} + /promise.series@0.2.0: + resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==} + engines: {node: '>=0.12'} + dev: true + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -13177,7 +14800,7 @@ packages: resolution: {integrity: sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==} engines: {node: '>=16.14.0'} dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 '@babel/traverse': 7.24.1 '@babel/types': 7.24.0 '@types/babel__core': 7.20.5 @@ -13233,7 +14856,7 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-remove-scroll-bar@2.3.6(@types/react@18.2.70)(react@18.2.0): + /react-remove-scroll-bar@2.3.6(@types/react@18.2.72)(react@18.2.0): resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} engines: {node: '>=10'} peerDependencies: @@ -13243,13 +14866,13 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.70 + '@types/react': 18.2.72 react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.2.70)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.72)(react@18.2.0) tslib: 2.6.2 dev: false - /react-remove-scroll@2.5.5(@types/react@18.2.70)(react@18.2.0): + /react-remove-scroll@2.5.5(@types/react@18.2.72)(react@18.2.0): resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} engines: {node: '>=10'} peerDependencies: @@ -13259,16 +14882,16 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.70 + '@types/react': 18.2.72 react: 18.2.0 - react-remove-scroll-bar: 2.3.6(@types/react@18.2.70)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.70)(react@18.2.0) + react-remove-scroll-bar: 2.3.6(@types/react@18.2.72)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.72)(react@18.2.0) tslib: 2.6.2 - use-callback-ref: 1.3.1(@types/react@18.2.70)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.70)(react@18.2.0) + use-callback-ref: 1.3.1(@types/react@18.2.72)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.72)(react@18.2.0) dev: false - /react-style-singleton@2.2.1(@types/react@18.2.70)(react@18.2.0): + /react-style-singleton@2.2.1(@types/react@18.2.72)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: @@ -13278,7 +14901,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.70 + '@types/react': 18.2.72 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 @@ -13704,7 +15327,7 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sass-loader@12.6.0(webpack@5.90.3): + /sass-loader@12.6.0(webpack@5.91.0): resolution: {integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -13725,7 +15348,7 @@ packages: dependencies: klona: 2.0.6 neo-async: 2.6.2 - webpack: 5.90.3(esbuild@0.20.2) + webpack: 5.91.0(esbuild@0.20.2) dev: true /saxes@6.0.0: @@ -14393,16 +16016,20 @@ packages: engines: {node: '>=8'} dev: true - /style-loader@3.3.4(webpack@5.90.3): + /strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + dev: true + + /style-loader@3.3.4(webpack@5.91.0): resolution: {integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: - webpack: 5.90.3(esbuild@0.20.2) + webpack: 5.91.0(esbuild@0.20.2) dev: true - /styled-jsx@5.1.1(@babel/core@7.24.1)(react@18.2.0): + /styled-jsx@5.1.1(@babel/core@7.24.3)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -14415,7 +16042,7 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.24.3 client-only: 0.0.1 react: 18.2.0 @@ -14430,27 +16057,27 @@ packages: postcss-selector-parser: 6.0.16 dev: true - /stylelint-config-recommended@14.0.0(stylelint@16.3.0): + /stylelint-config-recommended@14.0.0(stylelint@16.3.1): resolution: {integrity: sha512-jSkx290CglS8StmrLp2TxAppIajzIBZKYm3IxT89Kg6fGlxbPiTiyH9PS5YUuVAFwaJLl1ikiXX0QWjI0jmgZQ==} engines: {node: '>=18.12.0'} peerDependencies: stylelint: ^16.0.0 dependencies: - stylelint: 16.3.0(typescript@5.4.3) + stylelint: 16.3.1(typescript@5.4.3) dev: true - /stylelint-config-standard@36.0.0(stylelint@16.3.0): + /stylelint-config-standard@36.0.0(stylelint@16.3.1): resolution: {integrity: sha512-3Kjyq4d62bYFp/Aq8PMKDwlgUyPU4nacXsjDLWJdNPRUgpuxALu1KnlAHIj36cdtxViVhXexZij65yM0uNIHug==} engines: {node: '>=18.12.0'} peerDependencies: stylelint: ^16.1.0 dependencies: - stylelint: 16.3.0(typescript@5.4.3) - stylelint-config-recommended: 14.0.0(stylelint@16.3.0) + stylelint: 16.3.1(typescript@5.4.3) + stylelint-config-recommended: 14.0.0(stylelint@16.3.1) dev: true - /stylelint@16.3.0(typescript@5.4.3): - resolution: {integrity: sha512-hqC6xNTbQ5HRGQXfIW4HwXcx09raIFz4W4XFbraeqWqYRVVY/ibYvI0dsu0ORMQY8re2bpDdCAeIa2cm+QJ4Sw==} + /stylelint@16.3.1(typescript@5.4.3): + resolution: {integrity: sha512-/JOwQnBvxEKOT2RtNgGpBVXnCSMBgKOL2k7w0K52htwCyJls4+cHvc4YZgXlVoAZS9QJd2DgYAiRnja96pTgxw==} engines: {node: '>=18.12.0'} hasBin: true dependencies: @@ -14718,7 +16345,7 @@ packages: unique-string: 2.0.0 dev: true - /terser-webpack-plugin@5.3.10(esbuild@0.20.2)(webpack@5.90.3): + /terser-webpack-plugin@5.3.10(esbuild@0.20.2)(webpack@5.91.0): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -14740,7 +16367,18 @@ packages: schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.29.2 - webpack: 5.90.3(esbuild@0.20.2) + webpack: 5.91.0(esbuild@0.20.2) + + /terser@5.16.9: + resolution: {integrity: sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.11.3 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true /terser@5.29.2: resolution: {integrity: sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==} @@ -15241,7 +16879,7 @@ packages: resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} dev: true - /use-callback-ref@1.3.1(@types/react@18.2.70)(react@18.2.0): + /use-callback-ref@1.3.1(@types/react@18.2.72)(react@18.2.0): resolution: {integrity: sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==} engines: {node: '>=10'} peerDependencies: @@ -15251,7 +16889,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.70 + '@types/react': 18.2.72 react: 18.2.0 tslib: 2.6.2 dev: false @@ -15266,7 +16904,7 @@ packages: react: 18.2.0 dev: false - /use-sidecar@1.1.2(@types/react@18.2.70)(react@18.2.0): + /use-sidecar@1.1.2(@types/react@18.2.72)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -15276,7 +16914,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.70 + '@types/react': 18.2.72 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.6.2 @@ -15335,13 +16973,13 @@ packages: engines: {node: '>= 0.8'} dev: true - /vaul@0.9.0(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0): + /vaul@0.9.0(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-bZSySGbAHiTXmZychprnX/dE0EsSige88xtyyL3/MCRbrFotRPQZo7UdydGXZWw+CKbNOw5Ow8gwAo93/nB/Cg==} peerDependencies: react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.70)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: @@ -15414,7 +17052,7 @@ packages: - utf-8-validate dev: true - /webpack-dev-middleware@6.1.2(webpack@5.90.3): + /webpack-dev-middleware@6.1.2(webpack@5.91.0): resolution: {integrity: sha512-Wu+EHmX326YPYUpQLKmKbTyZZJIB8/n6R09pTmB03kJmnMsVPTo9COzHZFr01txwaCAuZvfBJE4ZCHRcKs5JaQ==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -15428,7 +17066,7 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.90.3(esbuild@0.20.2) + webpack: 5.91.0(esbuild@0.20.2) dev: true /webpack-hot-middleware@2.26.1: @@ -15458,8 +17096,8 @@ packages: resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} dev: true - /webpack@5.90.3(esbuild@0.20.2): - resolution: {integrity: sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==} + /webpack@5.91.0(esbuild@0.20.2): + resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -15478,7 +17116,7 @@ packages: browserslist: 4.23.0 chrome-trace-event: 1.0.3 enhanced-resolve: 5.16.0 - es-module-lexer: 1.4.2 + es-module-lexer: 1.5.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -15489,7 +17127,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(esbuild@0.20.2)(webpack@5.90.3) + terser-webpack-plugin: 5.3.10(esbuild@0.20.2)(webpack@5.91.0) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -15622,10 +17260,10 @@ packages: engines: {node: '>=10.0.0'} dependencies: '@apideck/better-ajv-errors': 0.3.6(ajv@8.12.0) - '@babel/core': 7.24.1 - '@babel/preset-env': 7.24.1(@babel/core@7.24.1) + '@babel/core': 7.24.3 + '@babel/preset-env': 7.24.1(@babel/core@7.24.3) '@babel/runtime': 7.24.1 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.24.1)(rollup@2.79.1) + '@rollup/plugin-babel': 5.3.1(@babel/core@7.24.3)(rollup@2.79.1) '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) '@surma/rollup-plugin-off-main-thread': 2.2.3 @@ -15744,7 +17382,7 @@ packages: resolution: {integrity: sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==} dev: false - /workbox-webpack-plugin@6.6.0(webpack@5.90.3): + /workbox-webpack-plugin@6.6.0(webpack@5.91.0): resolution: {integrity: sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==} engines: {node: '>=10.0.0'} peerDependencies: @@ -15753,7 +17391,7 @@ packages: fast-json-stable-stringify: 2.1.0 pretty-bytes: 5.6.0 upath: 1.2.0 - webpack: 5.90.3(esbuild@0.20.2) + webpack: 5.91.0(esbuild@0.20.2) webpack-sources: 1.4.3 workbox-build: 6.6.0 transitivePeerDependencies: diff --git a/postcss.config.js b/postcss.config.js index 9f0b72a..c3aee95 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,4 +1,5 @@ -module.exports = { +/** @type {import('postcss-load-config').Config} */ +const config = { plugins: { tailwindcss: {}, autoprefixer: {}, @@ -16,3 +17,4 @@ module.exports = { : {}), }, }; +export default config; diff --git a/src/middleware.ts b/src/middleware.ts index ec59eed..8aa21df 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -1,5 +1,5 @@ import createIntlMiddleware from 'next-intl/middleware'; -import { type NextRequest } from 'next/server'; +import { NextResponse, type NextRequest } from 'next/server'; // https://yandex.ru/support/metrica/code/install-counter-csp.html#install-counter-csp__urls const mcDomains = [ @@ -45,7 +45,6 @@ const intlMiddleware = createIntlMiddleware({ export default function middleware(request: NextRequest) { const nonce = Buffer.from(crypto.randomUUID()).toString('base64'); - request.headers.set('x-nonce', nonce); const response = intlMiddleware(request); @@ -79,6 +78,14 @@ export default function middleware(request: NextRequest) { .replace(/\s{2,}/g, ' ') .trim(); + const requestHeaders = new Headers(request.headers); + requestHeaders.set('x-nonce', nonce); + + requestHeaders.set( + 'Content-Security-Policy', + contentSecurityPolicyHeaderValue, + ); + response.headers.set( 'Content-Security-Policy', contentSecurityPolicyHeaderValue, @@ -93,7 +100,12 @@ export default function middleware(request: NextRequest) { response.headers.set('Public-Key-Pins', `report-uri="${reportEndpoint}"`); - return response; + return NextResponse.next({ + ...response, + request: { + headers: requestHeaders, + }, + }); } export const config = { diff --git a/tsconfig.json b/tsconfig.json index d154a7f..a7232f8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -27,5 +27,12 @@ ".storybook/**/*.ts", ".storybook/**/*.tsx" ], - "exclude": ["node_modules"] + "exclude": ["node_modules"], + "ts-node": { + "compilerOptions": { + "module": "nodenext", + "moduleResolution": "nodenext", + "target": "es2017" + } + } }