diff --git a/.gitignore b/.gitignore index 9c16977..5a2b908 100644 --- a/.gitignore +++ b/.gitignore @@ -6,8 +6,6 @@ config.ini *.DotSettings.user proxy-config.json .DS_Store -.idea/.idea.Foxnouns.NET/.idea/dataSources.xml -.idea/.idea.Foxnouns.NET/.idea/sqldialects.xml docker/config.ini docker/proxy-config.json diff --git a/.husky/task-runner.json b/.husky/task-runner.json index 576b8bc..8e50f6a 100644 --- a/.husky/task-runner.json +++ b/.husky/task-runner.json @@ -4,31 +4,14 @@ { "name": "run-prettier", "command": "pnpm", - "args": [ - "prettier", - "-w", - "${staged}" - ], - "include": [ - "Foxnouns.Frontend/**/*.ts", - "Foxnouns.Frontend/**/*.json", - "Foxnouns.Frontend/**/*.scss", - "Foxnouns.Frontend/**/*.js", - "Foxnouns.Frontend/**/*.svelte" - ], - "cwd": "Foxnouns.Frontend/", + "args": ["format"], "pathMode": "absolute" }, { "name": "run-csharpier", "command": "dotnet", - "args": [ - "csharpier", - "${staged}" - ], - "include": [ - "**/*.cs" - ] + "args": [ "csharpier", "${staged}" ], + "include": [ "**/*.cs" ] } ] } diff --git a/Foxnouns.Backend/Controllers/Moderation/ReportsController.cs b/Foxnouns.Backend/Controllers/Moderation/ReportsController.cs index c46defb..3e9f905 100644 --- a/Foxnouns.Backend/Controllers/Moderation/ReportsController.cs +++ b/Foxnouns.Backend/Controllers/Moderation/ReportsController.cs @@ -18,7 +18,6 @@ using Foxnouns.Backend.Database.Models; using Foxnouns.Backend.Dto; using Foxnouns.Backend.Middleware; using Foxnouns.Backend.Services; -using Foxnouns.Backend.Utils; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Newtonsoft.Json; @@ -50,8 +49,6 @@ public class ReportsController( [FromBody] CreateReportRequest req ) { - ValidationUtils.Validate([("context", ValidationUtils.ValidateReportContext(req.Context))]); - User target = await db.ResolveUserAsync(id); if (target.Id == CurrentUser!.Id) @@ -99,7 +96,6 @@ public class ReportsController( TargetUserId = target.Id, TargetMemberId = null, Reason = req.Reason, - Context = req.Context, TargetType = ReportTargetType.User, TargetSnapshot = snapshot, }; @@ -116,8 +112,6 @@ public class ReportsController( [FromBody] CreateReportRequest req ) { - ValidationUtils.Validate([("context", ValidationUtils.ValidateReportContext(req.Context))]); - Member target = await db.ResolveMemberAsync(id); if (target.User.Id == CurrentUser!.Id) @@ -164,7 +158,6 @@ public class ReportsController( TargetUserId = target.User.Id, TargetMemberId = target.Id, Reason = req.Reason, - Context = req.Context, TargetType = ReportTargetType.Member, TargetSnapshot = snapshot, }; diff --git a/Foxnouns.Backend/Database/DatabaseContext.cs b/Foxnouns.Backend/Database/DatabaseContext.cs index 42a5009..9baa143 100644 --- a/Foxnouns.Backend/Database/DatabaseContext.cs +++ b/Foxnouns.Backend/Database/DatabaseContext.cs @@ -108,12 +108,6 @@ public class DatabaseContext(DbContextOptions options) : DbContext(options) .HasFilter("fediverse_application_id IS NULL") .IsUnique(); - modelBuilder - .Entity() - .HasOne(e => e.Report) - .WithOne(e => e.AuditLogEntry) - .OnDelete(DeleteBehavior.SetNull); - modelBuilder.Entity().Property(u => u.Sid).HasDefaultValueSql("find_free_user_sid()"); modelBuilder.Entity().Property(u => u.Fields).HasColumnType("jsonb"); modelBuilder.Entity().Property(u => u.Names).HasColumnType("jsonb"); diff --git a/Foxnouns.Backend/Database/Migrations/20241218195457_AddContextToReports.cs b/Foxnouns.Backend/Database/Migrations/20241218195457_AddContextToReports.cs deleted file mode 100644 index 3dc6029..0000000 --- a/Foxnouns.Backend/Database/Migrations/20241218195457_AddContextToReports.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Foxnouns.Backend.Database.Migrations -{ - /// - [DbContext(typeof(DatabaseContext))] - [Migration("20241218195457_AddContextToReports")] - public partial class AddContextToReports : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "context", - table: "reports", - type: "text", - nullable: true - ); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn(name: "context", table: "reports"); - } - } -} diff --git a/Foxnouns.Backend/Database/Migrations/20241218201855_MakeAuditLogReportsNullable.cs b/Foxnouns.Backend/Database/Migrations/20241218201855_MakeAuditLogReportsNullable.cs deleted file mode 100644 index 53a1f72..0000000 --- a/Foxnouns.Backend/Database/Migrations/20241218201855_MakeAuditLogReportsNullable.cs +++ /dev/null @@ -1,65 +0,0 @@ -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Foxnouns.Backend.Database.Migrations -{ - /// - [DbContext(typeof(DatabaseContext))] - [Migration("20241218201855_MakeAuditLogReportsNullable")] - public partial class MakeAuditLogReportsNullable : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "fk_audit_log_reports_report_id", - table: "audit_log" - ); - - migrationBuilder.DropIndex(name: "ix_audit_log_report_id", table: "audit_log"); - - migrationBuilder.CreateIndex( - name: "ix_audit_log_report_id", - table: "audit_log", - column: "report_id", - unique: true - ); - - migrationBuilder.AddForeignKey( - name: "fk_audit_log_reports_report_id", - table: "audit_log", - column: "report_id", - principalTable: "reports", - principalColumn: "id", - onDelete: ReferentialAction.SetNull - ); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "fk_audit_log_reports_report_id", - table: "audit_log" - ); - - migrationBuilder.DropIndex(name: "ix_audit_log_report_id", table: "audit_log"); - - migrationBuilder.CreateIndex( - name: "ix_audit_log_report_id", - table: "audit_log", - column: "report_id" - ); - - migrationBuilder.AddForeignKey( - name: "fk_audit_log_reports_report_id", - table: "audit_log", - column: "report_id", - principalTable: "reports", - principalColumn: "id" - ); - } - } -} diff --git a/Foxnouns.Backend/Database/Migrations/DatabaseContextModelSnapshot.cs b/Foxnouns.Backend/Database/Migrations/DatabaseContextModelSnapshot.cs index a2fa6f2..79a0232 100644 --- a/Foxnouns.Backend/Database/Migrations/DatabaseContextModelSnapshot.cs +++ b/Foxnouns.Backend/Database/Migrations/DatabaseContextModelSnapshot.cs @@ -113,7 +113,6 @@ namespace Foxnouns.Backend.Database.Migrations .HasName("pk_audit_log"); b.HasIndex("ReportId") - .IsUnique() .HasDatabaseName("ix_audit_log_report_id"); b.ToTable("audit_log", (string)null); @@ -410,10 +409,6 @@ namespace Foxnouns.Backend.Database.Migrations .HasColumnType("bigint") .HasColumnName("id"); - b.Property("Context") - .HasColumnType("text") - .HasColumnName("context"); - b.Property("Reason") .HasColumnType("integer") .HasColumnName("reason"); @@ -680,9 +675,8 @@ namespace Foxnouns.Backend.Database.Migrations modelBuilder.Entity("Foxnouns.Backend.Database.Models.AuditLogEntry", b => { b.HasOne("Foxnouns.Backend.Database.Models.Report", "Report") - .WithOne("AuditLogEntry") - .HasForeignKey("Foxnouns.Backend.Database.Models.AuditLogEntry", "ReportId") - .OnDelete(DeleteBehavior.SetNull) + .WithMany() + .HasForeignKey("ReportId") .HasConstraintName("fk_audit_log_reports_report_id"); b.Navigation("Report"); @@ -845,11 +839,6 @@ namespace Foxnouns.Backend.Database.Migrations b.Navigation("ProfileFlags"); }); - modelBuilder.Entity("Foxnouns.Backend.Database.Models.Report", b => - { - b.Navigation("AuditLogEntry"); - }); - modelBuilder.Entity("Foxnouns.Backend.Database.Models.User", b => { b.Navigation("AuthMethods"); diff --git a/Foxnouns.Backend/Database/Models/AuditLogEntry.cs b/Foxnouns.Backend/Database/Models/AuditLogEntry.cs index c65e675..a4983ae 100644 --- a/Foxnouns.Backend/Database/Models/AuditLogEntry.cs +++ b/Foxnouns.Backend/Database/Models/AuditLogEntry.cs @@ -12,7 +12,6 @@ // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -using System.ComponentModel.DataAnnotations.Schema; using Foxnouns.Backend.Utils; using Newtonsoft.Json; diff --git a/Foxnouns.Backend/Database/Models/Report.cs b/Foxnouns.Backend/Database/Models/Report.cs index 47b994f..e668f44 100644 --- a/Foxnouns.Backend/Database/Models/Report.cs +++ b/Foxnouns.Backend/Database/Models/Report.cs @@ -29,12 +29,9 @@ public class Report : BaseModel public ReportStatus Status { get; set; } public ReportReason Reason { get; init; } - public string? Context { get; init; } public ReportTargetType TargetType { get; init; } public string? TargetSnapshot { get; init; } - - public AuditLogEntry? AuditLogEntry { get; set; } } [JsonConverter(typeof(ScreamingSnakeCaseEnumConverter))] diff --git a/Foxnouns.Backend/Dto/Moderation.cs b/Foxnouns.Backend/Dto/Moderation.cs index f9e6ab7..0de65c7 100644 --- a/Foxnouns.Backend/Dto/Moderation.cs +++ b/Foxnouns.Backend/Dto/Moderation.cs @@ -57,7 +57,7 @@ public record NotificationResponse( public record AuditLogEntity(Snowflake Id, string Username); -public record CreateReportRequest(ReportReason Reason, string? Context = null); +public record CreateReportRequest(ReportReason Reason); public record IgnoreReportRequest(string? Reason = null); diff --git a/Foxnouns.Backend/Utils/ValidationUtils.Strings.cs b/Foxnouns.Backend/Utils/ValidationUtils.Strings.cs index d38f274..ea12043 100644 --- a/Foxnouns.Backend/Utils/ValidationUtils.Strings.cs +++ b/Foxnouns.Backend/Utils/ValidationUtils.Strings.cs @@ -196,13 +196,6 @@ public static partial class ValidationUtils }; } - public const int MaximumReportContextLength = 512; - - public static ValidationError? ValidateReportContext(string? context) => - context?.Length > MaximumReportContextLength - ? ValidationError.GenericValidationError("Avatar is too large", null) - : null; - public const int MinimumPasswordLength = 12; public const int MaximumPasswordLength = 1024; diff --git a/Foxnouns.Frontend/package.json b/Foxnouns.Frontend/package.json index b172fd4..b9e35fc 100644 --- a/Foxnouns.Frontend/package.json +++ b/Foxnouns.Frontend/package.json @@ -13,8 +13,8 @@ }, "devDependencies": { "@sveltejs/adapter-node": "^5.2.10", - "@sveltejs/kit": "^2.12.1", - "@sveltejs/vite-plugin-svelte": "^5.0.2", + "@sveltejs/kit": "^2.11.1", + "@sveltejs/vite-plugin-svelte": "^4.0.3", "@sveltestrap/sveltestrap": "^6.2.7", "@types/eslint": "^9.6.1", "@types/luxon": "^3.4.2", @@ -28,13 +28,13 @@ "prettier": "^3.4.2", "prettier-plugin-svelte": "^3.3.2", "sass": "^1.83.0", - "svelte": "^5.14.3", + "svelte": "^5.13.0", "svelte-bootstrap-icons": "^3.1.1", "svelte-check": "^4.1.1", "sveltekit-i18n": "^2.4.2", "typescript": "^5.7.2", - "typescript-eslint": "^8.18.1", - "vite": "^6.0.3" + "typescript-eslint": "^8.18.0", + "vite": "^5.4.11" }, "packageManager": "pnpm@9.15.0+sha512.76e2379760a4328ec4415815bcd6628dee727af3779aaa4c914e3944156c4299921a89f976381ee107d41f12cfa4b66681ca9c718f0668fa0831ed4c6d8ba56c", "dependencies": { diff --git a/Foxnouns.Frontend/pnpm-lock.yaml b/Foxnouns.Frontend/pnpm-lock.yaml index fd95138..2ebd886 100644 --- a/Foxnouns.Frontend/pnpm-lock.yaml +++ b/Foxnouns.Frontend/pnpm-lock.yaml @@ -44,16 +44,16 @@ importers: devDependencies: '@sveltejs/adapter-node': specifier: ^5.2.10 - version: 5.2.10(@sveltejs/kit@2.12.1(@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.14.3)(vite@6.0.3(sass@1.83.0)))(svelte@5.14.3)(vite@6.0.3(sass@1.83.0))) + version: 5.2.10(@sveltejs/kit@2.11.1(@sveltejs/vite-plugin-svelte@4.0.3(svelte@5.13.0)(vite@5.4.11(sass@1.83.0)))(svelte@5.13.0)(vite@5.4.11(sass@1.83.0))) '@sveltejs/kit': - specifier: ^2.12.1 - version: 2.12.1(@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.14.3)(vite@6.0.3(sass@1.83.0)))(svelte@5.14.3)(vite@6.0.3(sass@1.83.0)) + specifier: ^2.11.1 + version: 2.11.1(@sveltejs/vite-plugin-svelte@4.0.3(svelte@5.13.0)(vite@5.4.11(sass@1.83.0)))(svelte@5.13.0)(vite@5.4.11(sass@1.83.0)) '@sveltejs/vite-plugin-svelte': - specifier: ^5.0.2 - version: 5.0.2(svelte@5.14.3)(vite@6.0.3(sass@1.83.0)) + specifier: ^4.0.3 + version: 4.0.3(svelte@5.13.0)(vite@5.4.11(sass@1.83.0)) '@sveltestrap/sveltestrap': specifier: ^6.2.7 - version: 6.2.7(svelte@5.14.3) + version: 6.2.7(svelte@5.13.0) '@types/eslint': specifier: ^9.6.1 version: 9.6.1 @@ -77,7 +77,7 @@ importers: version: 9.1.0(eslint@9.17.0) eslint-plugin-svelte: specifier: ^2.46.1 - version: 2.46.1(eslint@9.17.0)(svelte@5.14.3) + version: 2.46.1(eslint@9.17.0)(svelte@5.13.0) globals: specifier: ^15.13.0 version: 15.13.0 @@ -86,31 +86,31 @@ importers: version: 3.4.2 prettier-plugin-svelte: specifier: ^3.3.2 - version: 3.3.2(prettier@3.4.2)(svelte@5.14.3) + version: 3.3.2(prettier@3.4.2)(svelte@5.13.0) sass: specifier: ^1.83.0 version: 1.83.0 svelte: - specifier: ^5.14.3 - version: 5.14.3 + specifier: ^5.13.0 + version: 5.13.0 svelte-bootstrap-icons: specifier: ^3.1.1 version: 3.1.1 svelte-check: specifier: ^4.1.1 - version: 4.1.1(picomatch@4.0.2)(svelte@5.14.3)(typescript@5.7.2) + version: 4.1.1(picomatch@4.0.2)(svelte@5.13.0)(typescript@5.7.2) sveltekit-i18n: specifier: ^2.4.2 - version: 2.4.2(svelte@5.14.3) + version: 2.4.2(svelte@5.13.0) typescript: specifier: ^5.7.2 version: 5.7.2 typescript-eslint: - specifier: ^8.18.1 - version: 8.18.1(eslint@9.17.0)(typescript@5.7.2) + specifier: ^8.18.0 + version: 8.18.0(eslint@9.17.0)(typescript@5.7.2) vite: - specifier: ^6.0.3 - version: 6.0.3(sass@1.83.0) + specifier: ^5.4.11 + version: 5.4.11(sass@1.83.0) packages: @@ -118,147 +118,141 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@esbuild/aix-ppc64@0.24.0': - resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} - engines: {node: '>=18'} + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.24.0': - resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} - engines: {node: '>=18'} + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.24.0': - resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} - engines: {node: '>=18'} + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.24.0': - resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} - engines: {node: '>=18'} + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.24.0': - resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} - engines: {node: '>=18'} + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.24.0': - resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} - engines: {node: '>=18'} + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.24.0': - resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} - engines: {node: '>=18'} + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.24.0': - resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} - engines: {node: '>=18'} + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.24.0': - resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} - engines: {node: '>=18'} + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.24.0': - resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} - engines: {node: '>=18'} + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.24.0': - resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} - engines: {node: '>=18'} + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.24.0': - resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} - engines: {node: '>=18'} + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.24.0': - resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} - engines: {node: '>=18'} + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.24.0': - resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} - engines: {node: '>=18'} + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.24.0': - resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} - engines: {node: '>=18'} + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.24.0': - resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} - engines: {node: '>=18'} + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.24.0': - resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} - engines: {node: '>=18'} + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.24.0': - resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} - engines: {node: '>=18'} + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.24.0': - resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.24.0': - resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} - engines: {node: '>=18'} + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.24.0': - resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} - engines: {node: '>=18'} + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.24.0': - resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} - engines: {node: '>=18'} + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.24.0': - resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} - engines: {node: '>=18'} + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.24.0': - resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} - engines: {node: '>=18'} + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -437,8 +431,8 @@ packages: '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@rollup/plugin-commonjs@28.0.2': - resolution: {integrity: sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==} + '@rollup/plugin-commonjs@28.0.1': + resolution: {integrity: sha512-+tNWdlWKbpB3WgBN7ijjYkq9X5uhjmcvyjEght4NmH5fAU++zfQzAJ6wumLS+dNcvwEZhKx2Z+skY8m7v0wGSA==} engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: rollup: ^2.68.0||^3.0.0||^4.0.0 @@ -455,8 +449,8 @@ packages: rollup: optional: true - '@rollup/plugin-node-resolve@15.3.1': - resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} + '@rollup/plugin-node-resolve@15.3.0': + resolution: {integrity: sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.78.0||^3.0.0||^4.0.0 @@ -464,8 +458,8 @@ packages: rollup: optional: true - '@rollup/pluginutils@5.1.4': - resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} + '@rollup/pluginutils@5.1.3': + resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -573,8 +567,8 @@ packages: peerDependencies: '@sveltejs/kit': ^2.4.0 - '@sveltejs/kit@2.12.1': - resolution: {integrity: sha512-M3rPijGImeOkI0DBJSwjqz+YFX2DyOf6NzWgHVk3mqpT06dlYCpcv5xh1q4rYEqB58yQlk4QA1Y35PUqnUiFKw==} + '@sveltejs/kit@2.11.1': + resolution: {integrity: sha512-dAiHDEd+AOm20eYdMPV1a2eKBOc0s/7XsSs7PCoNv2kKS7BAoVRC9uzR+FQmxLtp8xuEo9z8CtrMQoszkThltQ==} engines: {node: '>=18.13'} hasBin: true peerDependencies: @@ -582,20 +576,20 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.3 || ^6.0.0 - '@sveltejs/vite-plugin-svelte-inspector@4.0.1': - resolution: {integrity: sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==} + '@sveltejs/vite-plugin-svelte-inspector@3.0.1': + resolution: {integrity: sha512-2CKypmj1sM4GE7HjllT7UKmo4Q6L5xFRd7VMGEWhYnZ+wc6AUVU01IBd7yUi6WnFndEwWoMNOd6e8UjoN0nbvQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22} peerDependencies: - '@sveltejs/vite-plugin-svelte': ^5.0.0 - svelte: ^5.0.0 - vite: ^6.0.0 + '@sveltejs/vite-plugin-svelte': ^4.0.0-next.0||^4.0.0 + svelte: ^5.0.0-next.96 || ^5.0.0 + vite: ^5.0.0 - '@sveltejs/vite-plugin-svelte@5.0.2': - resolution: {integrity: sha512-GElAxQMlznx1pRdodtkmiyBZcjlaJntJ8APa2hBhnbUAJqKAFGdmwjRPJhh+2DMxwARRLBzQIs/iZ5EbR4X/og==} + '@sveltejs/vite-plugin-svelte@4.0.3': + resolution: {integrity: sha512-J7nC5gT5qpmvyD2pmzPUntLUgoinyEaNy9sTpGGE6N7pblggO0A1NyneJJvR2ELlzK6ti28aF2SLXG1yJdnJeA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22} peerDependencies: - svelte: ^5.0.0 - vite: ^6.0.0 + svelte: ^5.0.0-next.96 || ^5.0.0 + vite: ^5.0.0 '@sveltekit-i18n/base@1.3.7': resolution: {integrity: sha512-kg1kql1/ro/lIudwFiWrv949Q07gmweln87tflUZR51MNdXXzK4fiJQv5Mw50K/CdQ5BOk/dJ0WOH2vOtBI6yw==} @@ -640,51 +634,51 @@ packages: '@types/sanitize-html@2.13.0': resolution: {integrity: sha512-X31WxbvW9TjIhZZNyNBZ/p5ax4ti7qsNDBDEnH4zAgmEh35YnFD1UiS6z9Cd34kKm0LslFW0KPmTQzu/oGtsqQ==} - '@typescript-eslint/eslint-plugin@8.18.1': - resolution: {integrity: sha512-Ncvsq5CT3Gvh+uJG0Lwlho6suwDfUXH0HztslDf5I+F2wAFAZMRwYLEorumpKLzmO2suAXZ/td1tBg4NZIi9CQ==} + '@typescript-eslint/eslint-plugin@8.18.0': + resolution: {integrity: sha512-NR2yS7qUqCL7AIxdJUQf2MKKNDVNaig/dEB0GBLU7D+ZdHgK1NoH/3wsgO3OnPVipn51tG3MAwaODEGil70WEw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@8.18.1': - resolution: {integrity: sha512-rBnTWHCdbYM2lh7hjyXqxk70wvon3p2FyaniZuey5TrcGBpfhVp0OxOa6gxr9Q9YhZFKyfbEnxc24ZnVbbUkCA==} + '@typescript-eslint/parser@8.18.0': + resolution: {integrity: sha512-hgUZ3kTEpVzKaK3uNibExUYm6SKKOmTU2BOxBSvOYwtJEPdVQ70kZJpPjstlnhCHcuc2WGfSbpKlb/69ttyN5Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/scope-manager@8.18.1': - resolution: {integrity: sha512-HxfHo2b090M5s2+/9Z3gkBhI6xBH8OJCFjH9MhQ+nnoZqxU3wNxkLT+VWXWSFWc3UF3Z+CfPAyqdCTdoXtDPCQ==} + '@typescript-eslint/scope-manager@8.18.0': + resolution: {integrity: sha512-PNGcHop0jkK2WVYGotk/hxj+UFLhXtGPiGtiaWgVBVP1jhMoMCHlTyJA+hEj4rszoSdLTK3fN4oOatrL0Cp+Xw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.18.1': - resolution: {integrity: sha512-jAhTdK/Qx2NJPNOTxXpMwlOiSymtR2j283TtPqXkKBdH8OAMmhiUfP0kJjc/qSE51Xrq02Gj9NY7MwK+UxVwHQ==} + '@typescript-eslint/type-utils@8.18.0': + resolution: {integrity: sha512-er224jRepVAVLnMF2Q7MZJCq5CsdH2oqjP4dT7K6ij09Kyd+R21r7UVJrF0buMVdZS5QRhDzpvzAxHxabQadow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/types@8.18.1': - resolution: {integrity: sha512-7uoAUsCj66qdNQNpH2G8MyTFlgerum8ubf21s3TSM3XmKXuIn+H2Sifh/ES2nPOPiYSRJWAk0fDkW0APBWcpfw==} + '@typescript-eslint/types@8.18.0': + resolution: {integrity: sha512-FNYxgyTCAnFwTrzpBGq+zrnoTO4x0c1CKYY5MuUTzpScqmY5fmsh2o3+57lqdI3NZucBDCzDgdEbIaNfAjAHQA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.18.1': - resolution: {integrity: sha512-z8U21WI5txzl2XYOW7i9hJhxoKKNG1kcU4RzyNvKrdZDmbjkmLBo8bgeiOJmA06kizLI76/CCBAAGlTlEeUfyg==} + '@typescript-eslint/typescript-estree@8.18.0': + resolution: {integrity: sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.18.1': - resolution: {integrity: sha512-8vikiIj2ebrC4WRdcAdDcmnu9Q/MXXwg+STf40BVfT8exDqBCUPdypvzcUPxEqRGKg9ALagZ0UWcYCtn+4W2iQ==} + '@typescript-eslint/utils@8.18.0': + resolution: {integrity: sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/visitor-keys@8.18.1': - resolution: {integrity: sha512-Vj0WLm5/ZsD013YeUKn+K0y8p1M0jPpxOkKdbD1wB0ns53a5piVY02zjf072TblEweAbcYiFiPoSMF3kp+VhhQ==} + '@typescript-eslint/visitor-keys@8.18.0': + resolution: {integrity: sha512-pCh/qEA8Lb1wVIqNvBke8UaRjJ6wrAWkJO5yyIbs8Yx6TNGYyfNjOo61tLv+WwLvoLPp4BQ8B7AHKijl8NGUfw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: @@ -753,8 +747,8 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chokidar@4.0.2: - resolution: {integrity: sha512-/b57FK+bblSU+dfewfFe0rT1YjVDfOmeLQwCAuC+vwvgLkXboATqqmy+Ipux6JrF6L5joe5CBnFOw+gLWH6yKg==} + chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} engines: {node: '>= 14.16.0'} color-convert@2.0.1: @@ -824,9 +818,9 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - esbuild@0.24.0: - resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} - engines: {node: '>=18'} + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} hasBin: true escape-string-regexp@4.0.0: @@ -896,8 +890,8 @@ packages: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} - esrap@1.3.1: - resolution: {integrity: sha512-KpAH3+QsDmtOP1KOW04CbD1PgzWsIHjB8tOCk3PCb8xzNGn8XkjI8zl80i09fmXdzQyaS8tcsKCCDzHF7AcowA==} + esrap@1.2.3: + resolution: {integrity: sha512-ZlQmCCK+n7SGoqo7DnfKaP1sJZa49P01/dXzmjCASSo04p72w8EksT2NMK8CEX8DhKsfJXANioIw8VyHNsBfvQ==} esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} @@ -1099,8 +1093,8 @@ packages: resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==} engines: {node: '>=12'} - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + magic-string@0.30.15: + resolution: {integrity: sha512-zXeaYRgZ6ldS1RJJUrMrYgNJ4fdwnyI6tVqoiIhyCyv5IVTK9BU8Ic2l253GGETQHxI4HNUwhJ3fjDhKqEoaAw==} markdown-it@14.1.0: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} @@ -1348,8 +1342,8 @@ packages: svelte-tippy@1.3.2: resolution: {integrity: sha512-41f+85hwhKBRqX0UNYrgFsi34Kk/KDvUkIZXYANxkWoA2NTVTCZbUC2J8hRNZ4TRVxObTshoZRjK2co5+i6LMw==} - svelte@5.14.3: - resolution: {integrity: sha512-k9l8cuDuzvx/4IjWg2cVHLvkoPQUJUpOz6YtJbfdkqaBMxixxR3PSmkJKC0i+Oq59iPUj5UoHkskp3/OQFiN2g==} + svelte@5.13.0: + resolution: {integrity: sha512-ZG4VmBNze/j2KxT2GEeUm8Jr3RLYQ3P5Y9/flUDCgaAxgzx4ZRTdiyh+PCr7qRlOr5M8uidIqr+3DwUFVrdL+A==} engines: {node: '>=18'} sveltekit-i18n@2.4.2: @@ -1385,8 +1379,8 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - typescript-eslint@8.18.1: - resolution: {integrity: sha512-Mlaw6yxuaDEPQvb/2Qwu3/TfgeBHy9iTJ3mTwe7OvpPmF6KPQjVOfGyEJpPv6Ez2C34OODChhXrzYw/9phI0MQ==} + typescript-eslint@8.18.0: + resolution: {integrity: sha512-Xq2rRjn6tzVpAyHr3+nmSg1/9k9aIHnJ2iZeOH7cfGOWqTkXTm3kwpQglEuLGdNrYvPF+2gtAs+/KF5rjVo+WQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1406,27 +1400,22 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - vite@6.0.3: - resolution: {integrity: sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vite@5.4.11: + resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: '>=1.21.0' + '@types/node': ^18.0.0 || >=20.0.0 less: '*' lightningcss: ^1.21.0 sass: '*' sass-embedded: '*' stylus: '*' sugarss: '*' - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 + terser: ^5.4.0 peerDependenciesMeta: '@types/node': optional: true - jiti: - optional: true less: optional: true lightningcss: @@ -1441,10 +1430,6 @@ packages: optional: true terser: optional: true - tsx: - optional: true - yaml: - optional: true vitefu@1.0.4: resolution: {integrity: sha512-y6zEE3PQf6uu/Mt6DTJ9ih+kyJLr4XcSgHR2zUkM8SWDhuixEJxfJ6CZGMHh1Ec3vPLoEA0IHU5oWzVqw8ulow==} @@ -1481,76 +1466,73 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@esbuild/aix-ppc64@0.24.0': + '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/android-arm64@0.24.0': + '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm@0.24.0': + '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-x64@0.24.0': + '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.24.0': + '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-x64@0.24.0': + '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.24.0': + '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.24.0': + '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/linux-arm64@0.24.0': + '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm@0.24.0': + '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-ia32@0.24.0': + '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-loong64@0.24.0': + '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-mips64el@0.24.0': + '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-ppc64@0.24.0': + '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.24.0': + '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-s390x@0.24.0': + '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-x64@0.24.0': + '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.24.0': + '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-arm64@0.24.0': + '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.24.0': + '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.24.0': + '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.24.0': + '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.24.0': - optional: true - - '@esbuild/win32-x64@0.24.0': + '@esbuild/win32-x64@0.21.5': optional: true '@eslint-community/eslint-utils@4.4.1(eslint@9.17.0)': @@ -1703,27 +1685,27 @@ snapshots: '@popperjs/core@2.11.8': {} - '@rollup/plugin-commonjs@28.0.2(rollup@4.28.1)': + '@rollup/plugin-commonjs@28.0.1(rollup@4.28.1)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.28.1) + '@rollup/pluginutils': 5.1.3(rollup@4.28.1) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.2(picomatch@4.0.2) is-reference: 1.2.1 - magic-string: 0.30.17 + magic-string: 0.30.15 picomatch: 4.0.2 optionalDependencies: rollup: 4.28.1 '@rollup/plugin-json@6.1.0(rollup@4.28.1)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.28.1) + '@rollup/pluginutils': 5.1.3(rollup@4.28.1) optionalDependencies: rollup: 4.28.1 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.28.1)': + '@rollup/plugin-node-resolve@15.3.0(rollup@4.28.1)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.28.1) + '@rollup/pluginutils': 5.1.3(rollup@4.28.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 @@ -1731,7 +1713,7 @@ snapshots: optionalDependencies: rollup: 4.28.1 - '@rollup/pluginutils@5.1.4(rollup@4.28.1)': + '@rollup/pluginutils@5.1.3(rollup@4.28.1)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 @@ -1796,64 +1778,64 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.28.1': optional: true - '@sveltejs/adapter-node@5.2.10(@sveltejs/kit@2.12.1(@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.14.3)(vite@6.0.3(sass@1.83.0)))(svelte@5.14.3)(vite@6.0.3(sass@1.83.0)))': + '@sveltejs/adapter-node@5.2.10(@sveltejs/kit@2.11.1(@sveltejs/vite-plugin-svelte@4.0.3(svelte@5.13.0)(vite@5.4.11(sass@1.83.0)))(svelte@5.13.0)(vite@5.4.11(sass@1.83.0)))': dependencies: - '@rollup/plugin-commonjs': 28.0.2(rollup@4.28.1) + '@rollup/plugin-commonjs': 28.0.1(rollup@4.28.1) '@rollup/plugin-json': 6.1.0(rollup@4.28.1) - '@rollup/plugin-node-resolve': 15.3.1(rollup@4.28.1) - '@sveltejs/kit': 2.12.1(@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.14.3)(vite@6.0.3(sass@1.83.0)))(svelte@5.14.3)(vite@6.0.3(sass@1.83.0)) + '@rollup/plugin-node-resolve': 15.3.0(rollup@4.28.1) + '@sveltejs/kit': 2.11.1(@sveltejs/vite-plugin-svelte@4.0.3(svelte@5.13.0)(vite@5.4.11(sass@1.83.0)))(svelte@5.13.0)(vite@5.4.11(sass@1.83.0)) rollup: 4.28.1 - '@sveltejs/kit@2.12.1(@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.14.3)(vite@6.0.3(sass@1.83.0)))(svelte@5.14.3)(vite@6.0.3(sass@1.83.0))': + '@sveltejs/kit@2.11.1(@sveltejs/vite-plugin-svelte@4.0.3(svelte@5.13.0)(vite@5.4.11(sass@1.83.0)))(svelte@5.13.0)(vite@5.4.11(sass@1.83.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.2(svelte@5.14.3)(vite@6.0.3(sass@1.83.0)) + '@sveltejs/vite-plugin-svelte': 4.0.3(svelte@5.13.0)(vite@5.4.11(sass@1.83.0)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.1.1 esm-env: 1.2.1 import-meta-resolve: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.17 + magic-string: 0.30.15 mrmime: 2.0.0 sade: 1.8.1 set-cookie-parser: 2.7.1 sirv: 3.0.0 - svelte: 5.14.3 + svelte: 5.13.0 tiny-glob: 0.2.9 - vite: 6.0.3(sass@1.83.0) + vite: 5.4.11(sass@1.83.0) - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.14.3)(vite@6.0.3(sass@1.83.0)))(svelte@5.14.3)(vite@6.0.3(sass@1.83.0))': + '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.3(svelte@5.13.0)(vite@5.4.11(sass@1.83.0)))(svelte@5.13.0)(vite@5.4.11(sass@1.83.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.2(svelte@5.14.3)(vite@6.0.3(sass@1.83.0)) + '@sveltejs/vite-plugin-svelte': 4.0.3(svelte@5.13.0)(vite@5.4.11(sass@1.83.0)) debug: 4.4.0 - svelte: 5.14.3 - vite: 6.0.3(sass@1.83.0) + svelte: 5.13.0 + vite: 5.4.11(sass@1.83.0) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.14.3)(vite@6.0.3(sass@1.83.0))': + '@sveltejs/vite-plugin-svelte@4.0.3(svelte@5.13.0)(vite@5.4.11(sass@1.83.0))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.2(svelte@5.14.3)(vite@6.0.3(sass@1.83.0)))(svelte@5.14.3)(vite@6.0.3(sass@1.83.0)) + '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.3(svelte@5.13.0)(vite@5.4.11(sass@1.83.0)))(svelte@5.13.0)(vite@5.4.11(sass@1.83.0)) debug: 4.4.0 deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.17 - svelte: 5.14.3 - vite: 6.0.3(sass@1.83.0) - vitefu: 1.0.4(vite@6.0.3(sass@1.83.0)) + magic-string: 0.30.15 + svelte: 5.13.0 + vite: 5.4.11(sass@1.83.0) + vitefu: 1.0.4(vite@5.4.11(sass@1.83.0)) transitivePeerDependencies: - supports-color - '@sveltekit-i18n/base@1.3.7(svelte@5.14.3)': + '@sveltekit-i18n/base@1.3.7(svelte@5.13.0)': dependencies: - svelte: 5.14.3 + svelte: 5.13.0 '@sveltekit-i18n/parser-default@1.1.1': {} - '@sveltestrap/sveltestrap@6.2.7(svelte@5.14.3)': + '@sveltestrap/sveltestrap@6.2.7(svelte@5.13.0)': dependencies: '@popperjs/core': 2.11.8 - svelte: 5.14.3 + svelte: 5.13.0 '@types/cookie@0.6.0': {} @@ -1883,14 +1865,14 @@ snapshots: dependencies: htmlparser2: 8.0.2 - '@typescript-eslint/eslint-plugin@8.18.1(@typescript-eslint/parser@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.18.1(eslint@9.17.0)(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.18.1 - '@typescript-eslint/type-utils': 8.18.1(eslint@9.17.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.1(eslint@9.17.0)(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.18.1 + '@typescript-eslint/parser': 8.18.0(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.18.0 + '@typescript-eslint/type-utils': 8.18.0(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.0(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.18.0 eslint: 9.17.0 graphemer: 1.4.0 ignore: 5.3.2 @@ -1900,27 +1882,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.18.1(eslint@9.17.0)(typescript@5.7.2)': + '@typescript-eslint/parser@8.18.0(eslint@9.17.0)(typescript@5.7.2)': dependencies: - '@typescript-eslint/scope-manager': 8.18.1 - '@typescript-eslint/types': 8.18.1 - '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.18.1 + '@typescript-eslint/scope-manager': 8.18.0 + '@typescript-eslint/types': 8.18.0 + '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.18.0 debug: 4.4.0 eslint: 9.17.0 typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.18.1': + '@typescript-eslint/scope-manager@8.18.0': dependencies: - '@typescript-eslint/types': 8.18.1 - '@typescript-eslint/visitor-keys': 8.18.1 + '@typescript-eslint/types': 8.18.0 + '@typescript-eslint/visitor-keys': 8.18.0 - '@typescript-eslint/type-utils@8.18.1(eslint@9.17.0)(typescript@5.7.2)': + '@typescript-eslint/type-utils@8.18.0(eslint@9.17.0)(typescript@5.7.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.1(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.0(eslint@9.17.0)(typescript@5.7.2) debug: 4.4.0 eslint: 9.17.0 ts-api-utils: 1.4.3(typescript@5.7.2) @@ -1928,12 +1910,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.18.1': {} + '@typescript-eslint/types@8.18.0': {} - '@typescript-eslint/typescript-estree@8.18.1(typescript@5.7.2)': + '@typescript-eslint/typescript-estree@8.18.0(typescript@5.7.2)': dependencies: - '@typescript-eslint/types': 8.18.1 - '@typescript-eslint/visitor-keys': 8.18.1 + '@typescript-eslint/types': 8.18.0 + '@typescript-eslint/visitor-keys': 8.18.0 debug: 4.4.0 fast-glob: 3.3.2 is-glob: 4.0.3 @@ -1944,20 +1926,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2)': + '@typescript-eslint/utils@8.18.0(eslint@9.17.0)(typescript@5.7.2)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0) - '@typescript-eslint/scope-manager': 8.18.1 - '@typescript-eslint/types': 8.18.1 - '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.18.0 + '@typescript-eslint/types': 8.18.0 + '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2) eslint: 9.17.0 typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.18.1': + '@typescript-eslint/visitor-keys@8.18.0': dependencies: - '@typescript-eslint/types': 8.18.1 + '@typescript-eslint/types': 8.18.0 eslint-visitor-keys: 4.2.0 acorn-jsx@5.3.2(acorn@8.14.0): @@ -2017,7 +1999,7 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chokidar@4.0.2: + chokidar@4.0.1: dependencies: readdirp: 4.0.2 @@ -2074,32 +2056,31 @@ snapshots: entities@4.5.0: {} - esbuild@0.24.0: + esbuild@0.21.5: optionalDependencies: - '@esbuild/aix-ppc64': 0.24.0 - '@esbuild/android-arm': 0.24.0 - '@esbuild/android-arm64': 0.24.0 - '@esbuild/android-x64': 0.24.0 - '@esbuild/darwin-arm64': 0.24.0 - '@esbuild/darwin-x64': 0.24.0 - '@esbuild/freebsd-arm64': 0.24.0 - '@esbuild/freebsd-x64': 0.24.0 - '@esbuild/linux-arm': 0.24.0 - '@esbuild/linux-arm64': 0.24.0 - '@esbuild/linux-ia32': 0.24.0 - '@esbuild/linux-loong64': 0.24.0 - '@esbuild/linux-mips64el': 0.24.0 - '@esbuild/linux-ppc64': 0.24.0 - '@esbuild/linux-riscv64': 0.24.0 - '@esbuild/linux-s390x': 0.24.0 - '@esbuild/linux-x64': 0.24.0 - '@esbuild/netbsd-x64': 0.24.0 - '@esbuild/openbsd-arm64': 0.24.0 - '@esbuild/openbsd-x64': 0.24.0 - '@esbuild/sunos-x64': 0.24.0 - '@esbuild/win32-arm64': 0.24.0 - '@esbuild/win32-ia32': 0.24.0 - '@esbuild/win32-x64': 0.24.0 + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 escape-string-regexp@4.0.0: {} @@ -2112,7 +2093,7 @@ snapshots: dependencies: eslint: 9.17.0 - eslint-plugin-svelte@2.46.1(eslint@9.17.0)(svelte@5.14.3): + eslint-plugin-svelte@2.46.1(eslint@9.17.0)(svelte@5.13.0): dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0) '@jridgewell/sourcemap-codec': 1.5.0 @@ -2125,9 +2106,9 @@ snapshots: postcss-safe-parser: 6.0.0(postcss@8.4.49) postcss-selector-parser: 6.1.2 semver: 7.6.3 - svelte-eslint-parser: 0.43.0(svelte@5.14.3) + svelte-eslint-parser: 0.43.0(svelte@5.13.0) optionalDependencies: - svelte: 5.14.3 + svelte: 5.13.0 transitivePeerDependencies: - ts-node @@ -2202,10 +2183,10 @@ snapshots: dependencies: estraverse: 5.3.0 - esrap@1.3.1: + esrap@1.2.3: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - '@typescript-eslint/types': 8.18.1 + '@types/estree': 1.0.6 esrecurse@4.3.0: dependencies: @@ -2373,7 +2354,7 @@ snapshots: luxon@3.5.0: {} - magic-string@0.30.17: + magic-string@0.30.15: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -2481,10 +2462,10 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-svelte@3.3.2(prettier@3.4.2)(svelte@5.14.3): + prettier-plugin-svelte@3.3.2(prettier@3.4.2)(svelte@5.13.0): dependencies: prettier: 3.4.2 - svelte: 5.14.3 + svelte: 5.13.0 prettier@3.4.2: {} @@ -2552,7 +2533,7 @@ snapshots: sass@1.83.0: dependencies: - chokidar: 4.0.2 + chokidar: 4.0.1 immutable: 5.0.3 source-map-js: 1.2.1 optionalDependencies: @@ -2586,19 +2567,19 @@ snapshots: svelte-bootstrap-icons@3.1.1: {} - svelte-check@4.1.1(picomatch@4.0.2)(svelte@5.14.3)(typescript@5.7.2): + svelte-check@4.1.1(picomatch@4.0.2)(svelte@5.13.0)(typescript@5.7.2): dependencies: '@jridgewell/trace-mapping': 0.3.25 - chokidar: 4.0.2 + chokidar: 4.0.1 fdir: 6.4.2(picomatch@4.0.2) picocolors: 1.1.1 sade: 1.8.1 - svelte: 5.14.3 + svelte: 5.13.0 typescript: 5.7.2 transitivePeerDependencies: - picomatch - svelte-eslint-parser@0.43.0(svelte@5.14.3): + svelte-eslint-parser@0.43.0(svelte@5.13.0): dependencies: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 @@ -2606,13 +2587,13 @@ snapshots: postcss: 8.4.49 postcss-scss: 4.0.9(postcss@8.4.49) optionalDependencies: - svelte: 5.14.3 + svelte: 5.13.0 svelte-tippy@1.3.2: dependencies: tippy.js: 6.3.7 - svelte@5.14.3: + svelte@5.13.0: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 @@ -2622,17 +2603,17 @@ snapshots: aria-query: 5.3.2 axobject-query: 4.1.0 esm-env: 1.2.1 - esrap: 1.3.1 + esrap: 1.2.3 is-reference: 3.0.3 locate-character: 3.0.0 - magic-string: 0.30.17 + magic-string: 0.30.15 zimmerframe: 1.1.2 - sveltekit-i18n@2.4.2(svelte@5.14.3): + sveltekit-i18n@2.4.2(svelte@5.13.0): dependencies: - '@sveltekit-i18n/base': 1.3.7(svelte@5.14.3) + '@sveltekit-i18n/base': 1.3.7(svelte@5.13.0) '@sveltekit-i18n/parser-default': 1.1.1 - svelte: 5.14.3 + svelte: 5.13.0 tiny-glob@0.2.9: dependencies: @@ -2659,11 +2640,11 @@ snapshots: dependencies: prelude-ls: 1.2.1 - typescript-eslint@8.18.1(eslint@9.17.0)(typescript@5.7.2): + typescript-eslint@8.18.0(eslint@9.17.0)(typescript@5.7.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.18.1(@typescript-eslint/parser@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2) - '@typescript-eslint/parser': 8.18.1(eslint@9.17.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.1(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.18.0(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.0(eslint@9.17.0)(typescript@5.7.2) eslint: 9.17.0 typescript: 5.7.2 transitivePeerDependencies: @@ -2679,18 +2660,18 @@ snapshots: util-deprecate@1.0.2: {} - vite@6.0.3(sass@1.83.0): + vite@5.4.11(sass@1.83.0): dependencies: - esbuild: 0.24.0 + esbuild: 0.21.5 postcss: 8.4.49 rollup: 4.28.1 optionalDependencies: fsevents: 2.3.3 sass: 1.83.0 - vitefu@1.0.4(vite@6.0.3(sass@1.83.0)): + vitefu@1.0.4(vite@5.4.11(sass@1.83.0)): optionalDependencies: - vite: 6.0.3(sass@1.83.0) + vite: 5.4.11(sass@1.83.0) which@2.0.2: dependencies: diff --git a/Foxnouns.Frontend/src/app.d.ts b/Foxnouns.Frontend/src/app.d.ts index ca8d85c..da08e6d 100644 --- a/Foxnouns.Frontend/src/app.d.ts +++ b/Foxnouns.Frontend/src/app.d.ts @@ -1,16 +1,7 @@ // See https://svelte.dev/docs/kit/types#app.d.ts - -import type { ErrorCode } from "$api/error"; - // for information about these interfaces declare global { namespace App { - interface Error { - message: string; - status: number; - code: ErrorCode; - id: string; - } // interface Error {} // interface Locals {} // interface PageData {} diff --git a/Foxnouns.Frontend/src/hooks.server.ts b/Foxnouns.Frontend/src/hooks.server.ts index 2e8fccb..e8ec723 100644 --- a/Foxnouns.Frontend/src/hooks.server.ts +++ b/Foxnouns.Frontend/src/hooks.server.ts @@ -1,8 +1,6 @@ -import ApiError, { ErrorCode } from "$api/error"; import { PRIVATE_API_HOST, PRIVATE_INTERNAL_API_HOST } from "$env/static/private"; import { PUBLIC_API_BASE } from "$env/static/public"; -import log from "$lib/log"; -import type { HandleFetch, HandleServerError } from "@sveltejs/kit"; +import type { HandleFetch } from "@sveltejs/kit"; export const handleFetch: HandleFetch = async ({ request, fetch }) => { if (request.url.startsWith(`${PUBLIC_API_BASE}/internal`)) { @@ -13,24 +11,3 @@ export const handleFetch: HandleFetch = async ({ request, fetch }) => { return await fetch(request); }; - -export const handleError: HandleServerError = async ({ error, status, message }) => { - const id = crypto.randomUUID(); - - if (error instanceof ApiError) { - return { - id, - status: error.raw?.status || status, - message: error.raw?.message || "Unknown error", - code: error.code, - }; - } - - if (status >= 400 && status <= 499) { - return { id, status, message, code: ErrorCode.GenericApiError }; - } - - log.error("[%s] error in handler:", id, error); - - return { id, status, message, code: ErrorCode.InternalServerError }; -}; diff --git a/Foxnouns.Frontend/src/lib/api/index.ts b/Foxnouns.Frontend/src/lib/api/index.ts index a23b68c..0a4047d 100644 --- a/Foxnouns.Frontend/src/lib/api/index.ts +++ b/Foxnouns.Frontend/src/lib/api/index.ts @@ -9,7 +9,7 @@ export type Method = "GET" | "POST" | "PUT" | "PATCH" | "DELETE"; /** * Optional arguments for a request. `load` and `action` functions should always pass `fetch` and `cookies`. */ -export type RequestArgs = { +export type RequestArgs = { /** * The token for this request. Where possible, `cookies` should be passed instead. * Will override `cookies` if both are passed. @@ -23,7 +23,7 @@ export type RequestArgs = { /** * The body for this request, which will be serialized to JSON. Should be a plain JS object. */ - body?: T; + body?: unknown; /** * The fetch function to use. Should be passed in loader and action functions, but can be safely ignored for client-side requests. */ @@ -41,10 +41,10 @@ export type RequestArgs = { * @param args Optional arguments to the request function. * @returns A Response object. */ -export async function baseRequest( +export async function baseRequest( method: Method, path: string, - args: RequestArgs = {}, + args: RequestArgs = {}, ): Promise { const token = args.token ?? args.cookies?.get(TOKEN_COOKIE_NAME); @@ -72,11 +72,11 @@ export async function baseRequest( * @param args Optional arguments to the request function. * @returns The response deserialized as `T`. */ -export async function apiRequest( +export async function apiRequest( method: Method, path: string, - args: RequestArgs = {}, -): Promise { + args: RequestArgs = {}, +): Promise { const resp = await baseRequest(method, path, args); if (resp.status < 200 || resp.status > 299) { @@ -84,7 +84,7 @@ export async function apiRequest( if ("code" in err) throw new ApiError(err); else throw new ApiError(); } - return (await resp.json()) as TResponse; + return (await resp.json()) as T; } /** @@ -94,10 +94,10 @@ export async function apiRequest( * @param args Optional arguments to the request function. * @param enforce204 Whether to throw an error on a non-204 status code. */ -export async function fastRequest( +export async function fastRequest( method: Method, path: string, - args: RequestArgs = {}, + args: RequestArgs = {}, enforce204: boolean = false, ): Promise { const resp = await baseRequest(method, path, args); diff --git a/Foxnouns.Frontend/src/lib/api/models/moderation.ts b/Foxnouns.Frontend/src/lib/api/models/moderation.ts deleted file mode 100644 index b95da5c..0000000 --- a/Foxnouns.Frontend/src/lib/api/models/moderation.ts +++ /dev/null @@ -1,26 +0,0 @@ -export type CreateReportRequest = { - reason: ReportReason; - context: string | null; -}; - -export enum ReportReason { - Totalitarianism = "TOTALITARIANISM", - HateSpeech = "HATE_SPEECH", - Racism = "RACISM", - Homophobia = "HOMOPHOBIA", - Transphobia = "TRANSPHOBIA", - Queerphobia = "QUEERPHOBIA", - Exclusionism = "EXCLUSIONISM", - Sexism = "SEXISM", - Ableism = "ABLEISM", - ChildPornography = "CHILD_PORNOGRAPHY", - PedophiliaAdvocacy = "PEDOPHILIA_ADVOCACY", - Harassment = "HARASSMENT", - Impersonation = "IMPERSONATION", - Doxxing = "DOXXING", - EncouragingSelfHarm = "ENCOURAGING_SELF_HARM", - Spam = "SPAM", - Trolling = "TROLLING", - Advertisement = "ADVERTISEMENT", - CopyrightViolation = "COPYRIGHT_VIOLATION", -} diff --git a/Foxnouns.Frontend/src/lib/components/Navbar.svelte b/Foxnouns.Frontend/src/lib/components/Navbar.svelte index 4330312..68c1b14 100644 --- a/Foxnouns.Frontend/src/lib/components/Navbar.svelte +++ b/Foxnouns.Frontend/src/lib/components/Navbar.svelte @@ -8,7 +8,7 @@ NavLink, NavItem, } from "@sveltestrap/sveltestrap"; - import { page } from "$app/state"; + import { page } from "$app/stores"; import type { Meta, MeUser } from "$api/models/index"; import Logo from "$components/Logo.svelte"; import { t } from "$lib/i18n"; @@ -51,19 +51,19 @@ @{user.username} - + {$t("nav.settings")} {:else} - + {$t("nav.log-in")} diff --git a/Foxnouns.Frontend/src/lib/components/RequiredFieldMarker.svelte b/Foxnouns.Frontend/src/lib/components/RequiredFieldMarker.svelte deleted file mode 100644 index f67d9ef..0000000 --- a/Foxnouns.Frontend/src/lib/components/RequiredFieldMarker.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - -{#if required} - * -{:else} - {$t("form.optional")} -{/if} diff --git a/Foxnouns.Frontend/src/lib/components/profile/ProfileButtons.svelte b/Foxnouns.Frontend/src/lib/components/profile/ProfileButtons.svelte deleted file mode 100644 index d3de215..0000000 --- a/Foxnouns.Frontend/src/lib/components/profile/ProfileButtons.svelte +++ /dev/null @@ -1,36 +0,0 @@ - - -
- - - {#if meUser && meUser.username !== user} - {$t("profile.report-button")} - {/if} -
diff --git a/Foxnouns.Frontend/src/lib/i18n/locales/en.json b/Foxnouns.Frontend/src/lib/i18n/locales/en.json index 16f5527..2ede9a1 100644 --- a/Foxnouns.Frontend/src/lib/i18n/locales/en.json +++ b/Foxnouns.Frontend/src/lib/i18n/locales/en.json @@ -18,10 +18,7 @@ "pronouns-header": "Pronouns", "default-members-header": "Members", "create-member-button": "Create member", - "back-to-user": "Back to {{name}}", - "copy-link-button": "Copy link", - "copy-short-link-button": "Copy short link", - "report-button": "Report profile" + "back-to-user": "Back to {{name}}" }, "title": { "log-in": "Log in", @@ -240,35 +237,5 @@ "custom-preference-muted": "Show as muted text", "custom-preference-favourite": "Treat like favourite" }, - "cancel": "Cancel", - "report": { - "title": "Reporting {{name}}", - "totalitarianism": "Support of totalitarian regimes", - "hate-speech": "Hate speech", - "racism": "Racism or xenophobia", - "homophobia": "Homophobia", - "transphobia": "Transphobia", - "queerphobia": "Queerphobia (other)", - "exclusionism": "Queer or plural exclusionism", - "sexism": "Sexism or misogyny", - "ableism": "Ableism", - "child-pornography": "Child pornography", - "pedophilia-advocacy": "Pedophilia advocacy", - "harassment": "Harassment", - "impersonation": "Impersonation", - "doxxing": "Doxxing", - "encouraging-self-harm": "Encouraging self-harm or suicide", - "spam": "Spam", - "trolling": "Trolling", - "advertisement": "Advertising", - "copyright-violation": "Copyright or trademark violation", - "success": "Successfully submitted report!", - "reason-label": "Why are you reporting this profile?", - "context-label": "Is there any context you'd like to give us?", - "submit-button": "Submit report" - }, - "form": { - "optional": "(optional)", - "required": "Required" - } + "cancel": "Cancel" } diff --git a/Foxnouns.Frontend/src/routes/+error.svelte b/Foxnouns.Frontend/src/routes/+error.svelte index e667611..ca116b9 100644 --- a/Foxnouns.Frontend/src/routes/+error.svelte +++ b/Foxnouns.Frontend/src/routes/+error.svelte @@ -1,6 +1,5 @@ - - - {$t("report.title", { name })} • pronouns.cc - - -
-
-

{$t("report.title", { name })}

- - - - -

{$t("report.reason-label")}

-
- {#each reasons as reason} -
-
- - -
-
- {/each} -
- -

- {$t("report.context-label")} - -

- - -
- - {$t("cancel")} -
- -
diff --git a/Foxnouns.Frontend/src/routes/settings/+layout.svelte b/Foxnouns.Frontend/src/routes/settings/+layout.svelte index 11801cf..6786e63 100644 --- a/Foxnouns.Frontend/src/routes/settings/+layout.svelte +++ b/Foxnouns.Frontend/src/routes/settings/+layout.svelte @@ -1,6 +1,6 @@ diff --git a/Foxnouns.Frontend/src/routes/settings/members/[id]/+layout@.svelte b/Foxnouns.Frontend/src/routes/settings/members/[id]/+layout@.svelte index faae426..7de4046 100644 --- a/Foxnouns.Frontend/src/routes/settings/members/[id]/+layout@.svelte +++ b/Foxnouns.Frontend/src/routes/settings/members/[id]/+layout@.svelte @@ -1,13 +1,13 @@