diff --git a/.env b/.env index c15d4053f..701c8ce00 100644 --- a/.env +++ b/.env @@ -6,6 +6,7 @@ HASURA_GRAPHQL_ADMIN_SECRET=c67eeb626bee405d883b482046934860 # Get test key at https://ui.honeycomb.io/sil-language-forge/environments/test/api_keys HONEYCOMB_API_KEY=__REPLACE__ OTEL_RESOURCE_ATTRIBUTES=service.version=0.0.1,deployment.environment=dev +OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION=true SMTP_USER=maildev SMTP_PASSWORD=maildev diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index 1a394cbba..b9b94a3cc 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -121,11 +121,12 @@ jobs: curl -s --head "$TARGET" > response.txt # get version from response, trim off the header and fix the line endings versionHeader=$((grep "lexbox-version" response.txt || echo VersionNotFound) | cut -d' ' -f 2 | tr -d '[:space:]') - if [[ "$versionHeader" == "$EXPECTED_VERSION" ]]; then - echo "Version is correct" + status_code=$(grep -oP "HTTP\/\d(\.\d)? \K\d+" response.txt) + if [[ "$versionHeader" == "$EXPECTED_VERSION" && "$status_code" == "200" ]]; then + echo "Version and status code are correct" exit 0 else - echo "Version '$versionHeader' is incorrect, expected '$EXPECTED_VERSION'" + echo "Health check failed, Version '$versionHeader', expected '$EXPECTED_VERSION', status code '$status_code'" n=$((n+1)) sleep $((DelayMultiplier * n)) fi diff --git a/.gitignore b/.gitignore index b9f97d41e..2bea0cd70 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,5 @@ local.env cookies.txt dump.sql test-results/ +**/*.sqlite +**/*.sqlite-* diff --git a/.idea/.idea.LexBox/.idea/indexLayout.xml b/.idea/.idea.LexBox/.idea/indexLayout.xml index bfb0056af..3a934820b 100644 --- a/.idea/.idea.LexBox/.idea/indexLayout.xml +++ b/.idea/.idea.LexBox/.idea/indexLayout.xml @@ -2,6 +2,7 @@ <project version="4"> <component name="UserContentModel"> <attachedFolders> + <Path>deployment</Path> <Path>frontend</Path> <Path>hasura</Path> <Path>hg-web</Path> diff --git a/Taskfile.yml b/Taskfile.yml index ad80af9d0..317aafe50 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -34,6 +34,7 @@ tasks: - echo "#OTEL_SDK_DISABLED=true" >> deployment/local-dev/local.env - echo "GOOGLE_OAUTH_CLIENT_ID=__REPLACE__.apps.googleusercontent.com" >> deployment/local-dev/local.env - echo "GOOGLE_OAUTH_CLIENT_SECRET=__REPLACE__" >> deployment/local-dev/local.env + - kubectl --context=docker-desktop apply -f deployment/setup/namespace.yaml setup-win: platforms: [ windows ] cmds: diff --git a/backend/LexBoxApi/Controllers/UserController.cs b/backend/LexBoxApi/Controllers/UserController.cs index 01fc14a95..92b6c7020 100644 --- a/backend/LexBoxApi/Controllers/UserController.cs +++ b/backend/LexBoxApi/Controllers/UserController.cs @@ -1,5 +1,6 @@ using System.Security.Cryptography; using LexBoxApi.Auth; +using LexBoxApi.Auth.Attributes; using LexBoxApi.Models; using LexBoxApi.Otel; using LexBoxApi.Services; @@ -65,27 +66,51 @@ public async Task<ActionResult<LexAuthUser>> RegisterAccount(RegisterAccountInpu return ValidationProblem(ModelState); } - var jwtUser = _loggedInContext.MaybeUser; - var emailVerified = jwtUser?.Email == accountInput.Email; + var userEntity = CreateUserEntity(accountInput, emailVerified: false); + registerActivity?.AddTag("app.user.id", userEntity.Id); + _lexBoxDbContext.Users.Add(userEntity); + await _lexBoxDbContext.SaveChangesAsync(); - var salt = Convert.ToHexString(RandomNumberGenerator.GetBytes(SHA1.HashSizeInBytes)); - var userEntity = new User + var user = new LexAuthUser(userEntity); + await HttpContext.SignInAsync(user.GetPrincipal("Registration"), + new AuthenticationProperties { IsPersistent = true }); + + await _emailService.SendVerifyAddressEmail(userEntity); + return Ok(user); + } + + [HttpPost("acceptInvitation")] + [RequireAudience(LexboxAudience.RegisterAccount, true)] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesErrorResponseType(typeof(Dictionary<string, string[]>))] + [ProducesDefaultResponseType] + public async Task<ActionResult<LexAuthUser>> AcceptEmailInvitation(RegisterAccountInput accountInput) + { + using var acceptActivity = LexBoxActivitySource.Get().StartActivity("AcceptInvitation"); + var validToken = await _turnstileService.IsTokenValid(accountInput.TurnstileToken, accountInput.Email); + acceptActivity?.AddTag("app.turnstile_token_valid", validToken); + if (!validToken) { - Id = Guid.NewGuid(), - Name = accountInput.Name, - Email = accountInput.Email, - LocalizationCode = accountInput.Locale, - Salt = salt, - PasswordHash = PasswordHashing.HashPassword(accountInput.PasswordHash, salt, true), - PasswordStrength = UserService.ClampPasswordStrength(accountInput.PasswordStrength), - IsAdmin = false, - EmailVerified = emailVerified, - Locked = false, - CanCreateProjects = false - }; - registerActivity?.AddTag("app.user.id", userEntity.Id); + ModelState.AddModelError<RegisterAccountInput>(r => r.TurnstileToken, "token invalid"); + return ValidationProblem(ModelState); + } + + var jwtUser = _loggedInContext.User; + + var hasExistingUser = await _lexBoxDbContext.Users.FilterByEmailOrUsername(accountInput.Email).AnyAsync(); + acceptActivity?.AddTag("app.email_available", !hasExistingUser); + if (hasExistingUser) + { + ModelState.AddModelError<RegisterAccountInput>(r => r.Email, "email already in use"); + return ValidationProblem(ModelState); + } + + var emailVerified = jwtUser.Email == accountInput.Email; + var userEntity = CreateUserEntity(accountInput, emailVerified); + acceptActivity?.AddTag("app.user.id", userEntity.Id); _lexBoxDbContext.Users.Add(userEntity); - if (jwtUser is not null && jwtUser.Projects.Length > 0) + // This audience check is redundant now because of [RequireAudience(LexboxAudience.RegisterAccount, true)], but let's leave it in for safety + if (jwtUser.Audience == LexboxAudience.RegisterAccount && jwtUser.Projects.Length > 0) { userEntity.Projects = jwtUser.Projects.Select(p => new ProjectUsers { Role = p.Role, ProjectId = p.ProjectId }).ToList(); } @@ -99,6 +124,27 @@ await HttpContext.SignInAsync(user.GetPrincipal("Registration"), return Ok(user); } + private User CreateUserEntity(RegisterAccountInput input, bool emailVerified, Guid? creatorId = null) + { + var salt = Convert.ToHexString(RandomNumberGenerator.GetBytes(SHA1.HashSizeInBytes)); + var userEntity = new User + { + Id = Guid.NewGuid(), + Name = input.Name, + Email = input.Email, + LocalizationCode = input.Locale, + Salt = salt, + PasswordHash = PasswordHashing.HashPassword(input.PasswordHash, salt, true), + PasswordStrength = UserService.ClampPasswordStrength(input.PasswordStrength), + IsAdmin = false, + EmailVerified = emailVerified, + CreatedById = creatorId, + Locked = false, + CanCreateProjects = false + }; + return userEntity; + } + [HttpPost("sendVerificationEmail")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] diff --git a/backend/LexBoxApi/GraphQL/CustomTypes/IsLanguageForgeProjectDataLoader.cs b/backend/LexBoxApi/GraphQL/CustomTypes/IsLanguageForgeProjectDataLoader.cs new file mode 100644 index 000000000..74037310b --- /dev/null +++ b/backend/LexBoxApi/GraphQL/CustomTypes/IsLanguageForgeProjectDataLoader.cs @@ -0,0 +1,30 @@ +using LexCore.ServiceInterfaces; +using LfClassicData; +using MongoDB.Driver; +using MongoDB.Driver.Linq; + +namespace LexBoxApi.GraphQL.CustomTypes; + +public class IsLanguageForgeProjectDataLoader : BatchDataLoader<string, bool>, IIsLanguageForgeProjectDataLoader +{ + private readonly SystemDbContext _systemDbContext; + + public IsLanguageForgeProjectDataLoader( + SystemDbContext systemDbContext, + IBatchScheduler batchScheduler, + DataLoaderOptions? options = null) + : base(batchScheduler, options) + { + _systemDbContext = systemDbContext; + } + + protected override async Task<IReadOnlyDictionary<string, bool>> LoadBatchAsync( + IReadOnlyList<string> projectCodes, + CancellationToken cancellationToken) + { + return await MongoExtensions.ToAsyncEnumerable(_systemDbContext.Projects.AsQueryable() + .Select(p => p.ProjectCode) + .Where(projectCode => projectCodes.Contains(projectCode))) + .ToDictionaryAsync(projectCode => projectCode, _ => true, cancellationToken); + } +} diff --git a/backend/LexBoxApi/GraphQL/GraphQlSetupKernel.cs b/backend/LexBoxApi/GraphQL/GraphQlSetupKernel.cs index fd0457973..252da0584 100644 --- a/backend/LexBoxApi/GraphQL/GraphQlSetupKernel.cs +++ b/backend/LexBoxApi/GraphQL/GraphQlSetupKernel.cs @@ -20,6 +20,7 @@ public static void AddLexGraphQL(this IServiceCollection services, IHostEnvironm .InitializeOnStartup() .RegisterDbContext<LexBoxDbContext>() .RegisterService<IHgService>() + .RegisterService<IIsLanguageForgeProjectDataLoader>() .RegisterService<LoggedInContext>() .RegisterService<EmailService>() .RegisterService<LexAuthService>() diff --git a/backend/LexBoxApi/GraphQL/ProjectMutations.cs b/backend/LexBoxApi/GraphQL/ProjectMutations.cs index 49ba58e5e..9f4c87bd0 100644 --- a/backend/LexBoxApi/GraphQL/ProjectMutations.cs +++ b/backend/LexBoxApi/GraphQL/ProjectMutations.cs @@ -122,8 +122,11 @@ public async Task<BulkAddProjectMembersResult> BulkAddProjectMembers( BulkAddProjectMembersInput input, LexBoxDbContext dbContext) { - var project = await dbContext.Projects.FindAsync(input.ProjectId); - if (project is null) throw new NotFoundException("Project not found", "project"); + if (input.ProjectId.HasValue) + { + var projectExists = await dbContext.Projects.AnyAsync(p => p.Id == input.ProjectId.Value); + if (!projectExists) throw new NotFoundException("Project not found", "project"); + } List<UserProjectRole> AddedMembers = []; List<UserProjectRole> CreatedMembers = []; List<UserProjectRole> ExistingMembers = []; @@ -154,10 +157,13 @@ public async Task<BulkAddProjectMembersResult> BulkAddProjectMembers( CanCreateProjects = false }; CreatedMembers.Add(new UserProjectRole(usernameOrEmail, input.Role)); - user.Projects.Add(new ProjectUsers { Role = input.Role, ProjectId = input.ProjectId, UserId = user.Id }); + if (input.ProjectId.HasValue) + { + user.Projects.Add(new ProjectUsers { Role = input.Role, ProjectId = input.ProjectId.Value, UserId = user.Id }); + } dbContext.Add(user); } - else + else if (input.ProjectId.HasValue) { var userProject = user.Projects.FirstOrDefault(p => p.ProjectId == input.ProjectId); if (userProject is not null) @@ -168,9 +174,14 @@ public async Task<BulkAddProjectMembersResult> BulkAddProjectMembers( { AddedMembers.Add(new UserProjectRole(user.Username ?? user.Email!, input.Role)); // Not yet a member, so add a membership. We don't want to touch existing memberships, which might have other roles - user.Projects.Add(new ProjectUsers { Role = input.Role, ProjectId = input.ProjectId, UserId = user.Id }); + user.Projects.Add(new ProjectUsers { Role = input.Role, ProjectId = input.ProjectId.Value, UserId = user.Id }); } } + else + { + // No project ID specified, user already exists. This is probably part of bulk-adding through the admin dashboard or org page. + ExistingMembers.Add(new UserProjectRole(user.Username ?? user.Email!, ProjectRole.Unknown)); + } } await dbContext.SaveChangesAsync(); return new BulkAddProjectMembersResult(AddedMembers, CreatedMembers, ExistingMembers); @@ -339,6 +350,25 @@ await dbContext.ProjectUsers.Where(pu => pu.ProjectId == input.ProjectId && pu.U return dbContext.Projects.Where(p => p.Id == input.ProjectId); } + [Error<NotFoundException>] + [Error<DbError>] + [AdminRequired] + [UseMutationConvention] + [UseProjection] + public async Task<DraftProject> DeleteDraftProject( + Guid draftProjectId, + LexBoxDbContext dbContext) + { + var deletedDraft = await dbContext.DraftProjects.FindAsync(draftProjectId); + if (deletedDraft == null) + { + throw NotFoundException.ForType<DraftProject>(); + } + // Draft projects are deleted immediately, not soft-deleted + dbContext.DraftProjects.Remove(deletedDraft); + await dbContext.SaveChangesAsync(); + return deletedDraft; + } [Error<NotFoundException>] [Error<DbError>] @@ -356,18 +386,7 @@ public async Task<IQueryable<Project>> SoftDeleteProject( var project = await dbContext.Projects.Include(p => p.Users).FirstOrDefaultAsync(p => p.Id == projectId); if (project is null) { - // Draft projects, if any, are deleted immediately, not soft-deleted - var deletedDraftCount = await dbContext.DraftProjects.Where(dp => dp.Id == projectId).ExecuteDeleteAsync(); - if (deletedDraftCount == 0) - { - // No draft project either, so return standard project not found error - throw NotFoundException.ForType<Project>(); - } - else - { - // Return an empty project list to indicate success - return dbContext.Projects.Where(p => p.Id == projectId); - } + throw NotFoundException.ForType<Project>(); } if (project.DeletedDate is not null) throw new InvalidOperationException("Project already deleted"); diff --git a/backend/LexBoxApi/GraphQL/UserMutations.cs b/backend/LexBoxApi/GraphQL/UserMutations.cs index faea9fc8b..aff7f6108 100644 --- a/backend/LexBoxApi/GraphQL/UserMutations.cs +++ b/backend/LexBoxApi/GraphQL/UserMutations.cs @@ -1,14 +1,18 @@ using System.ComponentModel.DataAnnotations; +using System.Security.Cryptography; using LexBoxApi.Auth; using LexBoxApi.Auth.Attributes; using LexBoxApi.GraphQL.CustomTypes; using LexBoxApi.Models.Project; +using LexBoxApi.Otel; using LexBoxApi.Services; +using LexCore; using LexCore.Auth; using LexCore.Entities; using LexCore.Exceptions; using LexCore.ServiceInterfaces; using LexData; +using LexData.Entities; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Microsoft.IdentityModel.Tokens; @@ -23,6 +27,13 @@ public record ChangeUserAccountBySelfInput(Guid UserId, string? Email, string Na : ChangeUserAccountDataInput(UserId, Email, Name); public record ChangeUserAccountByAdminInput(Guid UserId, string? Email, string Name, UserRole Role) : ChangeUserAccountDataInput(UserId, Email, Name); + public record CreateGuestUserByAdminInput( + string? Email, + string Name, + string? Username, + string Locale, + string PasswordHash, + int PasswordStrength); [Error<NotFoundException>] [Error<DbError>] @@ -63,6 +74,55 @@ EmailService emailService return UpdateUser(loggedInContext, permissionService, input, dbContext, emailService); } + [Error<NotFoundException>] + [Error<DbError>] + [Error<UniqueValueException>] + [Error<RequiredException>] + [AdminRequired] + public async Task<LexAuthUser> CreateGuestUserByAdmin( + LoggedInContext loggedInContext, + CreateGuestUserByAdminInput input, + LexBoxDbContext dbContext, + EmailService emailService + ) + { + using var createGuestUserActivity = LexBoxActivitySource.Get().StartActivity("CreateGuestUser"); + + var hasExistingUser = input.Email is null && input.Username is null + ? throw new RequiredException("Guest users must have either an email or a username") + : await dbContext.Users.FilterByEmailOrUsername(input.Email ?? input.Username!).AnyAsync(); + createGuestUserActivity?.AddTag("app.email_available", !hasExistingUser); + if (hasExistingUser) throw new UniqueValueException("Email"); + + var admin = loggedInContext.User; + + var salt = Convert.ToHexString(RandomNumberGenerator.GetBytes(SHA1.HashSizeInBytes)); + var userEntity = new User + { + Id = Guid.NewGuid(), + Name = input.Name, + Email = input.Email, + Username = input.Username, + LocalizationCode = input.Locale, + Salt = salt, + PasswordHash = PasswordHashing.HashPassword(input.PasswordHash, salt, true), + PasswordStrength = UserService.ClampPasswordStrength(input.PasswordStrength), + IsAdmin = false, + EmailVerified = false, + CreatedById = admin.Id, + Locked = false, + CanCreateProjects = false + }; + createGuestUserActivity?.AddTag("app.user.id", userEntity.Id); + dbContext.Users.Add(userEntity); + await dbContext.SaveChangesAsync(); + if (!string.IsNullOrEmpty(input.Email)) + { + await emailService.SendVerifyAddressEmail(userEntity); + } + return new LexAuthUser(userEntity); + } + private static async Task<User> UpdateUser( LoggedInContext loggedInContext, IPermissionService permissionService, diff --git a/backend/LexBoxApi/LexBoxApi.csproj b/backend/LexBoxApi/LexBoxApi.csproj index cc3c9dfe2..583852189 100644 --- a/backend/LexBoxApi/LexBoxApi.csproj +++ b/backend/LexBoxApi/LexBoxApi.csproj @@ -33,16 +33,16 @@ <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <PackageReference Include="Nito.AsyncEx.Coordination" Version="5.1.2" /> - <PackageReference Include="Npgsql.OpenTelemetry" Version="8.0.1" /> - <PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.7.0" /> - <PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.7.0" /> - <PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.7.0" /> - <PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.7.0" /> + <PackageReference Include="Npgsql.OpenTelemetry" Version="8.0.3" /> + <PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.8.1" /> + <PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.8.1" /> + <PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.8.1" /> + <PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.8.1" /> <PackageReference Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.0.0-beta.8" /> - <PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.7.0" /> + <PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.8.1" /> <PackageReference Include="OpenTelemetry.Instrumentation.Process" Version="0.5.0-beta.3" /> <PackageReference Include="OpenTelemetry.Instrumentation.Quartz" Version="1.0.0-beta.1" /> - <PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.7.0" /> + <PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.8.0" /> <PackageReference Include="Quartz.AspNetCore" Version="3.8.0" /> <PackageReference Include="Quartz.Serialization.Json" Version="3.8.0" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" /> @@ -58,6 +58,6 @@ </ItemGroup> <ItemGroup> - <Content Include="Services\HgEmptyRepo\**" CopyToOutputDirectory="Always" /> + <Content Include="Services\HgEmptyRepo\**" CopyToOutputDirectory="PreserveNewest" /> </ItemGroup> </Project> diff --git a/backend/LexBoxApi/LexBoxKernel.cs b/backend/LexBoxApi/LexBoxKernel.cs index 899f21444..2d6569dba 100644 --- a/backend/LexBoxApi/LexBoxKernel.cs +++ b/backend/LexBoxApi/LexBoxKernel.cs @@ -1,10 +1,12 @@ using LexBoxApi.Auth; using LexBoxApi.Config; using LexBoxApi.GraphQL; +using LexBoxApi.GraphQL.CustomTypes; using LexBoxApi.Services; using LexCore.Config; using LexCore.ServiceInterfaces; using LexSyncReverseProxy; +using Microsoft.Extensions.Diagnostics.HealthChecks; using Swashbuckle.AspNetCore.Swagger; namespace LexBoxApi; @@ -22,9 +24,9 @@ public static void AddLexBoxApi(this IServiceCollection services, .ValidateDataAnnotations() .ValidateOnStart(); // services.AddOptions<HasuraConfig>() - // .BindConfiguration("HasuraConfig") - // .ValidateDataAnnotations() - // .ValidateOnStart(); + // .BindConfiguration("HasuraConfig") + // .ValidateDataAnnotations() + // .ValidateOnStart(); services.AddOptions<CloudFlareConfig>() .BindConfiguration("CloudFlare") .ValidateDataAnnotations() @@ -52,12 +54,15 @@ public static void AddLexBoxApi(this IServiceCollection services, services.AddScoped<TusService>(); services.AddScoped<TurnstileService>(); services.AddScoped<IHgService, HgService>(); + services.AddTransient<HgWebHealthCheck>(); + services.AddScoped<IIsLanguageForgeProjectDataLoader, IsLanguageForgeProjectDataLoader>(); services.AddScoped<ILexProxyService, LexProxyService>(); services.AddSingleton<ISendReceiveService, SendReceiveService>(); services.AddSingleton<LexboxLinkGenerator>(); if (environment.IsDevelopment()) services.AddHostedService<SwaggerValidationService>(); services.AddScheduledTasks(configuration); + services.AddHealthChecks().AddCheck<HgWebHealthCheck>("hgweb", HealthStatus.Unhealthy, ["hg"], TimeSpan.FromSeconds(5)); services.AddSyncProxy(); AuthKernel.AddLexBoxAuth(services, configuration, environment); services.AddLexGraphQL(environment); diff --git a/backend/LexBoxApi/Models/Project/ProjectMemberInputs.cs b/backend/LexBoxApi/Models/Project/ProjectMemberInputs.cs index 2bcdd5a19..13a787fba 100644 --- a/backend/LexBoxApi/Models/Project/ProjectMemberInputs.cs +++ b/backend/LexBoxApi/Models/Project/ProjectMemberInputs.cs @@ -5,6 +5,6 @@ namespace LexBoxApi.Models.Project; public record AddProjectMemberInput(Guid ProjectId, string UsernameOrEmail, ProjectRole Role); -public record BulkAddProjectMembersInput(Guid ProjectId, string[] Usernames, ProjectRole Role, string PasswordHash); +public record BulkAddProjectMembersInput(Guid? ProjectId, string[] Usernames, ProjectRole Role, string PasswordHash); public record ChangeProjectMemberRoleInput(Guid ProjectId, Guid UserId, ProjectRole Role); diff --git a/backend/LexBoxApi/Services/EmailService.cs b/backend/LexBoxApi/Services/EmailService.cs index b866dcd22..af8c46a93 100644 --- a/backend/LexBoxApi/Services/EmailService.cs +++ b/backend/LexBoxApi/Services/EmailService.cs @@ -127,7 +127,7 @@ public async Task SendCreateAccountEmail(string emailAddress, var httpContext = httpContextAccessor.HttpContext; ArgumentNullException.ThrowIfNull(httpContext); var queryString = QueryString.Create("email", emailAddress); - var returnTo = new UriBuilder() { Path = "/register", Query = queryString.Value }.Uri.PathAndQuery; + var returnTo = new UriBuilder() { Path = "/acceptInvitation", Query = queryString.Value }.Uri.PathAndQuery; var registerLink = _linkGenerator.GetUriByAction(httpContext, "LoginRedirect", "Login", diff --git a/backend/LexBoxApi/Services/HgService.cs b/backend/LexBoxApi/Services/HgService.cs index baf485f6f..7899cdac5 100644 --- a/backend/LexBoxApi/Services/HgService.cs +++ b/backend/LexBoxApi/Services/HgService.cs @@ -321,6 +321,13 @@ public async Task WaitForRepoEmptyState(string code, RepoEmptyState expectedStat return int.TryParse(str, out int result) ? result : null; } + public async Task<string> HgCommandHealth() + { + var content = await ExecuteHgCommandServerCommand("health", "healthz", default); + var version = await content.ReadAsStringAsync(); + return version.Trim(); + } + private async Task<HttpContent> ExecuteHgCommandServerCommand(string code, string command, CancellationToken token) { var httpClient = _hgClient.Value; diff --git a/backend/LexBoxApi/Services/HgWebHealthCheck.cs b/backend/LexBoxApi/Services/HgWebHealthCheck.cs new file mode 100644 index 000000000..14e97a737 --- /dev/null +++ b/backend/LexBoxApi/Services/HgWebHealthCheck.cs @@ -0,0 +1,25 @@ +using LexCore.Config; +using LexCore.ServiceInterfaces; +using Microsoft.Extensions.Diagnostics.HealthChecks; +using Microsoft.Extensions.Options; + +namespace LexBoxApi.Services; + +public class HgWebHealthCheck(IHgService hgService, IOptions<HgConfig> hgOptions) : IHealthCheck +{ + public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context, + CancellationToken cancellationToken = new()) + { + var version = await hgService.HgCommandHealth(); + if (string.IsNullOrEmpty(version)) + { + return HealthCheckResult.Unhealthy(); + } + if (hgOptions.Value.RequireContainerVersionMatch && version != AppVersionService.Version) + { + return HealthCheckResult.Degraded( + $"api version: '{AppVersionService.Version}' hg version: '{version}' mismatch"); + } + return HealthCheckResult.Healthy(); + } +} diff --git a/backend/LexBoxApi/appsettings.json b/backend/LexBoxApi/appsettings.json index a5369becd..526299b70 100644 --- a/backend/LexBoxApi/appsettings.json +++ b/backend/LexBoxApi/appsettings.json @@ -12,7 +12,7 @@ "Microsoft.AspNetCore": "Information", "Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersMiddleware": "Debug", "Microsoft.EntityFrameworkCore": "Information", - "MongoDB.Command": "Debug", + "MongoDB.Command": "Debug" } }, "ForwardedHeadersOptions": { @@ -66,6 +66,6 @@ "Endpoint": "http://localhost:4317" }, "Email": { - "CreateProjectEmailDestination": "admin@languagedepot.org" + "CreateProjectEmailDestination": "lexbox_support@groups.sil.org" } } diff --git a/backend/LexBoxApi/dev.Dockerfile b/backend/LexBoxApi/dev.Dockerfile index aad88da7b..a54f6395c 100644 --- a/backend/LexBoxApi/dev.Dockerfile +++ b/backend/LexBoxApi/dev.Dockerfile @@ -4,7 +4,7 @@ EXPOSE 80 EXPOSE 443 RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ - apt update && apt-get --no-install-recommends install -y rsync ssh + apt update && apt-get --no-install-recommends install -y tini RUN mkdir -p /var/www && chown -R www-data:www-data /var/www USER www-data:www-data WORKDIR /src/backend @@ -15,7 +15,15 @@ RUN for file in $(ls *.csproj); do dir=${file%.*} mkdir -p ${file%.*}/ && mv $fi COPY --chown=www-data . . WORKDIR /src/backend/LexBoxApi -RUN dotnet build #build and restore, should speed up watch run +#build here so that the build is run before container start, need to make sure the property is set both here +#and in the CMD command, otherwise it will rebuild every time the container starts +RUN dotnet build --property:InformationalVersion=dockerDev RUN mkdir /src/frontend + +#ensures the shutdown happens quickly +ENTRYPOINT ["tini", "--"] + # no need to restore because we already restored as part of building the image -CMD dotnet watch run -lp docker --property:InformationalVersion=dockerDev --no-hot-reload --no-restore +ENV ASPNETCORE_ENVIRONMENT=Development +ENV DOTNET_URLS=http://0.0.0.0:5158 +CMD dotnet watch --no-hot-reload run --property:InformationalVersion=dockerDev --no-restore diff --git a/backend/LexCore/Config/HgConfig.cs b/backend/LexCore/Config/HgConfig.cs index 23f7061a7..843517769 100644 --- a/backend/LexCore/Config/HgConfig.cs +++ b/backend/LexCore/Config/HgConfig.cs @@ -16,4 +16,5 @@ public class HgConfig [Required, Url] public required string HgResumableUrl { get; init; } public bool AutoUpdateLexEntryCountOnSendReceive { get; init; } = false; + public bool RequireContainerVersionMatch { get; init; } = true; } diff --git a/backend/LexCore/Entities/Project.cs b/backend/LexCore/Entities/Project.cs index 5758c0d29..37f2e9b32 100644 --- a/backend/LexCore/Entities/Project.cs +++ b/backend/LexCore/Entities/Project.cs @@ -50,6 +50,15 @@ public bool GetHasAbandonedTransactions(IHgService hgService) { return hgService.HasAbandonedTransactions(Code); } + + public Task<bool> GetIsLanguageForgeProject(IIsLanguageForgeProjectDataLoader loader) + { + if (Type is ProjectType.Unknown or ProjectType.FLEx) + { + return loader.LoadAsync(Code); + } + return Task.FromResult(false); + } } public enum ProjectMigrationStatus diff --git a/backend/LexCore/ServiceInterfaces/IHgService.cs b/backend/LexCore/ServiceInterfaces/IHgService.cs index dcded69a6..7b77d747d 100644 --- a/backend/LexCore/ServiceInterfaces/IHgService.cs +++ b/backend/LexCore/ServiceInterfaces/IHgService.cs @@ -21,4 +21,5 @@ public interface IHgService Task<HttpContent> ExecuteHgRecover(string code, CancellationToken token); Task<HttpContent> InvalidateDirCache(string code); bool HasAbandonedTransactions(string projectCode); + Task<string> HgCommandHealth(); } diff --git a/backend/LexCore/ServiceInterfaces/IIsLanguageForgeProjectDataLoader.cs b/backend/LexCore/ServiceInterfaces/IIsLanguageForgeProjectDataLoader.cs new file mode 100644 index 000000000..6482581b2 --- /dev/null +++ b/backend/LexCore/ServiceInterfaces/IIsLanguageForgeProjectDataLoader.cs @@ -0,0 +1,6 @@ +namespace LexCore.ServiceInterfaces; + +public interface IIsLanguageForgeProjectDataLoader +{ + public Task<bool> LoadAsync(string projectCode, CancellationToken cancellationToken = default); +} diff --git a/backend/LexData/LexData.csproj b/backend/LexData/LexData.csproj index 62125507c..3c7fe3989 100644 --- a/backend/LexData/LexData.csproj +++ b/backend/LexData/LexData.csproj @@ -19,8 +19,8 @@ <PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" /> <PackageReference Include="Microsoft.Extensions.Options" Version="8.0.1" /> <PackageReference Include="Microsoft.Extensions.Options.DataAnnotations" Version="8.0.0" /> - <PackageReference Include="Npgsql" Version="8.0.2" /> - <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.2" /> + <PackageReference Include="Npgsql" Version="8.0.3" /> + <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.4" /> </ItemGroup> <ItemGroup> diff --git a/backend/LfClassicData/DataServiceKernel.cs b/backend/LfClassicData/DataServiceKernel.cs index bf5cc351a..d026e4931 100644 --- a/backend/LfClassicData/DataServiceKernel.cs +++ b/backend/LfClassicData/DataServiceKernel.cs @@ -35,6 +35,14 @@ public static MongoClientSettings BuildMongoClientSettings(IServiceProvider prov { var config = provider.GetRequiredService<IOptions<LfClassicConfig>>(); var mongoSettings = MongoClientSettings.FromConnectionString(config.Value.ConnectionString); + if (config.Value.HasCredentials) + { + mongoSettings.Credential = MongoCredential.CreateCredential( + databaseName: config.Value.AuthSource, + username: config.Value.Username, + password: config.Value.Password + ); + } mongoSettings.LoggingSettings = new LoggingSettings(provider.GetRequiredService<ILoggerFactory>()); mongoSettings.ClusterConfigurator = cb => cb.Subscribe(new DiagnosticsActivityEventSubscriber(new() { CaptureCommandText = true })); diff --git a/backend/LfClassicData/LfClassicConfig.cs b/backend/LfClassicData/LfClassicConfig.cs index f55a0b4ae..2634f60db 100644 --- a/backend/LfClassicData/LfClassicConfig.cs +++ b/backend/LfClassicData/LfClassicConfig.cs @@ -6,4 +6,9 @@ public class LfClassicConfig { [Required] public required string ConnectionString { get; set; } + + public string? AuthSource { get; set; } + public string? Username { get; set; } + public string? Password { get; set; } + public bool HasCredentials => AuthSource is not null && Username is not null && Password is not null; } diff --git a/backend/SyncReverseProxy/SyncReverseProxy.csproj b/backend/SyncReverseProxy/SyncReverseProxy.csproj index 121d64bc7..c9690dee4 100644 --- a/backend/SyncReverseProxy/SyncReverseProxy.csproj +++ b/backend/SyncReverseProxy/SyncReverseProxy.csproj @@ -16,11 +16,11 @@ <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="7.3.0" /> <PackageReference Include="Yarp.ReverseProxy" Version="2.1.0" /> - <PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.7.0" /> - <PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.7.0" /> - <PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.7.0" /> - <PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.7.0" /> - <PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.7.0" /> + <PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.8.1" /> + <PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.8.1" /> + <PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.8.1" /> + <PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.8.1" /> + <PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.8.1" /> <PackageReference Include="Yarp.Telemetry.Consumption" Version="2.1.0" /> </ItemGroup> diff --git a/backend/Testing/Testing.csproj b/backend/Testing/Testing.csproj index 4efe2a095..57b5d8306 100644 --- a/backend/Testing/Testing.csproj +++ b/backend/Testing/Testing.csproj @@ -7,16 +7,16 @@ <IsPackable>false</IsPackable> <Mercurial4ChorusDestDir>$(MSBuildProjectDirectory)</Mercurial4ChorusDestDir> - <!-- To switch Mercurial versions, do dotnet build /p:MercurialVersion=6 followed by dotnet test --> - <!-- Note that if you run dotnet test /p:MercurialVersion=6 it will not work as expected; you must run dotnet build first in order to switch Mercurial versions --> - <MercurialVersion Condition=" '$(MercurialVersion)' == '' ">3</MercurialVersion> + <!-- To switch Mercurial versions, do dotnet build /p:MercurialVersion=3 followed by dotnet test --> + <!-- Note that if you run dotnet test /p:MercurialVersion=3 it will not work as expected; you must run dotnet build first in order to switch Mercurial versions --> + <MercurialVersion Condition=" '$(MercurialVersion)' == '' ">6</MercurialVersion> </PropertyGroup> <Choose> <When Condition=" '$(MercurialVersion)' == '6' "> <ItemGroup> - <PackageReference Include="SIL.Chorus.LibChorus" Version="6.0.0-beta0045" /> - <PackageReference Include="SIL.Chorus.Mercurial" Version="6.5.1.29" /> + <PackageReference Include="SIL.Chorus.LibChorus" Version="6.0.0-beta0046" /> + <PackageReference Include="SIL.Chorus.Mercurial" Version="6.*" /> </ItemGroup> </When> <Otherwise> diff --git a/deployment/base/app-config.yaml b/deployment/base/app-config.yaml index 311052657..2cdf08cde 100644 --- a/deployment/base/app-config.yaml +++ b/deployment/base/app-config.yaml @@ -4,6 +4,6 @@ metadata: name: app-config data: environment-name: "Development" - hg-otel-enabled: "ON" + hg-otel-disabled: "false" # "true" to disable OpenTelemetry hg-domain: "hg.localhost" diff --git a/deployment/base/hg-deployment.yaml b/deployment/base/hg-deployment.yaml index 8f2e1272b..2253cd61f 100644 --- a/deployment/base/hg-deployment.yaml +++ b/deployment/base/hg-deployment.yaml @@ -105,11 +105,11 @@ spec: value: ".*" - name: OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE value: ".*" - - name: OTEL_ENABLED + - name: OTEL_SDK_DISABLED valueFrom: configMapKeyRef: name: app-config - key: hg-otel-enabled + key: hg-otel-disabled - name: ENABLE_DEMAND_IMPORT value: "false" ports: @@ -176,6 +176,7 @@ spec: securityContext: runAsUser: 33 runAsGroup: 33 # www-data + runAsNonRoot: true image: busybox:1.36.1 command: - 'sh' diff --git a/deployment/base/lexbox-deployment.yaml b/deployment/base/lexbox-deployment.yaml index 7326ed1e8..96e6debd1 100644 --- a/deployment/base/lexbox-deployment.yaml +++ b/deployment/base/lexbox-deployment.yaml @@ -92,6 +92,8 @@ spec: fieldPath: spec.nodeName - name: OTEL_RESOURCE_ATTRIBUTES value: k8s.node.name=$(K8S_NODE_NAME) + - name: OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION + value: 'true' - name: POSTGRES_DB valueFrom: secretKeyRef: @@ -118,6 +120,21 @@ spec: value: Host=db;Port=5432;Username=postgres;Password=$(POSTGRES_PASSWORD);Database=$(POSTGRES_DB) - name: LfClassicConfig__ConnectionString value: mongodb://db.languageforge:27017 + - name: LfClassicConfig__AuthSource + valueFrom: + secretKeyRef: + key: MONGODB_AUTHSOURCE + name: lf-mongo-auth + - name: LfClassicConfig__Username + valueFrom: + secretKeyRef: + key: MONGODB_USER + name: lf-mongo-auth + - name: LfClassicConfig__Password + valueFrom: + secretKeyRef: + key: MONGODB_PASS + name: lf-mongo-auth - name: Authentication__Jwt__Secret valueFrom: secretKeyRef: diff --git a/deployment/base/secrets.yaml b/deployment/base/secrets.yaml index ca823a19a..94236d32a 100644 --- a/deployment/base/secrets.yaml +++ b/deployment/base/secrets.yaml @@ -13,6 +13,18 @@ stringData: --- +apiVersion: v1 +kind: Secret +metadata: + name: lf-mongo-auth + namespace: languagedepot +stringData: + MONGODB_AUTHSOURCE: '' + MONGODB_USER: '' + MONGODB_PASS: '' + +--- + apiVersion: v1 kind: Secret metadata: diff --git a/deployment/develop/app-config.yaml b/deployment/develop/app-config.yaml index d8a68b7e2..f0e1b2f3c 100644 --- a/deployment/develop/app-config.yaml +++ b/deployment/develop/app-config.yaml @@ -4,6 +4,5 @@ metadata: name: app-config data: environment-name: "Development" - hg-otel-enabled: "ON" hg-domain: "hg-develop.lexbox.org" diff --git a/deployment/develop/lexbox-deployment.patch.yaml b/deployment/develop/lexbox-deployment.patch.yaml index 434005830..58d016e9c 100644 --- a/deployment/develop/lexbox-deployment.patch.yaml +++ b/deployment/develop/lexbox-deployment.patch.yaml @@ -21,7 +21,8 @@ spec: - name: Email__SmtpPort value: '587' - name: Email__From - # TODO: need to parameterize this value: "Language Depot (Develop) <no-reply@develop.languagedepot.org>" - name: Email__BaseUrl value: "https://develop.lexbox.org" + - name: HgConfig__RequireContainerVersionMatch + value: "false" diff --git a/deployment/init-repos/hg-deployment-patch.yaml b/deployment/init-repos/hg-deployment-patch.yaml index 82ac50d91..1fefc7d51 100644 --- a/deployment/init-repos/hg-deployment-patch.yaml +++ b/deployment/init-repos/hg-deployment-patch.yaml @@ -11,6 +11,7 @@ spec: securityContext: runAsUser: 33 runAsGroup: 33 # www-data + runAsNonRoot: true image: busybox:1.36.1 command: - 'sh' diff --git a/deployment/local-dev/hg-deployment-patch.yaml b/deployment/local-dev/hg-deployment-patch.yaml deleted file mode 100644 index 1009ae620..000000000 --- a/deployment/local-dev/hg-deployment-patch.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: hg - namespace: languagedepot -spec: - template: - spec: - containers: - - name: hgweb - env: - - name: APP_VERSION - value: "dockerDev" diff --git a/deployment/local-dev/ingress-deployment.yaml b/deployment/local-dev/ingress-deployment.yaml index 8b85b0246..efb543c34 100644 --- a/deployment/local-dev/ingress-deployment.yaml +++ b/deployment/local-dev/ingress-deployment.yaml @@ -1,12 +1,4 @@ apiVersion: v1 -kind: Namespace -metadata: - labels: - app.kubernetes.io/instance: ingress-nginx - app.kubernetes.io/name: ingress-nginx - name: ingress-nginx ---- -apiVersion: v1 automountServiceAccountToken: true kind: ServiceAccount metadata: @@ -17,7 +9,7 @@ metadata: app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.8.0 name: ingress-nginx - namespace: ingress-nginx + namespace: languagedepot --- apiVersion: v1 kind: ServiceAccount @@ -29,7 +21,7 @@ metadata: app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.8.0 name: ingress-nginx-admission - namespace: ingress-nginx + namespace: languagedepot --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role @@ -41,7 +33,7 @@ metadata: app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.8.0 name: ingress-nginx - namespace: ingress-nginx + namespace: languagedepot rules: - apiGroups: - "" @@ -131,7 +123,7 @@ metadata: app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.8.0 name: ingress-nginx-admission - namespace: ingress-nginx + namespace: languagedepot rules: - apiGroups: - "" @@ -251,7 +243,7 @@ metadata: app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.8.0 name: ingress-nginx - namespace: ingress-nginx + namespace: languagedepot roleRef: apiGroup: rbac.authorization.k8s.io kind: Role @@ -259,7 +251,7 @@ roleRef: subjects: - kind: ServiceAccount name: ingress-nginx - namespace: ingress-nginx + namespace: languagedepot --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding @@ -271,7 +263,7 @@ metadata: app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.8.0 name: ingress-nginx-admission - namespace: ingress-nginx + namespace: languagedepot roleRef: apiGroup: rbac.authorization.k8s.io kind: Role @@ -279,7 +271,7 @@ roleRef: subjects: - kind: ServiceAccount name: ingress-nginx-admission - namespace: ingress-nginx + namespace: languagedepot --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding @@ -297,7 +289,7 @@ roleRef: subjects: - kind: ServiceAccount name: ingress-nginx - namespace: ingress-nginx + namespace: languagedepot --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding @@ -316,7 +308,7 @@ roleRef: subjects: - kind: ServiceAccount name: ingress-nginx-admission - namespace: ingress-nginx + namespace: languagedepot --- apiVersion: v1 data: @@ -334,7 +326,7 @@ metadata: app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.8.0 name: ingress-nginx-controller - namespace: ingress-nginx + namespace: languagedepot --- apiVersion: v1 kind: Service @@ -346,7 +338,7 @@ metadata: app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.8.0 name: ingress-nginx-controller - namespace: ingress-nginx + namespace: languagedepot spec: externalTrafficPolicy: Local ipFamilies: @@ -379,7 +371,7 @@ metadata: app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.8.0 name: ingress-nginx-controller-admission - namespace: ingress-nginx + namespace: languagedepot spec: ports: - appProtocol: https @@ -402,7 +394,7 @@ metadata: app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.8.0 name: ingress-nginx-controller - namespace: ingress-nginx + namespace: languagedepot spec: minReadySeconds: 0 revisionHistoryLimit: 10 @@ -516,7 +508,7 @@ metadata: app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.8.0 name: ingress-nginx-admission-create - namespace: ingress-nginx + namespace: languagedepot spec: template: metadata: @@ -563,7 +555,7 @@ metadata: app.kubernetes.io/part-of: ingress-nginx app.kubernetes.io/version: 1.8.0 name: ingress-nginx-admission-patch - namespace: ingress-nginx + namespace: languagedepot spec: template: metadata: @@ -631,7 +623,7 @@ webhooks: clientConfig: service: name: ingress-nginx-controller-admission - namespace: ingress-nginx + namespace: languagedepot path: /networking/v1/ingresses failurePolicy: Fail matchPolicy: Equivalent diff --git a/deployment/local-dev/kustomization.yaml b/deployment/local-dev/kustomization.yaml index ef8b5c683..80a787681 100644 --- a/deployment/local-dev/kustomization.yaml +++ b/deployment/local-dev/kustomization.yaml @@ -30,7 +30,6 @@ patches: path: change-storage-class.patch.yaml - path: lexbox-deployment.patch.yaml - path: ui-deployment.patch.yaml - - path: hg-deployment-patch.yaml - path: hg-repos-pvc.patch.yaml - path: lexbox-service.patch.yaml - path: ingress-config.patch.yaml diff --git a/deployment/production/lexbox-deployment.patch.yaml b/deployment/production/lexbox-deployment.patch.yaml index d1dbc9807..18ba6ebc1 100644 --- a/deployment/production/lexbox-deployment.patch.yaml +++ b/deployment/production/lexbox-deployment.patch.yaml @@ -21,7 +21,8 @@ spec: - name: Email__SmtpPort value: '587' - name: Email__From - # TODO: need to parameterize this value: "Language Depot <no-reply@languagedepot.org>" + - name: Email__CreateProjectEmailDestination + value: "admin@languagedepot.org" - name: Email__BaseUrl value: "https://languagedepot.org" diff --git a/deployment/base/namespace.yaml b/deployment/setup/namespace.yaml similarity index 100% rename from deployment/base/namespace.yaml rename to deployment/setup/namespace.yaml diff --git a/deployment/staging/app-config.yaml b/deployment/staging/app-config.yaml index efb735f7f..57a4435ea 100644 --- a/deployment/staging/app-config.yaml +++ b/deployment/staging/app-config.yaml @@ -4,5 +4,4 @@ metadata: name: app-config data: environment-name: "Staging" - hg-otel-enabled: "ON" hg-domain: "hg-staging.languageforge.org" diff --git a/deployment/staging/lexbox-deployment.patch.yaml b/deployment/staging/lexbox-deployment.patch.yaml index 45da224f5..a5899d048 100644 --- a/deployment/staging/lexbox-deployment.patch.yaml +++ b/deployment/staging/lexbox-deployment.patch.yaml @@ -24,7 +24,6 @@ spec: - name: Email__SmtpPort value: '587' - name: Email__From - # TODO: need to parameterize this value: "Language Depot (Staging) <no-reply@staging.languagedepot.org>" - name: Email__BaseUrl value: "https://staging.languagedepot.org" diff --git a/frontend/package.json b/frontend/package.json index 12982fd20..9696f83cf 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -16,7 +16,7 @@ "test-flaky": "playwright test --retries=3 -j 30%", "test-hard": "playwright test --repeat-each=3 -j 30%", "test-report": "playwright show-report test-results/_html-report", - "_env-comment": "Run any command with .env.local loaded: (e.g. `pnpm run env test-flaky`)", + "_env-comment": "Run any command with .env.local loaded: (e.g. `pnpm run env run test -g \"test name\")", "env": "dotenvx run --env-file=.env.local -- pnpm", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", @@ -27,79 +27,79 @@ "clean": "rimraf node_modules .svelte-kit" }, "devDependencies": { - "@dotenvx/dotenvx": "^0.37.0", - "@egoist/tailwindcss-icons": "^1.7.4", - "@eslint/js": "^8.56.0", - "@graphql-codegen/cli": "^5.0.0", - "@graphql-codegen/client-preset": "^4.1.0", - "@graphql-codegen/schema-ast": "^4.0.0", - "@graphql-codegen/typescript": "^4.0.1", + "@dotenvx/dotenvx": "^0.37.1", + "@egoist/tailwindcss-icons": "^1.8.0", + "@eslint/js": "^8.57.0", + "@graphql-codegen/cli": "^5.0.2", + "@graphql-codegen/client-preset": "^4.2.5", + "@graphql-codegen/schema-ast": "^4.0.2", + "@graphql-codegen/typescript": "^4.0.6", "@graphql-typed-document-node/core": "^3.2.0", - "@iconify-json/mdi": "^1.1.64", - "@playwright/test": "^1.41.1", + "@iconify-json/mdi": "^1.1.66", + "@playwright/test": "^1.44.0", "@sveltejs/adapter-node": "^4.0.1", - "@sveltejs/kit": "^2.5.0", - "@sveltejs/vite-plugin-svelte": "^3.0.2", - "@tailwindcss/typography": "^0.5.10", + "@sveltejs/kit": "^2.5.8", + "@sveltejs/vite-plugin-svelte": "^3.1.0", + "@tailwindcss/typography": "^0.5.13", "@types/mjml": "^4.7.4", - "@types/node": "^20.11.16", + "@types/node": "^20.12.12", "@types/zxcvbn": "^4.4.4", - "@typescript-eslint/eslint-plugin": "^6.20.0", - "@typescript-eslint/parser": "^6.20.0", - "@urql/core": "^4.2.3", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", + "@urql/core": "^5.0.3", "@urql/devtools": "^2.0.3", - "@urql/exchange-graphcache": "^6.4.0", - "@urql/svelte": "^4.0.4", - "autoprefixer": "^10.4.17", - "daisyui": "^4.7.2", - "eslint": "^8.56.0", - "eslint-plugin-svelte": "^2.35.1", + "@urql/exchange-graphcache": "^6.5.1", + "@urql/svelte": "^4.2.0", + "autoprefixer": "^10.4.19", + "daisyui": "^4.11.1", + "eslint": "^8.57.0", + "eslint-plugin-svelte": "^2.39.0", "globals": "^13.24.0", "graphql": "^16.8.1", "jwt-decode": "^4.0.0", - "postcss": "^8.4.33", - "rimraf": "^5.0.5", - "svelte": "^4.2.9", - "svelte-check": "^3.6.3", + "postcss": "^8.4.38", + "rimraf": "^5.0.7", + "svelte": "^4.2.17", + "svelte-check": "^3.7.1", "svelte-eslint-parser": "^0.33.1", - "svelte-preprocess": "^5.1.3", + "svelte-preprocess": "^5.1.4", "svelte-turnstile": "^0.5.0", "sveltekit-superforms": "^1.13.4", - "tailwindcss": "^3.4.1", + "tailwindcss": "^3.4.3", "tslib": "^2.6.2", - "type-fest": "^4.10.2", + "type-fest": "^4.18.2", "typescript": "^5.3.3", - "vite": "^5.2.9", + "vite": "^5.2.11", "vite-plugin-graphql-codegen": "^3.3.6", - "vitest": "^1.2.2", - "zod": "^3.22.4", + "vitest": "^1.6.0", + "zod": "^3.23.8", "zxcvbn": "^4.4.2" }, "type": "module", "dependencies": { - "@floating-ui/dom": "^1.6.1", - "@opentelemetry/api": "^1.7.0", - "@opentelemetry/auto-instrumentations-node": "^0.41.0", - "@opentelemetry/auto-instrumentations-web": "^0.36.0", - "@opentelemetry/context-zone": "^1.21.0", - "@opentelemetry/exporter-trace-otlp-http": "^0.48.0", - "@opentelemetry/instrumentation": "^0.48.0", - "@opentelemetry/resources": "^1.21.0", - "@opentelemetry/sdk-node": "^0.48.0", - "@opentelemetry/sdk-trace-web": "^1.21.0", - "@opentelemetry/semantic-conventions": "^1.21.0", + "@floating-ui/dom": "^1.6.5", + "@opentelemetry/api": "^1.8.0", + "@opentelemetry/auto-instrumentations-node": "^0.46.1", + "@opentelemetry/auto-instrumentations-web": "^0.39.0", + "@opentelemetry/context-zone": "^1.24.1", + "@opentelemetry/exporter-trace-otlp-http": "^0.51.1", + "@opentelemetry/instrumentation": "^0.51.1", + "@opentelemetry/resources": "^1.24.1", + "@opentelemetry/sdk-node": "^0.51.1", + "@opentelemetry/sdk-trace-web": "^1.24.1", + "@opentelemetry/semantic-conventions": "^1.24.1", "@tailwindcss/container-queries": "^0.1.1", "@types/js-cookie": "^3.0.6", "@types/set-cookie-parser": "^2.4.7", "@vitejs/plugin-basic-ssl": "^1.1.0", "css-tree": "^2.3.1", "js-cookie": "^3.0.5", - "mjml": "^4.15.2", + "mjml": "^4.15.3", "set-cookie-parser": "^2.6.0", - "svelte-exmarkdown": "^3.0.3", + "svelte-exmarkdown": "^3.0.5", "svelte-intl-precompile": "^0.12.3", - "sveltekit-search-params": "^2.1.0", - "tus-js-client": "^4.0.1", + "sveltekit-search-params": "^2.1.2", + "tus-js-client": "^4.1.0", "viewer": "workspace:*" } } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 97437af44..a29263725 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -9,41 +9,41 @@ importers: .: dependencies: '@floating-ui/dom': - specifier: ^1.6.1 - version: 1.6.1 + specifier: ^1.6.5 + version: 1.6.5 '@opentelemetry/api': - specifier: ^1.7.0 - version: 1.7.0 + specifier: ^1.8.0 + version: 1.8.0 '@opentelemetry/auto-instrumentations-node': - specifier: ^0.41.0 - version: 0.41.0(@opentelemetry/api@1.7.0) + specifier: ^0.46.1 + version: 0.46.1(@opentelemetry/api@1.8.0) '@opentelemetry/auto-instrumentations-web': - specifier: ^0.36.0 - version: 0.36.0(@opentelemetry/api@1.7.0)(zone.js@0.11.4) + specifier: ^0.39.0 + version: 0.39.0(@opentelemetry/api@1.8.0)(zone.js@0.11.8) '@opentelemetry/context-zone': - specifier: ^1.21.0 - version: 1.21.0(@opentelemetry/api@1.7.0) + specifier: ^1.24.1 + version: 1.24.1(@opentelemetry/api@1.8.0) '@opentelemetry/exporter-trace-otlp-http': - specifier: ^0.48.0 - version: 0.48.0(@opentelemetry/api@1.7.0) + specifier: ^0.51.1 + version: 0.51.1(@opentelemetry/api@1.8.0) '@opentelemetry/instrumentation': - specifier: ^0.48.0 - version: 0.48.0(@opentelemetry/api@1.7.0) + specifier: ^0.51.1 + version: 0.51.1(@opentelemetry/api@1.8.0) '@opentelemetry/resources': - specifier: ^1.21.0 - version: 1.21.0(@opentelemetry/api@1.7.0) + specifier: ^1.24.1 + version: 1.24.1(@opentelemetry/api@1.8.0) '@opentelemetry/sdk-node': - specifier: ^0.48.0 - version: 0.48.0(@opentelemetry/api@1.7.0) + specifier: ^0.51.1 + version: 0.51.1(@opentelemetry/api@1.8.0) '@opentelemetry/sdk-trace-web': - specifier: ^1.21.0 - version: 1.21.0(@opentelemetry/api@1.7.0) + specifier: ^1.24.1 + version: 1.24.1(@opentelemetry/api@1.8.0) '@opentelemetry/semantic-conventions': - specifier: ^1.21.0 - version: 1.21.0 + specifier: ^1.24.1 + version: 1.24.1 '@tailwindcss/container-queries': specifier: ^0.1.1 - version: 0.1.1(tailwindcss@3.4.1) + version: 0.1.1(tailwindcss@3.4.3) '@types/js-cookie': specifier: ^3.0.6 version: 3.0.6 @@ -52,7 +52,7 @@ importers: version: 2.4.7 '@vitejs/plugin-basic-ssl': specifier: ^1.1.0 - version: 1.1.0(vite@5.2.9) + version: 1.1.0(vite@5.2.11) css-tree: specifier: ^2.3.1 version: 2.3.1 @@ -60,108 +60,108 @@ importers: specifier: ^3.0.5 version: 3.0.5 mjml: - specifier: ^4.15.2 - version: 4.15.2 + specifier: ^4.15.3 + version: 4.15.3 set-cookie-parser: specifier: ^2.6.0 version: 2.6.0 svelte-exmarkdown: - specifier: ^3.0.3 - version: 3.0.3(svelte@4.2.9) + specifier: ^3.0.5 + version: 3.0.5(svelte@4.2.17) svelte-intl-precompile: specifier: ^0.12.3 - version: 0.12.3(@babel/core@7.24.4)(svelte@4.2.9) + version: 0.12.3(@babel/core@7.24.4)(svelte@4.2.17) sveltekit-search-params: - specifier: ^2.1.0 - version: 2.1.0(@sveltejs/kit@2.5.0)(svelte@4.2.9) + specifier: ^2.1.2 + version: 2.1.2(@sveltejs/kit@2.5.8)(svelte@4.2.17)(vite@5.2.11) tus-js-client: - specifier: ^4.0.1 - version: 4.0.1 + specifier: ^4.1.0 + version: 4.1.0 viewer: specifier: workspace:* version: link:viewer devDependencies: '@dotenvx/dotenvx': - specifier: ^0.37.0 - version: 0.37.0 + specifier: ^0.37.1 + version: 0.37.1 '@egoist/tailwindcss-icons': - specifier: ^1.7.4 - version: 1.7.4(tailwindcss@3.4.1) + specifier: ^1.8.0 + version: 1.8.0(tailwindcss@3.4.3) '@eslint/js': - specifier: ^8.56.0 - version: 8.56.0 + specifier: ^8.57.0 + version: 8.57.0 '@graphql-codegen/cli': - specifier: ^5.0.0 - version: 5.0.0(@types/node@20.11.16)(graphql@16.8.1)(typescript@5.3.3) + specifier: ^5.0.2 + version: 5.0.2(@types/node@20.12.12)(graphql@16.8.1)(typescript@5.3.3) '@graphql-codegen/client-preset': - specifier: ^4.1.0 - version: 4.1.0(graphql@16.8.1) + specifier: ^4.2.5 + version: 4.2.5(graphql@16.8.1) '@graphql-codegen/schema-ast': - specifier: ^4.0.0 - version: 4.0.0(graphql@16.8.1) + specifier: ^4.0.2 + version: 4.0.2(graphql@16.8.1) '@graphql-codegen/typescript': - specifier: ^4.0.1 - version: 4.0.1(graphql@16.8.1) + specifier: ^4.0.6 + version: 4.0.6(graphql@16.8.1) '@graphql-typed-document-node/core': specifier: ^3.2.0 version: 3.2.0(graphql@16.8.1) '@iconify-json/mdi': - specifier: ^1.1.64 - version: 1.1.64 + specifier: ^1.1.66 + version: 1.1.66 '@playwright/test': - specifier: ^1.41.1 - version: 1.41.1 + specifier: ^1.44.0 + version: 1.44.0 '@sveltejs/adapter-node': specifier: ^4.0.1 - version: 4.0.1(@sveltejs/kit@2.5.0) + version: 4.0.1(@sveltejs/kit@2.5.8) '@sveltejs/kit': - specifier: ^2.5.0 - version: 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.9)(vite@5.2.9) + specifier: ^2.5.8 + version: 2.5.8(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.17)(vite@5.2.11) '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.2 - version: 3.0.2(svelte@4.2.9)(vite@5.2.9) + specifier: ^3.1.0 + version: 3.1.0(svelte@4.2.17)(vite@5.2.11) '@tailwindcss/typography': - specifier: ^0.5.10 - version: 0.5.10(tailwindcss@3.4.1) + specifier: ^0.5.13 + version: 0.5.13(tailwindcss@3.4.3) '@types/mjml': specifier: ^4.7.4 version: 4.7.4 '@types/node': - specifier: ^20.11.16 - version: 20.11.16 + specifier: ^20.12.12 + version: 20.12.12 '@types/zxcvbn': specifier: ^4.4.4 version: 4.4.4 '@typescript-eslint/eslint-plugin': - specifier: ^6.20.0 - version: 6.20.0(@typescript-eslint/parser@6.20.0)(eslint@8.56.0)(typescript@5.3.3) + specifier: ^6.21.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.3.3) '@typescript-eslint/parser': - specifier: ^6.20.0 - version: 6.20.0(eslint@8.56.0)(typescript@5.3.3) + specifier: ^6.21.0 + version: 6.21.0(eslint@8.57.0)(typescript@5.3.3) '@urql/core': - specifier: ^4.2.3 - version: 4.2.3(graphql@16.8.1) + specifier: ^5.0.3 + version: 5.0.3(graphql@16.8.1) '@urql/devtools': specifier: ^2.0.3 - version: 2.0.3(@urql/core@4.2.3)(graphql@16.8.1) + version: 2.0.3(@urql/core@5.0.3)(graphql@16.8.1) '@urql/exchange-graphcache': - specifier: ^6.4.0 - version: 6.4.0(graphql@16.8.1) + specifier: ^6.5.1 + version: 6.5.1(graphql@16.8.1) '@urql/svelte': - specifier: ^4.0.4 - version: 4.0.4(graphql@16.8.1)(svelte@4.2.9) + specifier: ^4.2.0 + version: 4.2.0(@urql/core@5.0.3)(svelte@4.2.17) autoprefixer: - specifier: ^10.4.17 - version: 10.4.17(postcss@8.4.33) + specifier: ^10.4.19 + version: 10.4.19(postcss@8.4.38) daisyui: - specifier: ^4.7.2 - version: 4.7.2(postcss@8.4.33) + specifier: ^4.11.1 + version: 4.11.1(postcss@8.4.38) eslint: - specifier: ^8.56.0 - version: 8.56.0 + specifier: ^8.57.0 + version: 8.57.0 eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.35.1(eslint@8.56.0)(svelte@4.2.9) + specifier: ^2.39.0 + version: 2.39.0(eslint@8.57.0)(svelte@4.2.17) globals: specifier: ^13.24.0 version: 13.24.0 @@ -172,53 +172,53 @@ importers: specifier: ^4.0.0 version: 4.0.0 postcss: - specifier: ^8.4.33 - version: 8.4.33 + specifier: ^8.4.38 + version: 8.4.38 rimraf: - specifier: ^5.0.5 - version: 5.0.5 + specifier: ^5.0.7 + version: 5.0.7 svelte: - specifier: ^4.2.9 - version: 4.2.9 + specifier: ^4.2.17 + version: 4.2.17 svelte-check: - specifier: ^3.6.3 - version: 3.6.3(@babel/core@7.24.4)(postcss@8.4.33)(svelte@4.2.9) + specifier: ^3.7.1 + version: 3.7.1(@babel/core@7.24.4)(postcss@8.4.38)(svelte@4.2.17) svelte-eslint-parser: specifier: ^0.33.1 - version: 0.33.1(svelte@4.2.9) + version: 0.33.1(svelte@4.2.17) svelte-preprocess: - specifier: ^5.1.3 - version: 5.1.3(@babel/core@7.24.4)(postcss@8.4.33)(svelte@4.2.9)(typescript@5.3.3) + specifier: ^5.1.4 + version: 5.1.4(@babel/core@7.24.4)(postcss@8.4.38)(svelte@4.2.17)(typescript@5.3.3) svelte-turnstile: specifier: ^0.5.0 - version: 0.5.0(svelte@4.2.9) + version: 0.5.0(svelte@4.2.17) sveltekit-superforms: specifier: ^1.13.4 - version: 1.13.4(@sveltejs/kit@2.5.0)(svelte@4.2.9)(zod@3.22.4) + version: 1.13.4(@sveltejs/kit@2.5.8)(svelte@4.2.17)(zod@3.23.8) tailwindcss: - specifier: ^3.4.1 - version: 3.4.1 + specifier: ^3.4.3 + version: 3.4.3 tslib: specifier: ^2.6.2 version: 2.6.2 type-fest: - specifier: ^4.10.2 - version: 4.10.2 + specifier: ^4.18.2 + version: 4.18.2 typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.2.9 - version: 5.2.9(@types/node@20.11.16) + specifier: ^5.2.11 + version: 5.2.11(@types/node@20.12.12) vite-plugin-graphql-codegen: specifier: ^3.3.6 - version: 3.3.6(@graphql-codegen/cli@5.0.0)(graphql@16.8.1)(vite@5.2.9) + version: 3.3.6(@graphql-codegen/cli@5.0.2)(graphql@16.8.1)(vite@5.2.11) vitest: - specifier: ^1.2.2 - version: 1.2.2(@types/node@20.11.16) + specifier: ^1.6.0 + version: 1.6.0(@types/node@20.12.12) zod: - specifier: ^3.22.4 - version: 3.22.4 + specifier: ^3.23.8 + version: 3.23.8 zxcvbn: specifier: ^4.4.2 version: 4.4.2 @@ -232,60 +232,60 @@ importers: specifier: ^8.0.0 version: 8.0.0 autoprefixer: - specifier: ^10.4.17 - version: 10.4.17(postcss@8.4.38) + specifier: ^10.4.19 + version: 10.4.19(postcss@8.4.38) fast-json-patch: specifier: ^3.1.1 version: 3.1.1 postcss: - specifier: ^8.4.35 + specifier: ^8.4.38 version: 8.4.38 svelte-preprocess: - specifier: ^5.1.3 - version: 5.1.3(@babel/core@7.24.4)(postcss@8.4.38)(svelte@4.2.12)(typescript@5.3.3) + specifier: ^5.1.4 + version: 5.1.4(@babel/core@7.24.4)(postcss@8.4.38)(svelte@4.2.17)(typescript@5.3.3) svelte-ux: specifier: latest - version: 0.61.10(@babel/core@7.24.4)(postcss@8.4.38)(svelte@4.2.12) + version: 0.61.10(@babel/core@7.24.4)(postcss@8.4.38)(svelte@4.2.17) type-fest: - specifier: ^4.10.2 - version: 4.10.2 + specifier: ^4.18.2 + version: 4.18.2 devDependencies: '@egoist/tailwindcss-icons': - specifier: ^1.7.4 - version: 1.7.4(tailwindcss@3.4.1) + specifier: ^1.8.0 + version: 1.8.0(tailwindcss@3.4.3) '@iconify-json/mdi': - specifier: ^1.1.64 - version: 1.1.64 + specifier: ^1.1.66 + version: 1.1.66 '@mdi/js': specifier: ^7.4.47 version: 7.4.47 '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.2 - version: 3.0.2(svelte@4.2.12)(vite@5.2.9) + specifier: ^3.1.0 + version: 3.1.0(svelte@4.2.17)(vite@5.2.11) '@tsconfig/svelte': - specifier: ^5.0.2 - version: 5.0.2 + specifier: ^5.0.4 + version: 5.0.4 svelte: - specifier: ^4.2.10 - version: 4.2.12 + specifier: ^4.2.17 + version: 4.2.17 svelte-check: - specifier: ^3.6.4 - version: 3.6.8(@babel/core@7.24.4)(postcss@8.4.38)(svelte@4.2.12) + specifier: ^3.7.1 + version: 3.7.1(@babel/core@7.24.4)(postcss@8.4.38)(svelte@4.2.17) tailwindcss: - specifier: ^3.4.1 - version: 3.4.1 + specifier: ^3.4.3 + version: 3.4.3 tslib: specifier: ^2.6.2 version: 2.6.2 tw-colors: specifier: ^3.3.1 - version: 3.3.1(tailwindcss@3.4.1) + version: 3.3.1(tailwindcss@3.4.3) typescript: specifier: ^5.3.3 version: 5.3.3 vite: - specifier: ^5.2.9 - version: 5.2.9(@types/node@20.11.16) + specifier: ^5.2.11 + version: 5.2.11(@types/node@20.12.12) packages: @@ -300,6 +300,17 @@ packages: graphql: 16.8.1 dev: true + /@0no-co/graphql.web@1.0.7(graphql@16.8.1): + resolution: {integrity: sha512-E3Qku4mTzdrlwVWGPxklDnME5ANrEGetvYw4i2GCRlppWXXE4QD66j7pwb8HelZwS6LnqEChhrSOGCXpbiu6MQ==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + graphql: + optional: true + dependencies: + graphql: 16.8.1 + dev: true + /@aashutoshrathi/word-wrap@1.2.6: resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} @@ -309,13 +320,6 @@ packages: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - /@ampproject/remapping@2.2.1: - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 - /@ampproject/remapping@2.3.0: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -340,13 +344,13 @@ packages: peerDependencies: graphql: '*' dependencies: - '@babel/core': 7.23.9 - '@babel/generator': 7.23.6 - '@babel/parser': 7.23.9 - '@babel/runtime': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 - babel-preset-fbjs: 3.4.0(@babel/core@7.23.9) + '@babel/core': 7.24.4 + '@babel/generator': 7.24.4 + '@babel/parser': 7.24.4 + '@babel/runtime': 7.24.1 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 + babel-preset-fbjs: 3.4.0(@babel/core@7.24.4) chalk: 4.1.2 fb-watchman: 2.0.2 fbjs: 3.0.5 @@ -372,13 +376,6 @@ packages: - encoding dev: true - /@babel/code-frame@7.23.5: - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 - /@babel/code-frame@7.24.2: resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} @@ -390,29 +387,6 @@ packages: resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} - /@babel/core@7.23.9: - resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helpers': 7.23.9 - '@babel/parser': 7.23.9 - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/core@7.24.4: resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==} engines: {node: '>=6.9.0'} @@ -435,16 +409,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator@7.23.6: - resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.9 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 - jsesc: 2.5.2 - dev: true - /@babel/generator@7.24.4: resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} engines: {node: '>=6.9.0'} @@ -458,7 +422,7 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 dev: true /@babel/helper-compilation-targets@7.23.6: @@ -471,19 +435,19 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.23.10(@babel/core@7.23.9): + /@babel/helper-create-class-features-plugin@7.23.10(@babel/core@7.24.4): resolution: {integrity: sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.4) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 @@ -497,41 +461,27 @@ packages: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 /@babel/helper-member-expression-to-functions@7.23.0: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 dev: true /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 - - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: true + '@babel/types': 7.24.0 /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} @@ -550,20 +500,20 @@ packages: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 dev: true /@babel/helper-plugin-utils@7.22.5: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.9): + /@babel/helper-replace-supers@7.22.20(@babel/core@7.24.4): resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 @@ -573,24 +523,20 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 dev: true /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 - - /@babel/helper-string-parser@7.23.4: - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} - engines: {node: '>=6.9.0'} + '@babel/types': 7.24.0 /@babel/helper-string-parser@7.24.1: resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} @@ -604,17 +550,6 @@ packages: resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} - /@babel/helpers@7.23.9: - resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helpers@7.24.4: resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} engines: {node: '>=6.9.0'} @@ -625,14 +560,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/highlight@7.23.4: - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - /@babel/highlight@7.24.2: resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} engines: {node: '>=6.9.0'} @@ -642,13 +569,6 @@ packages: js-tokens: 4.0.0 picocolors: 1.0.0 - /@babel/parser@7.23.9: - resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.23.9 - /@babel/parser@7.24.4: resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} engines: {node: '>=6.0.0'} @@ -656,19 +576,19 @@ packages: dependencies: '@babel/types': 7.24.0 - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.9): + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.4): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) + '@babel/core': 7.24.4 + '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.9): + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.4): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. @@ -676,301 +596,286 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.24.4) dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.9): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.4): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-flow@7.23.3(@babel/core@7.23.9): + /@babel/plugin-syntax-flow@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.9): + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9): + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.9): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.4): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.9): + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.9): + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.9): + /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.24.4): resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.9): + /@babel/plugin-transform-classes@7.23.8(@babel/core@7.24.4): resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.4) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 dev: true - /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.9): + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.23.9 + '@babel/template': 7.24.0 dev: true - /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.9): + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.23.9): + /@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.24.4) dev: true - /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.9): + /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.24.4): resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true - /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.9): + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.9): + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.9): + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.9): + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/core': 7.24.4 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: true - /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.9): + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.4) dev: true - /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.9): + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.9): + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.9): + /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.9): + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.4): resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) - '@babel/types': 7.23.9 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.4) + '@babel/types': 7.24.0 dev: true - /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.9): + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.9): + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true - /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.9): + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/runtime@7.23.9: - resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - /@babel/runtime@7.24.1: resolution: {integrity: sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 - dev: false - - /@babel/template@7.23.9: - resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 /@babel/template@7.24.0: resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} @@ -980,24 +885,6 @@ packages: '@babel/parser': 7.24.4 '@babel/types': 7.24.0 - /@babel/traverse@7.23.9: - resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/traverse@7.24.1: resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} engines: {node: '>=6.9.0'} @@ -1015,14 +902,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/types@7.23.9: - resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - /@babel/types@7.24.0: resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} engines: {node: '>=6.9.0'} @@ -1044,8 +923,8 @@ packages: kuler: 2.0.0 dev: true - /@dotenvx/dotenvx@0.37.0: - resolution: {integrity: sha512-oDQS5Ks7vnmZ/Enr5jJXeo3HqJzSYNR71lpnJfedemgFK5K/27hdTUaLr9EjuJ5ODnWXxDrnOIrgCvdqS+WfGg==} + /@dotenvx/dotenvx@0.37.1: + resolution: {integrity: sha512-CN8A4cxuIQ5eRIaWK6qeRAYXPtt5Mo5XHw6o9kP+VWYlTg8UY3k426tCxcgrMRTI/GKMyu8wryHng+thUFCNYg==} hasBin: true dependencies: '@inquirer/confirm': 2.0.17 @@ -1070,13 +949,13 @@ packages: xxhashjs: 0.2.2 dev: true - /@egoist/tailwindcss-icons@1.7.4(tailwindcss@3.4.1): - resolution: {integrity: sha512-883qx0sqeNb8km7os0w8K6UYue88dbgTWwyEUwW74Bgz0H7t+m7PMIIEvSQ4JqHwA823Qd5ciz+NoTBWKaMYfg==} + /@egoist/tailwindcss-icons@1.8.0(tailwindcss@3.4.3): + resolution: {integrity: sha512-75LfllKL2lq0sGH+wcpsn/sLtJ0kMkDWmcZTLAB76QLDTmfsFu4QHwZVbtCD2woGyKl9c8KvtOUW9JSjRqOVtA==} peerDependencies: tailwindcss: '*' dependencies: - '@iconify/utils': 2.1.20 - tailwindcss: 3.4.1 + '@iconify/utils': 2.1.23 + tailwindcss: 3.4.3 transitivePeerDependencies: - supports-color dev: true @@ -1265,13 +1144,13 @@ packages: requiresBuild: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.56.0 + eslint: 8.57.0 eslint-visitor-keys: 3.4.3 dev: true @@ -1297,8 +1176,8 @@ packages: - supports-color dev: true - /@eslint/js@8.56.0: - resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -1313,15 +1192,8 @@ packages: '@floating-ui/utils': 0.2.1 dev: false - /@floating-ui/dom@1.6.1: - resolution: {integrity: sha512-iA8qE43/H5iGozC3W0YSnVSW42Vh522yyM1gj+BqRwVsTNOyr231PsXDaV04yT39PsO0QL2QpbI/M0ZaLUQgRQ==} - dependencies: - '@floating-ui/core': 1.6.0 - '@floating-ui/utils': 0.2.1 - dev: false - - /@floating-ui/dom@1.6.3: - resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} + /@floating-ui/dom@1.6.5: + resolution: {integrity: sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==} dependencies: '@floating-ui/core': 1.6.0 '@floating-ui/utils': 0.2.1 @@ -1365,18 +1237,18 @@ packages: requiresBuild: true dev: false - /@graphql-codegen/add@5.0.0(graphql@16.8.1): - resolution: {integrity: sha512-ynWDOsK2yxtFHwcJTB9shoSkUd7YXd6ZE57f0nk7W5cu/nAgxZZpEsnTPEpZB/Mjf14YRGe2uJHQ7AfElHjqUQ==} + /@graphql-codegen/add@5.0.2(graphql@16.8.1): + resolution: {integrity: sha512-ouBkSvMFUhda5VoKumo/ZvsZM9P5ZTyDsI8LW18VxSNWOjrTeLXBWHG8Gfaai0HwhflPtCYVABbriEcOmrRShQ==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) graphql: 16.8.1 - tslib: 2.5.3 + tslib: 2.6.2 dev: true - /@graphql-codegen/cli@5.0.0(@types/node@20.11.16)(graphql@16.8.1)(typescript@5.3.3): - resolution: {integrity: sha512-A7J7+be/a6e+/ul2KI5sfJlpoqeqwX8EzktaKCeduyVKgOLA6W5t+NUGf6QumBDXU8PEOqXk3o3F+RAwCWOiqA==} + /@graphql-codegen/cli@5.0.2(@types/node@20.12.12)(graphql@16.8.1)(typescript@5.3.3): + resolution: {integrity: sha512-MBIaFqDiLKuO4ojN6xxG9/xL9wmfD3ZjZ7RsPjwQnSHBCUXnEkdKvX+JVpx87Pq29Ycn8wTJUguXnTZ7Di0Mlw==} hasBin: true peerDependencies: '@parcel/watcher': ^2.1.0 @@ -1385,20 +1257,21 @@ packages: '@parcel/watcher': optional: true dependencies: - '@babel/generator': 7.23.6 - '@babel/template': 7.23.9 - '@babel/types': 7.23.9 - '@graphql-codegen/core': 4.0.0(graphql@16.8.1) - '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + '@babel/generator': 7.24.4 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 + '@graphql-codegen/client-preset': 4.2.5(graphql@16.8.1) + '@graphql-codegen/core': 4.0.2(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) '@graphql-tools/apollo-engine-loader': 8.0.0(graphql@16.8.1) '@graphql-tools/code-file-loader': 8.1.0(graphql@16.8.1) '@graphql-tools/git-loader': 8.0.4(graphql@16.8.1) - '@graphql-tools/github-loader': 8.0.0(@types/node@20.11.16)(graphql@16.8.1) + '@graphql-tools/github-loader': 8.0.0(@types/node@20.12.12)(graphql@16.8.1) '@graphql-tools/graphql-file-loader': 8.0.0(graphql@16.8.1) '@graphql-tools/json-file-loader': 8.0.0(graphql@16.8.1) '@graphql-tools/load': 8.0.1(graphql@16.8.1) - '@graphql-tools/prisma-loader': 8.0.2(@types/node@20.11.16)(graphql@16.8.1) - '@graphql-tools/url-loader': 8.0.1(@types/node@20.11.16)(graphql@16.8.1) + '@graphql-tools/prisma-loader': 8.0.2(@types/node@20.12.12)(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.1(@types/node@20.12.12)(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) '@whatwg-node/fetch': 0.8.8 chalk: 4.1.2 @@ -1406,7 +1279,7 @@ packages: debounce: 1.2.1 detect-indent: 6.1.0 graphql: 16.8.1 - graphql-config: 5.0.3(@types/node@20.11.16)(graphql@16.8.1)(typescript@5.3.3) + graphql-config: 5.0.3(@types/node@20.12.12)(graphql@16.8.1)(typescript@5.3.3) inquirer: 8.2.6 is-glob: 4.0.3 jiti: 1.21.0 @@ -1431,53 +1304,53 @@ packages: - utf-8-validate dev: true - /@graphql-codegen/client-preset@4.1.0(graphql@16.8.1): - resolution: {integrity: sha512-/3Ymb/fjxIF1+HGmaI1YwSZbWsrZAWMSQjh3dU425eBjctjsVQ6gzGRr+l/gE5F1mtmCf+vlbTAT03heAc/QIw==} + /@graphql-codegen/client-preset@4.2.5(graphql@16.8.1): + resolution: {integrity: sha512-hAdB6HN8EDmkoBtr0bPUN/7NH6svzqbcTDMWBCRXPESXkl7y80po+IXrXUjsSrvhKG8xkNXgJNz/2mjwHzywcA==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.23.9 - '@graphql-codegen/add': 5.0.0(graphql@16.8.1) - '@graphql-codegen/gql-tag-operations': 4.0.1(graphql@16.8.1) - '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) - '@graphql-codegen/typed-document-node': 5.0.1(graphql@16.8.1) - '@graphql-codegen/typescript': 4.0.1(graphql@16.8.1) - '@graphql-codegen/typescript-operations': 4.0.1(graphql@16.8.1) - '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.8.1) + '@babel/template': 7.24.0 + '@graphql-codegen/add': 5.0.2(graphql@16.8.1) + '@graphql-codegen/gql-tag-operations': 4.0.6(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) + '@graphql-codegen/typed-document-node': 5.0.6(graphql@16.8.1) + '@graphql-codegen/typescript': 4.0.6(graphql@16.8.1) + '@graphql-codegen/typescript-operations': 4.2.0(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 5.1.0(graphql@16.8.1) '@graphql-tools/documents': 1.0.0(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) graphql: 16.8.1 - tslib: 2.5.3 + tslib: 2.6.2 transitivePeerDependencies: - encoding - supports-color dev: true - /@graphql-codegen/core@4.0.0(graphql@16.8.1): - resolution: {integrity: sha512-JAGRn49lEtSsZVxeIlFVIRxts2lWObR+OQo7V2LHDJ7ohYYw3ilv7nJ8pf8P4GTg/w6ptcYdSdVVdkI8kUHB/Q==} + /@graphql-codegen/core@4.0.2(graphql@16.8.1): + resolution: {integrity: sha512-IZbpkhwVqgizcjNiaVzNAzm/xbWT6YnGgeOLwVjm4KbJn3V2jchVtuzHH09G5/WkkLSk2wgbXNdwjM41JxO6Eg==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) '@graphql-tools/schema': 10.0.2(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 - tslib: 2.5.3 + tslib: 2.6.2 dev: true - /@graphql-codegen/gql-tag-operations@4.0.1(graphql@16.8.1): - resolution: {integrity: sha512-qF6wIbBzW8BNT+wiVsBxrYOs2oYcsxQ7mRvCpfEI3HnNZMAST/uX76W8MqFEJvj4mw7NIDv7xYJAcAZIWM5LWw==} + /@graphql-codegen/gql-tag-operations@4.0.6(graphql@16.8.1): + resolution: {integrity: sha512-y6iXEDpDNjwNxJw3WZqX1/Znj0QHW7+y8O+t2V8qvbTT+3kb2lr9ntc8By7vCr6ctw9tXI4XKaJgpTstJDOwFA==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) - '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 5.1.0(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) auto-bind: 4.0.0 graphql: 16.8.1 - tslib: 2.5.3 + tslib: 2.6.2 transitivePeerDependencies: - encoding - supports-color @@ -1497,71 +1370,85 @@ packages: tslib: 2.5.3 dev: true - /@graphql-codegen/schema-ast@4.0.0(graphql@16.8.1): - resolution: {integrity: sha512-WIzkJFa9Gz28FITAPILbt+7A8+yzOyd1NxgwFh7ie+EmO9a5zQK6UQ3U/BviirguXCYnn+AR4dXsoDrSrtRA1g==} + /@graphql-codegen/plugin-helpers@5.0.3(graphql@16.8.1): + resolution: {integrity: sha512-yZ1rpULIWKBZqCDlvGIJRSyj1B2utkEdGmXZTBT/GVayP4hyRYlkd36AJV/LfEsVD8dnsKL5rLz2VTYmRNlJ5Q==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) + change-case-all: 1.0.15 + common-tags: 1.8.2 graphql: 16.8.1 - tslib: 2.5.3 + import-from: 4.0.0 + lodash: 4.17.21 + tslib: 2.6.2 dev: true - /@graphql-codegen/typed-document-node@5.0.1(graphql@16.8.1): - resolution: {integrity: sha512-VFkhCuJnkgtbbgzoCAwTdJe2G1H6sd3LfCrDqWUrQe53y2ukfSb5Ov1PhAIkCBStKCMQBUY9YgGz9GKR40qQ8g==} + /@graphql-codegen/schema-ast@4.0.2(graphql@16.8.1): + resolution: {integrity: sha512-5mVAOQQK3Oz7EtMl/l3vOQdc2aYClUzVDHHkMvZlunc+KlGgl81j8TLa+X7ANIllqU4fUEsQU3lJmk4hXP6K7Q==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) - '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.6.2 + dev: true + + /@graphql-codegen/typed-document-node@5.0.6(graphql@16.8.1): + resolution: {integrity: sha512-US0J95hOE2/W/h42w4oiY+DFKG7IetEN1mQMgXXeat1w6FAR5PlIz4JrRrEkiVfVetZ1g7K78SOwBD8/IJnDiA==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 5.1.0(graphql@16.8.1) auto-bind: 4.0.0 change-case-all: 1.0.15 graphql: 16.8.1 - tslib: 2.5.3 + tslib: 2.6.2 transitivePeerDependencies: - encoding - supports-color dev: true - /@graphql-codegen/typescript-operations@4.0.1(graphql@16.8.1): - resolution: {integrity: sha512-GpUWWdBVUec/Zqo23aFLBMrXYxN2irypHqDcKjN78JclDPdreasAEPcIpMfqf4MClvpmvDLy4ql+djVAwmkjbw==} + /@graphql-codegen/typescript-operations@4.2.0(graphql@16.8.1): + resolution: {integrity: sha512-lmuwYb03XC7LNRS8oo9M4/vlOrq/wOKmTLBHlltK2YJ1BO/4K/Q9Jdv/jDmJpNydHVR1fmeF4wAfsIp1f9JibA==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) - '@graphql-codegen/typescript': 4.0.1(graphql@16.8.1) - '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) + '@graphql-codegen/typescript': 4.0.6(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 5.1.0(graphql@16.8.1) auto-bind: 4.0.0 graphql: 16.8.1 - tslib: 2.5.3 + tslib: 2.6.2 transitivePeerDependencies: - encoding - supports-color dev: true - /@graphql-codegen/typescript@4.0.1(graphql@16.8.1): - resolution: {integrity: sha512-3YziQ21dCVdnHb+Us1uDb3pA6eG5Chjv0uTK+bt9dXeMlwYBU8MbtzvQTo4qvzWVC1AxSOKj0rgfNu1xCXqJyA==} + /@graphql-codegen/typescript@4.0.6(graphql@16.8.1): + resolution: {integrity: sha512-IBG4N+Blv7KAL27bseruIoLTjORFCT3r+QYyMC3g11uY3/9TPpaUyjSdF70yBe5GIQ6dAgDU+ENUC1v7EPi0rw==} peerDependencies: graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) - '@graphql-codegen/schema-ast': 4.0.0(graphql@16.8.1) - '@graphql-codegen/visitor-plugin-common': 4.0.1(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) + '@graphql-codegen/schema-ast': 4.0.2(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 5.1.0(graphql@16.8.1) auto-bind: 4.0.0 graphql: 16.8.1 - tslib: 2.5.3 + tslib: 2.6.2 transitivePeerDependencies: - encoding - supports-color dev: true - /@graphql-codegen/visitor-plugin-common@4.0.1(graphql@16.8.1): - resolution: {integrity: sha512-Bi/1z0nHg4QMsAqAJhds+ForyLtk7A3HQOlkrZNm3xEkY7lcBzPtiOTLBtvziwopBsXUxqeSwVjOOFPLS5Yw1Q==} + /@graphql-codegen/visitor-plugin-common@5.1.0(graphql@16.8.1): + resolution: {integrity: sha512-eamQxtA9bjJqI2lU5eYoA1GbdMIRT2X8m8vhWYsVQVWD3qM7sx/IqJU0kx0J3Vd4/CSd36BzL6RKwksibytDIg==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) '@graphql-tools/optimize': 2.0.0(graphql@16.8.1) '@graphql-tools/relay-operation-optimizer': 7.0.0(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) @@ -1571,7 +1458,7 @@ packages: graphql: 16.8.1 graphql-tag: 2.12.6(graphql@16.8.1) parse-filepath: 1.0.2 - tslib: 2.5.3 + tslib: 2.6.2 transitivePeerDependencies: - encoding - supports-color @@ -1665,7 +1552,7 @@ packages: - utf-8-validate dev: true - /@graphql-tools/executor-http@1.0.7(@types/node@20.11.16)(graphql@16.8.1): + /@graphql-tools/executor-http@1.0.7(@types/node@20.12.12)(graphql@16.8.1): resolution: {integrity: sha512-/MoRYzQS50Tz5mxRfq3ZmeZ2SOins9wGZAGetsJ55F3PxL0PmHdSGlCq12KzffZDbwHV5YMlwigBsSGWq4y9Iw==} engines: {node: '>=16.0.0'} peerDependencies: @@ -1676,7 +1563,7 @@ packages: '@whatwg-node/fetch': 0.9.16 extract-files: 11.0.0 graphql: 16.8.1 - meros: 1.3.0(@types/node@20.11.16) + meros: 1.3.0(@types/node@20.12.12) tslib: 2.6.2 value-or-promise: 1.0.12 transitivePeerDependencies: @@ -1731,14 +1618,14 @@ packages: - supports-color dev: true - /@graphql-tools/github-loader@8.0.0(@types/node@20.11.16)(graphql@16.8.1): + /@graphql-tools/github-loader@8.0.0(@types/node@20.12.12)(graphql@16.8.1): resolution: {integrity: sha512-VuroArWKcG4yaOWzV0r19ElVIV6iH6UKDQn1MXemND0xu5TzrFme0kf3U9o0YwNo0kUYEk9CyFM0BYg4he17FA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@ardatan/sync-fetch': 0.0.1 - '@graphql-tools/executor-http': 1.0.7(@types/node@20.11.16)(graphql@16.8.1) + '@graphql-tools/executor-http': 1.0.7(@types/node@20.12.12)(graphql@16.8.1) '@graphql-tools/graphql-tag-pluck': 8.2.0(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) '@whatwg-node/fetch': 0.9.16 @@ -1771,11 +1658,11 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/parser': 7.23.9 - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.9) - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@babel/core': 7.24.4 + '@babel/parser': 7.24.4 + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.24.4) + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 tslib: 2.6.2 @@ -1842,20 +1729,20 @@ packages: tslib: 2.6.2 dev: true - /@graphql-tools/prisma-loader@8.0.2(@types/node@20.11.16)(graphql@16.8.1): + /@graphql-tools/prisma-loader@8.0.2(@types/node@20.12.12)(graphql@16.8.1): resolution: {integrity: sha512-8d28bIB0bZ9Bj0UOz9sHagVPW+6AHeqvGljjERtwCnWl8OCQw2c2pNboYXISLYUG5ub76r4lDciLLTU+Ks7Q0w==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/url-loader': 8.0.1(@types/node@20.11.16)(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.1(@types/node@20.12.12)(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) '@types/js-yaml': 4.0.9 '@types/json-stable-stringify': 1.0.36 '@whatwg-node/fetch': 0.9.16 chalk: 4.1.2 debug: 4.3.4 - dotenv: 16.4.1 + dotenv: 16.4.5 graphql: 16.8.1 graphql-request: 6.1.0(graphql@16.8.1) http-proxy-agent: 7.0.0 @@ -1903,7 +1790,7 @@ packages: value-or-promise: 1.0.12 dev: true - /@graphql-tools/url-loader@8.0.1(@types/node@20.11.16)(graphql@16.8.1): + /@graphql-tools/url-loader@8.0.1(@types/node@20.12.12)(graphql@16.8.1): resolution: {integrity: sha512-B2k8KQEkEQmfV1zhurT5GLoXo8jbXP+YQHUayhCSxKYlRV7j/1Fhp1b21PDM8LXIDGlDRXaZ0FbWKOs7eYXDuQ==} engines: {node: '>=16.0.0'} peerDependencies: @@ -1912,7 +1799,7 @@ packages: '@ardatan/sync-fetch': 0.0.1 '@graphql-tools/delegate': 10.0.3(graphql@16.8.1) '@graphql-tools/executor-graphql-ws': 1.1.0(graphql@16.8.1) - '@graphql-tools/executor-http': 1.0.7(@types/node@20.11.16)(graphql@16.8.1) + '@graphql-tools/executor-http': 1.0.7(@types/node@20.12.12)(graphql@16.8.1) '@graphql-tools/executor-legacy-ws': 1.0.5(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) '@graphql-tools/wrap': 10.0.1(graphql@16.8.1) @@ -1970,7 +1857,7 @@ packages: engines: {node: ^8.13.0 || >=10.10.0} dependencies: '@grpc/proto-loader': 0.7.10 - '@types/node': 20.11.16 + '@types/node': 20.12.12 dev: false /@grpc/proto-loader@0.7.10: @@ -1984,69 +1871,6 @@ packages: yargs: 17.7.2 dev: false - /@hapi/b64@5.0.0: - resolution: {integrity: sha512-ngu0tSEmrezoiIaNGG6rRvKOUkUuDdf4XTPnONHGYfSGRmDqPZX5oJL6HAdKTo1UQHECbdB4OzhWrfgVppjHUw==} - dependencies: - '@hapi/hoek': 9.3.0 - dev: false - - /@hapi/boom@9.1.4: - resolution: {integrity: sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==} - dependencies: - '@hapi/hoek': 9.3.0 - dev: false - - /@hapi/bourne@2.1.0: - resolution: {integrity: sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==} - dev: false - - /@hapi/cryptiles@5.1.0: - resolution: {integrity: sha512-fo9+d1Ba5/FIoMySfMqPBR/7Pa29J2RsiPrl7bkwo5W5o+AN1dAYQRi4SPrPwwVxVGKjgLOEWrsvt1BonJSfLA==} - engines: {node: '>=12.0.0'} - dependencies: - '@hapi/boom': 9.1.4 - dev: false - - /@hapi/hoek@9.3.0: - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - dev: false - - /@hapi/iron@6.0.0: - resolution: {integrity: sha512-zvGvWDufiTGpTJPG1Y/McN8UqWBu0k/xs/7l++HVU535NLHXsHhy54cfEMdW7EjwKfbBfM9Xy25FmTiobb7Hvw==} - dependencies: - '@hapi/b64': 5.0.0 - '@hapi/boom': 9.1.4 - '@hapi/bourne': 2.1.0 - '@hapi/cryptiles': 5.1.0 - '@hapi/hoek': 9.3.0 - dev: false - - /@hapi/podium@4.1.3: - resolution: {integrity: sha512-ljsKGQzLkFqnQxE7qeanvgGj4dejnciErYd30dbrYzUOF/FyS/DOF97qcrT3bhoVwCYmxa6PEMhxfCPlnUcD2g==} - dependencies: - '@hapi/hoek': 9.3.0 - '@hapi/teamwork': 5.1.1 - '@hapi/validate': 1.1.3 - dev: false - - /@hapi/teamwork@5.1.1: - resolution: {integrity: sha512-1oPx9AE5TIv+V6Ih54RP9lTZBso3rP8j4Xhb6iSVwPXtAM+sDopl5TFMv5Paw73UnpZJ9gjcrTE1BXrWt9eQrg==} - engines: {node: '>=12.0.0'} - dev: false - - /@hapi/topo@5.1.0: - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - dependencies: - '@hapi/hoek': 9.3.0 - dev: false - - /@hapi/validate@1.1.3: - resolution: {integrity: sha512-/XMR0N0wjw0Twzq2pQOzPBZlDzkekGcoCtzO314BpIEsbXdYGthQUbxgkGDf4nhk1+IPDAsXqWjMohRQYO06UA==} - dependencies: - '@hapi/hoek': 9.3.0 - '@hapi/topo': 5.1.0 - dev: false - /@humanwhocodes/config-array@0.11.14: resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} @@ -2067,8 +1891,8 @@ packages: resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} dev: true - /@iconify-json/mdi@1.1.64: - resolution: {integrity: sha512-zGeo5TjhNFAY6FmSDBLAzDO811t77r6v/mDi7CAL9w5eXqKez6bIjk8R9AL/RHIeq44ALP4Ozr4lMqFTkHr7ug==} + /@iconify-json/mdi@1.1.66: + resolution: {integrity: sha512-7KPF2RVUUWav/hXCM8Ti/smqu3cmgePJpiX9CSkldiL+80+eBRBeKlc4vPOc9jhAItlqIU1vKsbKoPP0JIfgbg==} dependencies: '@iconify/types': 2.0.0 dev: true @@ -2077,8 +1901,8 @@ packages: resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} dev: true - /@iconify/utils@2.1.20: - resolution: {integrity: sha512-t8TeKlYK/5i9yTY9VAGAE4P0qQHd/0vH+VSRO+bdpxlt8wqB6f2I0/IrciRsdeFZPMoL8IICgP7lgl2ZtbG8Tw==} + /@iconify/utils@2.1.23: + resolution: {integrity: sha512-YGNbHKM5tyDvdWZ92y2mIkrfvm5Fvhe6WJSkWu7vvOFhMtYDP0casZpoRz0XEHZCrYsR4stdGT3cZ52yp5qZdQ==} dependencies: '@antfu/install-pkg': 0.1.1 '@antfu/utils': 0.7.7 @@ -2086,6 +1910,7 @@ packages: debug: 4.3.4 kolorist: 1.8.0 local-pkg: 0.5.0 + mlly: 1.7.0 transitivePeerDependencies: - supports-color dev: true @@ -2105,7 +1930,7 @@ packages: dependencies: '@inquirer/type': 1.3.1 '@types/mute-stream': 0.0.4 - '@types/node': 20.11.16 + '@types/node': 20.12.12 '@types/wrap-ansi': 3.0.0 ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -2142,14 +1967,6 @@ packages: '@sinclair/typebox': 0.27.8 dev: true - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.22 - /@jridgewell/gen-mapping@0.3.5: resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -2158,18 +1975,10 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} - /@jridgewell/resolve-uri@3.1.2: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - /@jridgewell/set-array@1.2.1: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} @@ -2177,12 +1986,6 @@ packages: /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.22: - resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - /@jridgewell/trace-mapping@0.3.25: resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: @@ -2236,770 +2039,794 @@ packages: resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} dev: false - /@opentelemetry/api-logs@0.48.0: - resolution: {integrity: sha512-1/aMiU4Eqo3Zzpfwu51uXssp5pzvHFObk8S9pKAiXb1ne8pvg1qxBQitYL1XUiAMEXFzgjaidYG2V6624DRhhw==} + /@opentelemetry/api-logs@0.51.1: + resolution: {integrity: sha512-E3skn949Pk1z2XtXu/lxf6QAZpawuTM/IUEXcAzpiUkTd73Hmvw26FiN3cJuTmkpM5hZzHwkomVdtrh/n/zzwA==} engines: {node: '>=14'} dependencies: - '@opentelemetry/api': 1.7.0 + '@opentelemetry/api': 1.8.0 dev: false - /@opentelemetry/api@1.7.0: - resolution: {integrity: sha512-AdY5wvN0P2vXBi3b29hxZgSFvdhdxPB9+f0B6s//P9Q8nibRWeA3cHm8UmLpio9ABigkVHJ5NMPk+Mz8VCCyrw==} + /@opentelemetry/api@1.8.0: + resolution: {integrity: sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==} engines: {node: '>=8.0.0'} dev: false - /@opentelemetry/auto-instrumentations-node@0.41.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-CmVVzphp1eb6Aenrr4B6TDsCNuDvut8NQbosTSdJFfnEX4+3szVQuaJquaicGI5tLvVxrgVbZAv52C7bJgMHkg==} + /@opentelemetry/auto-instrumentations-node@0.46.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-s0CwmY9KYtPawOhV5YO2Gf62uVOQRNvT6Or8IZ0S4gr/kPVNhoMehTsQvqBwSWQfoFrkmW3KKOHiKJEp4dVGXg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.4.1 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-amqplib': 0.34.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-aws-lambda': 0.38.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-aws-sdk': 0.38.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-bunyan': 0.35.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-cassandra-driver': 0.35.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-connect': 0.33.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-cucumber': 0.3.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-dataloader': 0.6.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-dns': 0.33.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-express': 0.35.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-fastify': 0.33.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-fs': 0.9.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-generic-pool': 0.33.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-graphql': 0.37.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-grpc': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-hapi': 0.34.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-http': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-ioredis': 0.37.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-knex': 0.33.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-koa': 0.37.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-lru-memoizer': 0.34.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-memcached': 0.33.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-mongodb': 0.39.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-mongoose': 0.35.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-mysql': 0.35.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-mysql2': 0.35.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-nestjs-core': 0.34.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-net': 0.33.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-pg': 0.38.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-pino': 0.35.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-redis': 0.36.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-redis-4': 0.36.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-restify': 0.35.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-router': 0.34.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-socket.io': 0.36.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-tedious': 0.7.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-winston': 0.34.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resource-detector-alibaba-cloud': 0.28.6(@opentelemetry/api@1.7.0) - '@opentelemetry/resource-detector-aws': 1.3.6(@opentelemetry/api@1.7.0) - '@opentelemetry/resource-detector-container': 0.3.6(@opentelemetry/api@1.7.0) - '@opentelemetry/resource-detector-gcp': 0.29.6(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-node': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-amqplib': 0.37.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-aws-lambda': 0.41.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-aws-sdk': 0.41.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-bunyan': 0.38.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-cassandra-driver': 0.38.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-connect': 0.36.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-cucumber': 0.6.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-dataloader': 0.9.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-dns': 0.36.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-express': 0.39.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-fastify': 0.36.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-fs': 0.12.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-generic-pool': 0.36.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-graphql': 0.40.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-grpc': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-hapi': 0.38.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-http': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-ioredis': 0.40.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-knex': 0.36.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-koa': 0.40.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-lru-memoizer': 0.37.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-memcached': 0.36.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-mongodb': 0.43.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-mongoose': 0.38.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-mysql': 0.38.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-mysql2': 0.38.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-nestjs-core': 0.37.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-net': 0.36.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-pg': 0.41.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-pino': 0.39.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-redis': 0.39.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-redis-4': 0.39.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-restify': 0.38.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-router': 0.37.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-socket.io': 0.39.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-tedious': 0.10.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-undici': 0.2.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-winston': 0.37.0(@opentelemetry/api@1.8.0) + '@opentelemetry/resource-detector-alibaba-cloud': 0.28.9(@opentelemetry/api@1.8.0) + '@opentelemetry/resource-detector-aws': 1.5.0(@opentelemetry/api@1.8.0) + '@opentelemetry/resource-detector-azure': 0.2.7(@opentelemetry/api@1.8.0) + '@opentelemetry/resource-detector-container': 0.3.9(@opentelemetry/api@1.8.0) + '@opentelemetry/resource-detector-gcp': 0.29.9(@opentelemetry/api@1.8.0) + '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-node': 0.51.1(@opentelemetry/api@1.8.0) transitivePeerDependencies: - encoding - supports-color dev: false - /@opentelemetry/auto-instrumentations-web@0.36.0(@opentelemetry/api@1.7.0)(zone.js@0.11.4): - resolution: {integrity: sha512-OwUmX3XBaky93dnFGiFg23H9Nwp1ofkigUXzI1iTDEDCMJDX3HeBx0M83YoZUPFA1lRK6vajMy+sdVdE+IkO+A==} + /@opentelemetry/auto-instrumentations-web@0.39.0(@opentelemetry/api@1.8.0)(zone.js@0.11.8): + resolution: {integrity: sha512-RnN2NdWASajyRmErDk/8aMfSb6Vyphpg1bc7j+5Hz0+XrlokmniTyaQT04z6AU8EYLX06dM26r56/RhUV6yNJQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - zone.js: 0.11.4 - dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-document-load': 0.35.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-fetch': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation-user-interaction': 0.35.0(@opentelemetry/api@1.7.0)(zone.js@0.11.4) - '@opentelemetry/instrumentation-xml-http-request': 0.48.0(@opentelemetry/api@1.7.0) - zone.js: 0.11.4 + zone.js: ^0.11.4 || ^0.13.0 || ^0.14.0 + dependencies: + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-document-load': 0.38.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-fetch': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-user-interaction': 0.38.0(@opentelemetry/api@1.8.0)(zone.js@0.11.8) + '@opentelemetry/instrumentation-xml-http-request': 0.51.1(@opentelemetry/api@1.8.0) + zone.js: 0.11.8 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/context-async-hooks@1.21.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-t0iulGPiMjG/NrSjinPQoIf8ST/o9V0dGOJthfrFporJlNdlKIQPfC7lkrV+5s2dyBThfmSbJlp/4hO1eOcDXA==} + /@opentelemetry/context-async-hooks@1.24.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-R5r6DO4kgEOVBxFXhXjwospLQkv+sYxwCfjvoZBe7Zm6KKXAV9kDSJhi/D1BweowdZmO+sdbENLs374gER8hpQ==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.8.0' + '@opentelemetry/api': '>=1.0.0 <1.9.0' dependencies: - '@opentelemetry/api': 1.7.0 + '@opentelemetry/api': 1.8.0 dev: false - /@opentelemetry/context-zone-peer-dep@1.21.0(@opentelemetry/api@1.7.0)(zone.js@0.11.8): - resolution: {integrity: sha512-VShgSOPlc2UWaNdJST7syUDLdFKstkiqVDBaFEwSwvXP9IIaE7XxS5uAVkd55EVOzfB7PhdEQ91roAt5pHyzhQ==} + /@opentelemetry/context-zone-peer-dep@1.24.1(@opentelemetry/api@1.8.0)(zone.js@0.11.8): + resolution: {integrity: sha512-s67becvBZFFjSLKSiy8ia2m7htsC4gsk8J/X0368FzBYseb/26daYr4ewx6tKcAsmZqJA7402cTQirv175x5BA==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.8.0' - zone.js: ^0.10.2 || ^0.11.0 || ^0.13.0 + '@opentelemetry/api': '>=1.0.0 <1.9.0' + zone.js: ^0.10.2 || ^0.11.0 || ^0.13.0 || ^0.14.0 dependencies: - '@opentelemetry/api': 1.7.0 + '@opentelemetry/api': 1.8.0 zone.js: 0.11.8 dev: false - /@opentelemetry/context-zone@1.21.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-YJQH3LroaZZBN0baGLkvw1WlNNpdNxXf7wfdJrst5v+lYGOus5HX9GUAOB9dByj3Z6yGlPIboPPojnc+ybxKGA==} + /@opentelemetry/context-zone@1.24.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-pt5KLJws1m+rHTeEA6uootoyiuZlCt7j90dmdjXnqx4JZH6sFWqWB5IW1gOukDY7Ym3cNKjtoh3/uK0KuSRBfg==} engines: {node: '>=14'} dependencies: - '@opentelemetry/context-zone-peer-dep': 1.21.0(@opentelemetry/api@1.7.0)(zone.js@0.11.8) + '@opentelemetry/context-zone-peer-dep': 1.24.1(@opentelemetry/api@1.8.0)(zone.js@0.11.8) zone.js: 0.11.8 transitivePeerDependencies: - '@opentelemetry/api' dev: false - /@opentelemetry/core@1.21.0(@opentelemetry/api@1.7.0): + /@opentelemetry/core@1.21.0(@opentelemetry/api@1.8.0): resolution: {integrity: sha512-KP+OIweb3wYoP7qTYL/j5IpOlu52uxBv5M4+QhSmmUfLyTgu1OIS71msK3chFo1D6Y61BIH3wMiMYRCxJCQctA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.8.0' dependencies: - '@opentelemetry/api': 1.7.0 + '@opentelemetry/api': 1.8.0 '@opentelemetry/semantic-conventions': 1.21.0 dev: false - /@opentelemetry/exporter-trace-otlp-grpc@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-+qRQXUbdRW6aNRT5yWOG3G6My1VxxKeqgUyLkkdIjkT20lvymjiN2RpBfGMtAf/oqnuRknf9snFl9VSIO2gniw==} + /@opentelemetry/core@1.24.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.9.0' + dependencies: + '@opentelemetry/api': 1.8.0 + '@opentelemetry/semantic-conventions': 1.24.1 + dev: false + + /@opentelemetry/exporter-trace-otlp-grpc@0.51.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-P9+Hkszih95ITvldGZ+kXvj9HpD1QfS+PwooyHK72GYA+Bgm+yUSAsDkUkDms8+s9HW6poxURv3LcjaMuBBpVQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: '@grpc/grpc-js': 1.9.14 - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-grpc-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-transformer': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/otlp-transformer': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-trace-base': 1.24.1(@opentelemetry/api@1.8.0) dev: false - /@opentelemetry/exporter-trace-otlp-http@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-QEZKbfWqXrbKVpr2PHd4KyKI0XVOhUYC+p2RPV8s+2K5QzZBE3+F9WlxxrXDfkrvGmpQAZytBoHQQYA3AGOtpw==} + /@opentelemetry/exporter-trace-otlp-http@0.51.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-n+LhLPsX07URh+HhV2SHVSvz1t4G/l/CE5BjpmhAPqeTceFac1VpyQkavWEJbvnK5bUEXijWt4LxAxFpt2fXyw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-transformer': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/otlp-exporter-base': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/otlp-transformer': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-trace-base': 1.24.1(@opentelemetry/api@1.8.0) dev: false - /@opentelemetry/exporter-trace-otlp-proto@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-hVXr/8DYlAKAzQYMsCf3ZsGweS6NTK3IHIEqmLokJZYcvJQBEEazeAdISfrL/utWnapg1Qnpw8u+W6SpxNzmTw==} + /@opentelemetry/exporter-trace-otlp-proto@0.51.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-SE9f0/6V6EeXC9i+WA4WFjS1EYgaBCpAnI5+lxWvZ7iO7EU1IvHvZhP6Kojr0nLldo83gqg6G7OWFqsID3uF+w==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-proto-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-transformer': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/otlp-exporter-base': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/otlp-proto-exporter-base': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/otlp-transformer': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-trace-base': 1.24.1(@opentelemetry/api@1.8.0) dev: false - /@opentelemetry/exporter-zipkin@1.21.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-J0ejrOx52s1PqvjNalIHvY/4v9ZxR2r7XS7WZbwK3qpVYZlGVq5V1+iCNweqsKnb/miUt/4TFvJBc9f5Q/kGcA==} + /@opentelemetry/exporter-zipkin@1.24.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-+Rl/VFmu2n6eaRMnVbyfZx1DqR/1KNyWebYuHyQBZaEAVIn/ZLgmofRpXN1X2nhJ4BNaptQUNxAstCYYz6dKoQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-trace-base': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 dev: false - /@opentelemetry/instrumentation-amqplib@0.34.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-lVGRkyGnjFJv9O8oO/+uT40nrNj4UO+UN0k8708guy/toVgxsVpv4PtdWJTjbtu89UDk9gUxq62jpHxqrVaNnw==} + /@opentelemetry/instrumentation-amqplib@0.37.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-XjOHeAOreh0XX4jlzTTUWWqu1dIGvMWM8yvd43JJdRMAmTZisezjKsxLjMEMIvF0PzQdoXwh9DiS9nYE4/QmpA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-aws-lambda@0.38.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-MIPvM8S4LqGKE+IAnYVCRUnEjaWbPsbqL4p2BnGcox08e6+JQe+0d16DI0cKVSFZOzV5T/or3ewQ/bB0lPm8yg==} + /@opentelemetry/instrumentation-aws-lambda@0.41.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-/BLG+0DQr2tCILFGJKJH2Fg6eyjhqOlVflYpNddUEXnzyQ/PAhTdgirkqbICFgeSW2XYcEY9zXpuRldrVNw9cA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/propagator-aws-xray': 1.3.1(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/propagator-aws-xray': 1.3.1(@opentelemetry/api@1.8.0) + '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 '@types/aws-lambda': 8.10.122 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-aws-sdk@0.38.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-q1R+evR1j8sqd5LG+I8fKqP5TAPJEEOmJTvtEDYCVCdtzukI0ABYN8SHEIgDgYZmGBDM0yvC6jH0GmoEwvYuMw==} + /@opentelemetry/instrumentation-aws-sdk@0.41.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-7+8WMY0LQeqv6KIObXK+Py44qNFLeCU0ZLLxSZtXEbZ2wJlQISP1St65jRto0NV7isnZoyuOxb2+ZpypPPNv7Q==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/propagation-utils': 0.30.6(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/propagation-utils': 0.30.9(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-bunyan@0.35.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-bQ8OzV7nVTA+oGiTzLjUmRFAbnXi0U/Z4VJCpj+1DRsaAaMT17eRpAOh22LQR0JBnv2vBm8CvIQl4CcAnsB46g==} + /@opentelemetry/instrumentation-bunyan@0.38.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-ThNcgTE22W7PKzTzz5qfGxb5Gf7rA3EORousYo2nJWHHcF6gqiMNv2+GXY3MdpjLBr8IgCfhtvbQdD6rlIPUpA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/api-logs': 0.48.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/api-logs': 0.51.1 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) '@types/bunyan': 1.8.9 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-cassandra-driver@0.35.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-NlJkEiP37/WQvtSyYe4zxaBcaoweO/2+UtDssldk9NFmFutLHyMT/P5q5fe8i73ylmkPOAZnN8P48oHOhZHM1g==} + /@opentelemetry/instrumentation-cassandra-driver@0.38.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-ML4Vw0it2uIpETfX6skuSIGLHF9D3TUKOfdfrk9lnrzzWSzg2aS6pl3UeepkQX4wXHdzlxVRB0USrUqsmxMd5Q==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-connect@0.33.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-EAMmUC2/KfeZl4qNgUsiVqT5Jti0jDl4GHi4TpDg41VBEJkRX/0+JcPBWgdFUgEfeiZr0GPVQud4i8jAwJ+ORw==} + /@opentelemetry/instrumentation-connect@0.36.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-xI5Q/CMmzBmHshPnzzjD19ptFaYO/rQWzokpNio4QixZYWhJsa35QgRvN9FhPkwgtuJIbt/CWWAufJ3egJNHEA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 '@types/connect': 3.4.36 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-cucumber@0.3.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-nM9BL0t2Nxwbb41MXxNXTDL0zq7FXhOX9F3OiAqYUJHqb7BHyzV9KoQ+Ao1BjqJR91hUm1OFNgHAk3y8uiuq4w==} + /@opentelemetry/instrumentation-cucumber@0.6.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-90eAF2JPSbPAsOuGfYyctYaoYXqy4Clbxt0j/uUgg6dto4oqwUw3AvTyHQEztLGxeXwEzC1EQigDtVPg5ZexYA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-dataloader@0.6.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-jkPdn83WV/TcnhQ5bOIoYcJGvMxXyYlCzbqfuB6HsMqf3CqpdgBQYlMuKi6qIfD4QWYt2R992yglNxPLuJ7xeg==} + /@opentelemetry/instrumentation-dataloader@0.9.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-fiyCOAw+tlbneok1x7P5UseoGW5nS60CWWx7NXzYW+WOexpSmDQQW7olttGa8fqE6/sVCoi1l+QdfVoETZi/NQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-dns@0.33.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-QDJadJOQg9CLqMC79r4T5ugN4C4lb6eJYLmHgnLg3fh1JUGfyjQHtD3T7lH0P8251Mnt5m8zjDDbPKcqK2aGcw==} + /@opentelemetry/instrumentation-dns@0.36.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-NWRbQ7q0E3co/CNTWLZZvUzZoKhB1iTitY282IM8HDTXkA6VRssCfOcvaHw5ezOh23TJbAeYxmmpVj4hFvDPYQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 semver: 7.5.4 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-document-load@0.35.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-U3zQBjbAF0rm7GT7YJ8DPqgiCdBoshmld4c1pZe3tAGAMa5QPIjonIfSMSvJ2XMh6Nvi+8Rfe3XFCe0cuWIjsQ==} + /@opentelemetry/instrumentation-document-load@0.38.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-X/AOG8sDcVp/bVGRWDDG7MCRjcmuQwZqG2B2C6/oj8V4koXPNRNDvW2GEIGJhF5/WxJxZsTRIGPG+yeJ52QOww==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-web': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-trace-web': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-express@0.35.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-ZmSB4WMd88sSecOL7DlghzdBl56/8ymb02n+xEJ/6zUgONuw/1uoTh1TAaNPKfEWdNLoLKXQm+Gd2zBrUVOX0w==} + /@opentelemetry/instrumentation-express@0.39.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-AG8U7z7D0JcBu/7dDcwb47UMEzj9/FMiJV2iQZqrsZnxR3FjB9J9oIH2iszJYci2eUdp2WbdvtpD9RV/zmME5A==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-fastify@0.33.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-sl3q9Mt+yM6GlZJKhfLUIRrVEYqfmI0hqYLha5OFG5rLrgnZCCZVy8ra4+Pa40ecH1409cvwwBPf7k9AHEQBTw==} + /@opentelemetry/instrumentation-fastify@0.36.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-3Nfm43PI0I+3EX+1YbSy6xbDu276R1Dh1tqAk68yd4yirnIh52Kd5B+nJ8CgHA7o3UKakpBjj6vSzi5vNCzJIA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-fetch@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-y4Zw9VeUUMaowg3aXYZXcaUJQ7IKfpR6sjClrAQOJwWG8LYFpM6NIRSoAeJv/ShfxWWCPWC0P4zgXcKRqpURFQ==} + /@opentelemetry/instrumentation-fetch@0.51.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-LzciqAnJmmYaXWo2hlrN99NMbYbExo6n6lBKBeMHAi7X/ddhCSOsgSNVbF3kDB7P++PJhjYqLT3hy6SU4AFHcg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-web': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-trace-web': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-fs@0.9.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-Xp31lb2Sj50ppsJ393650HxSi5IJIgddXxrUeVljmsabdmECPUj0YAt/Wwb1oIHFn04iL9Tq4VkF/otlLaI9ww==} + /@opentelemetry/instrumentation-fs@0.12.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-Waf+2hekJRxIwq1PmivxOWLdMOtYbY22hKr34gEtfbv2CArSv8FBJH4BmQxB9o5ZcwkdKu589qs009dbuSfNmQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-generic-pool@0.33.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-QMSSOfIqMJhXqFryLVbAMsgRktNHdhMEpsOgEiHurLfvAJhyEOBcTTUuo6Laqt50IIzIm3YuHL9ZtEl9fve2ag==} + /@opentelemetry/instrumentation-generic-pool@0.36.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-CExAEqJvK8jYxrhN8cl6EaGg57EGJi+qsSKouLC5lndXi68gZLOKbZIMZg4pF0kNfp/D4BFaGmA6Ap7d5WoPTw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-graphql@0.37.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-WL5Qn1aRudJDxVN0Ao73/yzXBGBJAH1Fd2tteuGXku/Qw9hYQ936CgoO66GWmSiq2lyjsojAk1t5f+HF9j3NXw==} + /@opentelemetry/instrumentation-graphql@0.40.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-LVRdEHWACWOczv2imD+mhUrLMxsEjPPi32vIZJT57zygR5aUiA4em8X3aiGOCycgbMWkIu8xOSGSxdx3JmzN+w==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-grpc@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-MmJHkbqaulqfECjotRtco9AXOq+D1HLq53wI7UFeE8bl8kISP9iMkt+A7PrtPFpRGCglwFvSa0djId6EWsP0DQ==} + /@opentelemetry/instrumentation-grpc@0.51.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-coRTugFL7De/VNH/1NqPlxnfik87jS+jBXsny+Y/lMhXIA3x8t71IyL9ihuewkD+lNtIxIz6Y7Sq6kPuOqz5dQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-hapi@0.34.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-qUENVxwCYbRbJ8HBY54ZL1Z9q1guCEurW6tCFFJJKQFu/MKEw7GSFImy5DR2Mp8b5ggZO36lYFcx0QUxfy4GJg==} + /@opentelemetry/instrumentation-hapi@0.38.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-ZcOqEuwuutTDYIjhDIStix22ECblG/i9pHje23QGs4Q4YS4RMaZ5hKCoQJxW88Z4K7T53rQkdISmoXFKDV8xMg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 - '@types/hapi__hapi': 20.0.13 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-http@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-uXqOsLhW9WC3ZlGm6+PSX0xjSDTCfy4CMjfYj6TPWusOO8dtdx040trOriF24y+sZmS3M+5UQc6/3/ZxBJh4Mw==} + /@opentelemetry/instrumentation-http@0.51.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-6b3nZnFFEz/3xZ6w8bVxctPUWIPWiXuPQ725530JgxnN1cvYFd8CJ75PrHZNjynmzSSnqBkN3ef4R9N+RpMh8Q==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 semver: 7.5.4 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-ioredis@0.37.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-xBPfu03IIG8x1pmt1Dx+XrBO4ZB4UjEcrouGbp6eV3dLQ7eJPYZgfNXmsqkpsxgNQuVCi2a3WEAwZ5Wl2hk7Vw==} + /@opentelemetry/instrumentation-ioredis@0.40.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-Jv/fH7KhpWe4KBirsiqeUJIYrsdR2iu2l4nWhfOlRvaZ+zYIiLEzTQR6QhBbyRoAbU4OuYJzjWusOmmpGBnwng==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/redis-common': 0.36.1 - '@opentelemetry/semantic-conventions': 1.21.0 - '@types/ioredis4': /@types/ioredis@4.28.10 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/redis-common': 0.36.2 + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-knex@0.33.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-7L3Q8Yy5vY4W4zpRrjKEc0OpVPYyERtDz5dAumKjkJsEVPANr7E8Cc+No6VjZGeN+HgFFwEo+jcQCTWJzdxvRw==} + /@opentelemetry/instrumentation-knex@0.36.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-6bEuiI+yMf3D0+ZWZE2AKmXhIhBvZ0brdO/0A8lUqeqeS+sS4fTcjA1F2CclsCNxYWEgcs8o3QyQqPceBeVRlg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-koa@0.37.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-EfuGv1RJCSZh77dDc3PtvZXGwcsTufn9tU6T9VOTFcxovpyJ6w0og73eD0D02syR8R+kzv6rg1TeS8+lj7pyrQ==} + /@opentelemetry/instrumentation-koa@0.40.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-dJc3H/bKMcgUYcQpLF+1IbmUKus0e5Fnn/+ru/3voIRHwMADT3rFSUcGLWSczkg68BCgz0vFWGDTvPtcWIFr7A==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 '@types/koa': 2.14.0 '@types/koa__router': 12.0.3 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-lru-memoizer@0.34.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-m1kXrc11XNj7cC6sfcsYqd+kuCcN2wI9LXpB2l2BZCogqxHCgjuVoiXvT6K9LfO4tLefcvhoK0N8XuVJ8xyyOw==} + /@opentelemetry/instrumentation-lru-memoizer@0.37.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-dHLrn55qVWsHJQYdForPWPUWDk2HZ2jjzkT+WoQSqpYT1j4HxfoiLfBTF+I3EbEYFAJnDRmRAUfA6nU5GPdCLQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-memcached@0.33.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-TdGT5ytt8o7FTIsQvx010ykYbqu+IfGoOKA+IXLHdX1+l7vFWyv3ZOzQbRDmA4rxujJAAPf/n4/D7QECyedE/g==} + /@opentelemetry/instrumentation-memcached@0.36.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-5efkT8ZfN8il5z+yfKYFGm2YR3mhlhaJoGfNOAylKE/6tUH3WDTTWaP7nrURtWGc+fuvDktcEch18Se8qsGS7w==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 '@types/memcached': 2.2.10 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-mongodb@0.39.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-m9dMj39pcCshzlfCEn2lGrlNo7eV5fb9pGBnPyl/Am9Crh7Or8vOqvByCNd26Dgf5J978zTdLGF+6tM8j1WOew==} + /@opentelemetry/instrumentation-mongodb@0.43.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-bMKej7Y76QVUD3l55Q9YqizXybHUzF3pujsBFjqbZrRn2WYqtsDtTUlbCK7fvXNPwFInqZ2KhnTqd0gwo8MzaQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-metrics': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-metrics': 1.21.0(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-mongoose@0.35.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-gReBMWD2Oa/wBGRWyg6B2dbPHhgkpOqDio31gE3DbC4JaqCsMByyeix75rZSzZ71RQmVh3d4jRLsqUtNVBzcyg==} + /@opentelemetry/instrumentation-mongoose@0.38.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-zaeiasdnRjXe6VhYCBMdkmAVh1S5MmXC/0spet+yqoaViGnYst/DOxPvhwg3yT4Yag5crZNWsVXnA538UjP6Ow==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-mysql2@0.35.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-DI9NXYJBbQ72rjz1KCKerQFQE+Z4xRDoyYek6JpITv5BlhPboA8zKkltxyQLL06Y2RTFYslw1gvg+x9CWlRzJw==} + /@opentelemetry/instrumentation-mysql2@0.38.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-qkpHMgWSDTYVB1vlZ9sspf7l2wdS5DDq/rbIepDwX5BA0N0068JTQqh0CgAh34tdFqSCnWXIhcyOXC2TtRb0sg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 - '@opentelemetry/sql-common': 0.40.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 + '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.8.0) transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-mysql@0.35.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-QKRHd3aFA2vKOPzIZ9Q3UIxYeNPweB62HGlX2l3shOKrUhrtTg2/BzaKpHQBy2f2nO2mxTF/mOFeVEDeANnhig==} + /@opentelemetry/instrumentation-mysql@0.38.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-+iBAawUaTfX/HAlvySwozx0C2B6LBfNPXX1W8Z2On1Uva33AGkw2UjL9XgIg1Pj4eLZ9R4EoJ/aFz+Xj4E/7Fw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 '@types/mysql': 2.15.22 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-nestjs-core@0.34.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-HvbcCVAMZEIFrJ0Si9AfjxOr14KcH5h/lq5zLQ8AjZJpW0WaeO/ox5UgFi3J73Br91WbZHRgbXxMeodNycJJuA==} + /@opentelemetry/instrumentation-nestjs-core@0.37.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-ebYQjHZEmGHWEALwwDGhSQVLBaurFnuLIkZD5igPXrt7ohfF4lc5/4al1LO+vKc0NHk8SJWStuRueT86ISA8Vg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-net@0.33.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-x6awrqF0YfEhGGNE2JtEWvB+zEls7mFvLDii54DnWxpQU69+AqKCW/ZwC91EDefOMGSYBckL0uEn6XNOgkTTbw==} + /@opentelemetry/instrumentation-net@0.36.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-rZlbSgwAJys8lpug+xIeAdO98ypYMAPVqrHqc4AHuUl5S4MULHEcjGLMZLoE/guEGO4xAQ5XUezpRFGM1SAnsg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-pg@0.38.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-Q7V/OJ1OZwaWYNOP/E9S6sfS03Z+PNU1SAjdAoXTj5j4u4iJSMSieLRWXFaHwsbefIOMkYvA00EBKF9IgbgbLA==} + /@opentelemetry/instrumentation-pg@0.41.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-BSlhpivzBD77meQNZY9fS4aKgydA8AJBzv2dqvxXFy/Hq64b7HURgw/ztbmwFeYwdF5raZZUifiiNSMLpOJoSA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 - '@opentelemetry/sql-common': 0.40.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 + '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.8.0) '@types/pg': 8.6.1 '@types/pg-pool': 2.0.4 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-pino@0.35.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-gMfJ5Qy793mbaAGnQE3yp1Cb0y4np74rBPu20Oy/v8TTgPQOEV5PyNI0GNGggmZQIJSkdtYa8Ndb3huH3iZE5g==} + /@opentelemetry/instrumentation-pino@0.39.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-uA17F2iP77o3NculB63QD2zv3jkJ093Gfb0GxHLEqTIqpYs1ToJ53ybWwjJwqFByxk7GrliaxaxVtWC23PKzBg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-redis-4@0.36.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-XO0EV2TxUsaRdcp79blyLGG5JWWl7NWVd/XNbU8vY7CuYUfRhWiTXYoM4PI+lwkAnUPvPtyiOzYs9px23GnibA==} + /@opentelemetry/instrumentation-redis-4@0.39.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-Zpfqfi83KeKgVQ0C2083GZPon3ZPYQ5E59v9FAbhubtOoUb9Rh7n111YD8FPW3sgx6JKp1odXmBmfQhWCaTOpQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/redis-common': 0.36.1 - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/redis-common': 0.36.2 + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-redis@0.36.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-rKFylIacEBwLxKFrPvxpVi8hHY9qXfQSybYnYNyF/VxUWMGYDPMpbCnTQkiVR5u+tIhwSvhSDG2YQEq6syHUIQ==} + /@opentelemetry/instrumentation-redis@0.39.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-HUjTerD84jRJnSyDrRPqn6xQ7K91o9qLflRPZqzRvq0GRj5PMfc6TJ/z3q/ayWy/2Kzffhrp7HCIVp0u0TkgUg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/redis-common': 0.36.1 - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/redis-common': 0.36.2 + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-restify@0.35.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-0ghtxsGJxHEwJfIzxDN3FCbNiTXqwv2jV6ip716jyjWN3f6MuRHm7NPWI/KNvu+IjqDj16KRGZG7nUAEB1ojog==} + /@opentelemetry/instrumentation-restify@0.38.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-VYK47Z9GBaZX5MQLL7kZDdzQDdyUtHRD4J/GSr6kdwmIpdpUQXLsV3EnboeB8P+BlpucF57FyJKE8yWTOEMfnA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-router@0.34.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-7LsonkdnQi35eF7CWl8394QDgyd811gCawJ6QuS8GbWNIvZ3S2f9j+Zy0fWSmFgO28ruW1pUG51ql8xdXWa8TA==} + /@opentelemetry/instrumentation-router@0.37.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-+OPcm7C9I5oPqnpStE+1WkdPWjRx0k5XKratxQmIDFZrmhRcqvMte3vrrzE/OBPg9iqh2tKrSe0y7+0sRfTJyQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-socket.io@0.36.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-c9Zc6WKxTZtMaOj01kmJGLKabEj805YgTav4l9vgojHrf6MH1fTlw+SGvOKhfPfzmu2QhNORAfqPAB1poDwqEQ==} + /@opentelemetry/instrumentation-socket.io@0.39.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-4J2ehk5mJyDT6j2yJCOuPxAjit5QB1Fwzhx0LID5jjvhI9LxzZIGDNAPTTHyghSiaRDeNMzceXKkkEQJkg2MNw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-tedious@0.7.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-o/5my8ZOuxACPSzMaXdPnQiMpmOPIJoTj+DRcs4vEJxk+KwlVNucoafSMpWQEyTNNuq2JI87Ru6Di2mp5T20EQ==} + /@opentelemetry/instrumentation-tedious@0.10.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-maSXMxgS0szU52khQzAROV4nWr+3M8mZajMQOc3/7tYjo+Q3HlWAowOuagPvp4pwROK4x6oDaFYlY+ZSj1qjYA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 '@types/tedious': 4.0.14 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-user-interaction@0.35.0(@opentelemetry/api@1.7.0)(zone.js@0.11.4): - resolution: {integrity: sha512-d66rqb24onIEnFNxXorCEzj+5tYBJKM/6StRl+SKXfRDXRT+nBj5EGdBUNgk+jiGQ0M/RymZHHHXSguTV2F1fA==} + /@opentelemetry/instrumentation-undici@0.2.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-RH9WdVRtpnyp8kvya2RYqKsJouPxvHl7jKPsIfrbL8u2QCKloAGi0uEqDHoOS15ZRYPQTDXZ7d8jSpUgSQmvpA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.7.0 + dependencies: + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-user-interaction@0.38.0(@opentelemetry/api@1.8.0)(zone.js@0.11.8): + resolution: {integrity: sha512-/UZT7zZUpi3WavRW6GmxKSa3d3PQ1ApM9nG9PKq95d4w/zhXBaYiqGT/wzcyXefW4TL2oAq4sjJvt1rZpOlImA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - zone.js: 0.11.4 + zone.js: ^0.11.4 || ^0.13.0 || ^0.14.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-web': 1.21.0(@opentelemetry/api@1.7.0) - zone.js: 0.11.4 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-trace-web': 1.24.1(@opentelemetry/api@1.8.0) + zone.js: 0.11.8 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-winston@0.34.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-Ejssv6Uih7ipoNGYQLXd+cKZdEfTfTJ/vzpUSeYiJZ36mVYER1f8fs9Kb7jTKjHD55g2s6cUJj9lifbDFI4EEw==} + /@opentelemetry/instrumentation-winston@0.37.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-vOx55fxdNjo2XojJf8JN4jP7VVvQCh7UQzzQ2Q2FpGJpt8Z3EErKaY8xOBkOuJH0TtL/Q72rmIn9c+mRG46BxA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/api-logs': 0.51.1 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-xml-http-request@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-YJ9d1sR28hcEVtP4/tHtPX5Hhu0w2LsAMp3M+75YGTHkkunsN8PwcY/1FcSHUP9xwy7Z2myQvT7fTpL3g4tn4A==} + /@opentelemetry/instrumentation-xml-http-request@0.51.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-CrQZxADNFr9M3aCgjM3/KXDz12lBrZA5LW+btfgNb78hsLNwqxThtFvXOHr86UsOzJt+h9m4yDeH6YLEvCTBbw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-web': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-trace-web': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-sjtZQB5PStIdCw5ovVTDGwnmQC+GGYArJNgIcydrDSqUTdYBnMrN9P4pwQZgS3vTGIp+TU1L8vMXGe51NVmIKQ==} + /@opentelemetry/instrumentation@0.51.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-JIrvhpgqY6437QIqToyozrUG1h5UhwHkaGK/WAX+fkrpyPtc+RO5FkRtUd9BH0MibabHHvqsnBGKfKVijbmp8w==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.7.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/api-logs': 0.51.1 '@types/shimmer': 1.0.5 - import-in-the-middle: 1.7.1 + import-in-the-middle: 1.7.4 require-in-the-middle: 7.2.0 semver: 7.5.4 shimmer: 1.2.1 @@ -3007,247 +2834,293 @@ packages: - supports-color dev: false - /@opentelemetry/otlp-exporter-base@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-T4LJND+Ugl87GUONoyoQzuV9qCn4BFIPOnCH1biYqdGhc2JahjuLqVD9aefwLzGBW638iLAo88Lh68h2F1FLiA==} + /@opentelemetry/otlp-exporter-base@0.51.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-UYlnOYyDdzo1Gw559EHCzru0RwhvuXCwoH8jGo9J4gO1TE58GjnEmIjomMsKBCym3qWNJfIQXw+9SZCV0DdQNg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) dev: false - /@opentelemetry/otlp-grpc-exporter-base@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-Vdp56RK9OU+Oeoy3YQC/UMOWglKQ9qvgGr49FgF4r8vk5DlcTUgVS0m3KG8pykmRPA+5ZKaDuqwPw5aTvWmHFw==} + /@opentelemetry/otlp-grpc-exporter-base@0.51.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-ZAS+4pq8o7dsugGTwV9s6JMKSxi+guIHdn0acOv0bqj26e9pWDFx5Ky+bI0aY46uR9Y0JyXqY+KAEYM/SO3DFA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: '@grpc/grpc-js': 1.9.14 - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/otlp-exporter-base': 0.51.1(@opentelemetry/api@1.8.0) protobufjs: 7.2.6 dev: false - /@opentelemetry/otlp-proto-exporter-base@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-14GSTvPZPfrWsB54fYMGb8v+Uge5xGXyz0r2rf4SzcRnO2hXCPHEuL3yyL50emaKPAY+fj29Dm0bweawe8UA6A==} + /@opentelemetry/otlp-proto-exporter-base@0.51.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-gxxxwfk0inDMb5DLeuxQ3L8TtptxSiTNHE4nnAJH34IQXAVRhXSXW1rK8PmDKDngRPIZ6J7ncUCjjIn8b+AgqQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/otlp-exporter-base': 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/otlp-exporter-base': 0.51.1(@opentelemetry/api@1.8.0) protobufjs: 7.2.6 dev: false - /@opentelemetry/otlp-transformer@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-yuoS4cUumaTK/hhxW3JUy3wl2U4keMo01cFDrUOmjloAdSSXvv1zyQ920IIH4lymp5Xd21Dj2/jq2LOro56TJg==} + /@opentelemetry/otlp-transformer@0.51.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-OppYOXwV9LQqqtYUCywqoOqX/JT9LQ5/FMuPZ//eTkvuHdUC4ZMwz2c6uSoT2R90GWvvGnF1iEqTGyTT3xAt2Q==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.8.0' + '@opentelemetry/api': '>=1.3.0 <1.9.0' dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/api-logs': 0.48.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-logs': 0.48.0(@opentelemetry/api-logs@0.48.0)(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-metrics': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/api-logs': 0.51.1 + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-logs': 0.51.1(@opentelemetry/api-logs@0.51.1)(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-metrics': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-trace-base': 1.24.1(@opentelemetry/api@1.8.0) dev: false - /@opentelemetry/propagation-utils@0.30.6(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-qvnYee5I/xrBY5XClUlOASIOdoTbnFGNI6+ViKqdoErF2xKmhysXcmxlJNzQFNDK0muTfjvJMZcFyEielARk7g==} + /@opentelemetry/propagation-utils@0.30.9(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-DP2Y91zyw2uNgKLbej6c3IIjyF27sKnRK/UY/6msMIVGPIbZgtH9L0JOioN5L5kYjEkH4CDvt921SjutN7hY4A==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: - '@opentelemetry/api': 1.7.0 + '@opentelemetry/api': 1.8.0 dev: false - /@opentelemetry/propagator-aws-xray@1.3.1(@opentelemetry/api@1.7.0): + /@opentelemetry/propagator-aws-xray@1.3.1(@opentelemetry/api@1.8.0): resolution: {integrity: sha512-6fDMzFlt5r6VWv7MUd0eOpglXPFqykW8CnOuUxJ1VZyLy6mV1bzBlzpsqEmhx1bjvZYvH93vhGkQZqrm95mlrQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) dev: false - /@opentelemetry/propagator-b3@1.21.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-3ZTobj2VDIOzLsIvvYCdpw6tunxUVElPxDvog9lS49YX4hohHeD84A8u9Ns/6UYUcaN5GSoEf891lzhcBFiOLA==} + /@opentelemetry/propagator-b3@1.24.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-nda97ZwhpZKyUJTXqQuKzNhPMUgMLunbbGWn8kroBwegn+nh6OhtyGkrVQsQLNdVKJl0KeB5z0ZgeWszrYhwFw==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.8.0' + '@opentelemetry/api': '>=1.0.0 <1.9.0' dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) dev: false - /@opentelemetry/propagator-jaeger@1.21.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-8TQSwXjBmaDx7JkxRD7hdmBmRK2RGRgzHX1ArJfJhIc5trzlVweyorzqQrXOvqVEdEg+zxUMHkL5qbGH/HDTPA==} + /@opentelemetry/propagator-jaeger@1.24.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-7bRBJn3FG1l195A1m+xXRHvgzAOBsfmRi9uZ5Da18oTh7BLmNDiA8+kpk51FpTsU1PCikPVpRDNPhKVB6lyzZg==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.8.0' + '@opentelemetry/api': '>=1.0.0 <1.9.0' dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) dev: false - /@opentelemetry/redis-common@0.36.1: - resolution: {integrity: sha512-YjfNEr7DK1Ymc5H0bzhmqVvMcCs+PUEUerzrpTFdHfZxj3HpnnjZTIFKx/gxiL/sajQ8dxycjlreoYTVYKBXlw==} + /@opentelemetry/redis-common@0.36.2: + resolution: {integrity: sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==} engines: {node: '>=14'} dev: false - /@opentelemetry/resource-detector-alibaba-cloud@0.28.6(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-VuJXc+oDQ/SYRHBCQbEshl0WJtEMvgfSkTDBq+WSxj6y9sKe0HCt55Sxeb5nLmBdtCYWMQFniHe2K4GLSjDZVw==} + /@opentelemetry/resource-detector-alibaba-cloud@0.28.9(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-cTV2YFFkKAZUZgs5SMknIX4MmFb/0KQhrJuiz2dtJKnI1n7OanCgnMkuXzJ5+CbifRB57I2g3HnwcSPOx3zsKw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 dev: false - /@opentelemetry/resource-detector-aws@1.3.6(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-hFJ19yFwChqGCv1uMkXtjZU9BG8GcChe8cRCAkGWg1RZADse5S2ausf3D8pYw1cR3ktJtuAmRrGZniT6TDUPDw==} + /@opentelemetry/resource-detector-aws@1.5.0(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-JNk/kSzzNQaiMo/F0b/bm8S3Qtr/m89BckN9B4U/cPHSqKLdxX03vgRBOqkXJ5KlAD8kc6K1Etcr8QfvGw6+uA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) + '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 dev: false - /@opentelemetry/resource-detector-container@0.3.6(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-psxtzQakVuZKFl/ukn+nPW4Ixn+KPHGsWJMYKndmXrsgdFri78X+MHR0wLOO41Zn79sc35DiSk+GdJ24cCylbg==} + /@opentelemetry/resource-detector-azure@0.2.7(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-+R3VnPaK6rc+kKfdvhgQlYDGXy0+JMAjPNDjcRQSeXY8pVOzHGCIrY+gT6gUrpjsw8w1EgNBVofr+qeNOr+o4A==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 dev: false - /@opentelemetry/resource-detector-gcp@0.29.6(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-cx03fXPknmiVW0hpWAJr0Nr8xwkwRB8VNWPvNrmP7UzJ8eEztY9lHnVke4ZVFaVGvm/4EFxk2y5hPNggbIezoA==} + /@opentelemetry/resource-detector-container@0.3.9(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-kfJ78av51EKk09fn5cwe5UNt+G7UBLvPTmfK/nZzvmNs7enw/TGB8X0j0JUHb9487ypRGph6MBoeP1+qZh+w1A==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.0.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 + dev: false + + /@opentelemetry/resource-detector-gcp@0.29.9(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-rTUm0U0cF8f75JzeMpMLbQ4m1uLph+Q31DQKk8ekdDe6SZ1EPD4rM1JgRnbxZtsC2sE8ju87s5nEio77xPz7dQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) + '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 gcp-metadata: 6.1.0 transitivePeerDependencies: - encoding - supports-color dev: false - /@opentelemetry/resources@1.21.0(@opentelemetry/api@1.7.0): + /@opentelemetry/resources@1.21.0(@opentelemetry/api@1.8.0): resolution: {integrity: sha512-1Z86FUxPKL6zWVy2LdhueEGl9AHDJcx+bvHStxomruz6Whd02mE3lNUMjVJ+FGRoktx/xYQcxccYb03DiUP6Yw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.8.0' dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) '@opentelemetry/semantic-conventions': 1.21.0 dev: false - /@opentelemetry/sdk-logs@0.48.0(@opentelemetry/api-logs@0.48.0)(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-lRcA5/qkSJuSh4ItWCddhdn/nNbVvnzM+cm9Fg1xpZUeTeozjJDBcHnmeKoOaWRnrGYBdz6UTY6bynZR9aBeAA==} + /@opentelemetry/resources@1.24.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-cyv0MwAaPF7O86x5hk3NNgenMObeejZFLJJDVuSeSMIsknlsj3oOZzRv3qSzlwYomXsICfBeFFlxwHQte5mGXQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.9.0' + dependencies: + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 + dev: false + + /@opentelemetry/sdk-logs@0.51.1(@opentelemetry/api-logs@0.51.1)(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-ULQQtl82b673PpZc5/0EtH4V+BrwVOgKJZEB7tYZnGTG3I98tQVk89S9/JSixomDr++F4ih+LSJTCqIKBz+MQQ==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.4.0 <1.8.0' + '@opentelemetry/api': '>=1.4.0 <1.9.0' '@opentelemetry/api-logs': '>=0.39.1' dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/api-logs': 0.48.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/api-logs': 0.51.1 + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0) dev: false - /@opentelemetry/sdk-metrics@1.21.0(@opentelemetry/api@1.7.0): + /@opentelemetry/sdk-metrics@1.21.0(@opentelemetry/api@1.8.0): resolution: {integrity: sha512-on1jTzIHc5DyWhRP+xpf+zrgrREXcHBH4EDAfaB5mIG7TWpKxNXooQ1JCylaPsswZUv4wGnVTinr4HrBdGARAQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.8.0' dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.8.0) lodash.merge: 4.6.2 dev: false - /@opentelemetry/sdk-node@0.48.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-3o3GS6t+VLGVFCV5bqfGOcWIgOdkR/UE6Qz7hHksP5PXrVBeYsPqts7cPma5YXweaI3r3h26mydg9PqQIcqksg==} + /@opentelemetry/sdk-metrics@1.24.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-FrAqCbbGao9iKI+Mgh+OsC9+U2YMoXnlDHe06yH7dvavCKzE3S892dGtX54+WhSFVxHR/TMRVJiK/CV93GR0TQ==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.8.0' + '@opentelemetry/api': '>=1.3.0 <1.9.0' dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/api-logs': 0.48.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/exporter-trace-otlp-grpc': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/exporter-trace-otlp-http': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/exporter-trace-otlp-proto': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/exporter-zipkin': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/instrumentation': 0.48.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-logs': 0.48.0(@opentelemetry/api-logs@0.48.0)(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-metrics': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-node': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0) + lodash.merge: 4.6.2 + dev: false + + /@opentelemetry/sdk-node@0.51.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-GgmNF9C+6esr8PIJxCqHw84rEOkYm6XdFWZ2+Wyc3qaUt92ACoN7uSw5iKNvaUq62W0xii1wsGxwHzyENtPP8w==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.9.0' + dependencies: + '@opentelemetry/api': 1.8.0 + '@opentelemetry/api-logs': 0.51.1 + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/exporter-trace-otlp-grpc': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/exporter-trace-otlp-http': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/exporter-trace-otlp-proto': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/exporter-zipkin': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-logs': 0.51.1(@opentelemetry/api-logs@0.51.1)(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-metrics': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-trace-base': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-trace-node': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/sdk-trace-base@1.21.0(@opentelemetry/api@1.7.0): + /@opentelemetry/sdk-trace-base@1.21.0(@opentelemetry/api@1.8.0): resolution: {integrity: sha512-yrElGX5Fv0umzp8Nxpta/XqU71+jCAyaLk34GmBzNcrW43nqbrqvdPs4gj4MVy/HcTjr6hifCDCYA3rMkajxxA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.8.0' dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) + '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.8.0) '@opentelemetry/semantic-conventions': 1.21.0 dev: false - /@opentelemetry/sdk-trace-node@1.21.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-1pdm8jnqs+LuJ0Bvx6sNL28EhC8Rv7NYV8rnoXq3GIQo7uOHBDAFSj7makAfbakrla7ecO1FRfI8emnR4WvhYA==} + /@opentelemetry/sdk-trace-base@1.24.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-zz+N423IcySgjihl2NfjBf0qw1RWe11XIAWVrTNOSSI6dtSPJiVom2zipFB2AEEtJWpv0Iz6DY6+TjnyTV5pWg==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.8.0' + '@opentelemetry/api': '>=1.0.0 <1.9.0' + dependencies: + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 + dev: false + + /@opentelemetry/sdk-trace-node@1.24.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-/FZX8uWaGIAwsDhqI8VvQ+qWtfMNlXjaFYGc+vmxgdRFppCSSIRwrPyIhJO1qx61okyYhoyxVEZAfoiNxrfJCg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.9.0' dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/context-async-hooks': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/propagator-b3': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/propagator-jaeger': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/context-async-hooks': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/propagator-b3': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/propagator-jaeger': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-trace-base': 1.24.1(@opentelemetry/api@1.8.0) semver: 7.5.4 dev: false - /@opentelemetry/sdk-trace-web@1.21.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-MxkmY/UNXkDiZj7JUu5T7wWt8Ai4NJEwSjGoQQ9YLvgLUIivvaIo9Mne+Q+KLOUG2v/uhivz3qzxbCODVa0c1A==} + /@opentelemetry/sdk-trace-web@1.24.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-0w+aKRai9VREeo3VrtW+hcbrE2Fl/uKL7G+oXgRNf6pI9QLaEGuEzUTX+oxXVPBadzjOd+5dqCHYdX7UeVjzwA==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.8.0' + '@opentelemetry/api': '>=1.0.0 <1.9.0' dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.21.0 + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/sdk-trace-base': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/semantic-conventions': 1.24.1 dev: false /@opentelemetry/semantic-conventions@1.21.0: @@ -3255,14 +3128,19 @@ packages: engines: {node: '>=14'} dev: false - /@opentelemetry/sql-common@0.40.0(@opentelemetry/api@1.7.0): - resolution: {integrity: sha512-vSqRJYUPJVjMFQpYkQS3ruexCPSZJ8esne3LazLwtCPaPRvzZ7WG3tX44RouAn7w4wMp8orKguBqtt+ng2UTnw==} + /@opentelemetry/semantic-conventions@1.24.1: + resolution: {integrity: sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==} + engines: {node: '>=14'} + dev: false + + /@opentelemetry/sql-common@0.40.1(@opentelemetry/api@1.8.0): + resolution: {integrity: sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.1.0 dependencies: - '@opentelemetry/api': 1.7.0 - '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/api': 1.8.0 + '@opentelemetry/core': 1.21.0(@opentelemetry/api@1.8.0) dev: false /@peculiar/asn1-schema@2.3.8: @@ -3297,12 +3175,12 @@ packages: requiresBuild: true optional: true - /@playwright/test@1.41.1: - resolution: {integrity: sha512-9g8EWTjiQ9yFBXc6HjCWe41msLpxEX0KhmfmPl9RPLJdfzL4F0lg2BdJ91O9azFdl11y1pmpwdjBiSxvqc+btw==} + /@playwright/test@1.44.0: + resolution: {integrity: sha512-rNX5lbNidamSUorBhB4XZ9SQTjAqfe5M+p37Z8ic0jPFBMo5iCtQz1kRWkEMg+rYOKSlVycpQmpqjSFq7LXOfg==} engines: {node: '>=16'} hasBin: true dependencies: - playwright: 1.41.1 + playwright: 1.44.0 dev: true /@polka/url@1.0.0-next.24: @@ -3649,25 +3527,11 @@ packages: dev: true optional: true - /@sideway/address@4.1.5: - resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} - dependencies: - '@hapi/hoek': 9.3.0 - dev: false - - /@sideway/formula@3.0.1: - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - dev: false - - /@sideway/pinpoint@2.0.0: - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - dev: false - /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@sveltejs/adapter-node@4.0.1(@sveltejs/kit@2.5.0): + /@sveltejs/adapter-node@4.0.1(@sveltejs/kit@2.5.8): resolution: {integrity: sha512-IviiTtKCDp+0QoTmmMlGGZBA1EoUNsjecU6XGV9k62S3f01SNsVhpqi2e4nbI62BLGKh/YKKfFii+Vz/b9XIxg==} peerDependencies: '@sveltejs/kit': ^2.4.0 @@ -3675,12 +3539,12 @@ packages: '@rollup/plugin-commonjs': 25.0.7(rollup@4.9.6) '@rollup/plugin-json': 6.1.0(rollup@4.9.6) '@rollup/plugin-node-resolve': 15.2.3(rollup@4.9.6) - '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.9)(vite@5.2.9) + '@sveltejs/kit': 2.5.8(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.17)(vite@5.2.11) rollup: 4.9.6 dev: true - /@sveltejs/kit@2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.9)(vite@5.2.9): - resolution: {integrity: sha512-1uyXvzC2Lu1FZa30T4y5jUAC21R309ZMRG0TPt+PPPbNUoDpy8zSmSNVWYaBWxYDqLGQ5oPNWvjvvF2IjJ1jmA==} + /@sveltejs/kit@2.5.8(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.17)(vite@5.2.11): + resolution: {integrity: sha512-ZQXYaVHd1p0kDGwOi4l82i5kAiUQtrhMthDKtJi0zVzmNupKJ0ZlBVAoceuarCuIntPNctyQchW29h5DkFxd1Q==} engines: {node: '>=18.13'} hasBin: true requiresBuild: true @@ -3689,10 +3553,10 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.3 dependencies: - '@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.9)(vite@5.2.9) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.17)(vite@5.2.11) '@types/cookie': 0.6.0 cookie: 0.6.0 - devalue: 4.3.2 + devalue: 5.0.0 esm-env: 1.0.0 import-meta-resolve: 4.0.0 kleur: 4.1.5 @@ -3701,90 +3565,54 @@ packages: sade: 1.8.1 set-cookie-parser: 2.6.0 sirv: 2.0.4 - svelte: 4.2.9 + svelte: 4.2.17 tiny-glob: 0.2.9 - vite: 5.2.9(@types/node@20.11.16) + vite: 5.2.11(@types/node@20.12.12) - /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.2.9): + /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.17)(vite@5.2.11): resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} engines: {node: ^18.0.0 || >=20} peerDependencies: '@sveltejs/vite-plugin-svelte': ^3.0.0 svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 - dependencies: - '@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.12)(vite@5.2.9) - debug: 4.3.4 - svelte: 4.2.12 - vite: 5.2.9(@types/node@20.11.16) - transitivePeerDependencies: - - supports-color - dev: true - - /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.9)(vite@5.2.9): - resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 - dependencies: - '@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.9)(vite@5.2.9) - debug: 4.3.4 - svelte: 4.2.9 - vite: 5.2.9(@types/node@20.11.16) - transitivePeerDependencies: - - supports-color - - /@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.12)(vite@5.2.9): - resolution: {integrity: sha512-MpmF/cju2HqUls50WyTHQBZUV3ovV/Uk8k66AN2gwHogNAG8wnW8xtZDhzNBsFJJuvmq1qnzA5kE7YfMJNFv2Q==} - engines: {node: ^18.0.0 || >=20} - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 - dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.12)(vite@5.2.9) - debug: 4.3.4 - deepmerge: 4.3.1 - kleur: 4.1.5 - magic-string: 0.30.6 - svelte: 4.2.12 - svelte-hmr: 0.15.3(svelte@4.2.12) - vite: 5.2.9(@types/node@20.11.16) - vitefu: 0.2.5(vite@5.2.9) + dependencies: + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.17)(vite@5.2.11) + debug: 4.3.4 + svelte: 4.2.17 + vite: 5.2.11(@types/node@20.12.12) transitivePeerDependencies: - supports-color - dev: true - /@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.9)(vite@5.2.9): - resolution: {integrity: sha512-MpmF/cju2HqUls50WyTHQBZUV3ovV/Uk8k66AN2gwHogNAG8wnW8xtZDhzNBsFJJuvmq1qnzA5kE7YfMJNFv2Q==} + /@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.17)(vite@5.2.11): + resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==} engines: {node: ^18.0.0 || >=20} peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.9)(vite@5.2.9) + '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.17)(vite@5.2.11) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.6 - svelte: 4.2.9 - svelte-hmr: 0.15.3(svelte@4.2.9) - vite: 5.2.9(@types/node@20.11.16) - vitefu: 0.2.5(vite@5.2.9) + magic-string: 0.30.10 + svelte: 4.2.17 + svelte-hmr: 0.16.0(svelte@4.2.17) + vite: 5.2.11(@types/node@20.12.12) + vitefu: 0.2.5(vite@5.2.11) transitivePeerDependencies: - supports-color - /@tailwindcss/container-queries@0.1.1(tailwindcss@3.4.1): + /@tailwindcss/container-queries@0.1.1(tailwindcss@3.4.3): resolution: {integrity: sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA==} peerDependencies: tailwindcss: '>=3.2.0' dependencies: - tailwindcss: 3.4.1 + tailwindcss: 3.4.3 dev: false - /@tailwindcss/typography@0.5.10(tailwindcss@3.4.1): - resolution: {integrity: sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==} + /@tailwindcss/typography@0.5.13(tailwindcss@3.4.3): + resolution: {integrity: sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==} peerDependencies: tailwindcss: '>=3.0.0 || insiders' dependencies: @@ -3792,17 +3620,17 @@ packages: lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.1 + tailwindcss: 3.4.3 dev: true - /@tsconfig/svelte@5.0.2: - resolution: {integrity: sha512-BRbo1fOtyVbhfLyuCWw6wAWp+U8UQle+ZXu84MYYWzYSEB28dyfnRBIE99eoG+qdAC0po6L2ScIEivcT07UaMA==} + /@tsconfig/svelte@5.0.4: + resolution: {integrity: sha512-BV9NplVgLmSi4mwKzD8BD/NQ8erOY/nUE/GpgWe2ckx+wIQF5RyRirn/QsSSCPeulVpc3RA/iJt6DpfTIZps0Q==} dev: true /@types/accepts@1.3.7: resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.12.12 dev: false /@types/aws-lambda@8.10.122: @@ -3813,25 +3641,25 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.11.16 + '@types/node': 20.12.12 dev: false /@types/bunyan@1.8.9: resolution: {integrity: sha512-ZqS9JGpBxVOvsawzmVt30sP++gSQMTejCkIAQ3VdadOcRE8izTyW66hufvwLeH+YEGP6Js2AW7Gz+RMyvrEbmw==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.12.12 dev: false /@types/connect@3.4.36: resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.12.12 dev: false /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.12.12 dev: false /@types/content-disposition@0.5.8: @@ -3847,7 +3675,7 @@ packages: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 20.11.16 + '@types/node': 20.12.12 dev: false /@types/debug@4.1.12: @@ -3866,7 +3694,7 @@ packages: /@types/express-serve-static-core@4.17.42: resolution: {integrity: sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.12.12 '@types/qs': 6.9.11 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -3881,35 +3709,6 @@ packages: '@types/serve-static': 1.15.5 dev: false - /@types/hapi__catbox@10.2.6: - resolution: {integrity: sha512-qdMHk4fBlwRfnBBDJaoaxb+fU9Ewi2xqkXD3mNjSPl2v/G/8IJbDpVRBuIcF7oXrcE8YebU5M8cCeKh1NXEn0w==} - dev: false - - /@types/hapi__hapi@20.0.13: - resolution: {integrity: sha512-LP4IPfhIO5ZPVOrJo7H8c8Slc0WYTFAUNQX1U0LBPKyXioXhH5H2TawIgxKujIyOhbwoBbpvOsBf6o5+ToJIrQ==} - dependencies: - '@hapi/boom': 9.1.4 - '@hapi/iron': 6.0.0 - '@hapi/podium': 4.1.3 - '@types/hapi__catbox': 10.2.6 - '@types/hapi__mimos': 4.1.4 - '@types/hapi__shot': 4.1.6 - '@types/node': 20.11.16 - joi: 17.12.1 - dev: false - - /@types/hapi__mimos@4.1.4: - resolution: {integrity: sha512-i9hvJpFYTT/qzB5xKWvDYaSXrIiNqi4ephi+5Lo6+DoQdwqPXQgmVVOZR+s3MBiHoFqsCZCX9TmVWG3HczmTEQ==} - dependencies: - '@types/mime-db': 1.43.5 - dev: false - - /@types/hapi__shot@4.1.6: - resolution: {integrity: sha512-h33NBjx2WyOs/9JgcFeFhkxnioYWQAZxOHdmqDuoJ1Qjxpcs+JGvSjEEoDeWfcrF+1n47kKgqph5IpfmPOnzbg==} - dependencies: - '@types/node': 20.11.16 - dev: false - /@types/hast@3.0.4: resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} dependencies: @@ -3924,12 +3723,6 @@ packages: resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} dev: false - /@types/ioredis@4.28.10: - resolution: {integrity: sha512-69LyhUgrXdgcNDv7ogs1qXZomnfOEnSmrmMFqKgt1XMJxmoOSG/u3wYy13yACIfKuMJ8IhKgHafDO3sx19zVQQ==} - dependencies: - '@types/node': 20.11.16 - dev: false - /@types/js-cookie@3.0.6: resolution: {integrity: sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==} dev: false @@ -3966,7 +3759,7 @@ packages: '@types/http-errors': 2.0.4 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 20.11.16 + '@types/node': 20.12.12 dev: false /@types/koa__router@12.0.3: @@ -3984,11 +3777,7 @@ packages: /@types/memcached@2.2.10: resolution: {integrity: sha512-AM9smvZN55Gzs2wRrqeMHVP7KE8KWgCJO/XL5yCly2xF6EKa4YlbpK+cLSAH4NG/Ah64HrlegmGqW8kYws7Vxg==} dependencies: - '@types/node': 20.11.16 - dev: false - - /@types/mime-db@1.43.5: - resolution: {integrity: sha512-/bfTiIUTNPUBnwnYvUxXAre5MhD88jgagLEQiQtIASjU+bwxd8kS/ASDA4a8ufd8m0Lheu6eeMJHEUpLHoJ28A==} + '@types/node': 20.12.12 dev: false /@types/mime@1.3.5: @@ -4016,17 +3805,17 @@ packages: /@types/mute-stream@0.0.4: resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.12.12 dev: true /@types/mysql@2.15.22: resolution: {integrity: sha512-wK1pzsJVVAjYCSZWQoWHziQZbNggXFDUEIGf54g4ZM/ERuP86uGdWeKZWMYlqTPMZfHJJvLPyogXGvCOg87yLQ==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.12.12 dev: false - /@types/node@20.11.16: - resolution: {integrity: sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==} + /@types/node@20.12.12: + resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==} dependencies: undici-types: 5.26.5 @@ -4039,7 +3828,7 @@ packages: /@types/pg@8.6.1: resolution: {integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.12.12 pg-protocol: 1.6.0 pg-types: 2.2.0 dev: false @@ -4058,7 +3847,7 @@ packages: /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.12.12 dev: false /@types/resolve@1.20.2: @@ -4073,7 +3862,7 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.11.16 + '@types/node': 20.12.12 dev: false /@types/serve-static@1.15.5: @@ -4081,13 +3870,13 @@ packages: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 20.11.16 + '@types/node': 20.12.12 dev: false /@types/set-cookie-parser@2.4.7: resolution: {integrity: sha512-+ge/loa0oTozxip6zmhRIk8Z/boU51wl9Q6QdLZcokIGMzY5lFXYy/x7Htj2HTC6/KZP1hUbZ1ekx8DYXICvWg==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.12.12 dev: false /@types/shimmer@1.0.5: @@ -4097,7 +3886,7 @@ packages: /@types/tedious@4.0.14: resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.12.12 dev: false /@types/triple-beam@1.3.5: @@ -4115,15 +3904,15 @@ packages: /@types/ws@8.5.10: resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.12.12 dev: true /@types/zxcvbn@4.4.4: resolution: {integrity: sha512-Tuk4q7q0DnpzyJDI4aMeghGuFu2iS1QAdKpabn8JfbtfGmVDUgvZv1I7mEjP61Bvnp3ljKCC8BE6YYSTNxmvRQ==} dev: true - /@typescript-eslint/eslint-plugin@6.20.0(@typescript-eslint/parser@6.20.0)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-fTwGQUnjhoYHeSF6m5pWNkzmDDdsKELYrOBxhjMrofPqCkoC2k3B2wvGHFxa1CTIqkEn88nlW1HVMztjo2K8Hg==} + /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -4134,13 +3923,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 6.20.0 - '@typescript-eslint/type-utils': 6.20.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.20.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.20.0 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 - eslint: 8.56.0 + eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -4151,8 +3940,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-bYerPDF/H5v6V76MdMYhjwmwgMA+jlPVqjSDq2cRqMi8bP5sR3Z+RLOiOMad3nsnmDVmn2gAFCyNgh/dIrfP/w==} + /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4161,27 +3950,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.20.0 - '@typescript-eslint/types': 6.20.0 - '@typescript-eslint/typescript-estree': 6.20.0(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.20.0 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 - eslint: 8.56.0 + eslint: 8.57.0 typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@6.20.0: - resolution: {integrity: sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA==} + /@typescript-eslint/scope-manager@6.21.0: + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.20.0 - '@typescript-eslint/visitor-keys': 6.20.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 dev: true - /@typescript-eslint/type-utils@6.20.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-qnSobiJQb1F5JjN0YDRPHruQTrX7ICsmltXhkV536mp4idGAYrIyr47zF/JmkJtEcAVnIz4gUYJ7gOZa6SmN4g==} + /@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4190,23 +3979,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.20.0(typescript@5.3.3) - '@typescript-eslint/utils': 6.20.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.3.3) debug: 4.3.4 - eslint: 8.56.0 + eslint: 8.57.0 ts-api-utils: 1.0.3(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@6.20.0: - resolution: {integrity: sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ==} + /@typescript-eslint/types@6.21.0: + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.20.0(typescript@5.3.3): - resolution: {integrity: sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g==} + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -4214,8 +4003,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.20.0 - '@typescript-eslint/visitor-keys': 6.20.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -4227,119 +4016,118 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.20.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-/EKuw+kRu2vAqCoDwDCBtDRU6CTKbUmwwI7SH7AashZ+W+7o8eiyy6V2cdOqN49KsTcASWsC5QeghYuRDTyOOg==} + /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.20.0 - '@typescript-eslint/types': 6.20.0 - '@typescript-eslint/typescript-estree': 6.20.0(typescript@5.3.3) - eslint: 8.56.0 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + eslint: 8.57.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@6.20.0: - resolution: {integrity: sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw==} + /@typescript-eslint/visitor-keys@6.21.0: + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.20.0 + '@typescript-eslint/types': 6.21.0 eslint-visitor-keys: 3.4.3 dev: true /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - /@urql/core@4.2.3(graphql@16.8.1): - resolution: {integrity: sha512-DJ9q9+lcs5JL8DcU2J3NqsgeXYJva+1+Qt8HU94kzTPqVOIRRA7ouvy4ksUfPY+B5G2PQ+vLh+JJGyZCNXv0cg==} + /@urql/core@5.0.3(graphql@16.8.1): + resolution: {integrity: sha512-NZ3YqRr6IphbpFjGqujJOuVuV8/QegYxfjy1zdmOSWpYYFLpmMBfVtzZ/L8IiqPERVAEAIKjUsryLnVtXJQo4w==} dependencies: - '@0no-co/graphql.web': 1.0.4(graphql@16.8.1) + '@0no-co/graphql.web': 1.0.7(graphql@16.8.1) wonka: 6.3.4 transitivePeerDependencies: - graphql dev: true - /@urql/devtools@2.0.3(@urql/core@4.2.3)(graphql@16.8.1): + /@urql/devtools@2.0.3(@urql/core@5.0.3)(graphql@16.8.1): resolution: {integrity: sha512-TktPLiBS9LcBPHD6qcnb8wqOVcg3Bx0iCtvQ80uPpfofwwBGJmqnQTjUdEFU6kwaLOFZULQ9+Uo4831G823mQw==} peerDependencies: '@urql/core': '>= 1.14.0' graphql: '>= 0.11.0' dependencies: - '@urql/core': 4.2.3(graphql@16.8.1) + '@urql/core': 5.0.3(graphql@16.8.1) graphql: 16.8.1 wonka: 6.3.4 dev: true - /@urql/exchange-graphcache@6.4.0(graphql@16.8.1): - resolution: {integrity: sha512-VgcPdDNR3hSJDuf+mj0OZWzOzQccA8vT8xphxtO1MoJlgv1A4VhjLd75pjVvGz29ZHN90jEbdyBKJz6GShT7qA==} + /@urql/exchange-graphcache@6.5.1(graphql@16.8.1): + resolution: {integrity: sha512-Ky77kuaTuo1H+VKZatXyNDqTMw+z03KV3Ep/6TQjktlc+0RDhEZq3rI4F/ViwqLaDUtGqPCYjmnHdoupXqdK0g==} dependencies: '@0no-co/graphql.web': 1.0.4(graphql@16.8.1) - '@urql/core': 4.2.3(graphql@16.8.1) + '@urql/core': 5.0.3(graphql@16.8.1) wonka: 6.3.4 transitivePeerDependencies: - graphql dev: true - /@urql/svelte@4.0.4(graphql@16.8.1)(svelte@4.2.9): - resolution: {integrity: sha512-HYz9dHdqEcs9d82WWczQ3XG+zuup3TS01H+txaij/QfQ+KHjrlrn0EkOHQQd1S+H8+nFjFU2x9+HE3+3fuwL1A==} + /@urql/svelte@4.2.0(@urql/core@5.0.3)(svelte@4.2.17): + resolution: {integrity: sha512-88mvnJ+x1Dh/rKrbo7T0C0UnfY1Tv7HEeEg+hMsrZVAqxFbzGR7mXBaZo0XL0AYrvhtGGWsK3l/+Sfj8OoKDSg==} peerDependencies: + '@urql/core': ^5.0.0 svelte: ^3.0.0 || ^4.0.0 dependencies: - '@urql/core': 4.2.3(graphql@16.8.1) - svelte: 4.2.9 + '@urql/core': 5.0.3(graphql@16.8.1) + svelte: 4.2.17 wonka: 6.3.4 - transitivePeerDependencies: - - graphql dev: true - /@vitejs/plugin-basic-ssl@1.1.0(vite@5.2.9): + /@vitejs/plugin-basic-ssl@1.1.0(vite@5.2.11): resolution: {integrity: sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==} engines: {node: '>=14.6.0'} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 dependencies: - vite: 5.2.9(@types/node@20.11.16) + vite: 5.2.11(@types/node@20.12.12) dev: false - /@vitest/expect@1.2.2: - resolution: {integrity: sha512-3jpcdPAD7LwHUUiT2pZTj2U82I2Tcgg2oVPvKxhn6mDI2On6tfvPQTjAI4628GUGDZrCm4Zna9iQHm5cEexOAg==} + /@vitest/expect@1.6.0: + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} dependencies: - '@vitest/spy': 1.2.2 - '@vitest/utils': 1.2.2 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 chai: 4.4.1 dev: true - /@vitest/runner@1.2.2: - resolution: {integrity: sha512-JctG7QZ4LSDXr5CsUweFgcpEvrcxOV1Gft7uHrvkQ+fsAVylmWQvnaAr/HDp3LAH1fztGMQZugIheTWjaGzYIg==} + /@vitest/runner@1.6.0: + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} dependencies: - '@vitest/utils': 1.2.2 + '@vitest/utils': 1.6.0 p-limit: 5.0.0 pathe: 1.1.2 dev: true - /@vitest/snapshot@1.2.2: - resolution: {integrity: sha512-SmGY4saEw1+bwE1th6S/cZmPxz/Q4JWsl7LvbQIky2tKE35US4gd0Mjzqfr84/4OD0tikGWaWdMja/nWL5NIPA==} + /@vitest/snapshot@1.6.0: + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} dependencies: magic-string: 0.30.6 pathe: 1.1.2 pretty-format: 29.7.0 dev: true - /@vitest/spy@1.2.2: - resolution: {integrity: sha512-k9Gcahssw8d7X3pSLq3e3XEu/0L78mUkCjivUqCQeXJm9clfXR/Td8+AP+VC1O6fKPIDLcHDTAmBOINVuv6+7g==} + /@vitest/spy@1.6.0: + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} dependencies: tinyspy: 2.2.0 dev: true - /@vitest/utils@1.2.2: - resolution: {integrity: sha512-WKITBHLsBHlpjnDQahr+XK6RE7MiAsgrIkr0pGhQ9ygoxBfUeG0lUG5iLlzqjmKSlBv3+j5EGsriBzh+C3Tq9g==} + /@vitest/utils@1.6.0: + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 @@ -4407,8 +4195,8 @@ packages: event-target-shim: 5.0.1 dev: false - /acorn-import-assertions@1.9.0(acorn@8.11.3): - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + /acorn-import-attributes@1.9.5(acorn@8.11.3): + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: acorn: ^8 dependencies: @@ -4585,37 +4373,20 @@ packages: engines: {node: '>=8'} dev: true - /autoprefixer@10.4.17(postcss@8.4.33): - resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - dependencies: - browserslist: 4.22.3 - caniuse-lite: 1.0.30001582 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.33 - postcss-value-parser: 4.2.0 - dev: true - - /autoprefixer@10.4.17(postcss@8.4.38): - resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} + /autoprefixer@10.4.19(postcss@8.4.38): + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.22.3 - caniuse-lite: 1.0.30001582 + browserslist: 4.23.0 + caniuse-lite: 1.0.30001620 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 postcss: 8.4.38 postcss-value-parser: 4.2.0 - dev: false /axobject-query@4.0.0: resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} @@ -4636,38 +4407,38 @@ packages: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} dev: true - /babel-preset-fbjs@3.4.0(@babel/core@7.23.9): + /babel-preset-fbjs@3.4.0(@babel/core@7.24.4): resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.9) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.9) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.9) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.9) + '@babel/core': 7.24.4 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.4) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.4) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.4) + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.4) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.24.4) + '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.24.4) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.24.4) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.4) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.24.4) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.24.4) babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 dev: true @@ -4729,6 +4500,16 @@ packages: node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.3) + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001620 + electron-to-chromium: 1.4.772 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: @@ -4804,6 +4585,9 @@ packages: /caniuse-lite@1.0.30001582: resolution: {integrity: sha512-vsJG3V5vgfduaQGVxL53uSX/HUzxyr2eA8xCo36OLal7sRcSZbibJtLeh0qja4sFOr/QQGt4opB4tOy+eOgAxg==} + /caniuse-lite@1.0.30001620: + resolution: {integrity: sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==} + /capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} dependencies: @@ -5123,6 +4907,10 @@ packages: semver: 7.5.4 dev: true + /confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + dev: true + /config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} dependencies: @@ -5285,14 +5073,14 @@ packages: d3-array: 3.2.4 dev: false - /daisyui@4.7.2(postcss@8.4.33): - resolution: {integrity: sha512-9UCss12Zmyk/22u+JbkVrHHxOzFOyY17HuqP5LeswI4hclbj6qbjJTovdj2zRy8cCH6/n6Wh0lTLjriGnyGh0g==} + /daisyui@4.11.1(postcss@8.4.38): + resolution: {integrity: sha512-obT9CUbQdW6eoHwSeT5VwaRrWlwrM4OT5qlfdJ0oQlSIEYhwnEl2+L2fwu5PioLbitwuMdYC2X8I1cyy8Pf6LQ==} engines: {node: '>=16.9.0'} dependencies: css-selector-tokenizer: 0.8.0 culori: 3.3.0 picocolors: 1.0.0 - postcss-js: 4.0.1(postcss@8.4.33) + postcss-js: 4.0.1(postcss@8.4.38) transitivePeerDependencies: - postcss dev: true @@ -5392,6 +5180,10 @@ packages: /devalue@4.3.2: resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} + dev: true + + /devalue@5.0.0: + resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==} /devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -5507,11 +5299,6 @@ packages: dotenv: 16.4.5 dev: true - /dotenv@16.4.1: - resolution: {integrity: sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==} - engines: {node: '>=12'} - dev: true - /dotenv@16.4.5: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} @@ -5539,6 +5326,9 @@ packages: /electron-to-chromium@1.4.653: resolution: {integrity: sha512-wA2A2LQCqnEwQAvwADQq3KpMpNwgAUBnRmrFgRzHnPhbQUFArTR32Ab46f4p0MovDLcg4uqd4nCsN2hTltslpA==} + /electron-to-chromium@1.4.772: + resolution: {integrity: sha512-jFfEbxR/abTTJA3ci+2ok1NTuOBBtB4jH+UT6PUmRN+DY3WSD4FFRsgoVQ+QNIJ0T7wrXwzsWCI2WKC46b++2A==} + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -5625,39 +5415,40 @@ packages: engines: {node: '>=12'} dev: false - /eslint-compat-utils@0.1.2(eslint@8.56.0): - resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} + /eslint-compat-utils@0.5.0(eslint@8.57.0): + resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 8.56.0 + eslint: 8.57.0 + semver: 7.6.2 dev: true - /eslint-plugin-svelte@2.35.1(eslint@8.56.0)(svelte@4.2.9): - resolution: {integrity: sha512-IF8TpLnROSGy98Z3NrsKXWDSCbNY2ReHDcrYTuXZMbfX7VmESISR78TWgO9zdg4Dht1X8coub5jKwHzP0ExRug==} + /eslint-plugin-svelte@2.39.0(eslint@8.57.0)(svelte@4.2.17): + resolution: {integrity: sha512-FXktBLXsrxbA+6ZvJK2z/sQOrUKyzSg3fNWK5h0reSCjr2fjAsc9ai/s/JvSl4Hgvz3nYVtTIMwarZH5RcB7BA==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0-0 - svelte: ^3.37.0 || ^4.0.0 + eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.112 peerDependenciesMeta: svelte: optional: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@jridgewell/sourcemap-codec': 1.4.15 debug: 4.3.4 - eslint: 8.56.0 - eslint-compat-utils: 0.1.2(eslint@8.56.0) + eslint: 8.57.0 + eslint-compat-utils: 0.5.0(eslint@8.57.0) esutils: 2.0.3 - known-css-properties: 0.29.0 + known-css-properties: 0.31.0 postcss: 8.4.38 postcss-load-config: 3.1.4(postcss@8.4.38) postcss-safe-parser: 6.0.0(postcss@8.4.38) - postcss-selector-parser: 6.0.15 - semver: 7.5.4 - svelte: 4.2.9 - svelte-eslint-parser: 0.33.1(svelte@4.2.9) + postcss-selector-parser: 6.0.16 + semver: 7.6.2 + svelte: 4.2.17 + svelte-eslint-parser: 0.36.0(svelte@4.2.17) transitivePeerDependencies: - supports-color - ts-node @@ -5676,15 +5467,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.56.0: - resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.56.0 + '@eslint/js': 8.57.0 '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -6152,7 +5943,7 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true - /graphql-config@5.0.3(@types/node@20.11.16)(graphql@16.8.1)(typescript@5.3.3): + /graphql-config@5.0.3(@types/node@20.12.12)(graphql@16.8.1)(typescript@5.3.3): resolution: {integrity: sha512-BNGZaoxIBkv9yy6Y7omvsaBUHOzfFcII3UN++tpH8MGOKFPFkCPZuwx09ggANMt8FgyWP1Od8SWPmrUEZca4NQ==} engines: {node: '>= 16.0.0'} peerDependencies: @@ -6166,7 +5957,7 @@ packages: '@graphql-tools/json-file-loader': 8.0.0(graphql@16.8.1) '@graphql-tools/load': 8.0.1(graphql@16.8.1) '@graphql-tools/merge': 9.0.1(graphql@16.8.1) - '@graphql-tools/url-loader': 8.0.1(@types/node@20.11.16)(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.1(@types/node@20.12.12)(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) cosmiconfig: 8.3.6(typescript@5.3.3) graphql: 16.8.1 @@ -6369,11 +6160,11 @@ packages: engines: {node: '>=12.2'} dev: true - /import-in-the-middle@1.7.1: - resolution: {integrity: sha512-1LrZPDtW+atAxH42S6288qyDFNQ2YCty+2mxEPRtfazH6Z5QwkaBSTS2ods7hnVJioF6rkRfNoA6A/MstpFXLg==} + /import-in-the-middle@1.7.4: + resolution: {integrity: sha512-Lk+qzWmiQuRPPulGQeK5qq0v32k2bHnWrRPFgqyvhw7Kkov5L6MOLOIU3pcWeujc9W4q54Cp3Q2WV16eQkc7Bg==} dependencies: acorn: 8.11.3 - acorn-import-assertions: 1.9.0(acorn@8.11.3) + acorn-import-attributes: 1.9.5(acorn@8.11.3) cjs-module-lexer: 1.2.3 module-details-from-path: 1.0.3 dev: false @@ -6611,16 +6402,6 @@ packages: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true - /joi@17.12.1: - resolution: {integrity: sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ==} - dependencies: - '@hapi/hoek': 9.3.0 - '@hapi/topo': 5.1.0 - '@sideway/address': 4.1.5 - '@sideway/formula': 3.0.1 - '@sideway/pinpoint': 2.0.0 - dev: false - /jose@5.2.0: resolution: {integrity: sha512-oW3PCnvyrcm1HMvGTzqjxxfnEs9EoFOFWi2HsEGhlFVOXxTE3K9GKWVMFoFw06yPUqwpvEWic1BmtUZBI/tIjw==} dev: true @@ -6648,6 +6429,10 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + /js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + dev: true + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -6754,8 +6539,8 @@ packages: engines: {node: '>= 8'} dev: true - /known-css-properties@0.29.0: - resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==} + /known-css-properties@0.31.0: + resolution: {integrity: sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==} dev: true /kolorist@1.8.0: @@ -6991,6 +6776,11 @@ packages: dependencies: yallist: 4.0.0 + /magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + /magic-string@0.30.6: resolution: {integrity: sha512-n62qCLbPjNjyo+owKtveQxZFZTBm+Ms6YoGD23Wew6Vw337PElFNifQpknPruVRQV57kVShPnLGo9vWxVhpPvA==} engines: {node: '>=12'} @@ -7158,7 +6948,7 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /meros@1.3.0(@types/node@20.11.16): + /meros@1.3.0(@types/node@20.12.12): resolution: {integrity: sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==} engines: {node: '>=13'} peerDependencies: @@ -7167,7 +6957,7 @@ packages: '@types/node': optional: true dependencies: - '@types/node': 20.11.16 + '@types/node': 20.12.12 dev: true /micromark-core-commonmark@2.0.0: @@ -7488,365 +7278,366 @@ packages: resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} engines: {node: '>=16 || 14 >=14.17'} - /mjml-accordion@4.15.2: - resolution: {integrity: sha512-RAEWpOzQFbN6XsqzOMbg6VQurAegllVrg6A2jbBXFn62cryjI3lUYc7ct3BJ1npfzEr2tFBy9+Yzwmew+Gj0Ng==} + /mjml-accordion@4.15.3: + resolution: {integrity: sha512-LPNVSj1LyUVYT9G1gWwSw3GSuDzDsQCu0tPB2uDsq4VesYNnU6v3iLCQidMiR6azmIt13OEozG700ygAUuA6Ng==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-body@4.15.2: - resolution: {integrity: sha512-yBbiUdzSW6qgMIYWnHKup7rzoHO605sKrqUa3FHu8T1/RZmAqRC8ocv2ioWAHc27Qhuhn1Dj/u4Qsxnyyumsyg==} + /mjml-body@4.15.3: + resolution: {integrity: sha512-7pfUOVPtmb0wC+oUOn4xBsAw4eT5DyD6xqaxj/kssu6RrFXOXgJaVnDPAI9AzIvXJ/5as9QrqRGYAddehwWpHQ==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-button@4.15.2: - resolution: {integrity: sha512-55Nwu/Rk3a9/oCz/RGpAddRJotYbTDAqUdNzxOckvPOxot+p4XPfgpScAgSvT/hc+bpNayER4GIv2GRLoXR0Gg==} + /mjml-button@4.15.3: + resolution: {integrity: sha512-79qwn9AgdGjJR1vLnrcm2rq2AsAZkKC5JPwffTMG+Nja6zGYpTDZFZ56ekHWr/r1b5WxkukcPj2PdevUug8c+Q==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-carousel@4.15.2: - resolution: {integrity: sha512-khgpkXD4jjOcRLxwrWmKx8hJyThMKmtQfLQdd9/7P4yHhQBx0I2fqh76gS36X374F6wyw8di2VEufHH3A+KAuw==} + /mjml-carousel@4.15.3: + resolution: {integrity: sha512-3ju6I4l7uUhPRrJfN3yK9AMsfHvrYbRkcJ1GRphFHzUj37B2J6qJOQUpzA547Y4aeh69TSb7HFVf1t12ejQxVw==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-cli@4.15.2: - resolution: {integrity: sha512-q1P80YO+MnCfzYq+flBMbq9EZaKfbpoHkMF2L9DLrtFSnkg2DrxRy4DS0gFb8zsqMgbmOSUPOPq0IhTzJ9e+bA==} + /mjml-cli@4.15.3: + resolution: {integrity: sha512-+V2TDw3tXUVEptFvLSerz125C2ogYl8klIBRY1m5BHd4JvGVf3yhx8N3PngByCzA6PGcv/eydGQN+wy34SHf0Q==} hasBin: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 chokidar: 3.5.3 glob: 10.3.10 html-minifier: 4.0.0 js-beautify: 1.14.11 lodash: 4.17.21 - mjml-core: 4.15.2 - mjml-migrate: 4.15.2 - mjml-parser-xml: 4.15.2 - mjml-validator: 4.15.2 + minimatch: 9.0.3 + mjml-core: 4.15.3 + mjml-migrate: 4.15.3 + mjml-parser-xml: 4.15.3 + mjml-validator: 4.15.3 yargs: 17.7.2 transitivePeerDependencies: - encoding dev: false - /mjml-column@4.15.2: - resolution: {integrity: sha512-0WCbjU2AUxs+0fNuqKLpXWuhaDBhqYeMOhcD+dCskYunoNWPwiZdzhwmSzOcRNs+Kn5UkRFjTXEIOV40op+p4Q==} + /mjml-column@4.15.3: + resolution: {integrity: sha512-hYdEFdJGHPbZJSEysykrevEbB07yhJGSwfDZEYDSbhQQFjV2tXrEgYcFD5EneMaowjb55e3divSJxU4c5q4Qgw==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-core@4.15.2: - resolution: {integrity: sha512-GMySG2rN/ecLjnAP6KOeHy89YkjZ9OvZD7/kPe2K5dAdb+LZ2ostvmjnejqD6TUO7l8qrTjJGaQvaw2o314N5A==} + /mjml-core@4.15.3: + resolution: {integrity: sha512-Dmwk+2cgSD9L9GmTbEUNd8QxkTZtW9P7FN/ROZW/fGZD6Hq6/4TB0zEspg2Ow9eYjZXO2ofOJ3PaQEEShKV0kQ==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 cheerio: 1.0.0-rc.12 detect-node: 2.1.0 html-minifier: 4.0.0 js-beautify: 1.14.11 juice: 10.0.0 lodash: 4.17.21 - mjml-migrate: 4.15.2 - mjml-parser-xml: 4.15.2 - mjml-validator: 4.15.2 + mjml-migrate: 4.15.3 + mjml-parser-xml: 4.15.3 + mjml-validator: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-divider@4.15.2: - resolution: {integrity: sha512-AQ8dowleBOpsrVww9TlV4Rh64pGaUDtaP02mI4zxFivIyxqLsDTxnGCqLWdintadKs3SscvFiNUGirCWylMwig==} + /mjml-divider@4.15.3: + resolution: {integrity: sha512-vh27LQ9FG/01y0b9ntfqm+GT5AjJnDSDY9hilss2ixIUh0FemvfGRfsGVeV5UBVPBKK7Ffhvfqc7Rciob9Spzw==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-group@4.15.2: - resolution: {integrity: sha512-EIUH+RG1XVvDJI56y8qtlwYkHp77jAiz1Sq+JSA4Ro3c0mbQzHa4XsAmxk3ovh2n/TnzpbgGvFWLTrzjmQwbeQ==} + /mjml-group@4.15.3: + resolution: {integrity: sha512-HSu/rKnGZVKFq3ciT46vi1EOy+9mkB0HewO4+P6dP/Y0UerWkN6S3UK11Cxsj0cAp0vFwkPDCdOeEzRdpFEkzA==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-head-attributes@4.15.2: - resolution: {integrity: sha512-DzWqR/dk9NgXvY+01L0QoIXm4GDyupGv5vzF646ccGbG0B82Mwo4NzvlieEt7TA4eN/xaJSqkdeksmdDtnXxrw==} + /mjml-head-attributes@4.15.3: + resolution: {integrity: sha512-2ISo0r5ZKwkrvJgDou9xVPxxtXMaETe2AsAA02L89LnbB2KC0N5myNsHV0sEysTw9+CfCmgjAb0GAI5QGpxKkQ==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-head-breakpoint@4.15.2: - resolution: {integrity: sha512-kEdQNEsGeDp2/0y3yjbuKTmeFCyAVXytJ8My0zg3C/4GjW6RksTYW9zcBsx3LtAfnSLYJ1NE7LeEDWEG/cddsw==} + /mjml-head-breakpoint@4.15.3: + resolution: {integrity: sha512-Eo56FA5C2v6ucmWQL/JBJ2z641pLOom4k0wP6CMZI2utfyiJ+e2Uuinj1KTrgDcEvW4EtU9HrfAqLK9UosLZlg==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-head-font@4.15.2: - resolution: {integrity: sha512-CmGOYCkSl34uir1x1O3RswRgs1lFlYlxtRaKvOStedY2+g07QLP5Nm1v+7WbYmgxrk67mPxQ81zlBCuwEm9dKg==} + /mjml-head-font@4.15.3: + resolution: {integrity: sha512-CzV2aDPpiNIIgGPHNcBhgyedKY4SX3BJoTwOobSwZVIlEA6TAWB4Z9WwFUmQqZOgo1AkkiTHPZQvGcEhFFXH6g==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-head-html-attributes@4.15.2: - resolution: {integrity: sha512-oyeUw87Widx1oGelRjohsqqnWW7BX/phetZ4m/bA6rmkGh90V9sF8ZZSnjpKXcv5BnMBdW14fT2mdGG51OVVEQ==} + /mjml-head-html-attributes@4.15.3: + resolution: {integrity: sha512-MDNDPMBOgXUZYdxhosyrA2kudiGO8aogT0/cODyi2Ed9o/1S7W+je11JUYskQbncqhWKGxNyaP4VWa+6+vUC/g==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-head-preview@4.15.2: - resolution: {integrity: sha512-+n+jSigEIMYq7Bbfg7y83n2Btzn0oubRue1yUduUhEtbnOBo40fISHuVDyNNwCl0+OYBFa7hBK8ex5jSrq9vXg==} + /mjml-head-preview@4.15.3: + resolution: {integrity: sha512-J2PxCefUVeFwsAExhrKo4lwxDevc5aKj888HBl/wN4EuWOoOg06iOGCxz4Omd8dqyFsrqvbBuPqRzQ+VycGmaA==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-head-style@4.15.2: - resolution: {integrity: sha512-SJ9/N6tcmxpun+S2U926iVU4La95O9Pf3ZJCutaE8Ol4toP5BCHn+0F7DwBOaEfUqszziFiF8onxYAT366gyMA==} + /mjml-head-style@4.15.3: + resolution: {integrity: sha512-9J+JuH+mKrQU65CaJ4KZegACUgNIlYmWQYx3VOBR/tyz+8kDYX7xBhKJCjQ1I4wj2Tvga3bykd89Oc2kFZ5WOw==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-head-title@4.15.2: - resolution: {integrity: sha512-hcoWUOy+dJfsSHtfcGyEwWtcbTaXGRWgnfjWDoFZrrR3gyldiYqm9+ZuvKgNHdh7mZJYd1UjsExFTXq/okyTzQ==} + /mjml-head-title@4.15.3: + resolution: {integrity: sha512-IM59xRtsxID4DubQ0iLmoCGXguEe+9BFG4z6y2xQDrscIa4QY3KlfqgKGT69ojW+AVbXXJPEVqrAi4/eCsLItQ==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-head@4.15.2: - resolution: {integrity: sha512-bJXVzheuHE2ueLslutRm+8qrLVKdnvrFEwfrcq7VzCRRCscbLV0JXyzfNuieLgB5jtqaAZEfsY+or4CzEd0iVg==} + /mjml-head@4.15.3: + resolution: {integrity: sha512-o3mRuuP/MB5fZycjD3KH/uXsnaPl7Oo8GtdbJTKtH1+O/3pz8GzGMkscTKa97l03DAG2EhGrzzLcU2A6eshwFw==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-hero@4.15.2: - resolution: {integrity: sha512-VUnqzkSb8wQPWlDM3y2FeoWoeXeck/CZKPzFar5Qz6dJAK/Gs1Y9jXh+hq6OPeRF1ZfYepe0W+b25tMjSsVHgw==} + /mjml-hero@4.15.3: + resolution: {integrity: sha512-9cLAPuc69yiuzNrMZIN58j+HMK1UWPaq2i3/Fg2ZpimfcGFKRcPGCbEVh0v+Pb6/J0+kf8yIO0leH20opu3AyQ==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-image@4.15.2: - resolution: {integrity: sha512-3v9vTzJuXhqVPyF7rcQksYRhn463YN0tsE9t3AebfkU7V6yffBxdp/5QpUGm2w9hVq9z7oipdA6mFAAC3I5gfQ==} + /mjml-image@4.15.3: + resolution: {integrity: sha512-g1OhSdofIytE9qaOGdTPmRIp7JsCtgO0zbsn1Fk6wQh2gEL55Z40j/VoghslWAWTgT2OHFdBKnMvWtN6U5+d2Q==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-migrate@4.15.2: - resolution: {integrity: sha512-spcfrUyFHpnQrMbup1BOOWyPINGZqh8Vm6Wio//nWsL9MqzdeKqHgpQ6OxKZOxI9qzT4TKbR0jpdCk4Jog+LVw==} + /mjml-migrate@4.15.3: + resolution: {integrity: sha512-sr/+35RdxZroNQVegjpfRHJ5hda9XCgaS4mK2FGO+Mb1IUevKfeEPII3F/cHDpNwFeYH3kAgyqQ22ClhGLWNBA==} hasBin: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 js-beautify: 1.14.11 lodash: 4.17.21 - mjml-core: 4.15.2 - mjml-parser-xml: 4.15.2 + mjml-core: 4.15.3 + mjml-parser-xml: 4.15.3 yargs: 17.7.2 transitivePeerDependencies: - encoding dev: false - /mjml-navbar@4.15.2: - resolution: {integrity: sha512-P4k02WV9hIDORpn1wsbJPzDXvq5UjqGIcs26bU9/4cpSoIa3svVf/ZmsvXfpVBWR5LrxMo0/5WTfj9yDJJNcbw==} + /mjml-navbar@4.15.3: + resolution: {integrity: sha512-VsKH/Jdlf8Yu3y7GpzQV5n7JMdpqvZvTSpF6UQXL0PWOm7k6+LX+sCZimOfpHJ+wCaaybpxokjWZ71mxOoCWoA==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-parser-xml@4.15.2: - resolution: {integrity: sha512-0muwLHwOm+Ae/1rpEiiHZZcFsPE9XJb617SoS0SRSROdO0eHPP3miDDtFk+3qF+OfT6PDrGyMRKf9HknehkncQ==} + /mjml-parser-xml@4.15.3: + resolution: {integrity: sha512-Tz0UX8/JVYICLjT+U8J1f/TFxIYVYjzZHeh4/Oyta0pLpRLeZlxEd71f3u3kdnulCKMP4i37pFRDmyLXAlEuLw==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 detect-node: 2.1.0 htmlparser2: 9.1.0 lodash: 4.17.21 dev: false - /mjml-preset-core@4.15.2: - resolution: {integrity: sha512-3vikfYR7OSg0wVUPC4pb17jV10wLnQOhhYZilMrubWut5LQ5oQyzfwNVfIVwtas3cHUsCqGgyGZIsSM8S+mezQ==} - dependencies: - '@babel/runtime': 7.23.9 - mjml-accordion: 4.15.2 - mjml-body: 4.15.2 - mjml-button: 4.15.2 - mjml-carousel: 4.15.2 - mjml-column: 4.15.2 - mjml-divider: 4.15.2 - mjml-group: 4.15.2 - mjml-head: 4.15.2 - mjml-head-attributes: 4.15.2 - mjml-head-breakpoint: 4.15.2 - mjml-head-font: 4.15.2 - mjml-head-html-attributes: 4.15.2 - mjml-head-preview: 4.15.2 - mjml-head-style: 4.15.2 - mjml-head-title: 4.15.2 - mjml-hero: 4.15.2 - mjml-image: 4.15.2 - mjml-navbar: 4.15.2 - mjml-raw: 4.15.2 - mjml-section: 4.15.2 - mjml-social: 4.15.2 - mjml-spacer: 4.15.2 - mjml-table: 4.15.2 - mjml-text: 4.15.2 - mjml-wrapper: 4.15.2 + /mjml-preset-core@4.15.3: + resolution: {integrity: sha512-1zZS8P4O0KweWUqNS655+oNnVMPQ1Rq1GaZq5S9JfwT1Vh/m516lSmiTW9oko6gGHytt5s6Yj6oOeu5Zm8FoLw==} + dependencies: + '@babel/runtime': 7.24.1 + mjml-accordion: 4.15.3 + mjml-body: 4.15.3 + mjml-button: 4.15.3 + mjml-carousel: 4.15.3 + mjml-column: 4.15.3 + mjml-divider: 4.15.3 + mjml-group: 4.15.3 + mjml-head: 4.15.3 + mjml-head-attributes: 4.15.3 + mjml-head-breakpoint: 4.15.3 + mjml-head-font: 4.15.3 + mjml-head-html-attributes: 4.15.3 + mjml-head-preview: 4.15.3 + mjml-head-style: 4.15.3 + mjml-head-title: 4.15.3 + mjml-hero: 4.15.3 + mjml-image: 4.15.3 + mjml-navbar: 4.15.3 + mjml-raw: 4.15.3 + mjml-section: 4.15.3 + mjml-social: 4.15.3 + mjml-spacer: 4.15.3 + mjml-table: 4.15.3 + mjml-text: 4.15.3 + mjml-wrapper: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-raw@4.15.2: - resolution: {integrity: sha512-a0oy45ghq4x8nyQ7etFjoNQ7WrVJu3NIOBVA/FzNd3DZnnOfMrW32kZZ7dVSSwBO9NyvRs00U+uAqHq2zNAQsw==} + /mjml-raw@4.15.3: + resolution: {integrity: sha512-IGyHheOYyRchBLiAEgw3UM11kFNmBSMupu2BDdejC6ZiDhEAdG+tyERlsCwDPYtXanvFpGWULIu3XlsUPc+RZw==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-section@4.15.2: - resolution: {integrity: sha512-xEmhRh/B3an3cbwQ20zukhVcqbs65t8AhqLvNKnvEO2Su5Niu27Ogs1yPWjAs6SdFwnVMgMFw/1HDdm/oA/O+g==} + /mjml-section@4.15.3: + resolution: {integrity: sha512-JfVPRXH++Hd933gmQfG8JXXCBCR6fIzC3DwiYycvanL/aW1cEQ2EnebUfQkt5QzlYjOkJEH+JpccAsq3ln6FZQ==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-social@4.15.2: - resolution: {integrity: sha512-E9bb8UqzXKP8y4EavC4x9thBLYbI39i25aD8tl/3lt9hkR4sGb8lYhQ+TJGENLOE6mjrYH+rH7OeYy2MkV5K8w==} + /mjml-social@4.15.3: + resolution: {integrity: sha512-7sD5FXrESOxpT9Z4Oh36bS6u/geuUrMP1aCg2sjyAwbPcF1aWa2k9OcatQfpRf6pJEhUZ18y6/WBBXmMVmSzXg==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-spacer@4.15.2: - resolution: {integrity: sha512-ftVEAlClXsHaadUfw4ConQcVFoAiMpl1Dz6WHfuIZGh2ZDIInlsQ/qiYTrmIvNyCNXc5kA7ihUTGwf839eebQQ==} + /mjml-spacer@4.15.3: + resolution: {integrity: sha512-3B7Qj+17EgDdAtZ3NAdMyOwLTX1jfmJuY7gjyhS2HtcZAmppW+cxqHUBwCKfvSRgTQiccmEvtNxaQK+tfyrZqA==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-table@4.15.2: - resolution: {integrity: sha512-7guaGhqqoruWYy4qxJDc8i5qUm2jxX7UUau6SYkbNrX7evfSY+3jP8yfpHOyBHdwtStIq98WCl5v7Um54HuTxQ==} + /mjml-table@4.15.3: + resolution: {integrity: sha512-FLx7DcRKTdKdcOCbMyBaeudeHaHpwPveRrBm6WyQe3LXx6FfdmOh59i71/16LFQMgBOD3N4/UJkzxLzlTJzMqQ==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-text@4.15.2: - resolution: {integrity: sha512-U2y/y6cd69wj0PYVNb+vhF19s/0Qaqt2BhCNOZhdgq4ENk3HKiUY90JO11ZnziEvt1XoWzYkJojXs+9FoGbdvw==} + /mjml-text@4.15.3: + resolution: {integrity: sha512-+C0hxCmw9kg0XzT6vhE5mFkK6y225nC8UEQcN94K0fBCjPKkM+HqZMwGX205fzdGRi+Bxa55b/VhrIVwdv+8vw==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 + mjml-core: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml-validator@4.15.2: - resolution: {integrity: sha512-VbFxqBwXcVk8XFpOcKMLhpcNcKIhqmU9BT6i5J0Ols2XOfNbofxIDPSWKyBxq6NkcEJo8LCv870Gut/kK6afKQ==} + /mjml-validator@4.15.3: + resolution: {integrity: sha512-Xb72KdqRwjv/qM2rJpV22syyP2N3cRQ9VVDrN6u2FSzLq02buFNxmSPJ7CKhat3PrUNdVHU75KZwOf/tz4UEhA==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 dev: false - /mjml-wrapper@4.15.2: - resolution: {integrity: sha512-yg717N0FmMjvjHqzFflwwTvABETDfbH5b+V/a+0105ar2/nCvEPgyn42T1B+YclcgcmtMaBS4w0VV8EjYz3VmQ==} + /mjml-wrapper@4.15.3: + resolution: {integrity: sha512-ditsCijeHJrmBmObtJmQ18ddLxv5oPyMTdPU8Di8APOnD2zPk7Z4UAuJSl7HXB45oFiivr3MJf4koFzMUSZ6Gg==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 lodash: 4.17.21 - mjml-core: 4.15.2 - mjml-section: 4.15.2 + mjml-core: 4.15.3 + mjml-section: 4.15.3 transitivePeerDependencies: - encoding dev: false - /mjml@4.15.2: - resolution: {integrity: sha512-g/CsWJ0BdcPHCNtc72jFbQ2NVlHWFynLMYywVgZ+aiRWFZieh1OxULoP/p1qQYXnJZNUxHle++ftUDzvRd4Nng==} + /mjml@4.15.3: + resolution: {integrity: sha512-bW2WpJxm6HS+S3Yu6tq1DUPFoTxU9sPviUSmnL7Ua+oVO3WA5ILFWqvujUlz+oeuM+HCwEyMiP5xvKNPENVjYA==} hasBin: true dependencies: - '@babel/runtime': 7.23.9 - mjml-cli: 4.15.2 - mjml-core: 4.15.2 - mjml-migrate: 4.15.2 - mjml-preset-core: 4.15.2 - mjml-validator: 4.15.2 + '@babel/runtime': 7.24.1 + mjml-cli: 4.15.3 + mjml-core: 4.15.3 + mjml-migrate: 4.15.3 + mjml-preset-core: 4.15.3 + mjml-validator: 4.15.3 transitivePeerDependencies: - encoding dev: false @@ -7866,6 +7657,15 @@ packages: ufo: 1.3.2 dev: true + /mlly@1.7.0: + resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} + dependencies: + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.1.1 + ufo: 1.5.3 + dev: true + /module-details-from-path@1.0.3: resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} dev: false @@ -8155,7 +7955,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -8301,6 +8101,14 @@ packages: pathe: 1.1.2 dev: true + /pkg-types@1.1.1: + resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} + dependencies: + confbox: 0.1.7 + mlly: 1.7.0 + pathe: 1.1.2 + dev: true + /pkg-up@3.1.0: resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} engines: {node: '>=8'} @@ -8308,18 +8116,18 @@ packages: find-up: 3.0.0 dev: true - /playwright-core@1.41.1: - resolution: {integrity: sha512-/KPO5DzXSMlxSX77wy+HihKGOunh3hqndhqeo/nMxfigiKzogn8kfL0ZBDu0L1RKgan5XHCPmn6zXd2NUJgjhg==} + /playwright-core@1.44.0: + resolution: {integrity: sha512-ZTbkNpFfYcGWohvTTl+xewITm7EOuqIqex0c7dNZ+aXsbrLj0qI8XlGKfPpipjm0Wny/4Lt4CJsWJk1stVS5qQ==} engines: {node: '>=16'} hasBin: true dev: true - /playwright@1.41.1: - resolution: {integrity: sha512-gdZAWG97oUnbBdRL3GuBvX3nDDmUOuqzV/D24dytqlKt+eI5KbwusluZRGljx1YoJKZ2NRPaeWiFTeGZO7SosQ==} + /playwright@1.44.0: + resolution: {integrity: sha512-F9b3GUCLQ3Nffrfb6dunPOkE5Mh68tR7zN32L4jCk4FjQamgesGay7/dAAe1WaMEGV04DkdJfcJzjoCKygUaRQ==} engines: {node: '>=16'} hasBin: true dependencies: - playwright-core: 1.41.1 + playwright-core: 1.44.0 optionalDependencies: fsevents: 2.3.2 dev: true @@ -8335,16 +8143,6 @@ packages: read-cache: 1.0.0 resolve: 1.22.8 - /postcss-js@4.0.1(postcss@8.4.33): - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.33 - dev: true - /postcss-js@4.0.1(postcss@8.4.38): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} @@ -8429,18 +8227,17 @@ packages: cssesc: 3.0.0 util-deprecate: 1.0.2 - /postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - /postcss@8.4.33: - resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} - engines: {node: ^10 || ^12 || >=14} + /postcss-selector-parser@6.0.16: + resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} + engines: {node: '>=4'} dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 + cssesc: 3.0.0 + util-deprecate: 1.0.2 dev: true + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + /postcss@8.4.38: resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} @@ -8471,12 +8268,12 @@ packages: xtend: 4.0.2 dev: false - /precompile-intl-runtime@0.8.5(svelte@4.2.9): + /precompile-intl-runtime@0.8.5(svelte@4.2.17): resolution: {integrity: sha512-gxDphR6a6qFBINiLf4ior2LBHCfW2XNksYrIgcvEvO0uc5vgdsTfWdqdyX68nDbSVh1H4Y/q+Lqm7Z68b1x/Pg==} peerDependencies: svelte: ^3.37.0 || ^4.0.0 dependencies: - svelte: 4.2.9 + svelte: 4.2.17 dev: false /prelude-ls@1.2.1: @@ -8545,7 +8342,7 @@ packages: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.11.16 + '@types/node': 20.12.12 long: 5.2.3 dev: false @@ -8614,7 +8411,7 @@ packages: /relay-runtime@12.0.0: resolution: {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.1 fbjs: 3.0.5 invariant: 2.2.4 transitivePeerDependencies: @@ -8760,15 +8557,15 @@ packages: glob: 7.2.3 dev: true - /rimraf@5.0.5: - resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} - engines: {node: '>=14'} + /rimraf@5.0.7: + resolution: {integrity: sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==} + engines: {node: '>=14.18'} hasBin: true dependencies: glob: 10.3.10 dev: true - /rollup-plugin-svelte@7.2.0(rollup@2.79.1)(svelte@4.2.12): + /rollup-plugin-svelte@7.2.0(rollup@2.79.1)(svelte@4.2.17): resolution: {integrity: sha512-Qvo5VNFQZtaI+sHSjcCIFDP+olfKVyslAoJIkL3DxuhUpNY5Ys0+hhxUY3kuEKt9BXFgkFJiiic/XRb07zdSbg==} engines: {node: '>=10'} peerDependencies: @@ -8778,7 +8575,7 @@ packages: '@rollup/pluginutils': 4.2.1 resolve.exports: 2.0.2 rollup: 2.79.1 - svelte: 4.2.12 + svelte: 4.2.17 dev: false /rollup@2.79.1: @@ -8897,6 +8694,12 @@ packages: dependencies: lru-cache: 6.0.0 + /semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true + dev: true + /sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} dependencies: @@ -9117,10 +8920,10 @@ packages: engines: {node: '>=8'} dev: true - /strip-literal@1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + /strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} dependencies: - acorn: 8.11.3 + js-tokens: 9.0.0 dev: true /sucrase@3.35.0: @@ -9128,7 +8931,7 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: - '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 glob: 10.3.10 lines-and-columns: 1.2.4 @@ -9163,9 +8966,9 @@ packages: fast-glob: 3.3.2 prettier: 2.8.8 rollup: 2.79.1 - rollup-plugin-svelte: 7.2.0(rollup@2.79.1)(svelte@4.2.12) - svelte: 4.2.12 - svelte-preprocess: 5.1.3(@babel/core@7.24.4)(postcss@8.4.38)(svelte@4.2.12)(typescript@5.3.3) + rollup-plugin-svelte: 7.2.0(rollup@2.79.1)(svelte@4.2.17) + svelte: 4.2.17 + svelte-preprocess: 5.1.4(@babel/core@7.24.4)(postcss@8.4.38)(svelte@4.2.17)(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - '@babel/core' @@ -9179,20 +8982,20 @@ packages: - sugarss dev: false - /svelte-check@3.6.3(@babel/core@7.24.4)(postcss@8.4.33)(svelte@4.2.9): - resolution: {integrity: sha512-Q2nGnoysxUnB9KjnjpQLZwdjK62DHyW6nuH/gm2qteFnDk0lCehe/6z8TsIvYeKjC6luKaWxiNGyOcWiLLPSwA==} + /svelte-check@3.7.1(@babel/core@7.24.4)(postcss@8.4.38)(svelte@4.2.17): + resolution: {integrity: sha512-U4uJoLCzmz2o2U33c7mPDJNhRYX/DNFV11XTUDlFxaKLsO7P+40gvJHMPpoRfa24jqZfST4/G9fGNcUGMO8NAQ==} hasBin: true peerDependencies: svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 dependencies: - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.5.3 fast-glob: 3.3.2 import-fresh: 3.3.0 picocolors: 1.0.0 sade: 1.8.1 - svelte: 4.2.9 - svelte-preprocess: 5.1.3(@babel/core@7.24.4)(postcss@8.4.33)(svelte@4.2.9)(typescript@5.3.3) + svelte: 4.2.17 + svelte-preprocess: 5.1.4(@babel/core@7.24.4)(postcss@8.4.38)(svelte@4.2.17)(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - '@babel/core' @@ -9206,38 +9009,28 @@ packages: - sugarss dev: true - /svelte-check@3.6.8(@babel/core@7.24.4)(postcss@8.4.38)(svelte@4.2.12): - resolution: {integrity: sha512-rhXU7YCDtL+lq2gCqfJDXKTxJfSsCgcd08d7VWBFxTw6IWIbMWSaASbAOD3N0VV9TYSSLUqEBiratLd8WxAJJA==} - hasBin: true + /svelte-eslint-parser@0.33.1(svelte@4.2.17): + resolution: {integrity: sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + svelte: ^3.37.0 || ^4.0.0 + peerDependenciesMeta: + svelte: + optional: true dependencies: - '@jridgewell/trace-mapping': 0.3.22 - chokidar: 3.5.3 - fast-glob: 3.3.2 - import-fresh: 3.3.0 - picocolors: 1.0.0 - sade: 1.8.1 - svelte: 4.2.12 - svelte-preprocess: 5.1.3(@babel/core@7.24.4)(postcss@8.4.38)(svelte@4.2.12)(typescript@5.3.3) - typescript: 5.3.3 - transitivePeerDependencies: - - '@babel/core' - - coffeescript - - less - - postcss - - postcss-load-config - - pug - - sass - - stylus - - sugarss + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + postcss: 8.4.38 + postcss-scss: 4.0.9(postcss@8.4.38) + svelte: 4.2.17 dev: true - /svelte-eslint-parser@0.33.1(svelte@4.2.9): - resolution: {integrity: sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==} + /svelte-eslint-parser@0.36.0(svelte@4.2.17): + resolution: {integrity: sha512-/6YmUSr0FAVxW8dXNdIMydBnddPMHzaHirAZ7RrT21XYdgGGZMh0LQG6CZsvAFS4r2Y4ItUuCQc8TQ3urB30mQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - svelte: ^3.37.0 || ^4.0.0 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.115 peerDependenciesMeta: svelte: optional: true @@ -9247,106 +9040,48 @@ packages: espree: 9.6.1 postcss: 8.4.38 postcss-scss: 4.0.9(postcss@8.4.38) - svelte: 4.2.9 + svelte: 4.2.17 dev: true - /svelte-exmarkdown@3.0.3(svelte@4.2.9): - resolution: {integrity: sha512-SRQl95iTC+FeOHxotDM+gab/QufRj+iNrYKIrxssrkqOg2dEF2e1/+JirQvtsKWoCH2tek81LoiDM0/bADa7tQ==} + /svelte-exmarkdown@3.0.5(svelte@4.2.17): + resolution: {integrity: sha512-x0ELw7oTziBaJLFsdGZaoursycGK9HPzxRTRZ/rBi2KmseFG29ryyborJxFmeE0X6ORrEW1pRjoi8q41xpIeRQ==} peerDependencies: - svelte: ^3.47.0 || ^4.0.0 + svelte: ^3.47.0 || ^4.0.0 || >=5.0.0-next.115 dependencies: remark-gfm: 4.0.0 remark-parse: 11.0.0 remark-rehype: 11.1.0 - svelte: 4.2.9 + svelte: 4.2.17 unified: 11.0.4 transitivePeerDependencies: - supports-color dev: false - /svelte-hmr@0.15.3(svelte@4.2.12): - resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} - engines: {node: ^12.20 || ^14.13.1 || >= 16} - peerDependencies: - svelte: ^3.19.0 || ^4.0.0 - dependencies: - svelte: 4.2.12 - dev: true - - /svelte-hmr@0.15.3(svelte@4.2.9): - resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} + /svelte-hmr@0.16.0(svelte@4.2.17): + resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: svelte: ^3.19.0 || ^4.0.0 dependencies: - svelte: 4.2.9 + svelte: 4.2.17 - /svelte-intl-precompile@0.12.3(@babel/core@7.24.4)(svelte@4.2.9): + /svelte-intl-precompile@0.12.3(@babel/core@7.24.4)(svelte@4.2.17): resolution: {integrity: sha512-/AA4io2O07h8PzDU8Jg5ab/DBDr6C2KOzyu4CWSsjHjm8pxWtkLDhd7XkNema34Ryl7O3oqjVrH8FsjLAEUXGQ==} dependencies: babel-plugin-precompile-intl: 0.5.2(@babel/core@7.24.4) js-yaml: 4.1.0 json5: 2.2.3 path-starts-with: 2.0.1 - precompile-intl-runtime: 0.8.5(svelte@4.2.9) + precompile-intl-runtime: 0.8.5(svelte@4.2.17) strip-bom: 5.0.0 transitivePeerDependencies: - '@babel/core' - svelte dev: false - /svelte-preprocess@5.1.3(@babel/core@7.24.4)(postcss@8.4.33)(svelte@4.2.9)(typescript@5.3.3): - resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} - engines: {node: '>= 16.0.0', pnpm: ^8.0.0} - requiresBuild: true - peerDependencies: - '@babel/core': ^7.10.2 - coffeescript: ^2.5.1 - less: ^3.11.3 || ^4.0.0 - postcss: ^7 || ^8 - postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - pug: ^3.0.0 - sass: ^1.26.8 - stylus: ^0.55.0 - sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 - svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 - typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' - peerDependenciesMeta: - '@babel/core': - optional: true - coffeescript: - optional: true - less: - optional: true - postcss: - optional: true - postcss-load-config: - optional: true - pug: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - typescript: - optional: true - dependencies: - '@babel/core': 7.24.4 - '@types/pug': 2.0.10 - detect-indent: 6.1.0 - magic-string: 0.30.6 - postcss: 8.4.33 - sorcery: 0.11.0 - strip-indent: 3.0.0 - svelte: 4.2.9 - typescript: 5.3.3 - dev: true - - /svelte-preprocess@5.1.3(@babel/core@7.24.4)(postcss@8.4.38)(svelte@4.2.12)(typescript@5.3.3): - resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} - engines: {node: '>= 16.0.0', pnpm: ^8.0.0} + /svelte-preprocess@5.1.4(@babel/core@7.24.4)(postcss@8.4.38)(svelte@4.2.17)(typescript@5.3.3): + resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==} + engines: {node: '>= 16.0.0'} requiresBuild: true peerDependencies: '@babel/core': ^7.10.2 @@ -9389,24 +9124,24 @@ packages: postcss: 8.4.38 sorcery: 0.11.0 strip-indent: 3.0.0 - svelte: 4.2.12 + svelte: 4.2.17 typescript: 5.3.3 - /svelte-turnstile@0.5.0(svelte@4.2.9): + /svelte-turnstile@0.5.0(svelte@4.2.17): resolution: {integrity: sha512-FD/XOfyN2gOr7csfThLyrS/sSsRd2zgVfm5pwE1KvpWQHJYqx1HL/PQ92WEw8peL+SPqoKYx2619aZ65uPUsxg==} peerDependencies: svelte: ^3.58.0 || ^4.0.0 dependencies: - svelte: 4.2.9 + svelte: 4.2.17 turnstile-types: 1.2.0 dev: true - /svelte-ux@0.61.10(@babel/core@7.24.4)(postcss@8.4.38)(svelte@4.2.12): + /svelte-ux@0.61.10(@babel/core@7.24.4)(postcss@8.4.38)(svelte@4.2.17): resolution: {integrity: sha512-B02wDaxfY4AGtW+OOpvd9aqxa+2AhWDGTvih0Kb4uYdp4GnS3bhrdi81lysIf4BI94rqR00cxXOD4KSB3ZAI5w==} peerDependencies: svelte: ^3.56.0 || ^4.0.0 dependencies: - '@floating-ui/dom': 1.6.3 + '@floating-ui/dom': 1.6.5 '@fortawesome/fontawesome-common-types': 6.5.1 '@mdi/js': 7.4.47 clsx: 2.1.0 @@ -9420,9 +9155,9 @@ packages: prism-themes: 1.9.0 prismjs: 1.29.0 sveld: 0.19.1(@babel/core@7.24.4)(postcss@8.4.38) - svelte: 4.2.12 + svelte: 4.2.17 tailwind-merge: 2.2.2 - zod: 3.22.4 + zod: 3.23.8 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -9435,32 +9170,13 @@ packages: - sugarss dev: false - /svelte@4.2.12: - resolution: {integrity: sha512-d8+wsh5TfPwqVzbm4/HCXC783/KPHV60NvwitJnyTA5lWn1elhXMNWhXGCJ7PwPa8qFUnyJNIyuIRt2mT0WMug==} - engines: {node: '>=16'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.22 - '@types/estree': 1.0.5 - acorn: 8.11.3 - aria-query: 5.3.0 - axobject-query: 4.0.0 - code-red: 1.0.4 - css-tree: 2.3.1 - estree-walker: 3.0.3 - is-reference: 3.0.2 - locate-character: 3.0.0 - magic-string: 0.30.6 - periscopic: 3.1.0 - - /svelte@4.2.9: - resolution: {integrity: sha512-hsoB/WZGEPFXeRRLPhPrbRz67PhP6sqYgvwcAs+gWdSQSvNDw+/lTeUJSWe5h2xC97Fz/8QxAOqItwBzNJPU8w==} + /svelte@4.2.17: + resolution: {integrity: sha512-N7m1YnoXtRf5wya5Gyx3TWuTddI4nAyayyIWFojiWV5IayDYNV5i2mRp/7qNGol4DtxEYxljmrbgp1HM6hUbmQ==} engines: {node: '>=16'} dependencies: - '@ampproject/remapping': 2.2.1 + '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 '@types/estree': 1.0.5 acorn: 8.11.3 aria-query: 5.3.0 @@ -9473,28 +9189,32 @@ packages: magic-string: 0.30.6 periscopic: 3.1.0 - /sveltekit-search-params@2.1.0(@sveltejs/kit@2.5.0)(svelte@4.2.9): - resolution: {integrity: sha512-qP+epzWVm0gnfFRx4OYq4Ps77WrQ5D81je/nybXbNAj9qyiQhpvxqyqDAYVr8/fOpvF7OJnUS2LmcW3+Ujdc/Q==} + /sveltekit-search-params@2.1.2(@sveltejs/kit@2.5.8)(svelte@4.2.17)(vite@5.2.11): + resolution: {integrity: sha512-wh5WSo46wz48MdWvpchVGrOjoDmbmsNJ7dUToSZ4L1SQ2LOasmTjAAlFhfG/EFvEhR34phRzLF7BjE0ZHzx1Uw==} peerDependencies: '@sveltejs/kit': ^1.0.0 || ^2.0.0 svelte: ^3.55.0 || ^4.0.0 || ^5.0.0 dependencies: - '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.9)(vite@5.2.9) - svelte: 4.2.9 + '@sveltejs/kit': 2.5.8(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.17)(vite@5.2.11) + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.17)(vite@5.2.11) + svelte: 4.2.17 + transitivePeerDependencies: + - supports-color + - vite dev: false - /sveltekit-superforms@1.13.4(@sveltejs/kit@2.5.0)(svelte@4.2.9)(zod@3.22.4): + /sveltekit-superforms@1.13.4(@sveltejs/kit@2.5.8)(svelte@4.2.17)(zod@3.23.8): resolution: {integrity: sha512-rM2+Ictaw7OAIorCLmvg82orci/mtO9ZouI4emtx8SyYngx9aED+eNZlHPLufgB6D7geL2a+hMSFtM3zmMQixQ==} peerDependencies: '@sveltejs/kit': 1.x || 2.x svelte: 3.x || 4.x zod: 3.x dependencies: - '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.9)(vite@5.2.9) + '@sveltejs/kit': 2.5.8(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.17)(vite@5.2.11) devalue: 4.3.2 klona: 2.0.6 - svelte: 4.2.9 - zod: 3.22.4 + svelte: 4.2.17 + zod: 3.23.8 dev: true /swap-case@2.0.2: @@ -9509,8 +9229,8 @@ packages: '@babel/runtime': 7.24.1 dev: false - /tailwindcss@3.4.1: - resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} + /tailwindcss@3.4.3: + resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -9572,8 +9292,8 @@ packages: resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} dev: true - /tinypool@0.8.2: - resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} + /tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} engines: {node: '>=14.0.0'} dev: true @@ -9662,8 +9382,8 @@ packages: resolution: {integrity: sha512-cTtNEtCYpcXeXR5AOD0YR0xZpXk1iZeTOuXT5vAGNowGGdgapC+k6m/lOVSkmDOUopZmPtmu311XeULIro4gUA==} dev: true - /tus-js-client@4.0.1: - resolution: {integrity: sha512-rbP0LNKIScy0137YUn0cOkBWsQS5z2815TjxrzzKKWWpiqJVcLhGyuiovm8uDpjzeP8ECCnZGiuSiGIPm5exOQ==} + /tus-js-client@4.1.0: + resolution: {integrity: sha512-e/nC/kJahvNYBcnwcqzuhFIvVELMMpbVXIoOOKdUn74SdQCvJd2JjqV2jZLv2EFOVbV4qLiO0lV7BxBXF21b6Q==} engines: {node: '>=18'} dependencies: buffer-from: 1.1.2 @@ -9675,7 +9395,7 @@ packages: url-parse: 1.5.10 dev: false - /tw-colors@3.3.1(tailwindcss@3.4.1): + /tw-colors@3.3.1(tailwindcss@3.4.3): resolution: {integrity: sha512-PH6NShNtDzPCm6zjl0SZe3kmdYSfDS7Sk4mWa9+KzaeSH1ZmpLRrBjZoBJKaFcDB3o7iuFPPg9+HtW05pGPQyQ==} peerDependencies: tailwindcss: '>=3.0.0' @@ -9683,7 +9403,7 @@ packages: color: 4.2.3 flat: 5.0.2 lodash.foreach: 4.5.0 - tailwindcss: 3.4.1 + tailwindcss: 3.4.3 dev: true /type-check@0.4.0: @@ -9708,8 +9428,8 @@ packages: engines: {node: '>=10'} dev: true - /type-fest@4.10.2: - resolution: {integrity: sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==} + /type-fest@4.18.2: + resolution: {integrity: sha512-+suCYpfJLAe4OXS6+PPXjW3urOS4IoP9waSiLuXfLgqZODKw/aWwASvzqE886wA0kQgGy0mIWyhd87VpqIy6Xg==} engines: {node: '>=16'} /typescript@5.3.3: @@ -9725,6 +9445,10 @@ packages: resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} dev: true + /ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} + dev: true + /uglify-js@3.17.4: resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} engines: {node: '>=0.8.0'} @@ -9813,6 +9537,16 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 + /update-browserslist-db@1.0.13(browserslist@4.23.0): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.1 + picocolors: 1.0.0 + /upper-case-first@2.0.2: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} dependencies: @@ -9878,8 +9612,8 @@ packages: vfile-message: 4.0.2 dev: false - /vite-node@1.2.2(@types/node@20.11.16): - resolution: {integrity: sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg==} + /vite-node@1.6.0(@types/node@20.12.12): + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: @@ -9887,7 +9621,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.2.9(@types/node@20.11.16) + vite: 5.2.11(@types/node@20.12.12) transitivePeerDependencies: - '@types/node' - less @@ -9899,21 +9633,21 @@ packages: - terser dev: true - /vite-plugin-graphql-codegen@3.3.6(@graphql-codegen/cli@5.0.0)(graphql@16.8.1)(vite@5.2.9): + /vite-plugin-graphql-codegen@3.3.6(@graphql-codegen/cli@5.0.2)(graphql@16.8.1)(vite@5.2.11): resolution: {integrity: sha512-TXMaUpPCfqzSpujjzFjVeeCH9JOSBwFWxOJottZ+gouQtNhnNpgXcj4nZep3om5Wq0UlDwDYLqXWrAa8XaZW1w==} peerDependencies: '@graphql-codegen/cli': ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 vite: ^2.7.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 dependencies: - '@graphql-codegen/cli': 5.0.0(@types/node@20.11.16)(graphql@16.8.1)(typescript@5.3.3) + '@graphql-codegen/cli': 5.0.2(@types/node@20.12.12)(graphql@16.8.1)(typescript@5.3.3) '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) graphql: 16.8.1 - vite: 5.2.9(@types/node@20.11.16) + vite: 5.2.11(@types/node@20.12.12) dev: true - /vite@5.2.9(@types/node@20.11.16): - resolution: {integrity: sha512-uOQWfuZBlc6Y3W/DTuQ1Sr+oIXWvqljLvS881SVmAj00d5RdgShLcuXWxseWPd4HXwiYBFW/vXHfKFeqj9uQnw==} + /vite@5.2.11(@types/node@20.12.12): + resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -9940,14 +9674,14 @@ packages: terser: optional: true dependencies: - '@types/node': 20.11.16 + '@types/node': 20.12.12 esbuild: 0.20.2 postcss: 8.4.38 rollup: 4.13.0 optionalDependencies: fsevents: 2.3.3 - /vitefu@0.2.5(vite@5.2.9): + /vitefu@0.2.5(vite@5.2.11): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -9955,17 +9689,17 @@ packages: vite: optional: true dependencies: - vite: 5.2.9(@types/node@20.11.16) + vite: 5.2.11(@types/node@20.12.12) - /vitest@1.2.2(@types/node@20.11.16): - resolution: {integrity: sha512-d5Ouvrnms3GD9USIK36KG8OZ5bEvKEkITFtnGv56HFaSlbItJuYr7hv2Lkn903+AvRAgSixiamozUVfORUekjw==} + /vitest@1.6.0(@types/node@20.12.12): + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': ^1.0.0 - '@vitest/ui': ^1.0.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -9982,14 +9716,13 @@ packages: jsdom: optional: true dependencies: - '@types/node': 20.11.16 - '@vitest/expect': 1.2.2 - '@vitest/runner': 1.2.2 - '@vitest/snapshot': 1.2.2 - '@vitest/spy': 1.2.2 - '@vitest/utils': 1.2.2 + '@types/node': 20.12.12 + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 acorn-walk: 8.3.2 - cac: 6.7.14 chai: 4.4.1 debug: 4.3.4 execa: 8.0.1 @@ -9998,11 +9731,11 @@ packages: pathe: 1.1.2 picocolors: 1.0.0 std-env: 3.7.0 - strip-literal: 1.3.0 + strip-literal: 2.1.0 tinybench: 2.6.0 - tinypool: 0.8.2 - vite: 5.2.9(@types/node@20.11.16) - vite-node: 1.2.2(@types/node@20.11.16) + tinypool: 0.8.4 + vite: 5.2.11(@types/node@20.12.12) + vite-node: 1.6.0(@types/node@20.12.12) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -10259,14 +9992,8 @@ packages: engines: {node: '>=12.20'} dev: true - /zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} - - /zone.js@0.11.4: - resolution: {integrity: sha512-DDh2Ab+A/B+9mJyajPjHFPWfYU1H+pdun4wnnk0OcQTNjem1XQSZ2CDW+rfZEUDjv5M19SBqAkjZi0x5wuB5Qw==} - dependencies: - tslib: 2.6.2 - dev: false + /zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} /zone.js@0.11.8: resolution: {integrity: sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==} diff --git a/frontend/schema.graphql b/frontend/schema.graphql index 93b8a9056..ce9aa959f 100644 --- a/frontend/schema.graphql +++ b/frontend/schema.graphql @@ -77,6 +77,11 @@ type CollectionSegmentInfo { hasPreviousPage: Boolean! } +type CreateGuestUserByAdminPayload { + lexAuthUser: LexAuthUser + errors: [CreateGuestUserByAdminError!] +} + type CreateOrganizationPayload { organization: Organization errors: [CreateOrganizationError!] @@ -97,6 +102,11 @@ type DbError implements Error { code: DbErrorCode! } +type DeleteDraftProjectPayload { + draftProject: DraftProject + errors: [DeleteDraftProjectError!] +} + type DeleteUserByAdminOrSelfPayload { user: User errors: [DeleteUserByAdminOrSelfError!] @@ -176,9 +186,11 @@ type Mutation { setProjectConfidentiality(input: SetProjectConfidentialityInput!): SetProjectConfidentialityPayload! leaveProject(input: LeaveProjectInput!): LeaveProjectPayload! removeProjectMember(input: RemoveProjectMemberInput!): RemoveProjectMemberPayload! + deleteDraftProject(input: DeleteDraftProjectInput!): DeleteDraftProjectPayload! @authorize(policy: "AdminRequiredPolicy") softDeleteProject(input: SoftDeleteProjectInput!): SoftDeleteProjectPayload! changeUserAccountBySelf(input: ChangeUserAccountBySelfInput!): ChangeUserAccountBySelfPayload! changeUserAccountByAdmin(input: ChangeUserAccountByAdminInput!): ChangeUserAccountByAdminPayload! @authorize(policy: "AdminRequiredPolicy") + createGuestUserByAdmin(input: CreateGuestUserByAdminInput!): CreateGuestUserByAdminPayload! @authorize(policy: "AdminRequiredPolicy") deleteUserByAdminOrSelf(input: DeleteUserByAdminOrSelfInput!): DeleteUserByAdminOrSelfPayload! setUserLocked(input: SetUserLockedInput!): SetUserLockedPayload! @authorize(policy: "AdminRequiredPolicy") } @@ -214,6 +226,7 @@ type Project { users: [ProjectUsers!]! changesets: [Changeset!]! hasAbandonedTransactions: Boolean! + isLanguageForgeProject: Boolean! parentId: UUID name: String! description: String @@ -356,10 +369,14 @@ union ChangeUserAccountByAdminError = NotFoundError | DbError | UniqueValueError union ChangeUserAccountBySelfError = NotFoundError | DbError | UniqueValueError +union CreateGuestUserByAdminError = NotFoundError | DbError | UniqueValueError | RequiredError + union CreateOrganizationError = DbError union CreateProjectError = DbError | AlreadyExistsError | ProjectCreatorsMustHaveEmail +union DeleteDraftProjectError = NotFoundError | DbError + union DeleteUserByAdminOrSelfError = NotFoundError | DbError union LeaveProjectError = NotFoundError | LastMemberCantLeaveError @@ -384,7 +401,7 @@ input BooleanOperationFilterInput { } input BulkAddProjectMembersInput { - projectId: UUID! + projectId: UUID usernames: [String!]! role: ProjectRole! passwordHash: String! @@ -420,6 +437,15 @@ input ChangeUserAccountBySelfInput { name: String! } +input CreateGuestUserByAdminInput { + email: String + name: String! + username: String + locale: String! + passwordHash: String! + passwordStrength: Int! +} + input CreateOrganizationInput { name: String! } @@ -450,6 +476,10 @@ input DateTimeOperationFilterInput { nlte: DateTime } +input DeleteDraftProjectInput { + draftProjectId: UUID! +} + input DeleteUserByAdminOrSelfInput { userId: UUID! } diff --git a/frontend/src/lib/app.postcss b/frontend/src/lib/app.postcss index bbef11b2a..7d170db1f 100644 --- a/frontend/src/lib/app.postcss +++ b/frontend/src/lib/app.postcss @@ -2,6 +2,18 @@ @tailwind components; @tailwind utilities; +@layer base { + :root { + --alert-link-color: #4100ff; + } + + @media (prefers-color-scheme: dark) { + :root { + --alert-link-color: #4dd0ff; + } + } +} + html, body, .drawer-side, @@ -151,8 +163,8 @@ input[readonly]:focus { border-radius: var(--rounded-badge); } -.alert a { - color: #0024b9; +.alert a:not(.btn) { + color: var(--alert-link-color, #0024b9); } .collapse input:hover ~ .collapse-title { diff --git a/frontend/src/lib/components/Projects/ProjectFilter.svelte b/frontend/src/lib/components/Projects/ProjectFilter.svelte index 04ff9b8c6..a208813e5 100644 --- a/frontend/src/lib/components/Projects/ProjectFilter.svelte +++ b/frontend/src/lib/components/Projects/ProjectFilter.svelte @@ -118,8 +118,8 @@ </div> {:else} <div class="alert alert-info gap-2"> - <span class="i-mdi-info-outline text-xl"></span> - <div class="flex_ items-center gap-2"> + <Icon icon="i-mdi-info-outline" size="text-2xl" /> + <div> <span class="mr-1">{$t('project.filter.select_user_from_table')}</span> <span class="btn btn-sm btn-square pointer-events-none"> <span class="i-mdi-dots-vertical"></span> diff --git a/frontend/src/lib/components/Users/CreateUser.svelte b/frontend/src/lib/components/Users/CreateUser.svelte new file mode 100644 index 000000000..f07b89155 --- /dev/null +++ b/frontend/src/lib/components/Users/CreateUser.svelte @@ -0,0 +1,104 @@ +<script lang="ts"> + import PasswordStrengthMeter from '$lib/components/PasswordStrengthMeter.svelte'; + import { SubmitButton, FormError, Input, MaybeProtectedForm, isEmail, lexSuperForm, passwordFormRules, DisplayLanguageSelect } from '$lib/forms'; + import t, { getLanguageCodeFromNavigator, locale } from '$lib/i18n'; + import { type RegisterResponse } from '$lib/user'; + import { getSearchParamValues } from '$lib/util/query-params'; + import { createEventDispatcher, onMount } from 'svelte'; + import { usernameRe } from '$lib/user'; + import { z } from 'zod'; + + export let allowUsernames = false; + export let skipTurnstile = false; + export let submitButtonText = $t('register.button_register'); + export let handleSubmit: (password: string, passwordStrength: number, name: string, email: string, locale: string, turnstileToken: string) => Promise<RegisterResponse>; + + const dispatch = createEventDispatcher(); + + type RegisterPageQueryParams = { + name: string; + email: string; + }; + let turnstileToken = ''; + + function validateAsEmail(value: string): boolean { + return !allowUsernames || value.includes('@'); + } + + // $locale is the locale that our i18n is using for them (i.e. the best available option we have for them) + // getLanguageCodeFromNavigator() gives us the language/locale they probably actually want. Maybe we'll support it in the future. + const userLocale = getLanguageCodeFromNavigator() ?? $locale; + const formSchema = z.object({ + name: z.string().trim().min(1, $t('register.name_missing')), + email: z.string().trim() + .min(1, $t('project_page.add_user.empty_user_field')) + .refine((value) => !validateAsEmail(value) || isEmail(value), $t('form.invalid_email')) + .refine((value) => validateAsEmail(value) || usernameRe.test(value), $t('register.invalid_username')), + password: passwordFormRules($t), + score: z.number(), + locale: z.string().trim().min(2).default(userLocale), + }); + + let { form, errors, message, enhance, submitting } = lexSuperForm(formSchema, async () => { + const { user, error } = await handleSubmit($form.password, $form.score, $form.name, $form.email, $form.locale, turnstileToken); + if (error) { + if (error.turnstile) { + $message = $t('turnstile.invalid'); + } + if (error.accountExists) { + $errors.email = [$t('register.account_exists')]; + } + if (error.invalidInput) { + $errors.email = [validateAsEmail($form.email) ? $t('form.invalid_email') : $t('register.invalid_username')]; + } + return; + } + if (user) { + dispatch('submitted'); + return; + } + throw new Error('Unknown error, no error from server, but also no user.'); + }); + onMount(() => { // query params not available during SSR + const urlValues = getSearchParamValues<RegisterPageQueryParams>(); + form.update((form) => { + if (urlValues.name) form.name = urlValues.name; + if (urlValues.email) form.email = urlValues.email; + return form; + }, { taint: true }); + }); +</script> + +<MaybeProtectedForm {skipTurnstile} {enhance} bind:turnstileToken> + <Input autofocus id="name" label={$t('register.label_name')} bind:value={$form.name} error={$errors.name} /> + <div class="contents email"> + <Input + id="email" + label={$t(allowUsernames ? 'register.label_email_or_username' : 'register.label_email')} + description={$t('register.description_email')} + type={allowUsernames ? 'text' : 'email'} + bind:value={$form.email} + error={$errors.email} + /> + </div> + <Input + id="password" + label={$t('register.label_password')} + type="password" + bind:value={$form.password} + error={$errors.password} + autocomplete="new-password" + /> + <PasswordStrengthMeter bind:score={$form.score} password={$form.password} /> + <DisplayLanguageSelect + bind:value={$form.locale} + /> + <FormError error={$message} /> + <SubmitButton loading={$submitting}>{submitButtonText}</SubmitButton> +</MaybeProtectedForm> + +<style lang="postcss"> + .email :global(.description) { + @apply text-success; + } +</style> diff --git a/frontend/src/lib/components/Users/CreateUserModal.svelte b/frontend/src/lib/components/Users/CreateUserModal.svelte new file mode 100644 index 000000000..6c8e5fde4 --- /dev/null +++ b/frontend/src/lib/components/Users/CreateUserModal.svelte @@ -0,0 +1,41 @@ +<script lang="ts"> + import { Modal } from '$lib/components/modals'; + import t from '$lib/i18n'; + import { helpLinks } from '$lib/components/help'; + import { type RegisterResponse } from '$lib/user'; + import CreateUser from '$lib/components/Users/CreateUser.svelte'; + import Markdown from 'svelte-exmarkdown'; + import { NewTabLinkRenderer } from '$lib/components/Markdown'; + import Icon from '$lib/icons/Icon.svelte'; + + let createUserModal: Modal; + export let handleSubmit: (password: string, passwordStrength: number, name: string, email: string, locale: string, turnstileToken: string) => Promise<RegisterResponse>; + + export async function open(): Promise<void> { + await createUserModal.openModal(true, true); + } +</script> + +<Modal bind:this={createUserModal} bottom> + <div class="alert alert-info gap-4 mb-4"> + <Icon icon="i-mdi-info-outline" size="text-2xl" /> + <div> + <h3 class="text-lg">{$t('common.did_you_know')}</h3> + <div> + <Markdown + md={$t('admin_dashboard.create_user_modal.help_create_single_guest_user', { helpLink: helpLinks.addProjectMember })} + plugins={[{ renderer: { a: NewTabLinkRenderer } }]} + /> + <Markdown + md={$t('admin_dashboard.create_user_modal.help_create_bulk_guest_users', { helpLink: helpLinks.bulkAddCreate })} + plugins={[{ renderer: { a: NewTabLinkRenderer } }]} + /> + </div> + </div> + </div> + <h1 class="text-center text-xl">{$t('admin_dashboard.create_user_modal.create_user')}</h1> + <CreateUser {handleSubmit} allowUsernames skipTurnstile + on:submitted={() => createUserModal.submitModal()} + submitButtonText={$t('admin_dashboard.create_user_modal.create_user')} + /> +</Modal> diff --git a/frontend/src/lib/forms/MaybeProtectedForm.svelte b/frontend/src/lib/forms/MaybeProtectedForm.svelte new file mode 100644 index 000000000..26df2cddd --- /dev/null +++ b/frontend/src/lib/forms/MaybeProtectedForm.svelte @@ -0,0 +1,19 @@ +<script lang="ts"> + import Form from './Form.svelte'; + import ProtectedForm from './ProtectedForm.svelte'; + import type { AnySuperForm } from './types'; + + export let enhance: AnySuperForm['enhance'] | undefined = undefined; + export let turnstileToken = ''; + export let skipTurnstile = false; +</script> + +{#if skipTurnstile} +<Form {enhance} on:submit> + <slot /> +</Form> +{:else} +<ProtectedForm {enhance} on:submit bind:turnstileToken> + <slot /> +</ProtectedForm> +{/if} diff --git a/frontend/src/lib/forms/index.ts b/frontend/src/lib/forms/index.ts index 3b72374b5..9564bc1cc 100644 --- a/frontend/src/lib/forms/index.ts +++ b/frontend/src/lib/forms/index.ts @@ -7,6 +7,7 @@ import Input from './Input.svelte'; import PlainInput from './PlainInput.svelte'; import Checkbox from './Checkbox.svelte'; import ProtectedForm, { type Token } from './ProtectedForm.svelte'; +import MaybeProtectedForm from './MaybeProtectedForm.svelte'; import Select from './Select.svelte'; import TextArea from './TextArea.svelte'; import { lexSuperForm } from './superforms'; @@ -27,6 +28,7 @@ export { Input, PlainInput, ProtectedForm, + MaybeProtectedForm, Select, TextArea, lexSuperForm, diff --git a/frontend/src/lib/gql/gql-client.ts b/frontend/src/lib/gql/gql-client.ts index 1ac423236..124743f60 100644 --- a/frontend/src/lib/gql/gql-client.ts +++ b/frontend/src/lib/gql/gql-client.ts @@ -62,7 +62,9 @@ function createGqlClient(_gqlEndpoint?: string): Client { cache.invalidate({__typename: 'User', id: args.input.userId}); }, bulkAddProjectMembers: (result, args: BulkAddProjectMembersMutationVariables, cache, _info) => { - cache.invalidate({__typename: 'Project', id: args.input.projectId}); + if (args.input.projectId) { + cache.invalidate({__typename: 'Project', id: args.input.projectId}); + } }, leaveProject: (result, args: LeaveProjectMutationVariables, cache, _info) => { cache.invalidate({__typename: 'Project', id: args.input.projectId}); diff --git a/frontend/src/lib/gql/mutations.ts b/frontend/src/lib/gql/mutations.ts index 73997f8d0..97499bd42 100644 --- a/frontend/src/lib/gql/mutations.ts +++ b/frontend/src/lib/gql/mutations.ts @@ -1,4 +1,4 @@ -import type { $OpResult, DeleteUserByAdminOrSelfInput, DeleteUserByAdminOrSelfMutation, SoftDeleteProjectMutation } from './types'; +import type { $OpResult, DeleteUserByAdminOrSelfInput, DeleteUserByAdminOrSelfMutation, SoftDeleteProjectMutation, DeleteDraftProjectMutation } from './types'; import { getClient } from './gql-client'; import { graphql } from './generated'; @@ -55,3 +55,30 @@ export async function _deleteProject(projectId: string): $OpResult<SoftDeletePro return result; } + +export async function _deleteDraftProject(draftProjectId: string): $OpResult<DeleteDraftProjectMutation> { + //language=GraphQL + const result = await getClient() + .mutation( + graphql(` + mutation DeleteDraftProject($input: DeleteDraftProjectInput!) { + deleteDraftProject(input: $input) { + draftProject { + id, + } + errors { + ... on Error { + message + } + } + } + } + `), + { + input: { draftProjectId } + }, + { additionalTypenames: ['Projects'] }, + ); + + return result; +} diff --git a/frontend/src/lib/i18n/locales/en.json b/frontend/src/lib/i18n/locales/en.json index a187e635d..70a88d5a3 100644 --- a/frontend/src/lib/i18n/locales/en.json +++ b/frontend/src/lib/i18n/locales/en.json @@ -39,6 +39,11 @@ } } }, + "create_user_modal": { + "create_user": "Create User", + "help_create_single_guest_user": "You can invite users to register and join a project by themselves with the **Add Project Member** button. See [Add Project Member]({helpLink}) for details.", + "help_create_bulk_guest_users": "You can also create and add users to a project in bulk. Look for the **Bulk Add/Create Members** button or see [Bulk Add/Create Project Members]({helpLink}) for details.", + }, "user_details_modal": { "registered": "Registered", "locked": "Locked", @@ -220,7 +225,7 @@ the [Linguistics Institute at Payap University](https://li.payap.ac.th/) in Chia "shared_password_description": "For new users", "usernames": "Logins or emails (one per line)", "usernames_description": "This will be the **Send/Receive login** for new users", - "invalid_username": "Invalid login/username: {username}. Can only use letters, numbers, and underscore (_) characters.", + "invalid_username": "Invalid login/username: {username}. Only letters, numbers, and underscore (_) characters are allowed.", "empty_user_field": "Please enter email addresses and/or logins", "creator_must_have_email": "You must have an email address in order to create a project.", "members_added": "{addedCount} new {addedCount, plural, one {member was} other {members were}} added to project.", @@ -384,13 +389,18 @@ If you don't see a dialog or already closed it, click the button below:", "register": { "title": "Register", "account_exists": "An account with this email already exists", + "invalid_username": "Invalid login/username. Only letters, numbers, and underscore (_) characters are allowed.", "button_register": "Register", "label_email": "Email", + "label_email_or_username": "Email or login/username", "description_email": "This will be your **Send/Receive login**", "label_name": "Name", "label_password": "Password", "name_missing": "Name missing", }, + "accept_invitation": { + "title": "Accept Invitation", + }, "reset_password": { "title": "Reset Password", "new_password": "New Password", @@ -522,6 +532,6 @@ If you don't see a dialog or already closed it, click the button below:", "or": "Or", "any": "Any", "yes_no": "{value, select, true {Yes} false {No} other {Unknown}}", - "any": "Any", + "did_you_know": "Did you know?", } } diff --git a/frontend/src/lib/layout/DevContent.svelte b/frontend/src/lib/layout/DevContent.svelte index 776af9015..e2de904f1 100644 --- a/frontend/src/lib/layout/DevContent.svelte +++ b/frontend/src/lib/layout/DevContent.svelte @@ -7,9 +7,9 @@ export let isDev = writable(false); if (browser) { - globalThis.enableDevMode = () => { - isDev.set(true); - localStorage.setItem('devMode', 'true'); + globalThis.enableDevMode = (enable = true) => { + isDev.set(enable); + enable ? localStorage.setItem('devMode', 'true') : localStorage.removeItem('devMode'); }; isDev.set(localStorage.getItem('devMode') === 'true'); } diff --git a/frontend/src/lib/user.ts b/frontend/src/lib/user.ts index b18821510..c747938da 100644 --- a/frontend/src/lib/user.ts +++ b/frontend/src/lib/user.ts @@ -5,7 +5,8 @@ import { deleteCookie, getCookie } from './util/cookies' import {hash} from '$lib/util/hash'; import { ensureErrorIsTraced, errorSourceTag } from './otel' import zxcvbn from 'zxcvbn'; -import { type AuthUserProject, ProjectRole, UserRole } from './gql/types'; +import { type AuthUserProject, ProjectRole, UserRole, type CreateGuestUserByAdminInput } from './gql/types'; +import { _createGuestUserByAdmin } from '../routes/(authenticated)/admin/+page'; type LoginError = 'BadCredentials' | 'Locked'; type LoginResult = { @@ -18,6 +19,7 @@ type RegisterResponseErrors = { /* eslint-disable @typescript-eslint/naming-convention */ TurnstileToken?: unknown, Email?: unknown, + Required?: unknown, // RequiredException is thrown if GQL input is invalid, e.g. missing both email *and* username for CreateUser /* eslint-enable @typescript-eslint/naming-convention */ } } @@ -55,6 +57,8 @@ export type LexAuthUser = { export const USER_LOAD_KEY = 'user:current'; export const AUTH_COOKIE_NAME = '.LexBoxAuth'; +export const usernameRe = /^[a-zA-Z0-9_]+$/; + export function getHomePath(user: LexAuthUser | null): string { return user?.isAdmin ? '/admin' : '/'; } @@ -81,9 +85,9 @@ export async function login(userId: string, password: string): Promise<LoginResu : { success: false, error: await response.text() as LoginError }; } -type RegisterResponse = { error?: { turnstile: boolean, accountExists: boolean }, user?: LexAuthUser }; -export async function register(password: string, passwordStrength: number, name: string, email: string, locale: string, turnstileToken: string): Promise<RegisterResponse> { - const response = await fetch('/api/User/registerAccount', { +export type RegisterResponse = { error?: { turnstile?: boolean, accountExists?: boolean, invalidInput?: boolean }, user?: LexAuthUser }; +export async function createUser(endpoint: string, password: string, passwordStrength: number, name: string, email: string, locale: string, turnstileToken: string): Promise<RegisterResponse> { + const response = await fetch(endpoint, { method: 'post', headers: { 'content-type': 'application/json', @@ -101,13 +105,55 @@ export async function register(password: string, passwordStrength: number, name: if (!response.ok) { const { errors } = await response.json() as RegisterResponseErrors; if (!errors) throw new Error('Missing error on non-ok response'); - return { error: { turnstile: 'TurnstileToken' in errors, accountExists: 'Email' in errors } }; + return { error: { turnstile: 'TurnstileToken' in errors, accountExists: 'Email' in errors, invalidInput: 'Required' in errors } }; } const responseJson = await response.json() as JwtTokenUser; const userJson: LexAuthUser = jwtToUser(responseJson); return { user: userJson }; } +export function register(password: string, passwordStrength: number, name: string, email: string, locale: string, turnstileToken: string): Promise<RegisterResponse> { + return createUser('/api/User/registerAccount', password, passwordStrength, name, email, locale, turnstileToken); +} +export function acceptInvitation(password: string, passwordStrength: number, name: string, email: string, locale: string, turnstileToken: string): Promise<RegisterResponse> { + return createUser('/api/User/acceptInvitation', password, passwordStrength, name, email, locale, turnstileToken); +} +export async function createGuestUserByAdmin(password: string, passwordStrength: number, name: string, email: string, locale: string, _turnstileToken: string): Promise<RegisterResponse> { + const passwordHash = await hash(password); + const gqlInput: CreateGuestUserByAdminInput = { + passwordHash, + passwordStrength, + name, + locale, + }; + if (email.includes('@')) { + gqlInput.email = email; + } else { + gqlInput.username = email; + } + const gqlResponse = await _createGuestUserByAdmin(gqlInput); + if (gqlResponse.error?.byType('UniqueValueError')) { + return { error: { accountExists: true }}; + } + if (gqlResponse.error?.byType('RequiredError')) { + return { error: { invalidInput: true }}; + } + if (!gqlResponse.data?.createGuestUserByAdmin.lexAuthUser ) { + return { error: { invalidInput: true }}; + } + const responseUser = gqlResponse.data?.createGuestUserByAdmin.lexAuthUser; + const user: LexAuthUser = { + ...responseUser, + email: responseUser.email ?? undefined, + username: responseUser.username ?? undefined, + locked: responseUser.locked ?? false, + emailVerified: responseUser.emailVerificationRequired ?? false, + canCreateProjects: responseUser.canCreateProjects ?? false, + createdByAdmin: responseUser.createdByAdmin ?? false, + emailOrUsername: (responseUser.email ?? responseUser.username) as string, + } + return { user } +} export function getUser(cookies: Cookies): LexAuthUser | null { const token = getCookie(AUTH_COOKIE_NAME, cookies); diff --git a/frontend/src/routes/(authenticated)/admin/+page.svelte b/frontend/src/routes/(authenticated)/admin/+page.svelte index f5a02bc2c..5227fdc2b 100644 --- a/frontend/src/routes/(authenticated)/admin/+page.svelte +++ b/frontend/src/routes/(authenticated)/admin/+page.svelte @@ -21,8 +21,9 @@ import { Button } from '$lib/forms'; import { PageBreadcrumb } from '$lib/layout'; import AdminTabs, { type AdminTabId } from './AdminTabs.svelte'; + import { createGuestUserByAdmin } from '$lib/user'; + import CreateUserModal from '$lib/components/Users/CreateUserModal.svelte'; import type { Confidentiality } from '$lib/components/Projects'; - import { helpLinks } from '$lib/components/help'; export let data: PageData; $: projects = data.projects; @@ -70,6 +71,7 @@ } let userModal: UserModal; + let createUserModal: CreateUserModal; let deleteUserModal: DeleteUserModal; let formModal: EditUserAccount; @@ -125,14 +127,13 @@ </Badge> </div> </div> - <a class="btn btn-sm btn-success btn-outline max-xs:btn-square group" - href={helpLinks.bulkAddCreate} - target="_blank" rel="external"> + <button class="btn btn-sm btn-success max-xs:btn-square" + on:click={() => createUserModal.open()}> <span class="admin-tabs:hidden"> - {$t('admin_dashboard.how_to_create_users')} + {$t('admin_dashboard.create_user_modal.create_user')} </span> - <span class="i-mdi-plus text-2xl group-hover:i-mdi-open-in-new" /> - </a> + <span class="i-mdi-plus text-2xl" /> + </button> </div> </AdminTabs> <div class="mt-4"> @@ -246,4 +247,5 @@ <EditUserAccount bind:this={formModal} {deleteUser} currUser={data.user} /> <DeleteUserModal bind:this={deleteUserModal} i18nScope="admin_dashboard.form_modal.delete_user" /> <UserModal bind:this={userModal}/> + <CreateUserModal handleSubmit={createGuestUserByAdmin} bind:this={createUserModal}/> </main> diff --git a/frontend/src/routes/(authenticated)/admin/+page.ts b/frontend/src/routes/(authenticated)/admin/+page.ts index e68f8c052..5a2ea2f7f 100644 --- a/frontend/src/routes/(authenticated)/admin/+page.ts +++ b/frontend/src/routes/(authenticated)/admin/+page.ts @@ -9,6 +9,8 @@ import type { $OpResult, ChangeUserAccountByAdminInput, ChangeUserAccountByAdminMutation, + CreateGuestUserByAdminInput, + CreateGuestUserByAdminMutation, DraftProjectFilterInput, ProjectFilterInput, SetUserLockedInput, @@ -161,6 +163,44 @@ export async function _changeUserAccountByAdmin(input: ChangeUserAccountByAdminI return result; } +export async function _createGuestUserByAdmin(input: CreateGuestUserByAdminInput): $OpResult<CreateGuestUserByAdminMutation> { + //language=GraphQL + const result = await getClient() + .mutation( + graphql(` + mutation CreateGuestUserByAdmin($input: CreateGuestUserByAdminInput!) { + createGuestUserByAdmin(input: $input) { + lexAuthUser { + id + name + email + username + role + isAdmin + locked + emailVerificationRequired + canCreateProjects + createdByAdmin + locale + projects { + projectId + role + } + } + errors { + __typename + ... on Error { + message + } + } + } + } + `), + { input: input } + ) + return result; +} + export async function _setUserLocked(input: SetUserLockedInput): $OpResult<SetUserLockedMutation> { //language=GraphQL const result = await getClient() diff --git a/frontend/src/routes/(authenticated)/admin/AdminProjects.svelte b/frontend/src/routes/(authenticated)/admin/AdminProjects.svelte index 8a99bc991..d44be5e4e 100644 --- a/frontend/src/routes/(authenticated)/admin/AdminProjects.svelte +++ b/frontend/src/routes/(authenticated)/admin/AdminProjects.svelte @@ -15,7 +15,7 @@ import {DialogResponse} from '$lib/components/modals'; import ConfirmDeleteModal from '$lib/components/modals/ConfirmDeleteModal.svelte'; import {Button} from '$lib/forms'; - import {_deleteProject} from '$lib/gql/mutations'; + import {_deleteProject, _deleteDraftProject} from '$lib/gql/mutations'; import t, {number} from '$lib/i18n'; import {TrashIcon} from '$lib/icons'; import {useNotifications} from '$lib/notify'; @@ -59,9 +59,10 @@ $: shownProjects = limitResults ? limit(filteredProjects, lastLoadUsedActiveFilter ? DEFAULT_PAGE_SIZE : 10) : filteredProjects; let deleteProjectModal: ConfirmDeleteModal; - async function softDeleteProject(project: ProjectItemWithDraftStatus): Promise<void> { + async function deleteProjectOrDraft(project: ProjectItemWithDraftStatus): Promise<void> { + const deleteFn = project.isDraft ? _deleteProject : _deleteDraftProject; const result = await deleteProjectModal.open(project.name, async () => { - const { error } = await _deleteProject(project.id); + const { error } = await deleteFn(project.id); return error?.message; }); if (result.response === DialogResponse.Submit) { @@ -117,7 +118,7 @@ </button> <ul slot="content" class="menu"> <li> - <button class="text-error whitespace-nowrap" on:click={() => softDeleteProject(project)}> + <button class="text-error whitespace-nowrap" on:click={() => deleteProjectOrDraft(project)}> <TrashIcon /> {$t('delete_project_modal.submit')} </button> diff --git a/frontend/src/routes/(authenticated)/project/[project_code]/+page.svelte b/frontend/src/routes/(authenticated)/project/[project_code]/+page.svelte index d470585ce..6e9b6df43 100644 --- a/frontend/src/routes/(authenticated)/project/[project_code]/+page.svelte +++ b/frontend/src/routes/(authenticated)/project/[project_code]/+page.svelte @@ -234,12 +234,14 @@ <HeaderPage wide title={project.name}> <svelte:fragment slot="actions"> {#if project.type === ProjectType.FlEx && $isDev} + {#if project.isLanguageForgeProject} <a href="./{project.code}/viewer" class="btn btn-neutral text-[#DCA54C] flex items-center gap-2"> {$t('project_page.open_with_viewer')} <span class="i-mdi-dictionary text-2xl" /> </a> - <OpenInFlexModal bind:this={openInFlexModal} {project}/> - <OpenInFlexButton projectId={project.id} on:click={openInFlexModal.open}/> + {/if} + <OpenInFlexModal bind:this={openInFlexModal} {project}/> + <OpenInFlexButton projectId={project.id} on:click={openInFlexModal.open}/> {:else} <Dropdown> <button class="btn btn-primary"> diff --git a/frontend/src/routes/(authenticated)/project/[project_code]/+page.ts b/frontend/src/routes/(authenticated)/project/[project_code]/+page.ts index a523be2e7..9141f6979 100644 --- a/frontend/src/routes/(authenticated)/project/[project_code]/+page.ts +++ b/frontend/src/routes/(authenticated)/project/[project_code]/+page.ts @@ -45,6 +45,7 @@ export async function load(event: PageLoadEvent) { createdDate retentionPolicy isConfidential + isLanguageForgeProject users { id role diff --git a/frontend/src/routes/(authenticated)/project/[project_code]/BulkAddProjectMembers.svelte b/frontend/src/routes/(authenticated)/project/[project_code]/BulkAddProjectMembers.svelte index 7507eb021..3355eb3ac 100644 --- a/frontend/src/routes/(authenticated)/project/[project_code]/BulkAddProjectMembers.svelte +++ b/frontend/src/routes/(authenticated)/project/[project_code]/BulkAddProjectMembers.svelte @@ -13,6 +13,7 @@ import { distinct } from '$lib/util/array'; import PasswordStrengthMeter from '$lib/components/PasswordStrengthMeter.svelte'; import { SupHelp, helpLinks } from '$lib/components/help'; + import { usernameRe } from '$lib/user'; enum BulkAddSteps { Add, @@ -35,8 +36,6 @@ let existingMembers: BulkAddProjectMembersResult['existingMembers'] = []; $: addedCount = addedMembers.length + createdMembers.length; - const usernameRe = /^[a-zA-Z0-9_]+$/; - function validateBulkAddInput(usernames: string[]): FormSubmitReturn<typeof schema> { if (usernames.length === 0) return { usernamesText: [$t('project_page.bulk_add_members.empty_user_field')] }; @@ -90,7 +89,7 @@ </script> <AdminContent> - <BadgeButton variant="badge-success" icon="i-mdi-account-plus-outline" on:click={openModal}> + <BadgeButton variant="badge-success" icon="i-mdi-account-multiple-plus-outline" on:click={openModal}> {$t('project_page.bulk_add_members.add_button')} </BadgeButton> diff --git a/frontend/src/routes/(authenticated)/project/[project_code]/SendReceiveUrlField.svelte b/frontend/src/routes/(authenticated)/project/[project_code]/SendReceiveUrlField.svelte index fc728e745..a5886dfaf 100644 --- a/frontend/src/routes/(authenticated)/project/[project_code]/SendReceiveUrlField.svelte +++ b/frontend/src/routes/(authenticated)/project/[project_code]/SendReceiveUrlField.svelte @@ -9,7 +9,7 @@ $: projectHgUrl = import.meta.env.DEV ? `http://hg.${$page.url.hostname}/${projectCode}` : $page.url.host.includes('develop') || $page.url.host.includes('.dev') ? `https://hg-develop.lexbox.org/${projectCode}` - : $page.url.host.includes('staging') ? `https://hg-staging.${$page.url.host.replace('depot', 'forge')}/${projectCode}` + : $page.url.host.includes('staging') ? `https://hg-${$page.url.host.replace('depot', 'forge')}/${projectCode}` : `https://hg-public.${$page.url.host.replace('depot', 'forge')}/${projectCode}`; </script> diff --git a/frontend/src/routes/(unauthenticated)/acceptInvitation/+page.svelte b/frontend/src/routes/(unauthenticated)/acceptInvitation/+page.svelte new file mode 100644 index 000000000..dd8af1c28 --- /dev/null +++ b/frontend/src/routes/(unauthenticated)/acceptInvitation/+page.svelte @@ -0,0 +1,15 @@ +<script lang="ts"> + import { TitlePage } from '$lib/layout'; + import t from '$lib/i18n'; + import CreateUser from '$lib/components/Users/CreateUser.svelte'; + import { goto } from '$app/navigation'; + import { acceptInvitation } from '$lib/user'; + + async function onSubmit(): Promise<void> { + await goto('/home', { invalidateAll: true }); // invalidate so we get the user from the server + } +</script> + +<TitlePage title={$t('accept_invitation.title')}> + <CreateUser handleSubmit={acceptInvitation} on:submitted={onSubmit} /> +</TitlePage> diff --git a/frontend/src/routes/(unauthenticated)/register/+page.svelte b/frontend/src/routes/(unauthenticated)/register/+page.svelte index 2ec6ba42a..8213ed750 100644 --- a/frontend/src/routes/(unauthenticated)/register/+page.svelte +++ b/frontend/src/routes/(unauthenticated)/register/+page.svelte @@ -1,89 +1,15 @@ <script lang="ts"> - import { goto } from '$app/navigation'; - import PasswordStrengthMeter from '$lib/components/PasswordStrengthMeter.svelte'; - import { SubmitButton, FormError, Input, ProtectedForm, lexSuperForm, passwordFormRules, DisplayLanguageSelect } from '$lib/forms'; - import t, { getLanguageCodeFromNavigator, locale } from '$lib/i18n'; import { TitlePage } from '$lib/layout'; + import t from '$lib/i18n'; + import CreateUser from '$lib/components/Users/CreateUser.svelte'; + import { goto } from '$app/navigation'; import { register } from '$lib/user'; - import { getSearchParamValues } from '$lib/util/query-params'; - import { onMount } from 'svelte'; - import { z } from 'zod'; - - type RegisterPageQueryParams = { - name: string; - email: string; - }; - let turnstileToken = ''; - // $locale is the locale that our i18n is using for them (i.e. the best available option we have for them) - // getLanguageCodeFromNavigator() gives us the language/locale they probably actually want. Maybe we'll support it in the future. - const userLocale = getLanguageCodeFromNavigator() ?? $locale; - const formSchema = z.object({ - name: z.string().trim().min(1, $t('register.name_missing')), - email: z.string().email($t('form.invalid_email')), - password: passwordFormRules($t), - score: z.number(), - locale: z.string().trim().min(2).default(userLocale), - }); - let { form, errors, message, enhance, submitting } = lexSuperForm(formSchema, async () => { - const { user, error } = await register($form.password, $form.score, $form.name, $form.email, $form.locale, turnstileToken); - if (error) { - if (error.turnstile) { - $message = $t('turnstile.invalid'); - } - if (error.accountExists) { - $errors.email = [$t('register.account_exists')]; - } - return; - } - if (user) { - await goto('/home', { invalidateAll: true }); // invalidate so we get the user from the server - return; - } - throw new Error('Unknown error, no error from server, but also no user.'); - }); - onMount(() => { // query params not available during SSR - const urlValues = getSearchParamValues<RegisterPageQueryParams>(); - form.update((form) => { - if (urlValues.name) form.name = urlValues.name; - if (urlValues.email) form.email = urlValues.email; - return form; - }, { taint: true }); - }); + async function onSubmit(): Promise<void> { + await goto('/home', { invalidateAll: true }); // invalidate so we get the user from the server + } </script> <TitlePage title={$t('register.title')}> - <ProtectedForm {enhance} bind:turnstileToken> - <Input autofocus id="name" label={$t('register.label_name')} bind:value={$form.name} error={$errors.name} /> - <div class="contents email"> - <Input - id="email" - label={$t('register.label_email')} - description={$t('register.description_email')} - type="email" - bind:value={$form.email} - error={$errors.email} - /> - </div> - <Input - id="password" - label={$t('register.label_password')} - type="password" - bind:value={$form.password} - error={$errors.password} - autocomplete="new-password" - /> - <PasswordStrengthMeter bind:score={$form.score} password={$form.password} /> - <DisplayLanguageSelect - bind:value={$form.locale} - /> - <FormError error={$message} /> - <SubmitButton loading={$submitting}>{$t('register.button_register')}</SubmitButton> - </ProtectedForm> + <CreateUser handleSubmit={register} on:submitted={onSubmit} /> </TitlePage> - -<style lang="postcss"> - .email :global(.description) { - @apply text-success; - } -</style> diff --git a/frontend/tests/emailWorkflow.test.ts b/frontend/tests/emailWorkflow.test.ts index 02136e3c5..1661db416 100644 --- a/frontend/tests/emailWorkflow.test.ts +++ b/frontend/tests/emailWorkflow.test.ts @@ -4,7 +4,7 @@ import { deleteUser, getCurrentUserId, loginAs, logout } from './utils/authHelpe import { AdminDashboardPage } from './pages/adminDashboardPage'; import { EmailSubjects } from './pages/mailPages'; import { LoginPage } from './pages/loginPage'; -import { RegisterPage } from './pages/registerPage'; +import { AcceptInvitationPage } from './pages/acceptInvitationPage'; import { ResetPasswordPage } from './pages/resetPasswordPage'; import { UserAccountSettingsPage } from './pages/userAccountSettingsPage'; import { UserDashboardPage } from './pages/userDashboardPage'; @@ -82,6 +82,7 @@ test('forgot password', async ({ page, tempUser }) => { const forgotPasswordPage = await loginPage.clickForgotPassword(); await forgotPasswordPage.fillForm(tempUser.email); await forgotPasswordPage.submit(); + await page.locator(':text("Check Your Inbox")').first().waitFor(); // Use reset password link const inboxPage = await getInbox(page, tempUser.mailinatorId).goto(); @@ -126,13 +127,14 @@ test('register via new-user invitation email', async ({ page }) => { await addMemberModal.emailField.fill(newEmail); await addMemberModal.selectEditorRole(); await addMemberModal.submitButton.click(); + await page.locator(':text("has been sent an invitation email")').waitFor(); // Check invite link returnTo is relative path, not absolute const inboxPage = await getInbox(page, uuid).goto(); const emailPage = await inboxPage.openEmail(EmailSubjects.ProjectInvitation); const invitationUrl = await emailPage.getFirstLanguageDepotUrl(); expect(invitationUrl).not.toBeNull(); - expect(invitationUrl!).toContain('register'); + expect(invitationUrl!).toContain('acceptInvitation'); expect(invitationUrl!).toContain('returnTo='); expect(invitationUrl!).not.toContain('returnTo=http'); @@ -140,11 +142,11 @@ test('register via new-user invitation email', async ({ page }) => { const pagePromise = emailPage.page.context().waitForEvent('page'); await emailPage.clickFirstLanguageDepotUrl(); const newPage = await pagePromise; - const registerPage = await new RegisterPage(newPage).waitFor(); + const acceptPage = await new AcceptInvitationPage(newPage).waitFor(); await expect(newPage.getByLabel('Email')).toHaveValue(newEmail); - await registerPage.fillForm(`Test user ${uuid}`, newEmail, defaultPassword); + await acceptPage.fillForm(`Test user ${uuid}`, defaultPassword); - await registerPage.submit(); + await acceptPage.submit(); const userDashboardPage = await new UserDashboardPage(newPage).waitFor(); // Register current user ID to be cleaned up even if test fails later on diff --git a/frontend/tests/errorHandling.test.ts b/frontend/tests/errorHandling.test.ts index 7a3906286..ce1981500 100644 --- a/frontend/tests/errorHandling.test.ts +++ b/frontend/tests/errorHandling.test.ts @@ -148,6 +148,7 @@ test('page load 403 on home page is redirected to login', async ({ page, tempUse const forgotPasswordPage = await loginPage.clickForgotPassword(); await forgotPasswordPage.fillForm(tempUser.email); await forgotPasswordPage.submit(); + await page.locator(':text("Check Your Inbox")').first().waitFor(); // - Get JWT from reset password link const inboxPage = await getInbox(page, tempUser.mailinatorId).goto(); diff --git a/frontend/tests/fixtures.ts b/frontend/tests/fixtures.ts index 390ed5e9f..f5fdde33e 100644 --- a/frontend/tests/fixtures.ts +++ b/frontend/tests/fixtures.ts @@ -25,6 +25,7 @@ type CreateProjectResponse = {data: {createProject: {createProjectResponse: {id: type Fixtures = { contextFactory: (options: BrowserContextOptions) => Promise<BrowserContext>, + uniqueTestId: string, tempUser: TempUser, tempProject: TempProject, tempDir: string, @@ -57,6 +58,14 @@ export const test = base.extend<Fixtures>({ addUnexpectedResponseListener(context); await use(context); }, + // eslint-disable-next-line no-empty-pattern + uniqueTestId: async ({ }, use, testInfo) => { + // testInfo.testId is only guarunteed to be unique within a session (https://playwright.dev/docs/api/class-testcase#test-case-id) + // i.e. it's not unique enough if a test fails to cleanup. We've had that problem. + const shortId = randomUUID().split('-')[0]; + const testId = `${testInfo.testId}-${shortId}`; + await use(testId); + }, tempUser: async ({ browser, page }, use, testInfo) => { const mailinatorId = randomUUID(); const email = `${mailinatorId}@mailinator.com`; @@ -76,13 +85,13 @@ export const test = base.extend<Fixtures>({ await deleteUser(context.request, tempUser.id); await context.close(); }, - tempProject: async ({ page }, use, testInfo) => { + tempProject: async ({ page, uniqueTestId }, use, testInfo) => { const titleForCode = testInfo.title .replaceAll(' ','-') - .replaceAll(/[^a-z-]/g,''); - const code = `test-${titleForCode}-${testInfo.testId}`; - const name = `Temporary project for ${testInfo.title} unit test ${testInfo.testId}`; + .replaceAll(/[^a-z-]/g, ''); + const code = `test-${titleForCode}-${uniqueTestId}`; + const name = `Temporary project for ${testInfo.title} unit test ${uniqueTestId}`; const loginData = { emailOrUsername: 'admin', password: testEnv.defaultPassword, @@ -120,8 +129,8 @@ export const test = base.extend<Fixtures>({ expect(deleteResponse.ok()).toBeTruthy(); }, // eslint-disable-next-line no-empty-pattern - tempDir: async ({}, use, testInfo) => { - const dirname = await mkdtemp(join(tmpdir(), `e2etmp-${testInfo.testId}-`)); + tempDir: async ({ uniqueTestId }, use) => { + const dirname = await mkdtemp(join(tmpdir(), `e2etmp-${uniqueTestId}-`)); await use(dirname); try { await rm(dirname, { recursive: true, force: true }); diff --git a/frontend/tests/pages/acceptInvitationPage.ts b/frontend/tests/pages/acceptInvitationPage.ts new file mode 100644 index 000000000..f28f300bd --- /dev/null +++ b/frontend/tests/pages/acceptInvitationPage.ts @@ -0,0 +1,18 @@ +import type { Page } from '@playwright/test'; +import { BasePage } from './basePage'; + +export class AcceptInvitationPage extends BasePage { + constructor(page: Page) { + super(page, page.getByRole('heading', {name: 'Accept Invitation'}), `/acceptInvitation`); + } + + async fillForm(name: string, password: string, email?: string): Promise<void> { + await this.page.getByLabel('Name').fill(name); + await this.page.getByLabel('Password').fill(password); + if (email) await this.page.getByLabel('Email').fill(email); + } + + async submit(): Promise<void> { + await this.page.getByRole('button', {name: 'Register'}).click(); + } +} diff --git a/frontend/viewer/package.json b/frontend/viewer/package.json index 3967d7819..c875a8899 100644 --- a/frontend/viewer/package.json +++ b/frontend/viewer/package.json @@ -19,27 +19,27 @@ "check": "svelte-check --tsconfig ./tsconfig.json" }, "devDependencies": { - "@egoist/tailwindcss-icons": "^1.7.4", - "@iconify-json/mdi": "^1.1.64", + "@egoist/tailwindcss-icons": "^1.8.0", + "@iconify-json/mdi": "^1.1.66", "@mdi/js": "^7.4.47", - "@sveltejs/vite-plugin-svelte": "^3.0.2", - "@tsconfig/svelte": "^5.0.2", - "svelte": "^4.2.10", - "svelte-check": "^3.6.4", - "tailwindcss": "^3.4.1", + "@sveltejs/vite-plugin-svelte": "^3.1.0", + "@tsconfig/svelte": "^5.0.4", + "svelte": "^4.2.17", + "svelte-check": "^3.7.1", + "tailwindcss": "^3.4.3", "tslib": "^2.6.2", "tw-colors": "^3.3.1", "typescript": "^5.3.3", - "vite": "^5.2.9" + "vite": "^5.2.11" }, "dependencies": { "@microsoft/dotnet-js-interop": "^8.0.0", "@microsoft/signalr": "^8.0.0", - "autoprefixer": "^10.4.17", + "autoprefixer": "^10.4.19", "fast-json-patch": "^3.1.1", - "postcss": "^8.4.35", - "svelte-preprocess": "^5.1.3", + "postcss": "^8.4.38", + "svelte-preprocess": "^5.1.4", "svelte-ux": "latest", - "type-fest": "^4.10.2" + "type-fest": "^4.18.2" } } diff --git a/hgweb/Dockerfile b/hgweb/Dockerfile index 73c4a5864..8aaea3599 100644 --- a/hgweb/Dockerfile +++ b/hgweb/Dockerfile @@ -48,4 +48,4 @@ VOLUME /var/hg/repos ARG APP_VERSION ENV APP_VERSION=$APP_VERSION -ENV OTEL_ENABLED=ON +ENV OTEL_RESOURCE_ATTRIBUTES="service.name=hgweb,service.version=${APP_VERSION}" diff --git a/hgweb/command-runner.sh b/hgweb/command-runner.sh index f94015b03..d03074d54 100644 --- a/hgweb/command-runner.sh +++ b/hgweb/command-runner.sh @@ -1,7 +1,7 @@ #!/bin/bash # Define the list of allowed commands -allowed_commands=("verify" "tip" "wesaylexentrycount" "lexentrycount" "recover", "invalidatedircache") +allowed_commands=("verify" "tip" "wesaylexentrycount" "lexentrycount" "recover" "healthz" "invalidatedircache") # Get the project code and command name from the URL IFS='/' read -ra PATH_SEGMENTS <<< "$PATH_INFO" @@ -29,6 +29,15 @@ if [[ ! " ${allowed_commands[@]} " =~ " ${command_name} " ]]; then exit 1 fi +if [[ $command_name == "healthz" ]]; then + echo "lexbox-version: $APP_VERSION" + echo "Status: 200 OK" + echo "Content-type: text/plain" + echo "" + echo "$APP_VERSION" + exit 0 +fi + # Start outputting the result right away so the HTTP connection won't be timed out echo "Content-type: text/plain" echo "" diff --git a/hgweb/hg.conf b/hgweb/hg.conf index 23da62558..4c6030e2d 100644 --- a/hgweb/hg.conf +++ b/hgweb/hg.conf @@ -26,6 +26,7 @@ ServerName localhost </IfVersion> </Directory> + SetEnv APP_VERSION ${APP_VERSION} ScriptAliasMatch "^/command/(.*)" "/usr/local/www/commands/command-runner.sh/$1" <Directory /usr/local/www/commands/> Options +ExecCGI diff --git a/hgweb/hgweb.wsgi b/hgweb/hgweb.wsgi index 1941e46e6..a95415b9c 100644 --- a/hgweb/hgweb.wsgi +++ b/hgweb/hgweb.wsgi @@ -23,7 +23,6 @@ if os.getenv('ENABLE_DEMAND_IMPORT', 'false').lower() in ['1', 'true', 'yes']: else: demandimport.disable() -from opentelemetry.sdk.resources import SERVICE_NAME, Resource from opentelemetry import trace from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter from opentelemetry.sdk.trace import TracerProvider @@ -32,10 +31,7 @@ from opentelemetry.sdk.trace.export import ( ConsoleSpanExporter, ) -resource = Resource(attributes={ - SERVICE_NAME: "hgweb" -}) -provider = TracerProvider(resource=resource) +provider = TracerProvider() processor = BatchSpanProcessor(OTLPSpanExporter()) provider.add_span_processor(processor) diff --git a/hgweb/opentelemetry_module.conf b/hgweb/opentelemetry_module.conf index e27cf710b..63e858576 100644 --- a/hgweb/opentelemetry_module.conf +++ b/hgweb/opentelemetry_module.conf @@ -13,7 +13,6 @@ LoadFile /opt/opentelemetry-webserver-sdk/sdk_lib/lib/libopentelemetry_exporter_ LoadFile /opt/opentelemetry-webserver-sdk/sdk_lib/lib/libopentelemetry_webserver_sdk.so #Load the Apache Module. In this example for Apache LoadModule otel_apache_module /opt/opentelemetry-webserver-sdk/WebServerModule/Apache/libmod_apache_otel.so -ApacheModuleEnabled ${OTEL_ENABLED} #ApacheModule Otel Exporter details ApacheModuleOtelSpanExporter otlp @@ -37,7 +36,6 @@ ApacheModuleServiceInstanceId ${APP_VERSION} ApacheModuleResolveBackends ON #https://github.com/open-telemetry/opentelemetry-cpp-contrib/blob/2a0db982f3d7ee91dfbe8150435e49e837bfb7ce/instrumentation/otel-webserver-module/src/apache/ApacheTracing.cpp#L90 -ApacheModuleTraceAsError ${OTEL_ENABLED} #ApacheModuleWebserverContext DemoService DemoServiceNamespace DemoInstanceId #ApacheModuleSegmentType custom diff --git a/skaffold.yaml b/skaffold.yaml index 371099516..f8f9d27ae 100644 --- a/skaffold.yaml +++ b/skaffold.yaml @@ -30,6 +30,8 @@ build: context: hgweb docker: dockerfile: Dockerfile + buildArgs: + APP_VERSION: dockerDev local: useBuildkit: true concurrency: 2 @@ -48,11 +50,6 @@ portForward: resourceName: lexbox namespace: languagedepot port: 18888 - # Svelte-Kit frontend - - resourceType: Service - resourceName: ui - namespace: languagedepot - port: 3000 - resourceType: Service resourceName: db namespace: languagedepot