diff --git a/frontend/package.json b/frontend/package.json index 1502a4ba7..62fb677ec 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -177,7 +177,7 @@ "uuid": "^13.0.0", "web-vitals": "^5.1.0", "webrtc-adapter": "^9.0.4", - "zod": "^3.24.1", + "zod": "^4.6.7", "zustand": "^5.0.3" }, "devDependencies": { diff --git a/frontend/src/app/api/app-lock/settings/route.ts b/frontend/src/app/api/app-lock/settings/route.ts index 512b1edc2..d27d88e1e 100644 --- a/frontend/src/app/api/app-lock/settings/route.ts +++ b/frontend/src/app/api/app-lock/settings/route.ts @@ -304,7 +304,7 @@ async function handlePut(request: AuthenticatedRequest): Promise { const validation = updateSettingsSchema.safeParse(body); if (!validation.success) { const errors: Record = {}; - for (const error of validation.error.errors) { + for (const error of validation.error.issues) { const path = error.path.join("."); if (!errors[path]) { errors[path] = []; diff --git a/frontend/src/app/api/app-lock/unlock/route.ts b/frontend/src/app/api/app-lock/unlock/route.ts index 876ae03d9..7a186a983 100644 --- a/frontend/src/app/api/app-lock/unlock/route.ts +++ b/frontend/src/app/api/app-lock/unlock/route.ts @@ -165,7 +165,7 @@ async function handlePost( const validation = lockEventSchema.safeParse(body); if (!validation.success) { const errors: Record = {}; - for (const error of validation.error.errors) { + for (const error of validation.error.issues) { const path = error.path.join("."); if (!errors[path]) { errors[path] = []; @@ -222,7 +222,7 @@ async function handlePost( const validation = unlockEventSchema.safeParse(body); if (!validation.success) { const errors: Record = {}; - for (const error of validation.error.errors) { + for (const error of validation.error.issues) { const path = error.path.join("."); if (!errors[path]) { errors[path] = []; diff --git a/frontend/src/app/api/billing/checkout/create/route.ts b/frontend/src/app/api/billing/checkout/create/route.ts index 1781699a0..8b7b31846 100644 --- a/frontend/src/app/api/billing/checkout/create/route.ts +++ b/frontend/src/app/api/billing/checkout/create/route.ts @@ -23,7 +23,7 @@ const createCheckoutSchema = z.object({ clientReferenceId: z.string().optional(), allowPromotionCodes: z.boolean().optional(), idempotencyKey: z.string().optional(), - metadata: z.record(z.string()).optional(), + metadata: z.record(z.string(), z.string()).optional(), }); export async function POST(request: NextRequest) { @@ -33,7 +33,7 @@ export async function POST(request: NextRequest) { if (!validation.success) { return NextResponse.json( - { error: "Invalid request", details: validation.error.errors }, + { error: "Invalid request", details: validation.error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/billing/checkout/route.ts b/frontend/src/app/api/billing/checkout/route.ts index a3d65826b..e37b82cea 100644 --- a/frontend/src/app/api/billing/checkout/route.ts +++ b/frontend/src/app/api/billing/checkout/route.ts @@ -36,7 +36,7 @@ export async function POST(request: NextRequest) { return NextResponse.json( { error: "Validation failed", - details: validationResult.error.errors, + details: validationResult.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/billing/crypto/create/route.ts b/frontend/src/app/api/billing/crypto/create/route.ts index d9e7a0179..b0c6fe036 100644 --- a/frontend/src/app/api/billing/crypto/create/route.ts +++ b/frontend/src/app/api/billing/crypto/create/route.ts @@ -32,7 +32,7 @@ export async function POST(request: NextRequest) { return NextResponse.json( { error: "Validation failed", - details: validationResult.error.errors, + details: validationResult.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/billing/crypto/verify/route.ts b/frontend/src/app/api/billing/crypto/verify/route.ts index 5418005eb..33d9b7ef1 100644 --- a/frontend/src/app/api/billing/crypto/verify/route.ts +++ b/frontend/src/app/api/billing/crypto/verify/route.ts @@ -24,7 +24,7 @@ export async function POST(request: NextRequest) { return NextResponse.json( { error: "Validation failed", - details: validationResult.error.errors, + details: validationResult.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/billing/invoices/[invoiceId]/pay/route.ts b/frontend/src/app/api/billing/invoices/[invoiceId]/pay/route.ts index e68e81310..1c81571e4 100644 --- a/frontend/src/app/api/billing/invoices/[invoiceId]/pay/route.ts +++ b/frontend/src/app/api/billing/invoices/[invoiceId]/pay/route.ts @@ -34,7 +34,7 @@ export async function POST(request: NextRequest, context: RouteContext) { if (!validation.success) { return NextResponse.json( - { error: "Invalid request", details: validation.error.errors }, + { error: "Invalid request", details: validation.error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/billing/invoices/route.ts b/frontend/src/app/api/billing/invoices/route.ts index efb0f9e18..21284068d 100644 --- a/frontend/src/app/api/billing/invoices/route.ts +++ b/frontend/src/app/api/billing/invoices/route.ts @@ -17,7 +17,7 @@ const createInvoiceSchema = z.object({ collectionMethod: z.enum(["charge_automatically", "send_invoice"]).optional(), daysUntilDue: z.number().int().min(1).max(365).optional(), description: z.string().optional(), - metadata: z.record(z.string()).optional(), + metadata: z.record(z.string(), z.string()).optional(), statementDescriptor: z.string().max(22).optional(), footer: z.string().optional(), idempotencyKey: z.string().optional(), @@ -37,7 +37,7 @@ export async function POST(request: NextRequest) { if (!validation.success) { return NextResponse.json( - { error: "Invalid request", details: validation.error.errors }, + { error: "Invalid request", details: validation.error.issues }, { status: 400 }, ); } @@ -123,7 +123,7 @@ export async function GET(request: NextRequest) { const validation = listInvoicesSchema.safeParse(params); if (!validation.success) { return NextResponse.json( - { error: "Invalid request", details: validation.error.errors }, + { error: "Invalid request", details: validation.error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/billing/invoices/upcoming/route.ts b/frontend/src/app/api/billing/invoices/upcoming/route.ts index a29f8d978..13c5bf34a 100644 --- a/frontend/src/app/api/billing/invoices/upcoming/route.ts +++ b/frontend/src/app/api/billing/invoices/upcoming/route.ts @@ -25,7 +25,7 @@ export async function GET(request: NextRequest) { const validation = upcomingInvoiceSchema.safeParse(params); if (!validation.success) { return NextResponse.json( - { error: "Invalid request", details: validation.error.errors }, + { error: "Invalid request", details: validation.error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/billing/payment-intent/route.ts b/frontend/src/app/api/billing/payment-intent/route.ts index b917cbd87..7a5a40328 100644 --- a/frontend/src/app/api/billing/payment-intent/route.ts +++ b/frontend/src/app/api/billing/payment-intent/route.ts @@ -20,7 +20,7 @@ const paymentIntentSchema = z.object({ description: z.string().optional(), receiptEmail: z.string().email().optional(), paymentMethodTypes: z.array(z.string()).optional(), - metadata: z.record(z.string()).optional(), + metadata: z.record(z.string(), z.string()).optional(), }); function getStripe(): Stripe { @@ -42,7 +42,7 @@ export async function POST(request: NextRequest) { if (!result.success) { return NextResponse.json( - { error: "Validation failed", details: result.error.errors }, + { error: "Validation failed", details: result.error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/billing/payouts/[id]/approve/route.ts b/frontend/src/app/api/billing/payouts/[id]/approve/route.ts index 75adc27ce..7de668e5f 100644 --- a/frontend/src/app/api/billing/payouts/[id]/approve/route.ts +++ b/frontend/src/app/api/billing/payouts/[id]/approve/route.ts @@ -25,7 +25,7 @@ export async function POST( if (!validation.success) { return NextResponse.json( - { error: "Invalid request", details: validation.error.errors }, + { error: "Invalid request", details: validation.error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/billing/payouts/route.ts b/frontend/src/app/api/billing/payouts/route.ts index 55e3d3cad..f17148979 100644 --- a/frontend/src/app/api/billing/payouts/route.ts +++ b/frontend/src/app/api/billing/payouts/route.ts @@ -26,7 +26,7 @@ const createPayoutSchema = z.object({ "internal_transfer", ]), recipientName: z.string().min(1), - recipientDetails: z.record(z.unknown()), + recipientDetails: z.record(z.string(), z.unknown()), description: z.string().min(1), category: z.enum([ "vendor_payment", @@ -40,7 +40,7 @@ const createPayoutSchema = z.object({ ]), reference: z.string().optional(), recipientId: z.string().optional(), - metadata: z.record(z.unknown()).optional(), + metadata: z.record(z.string(), z.unknown()).optional(), submitForApproval: z.boolean().optional(), }); @@ -51,7 +51,7 @@ export async function POST(request: NextRequest) { if (!validation.success) { return NextResponse.json( - { error: "Invalid request", details: validation.error.errors }, + { error: "Invalid request", details: validation.error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/billing/portal/route.ts b/frontend/src/app/api/billing/portal/route.ts index bf10e8ac3..b0a476bb5 100644 --- a/frontend/src/app/api/billing/portal/route.ts +++ b/frontend/src/app/api/billing/portal/route.ts @@ -33,7 +33,7 @@ export async function POST(request: NextRequest) { return NextResponse.json( { error: "Validation failed", - details: validationResult.error.errors, + details: validationResult.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/billing/reconciliation/route.ts b/frontend/src/app/api/billing/reconciliation/route.ts index e84c09741..47db55fc2 100644 --- a/frontend/src/app/api/billing/reconciliation/route.ts +++ b/frontend/src/app/api/billing/reconciliation/route.ts @@ -28,7 +28,7 @@ export async function POST(request: NextRequest) { if (!validation.success) { return NextResponse.json( - { error: "Invalid request", details: validation.error.errors }, + { error: "Invalid request", details: validation.error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/billing/refunds/route.ts b/frontend/src/app/api/billing/refunds/route.ts index c55d5620c..95e1a18ee 100644 --- a/frontend/src/app/api/billing/refunds/route.ts +++ b/frontend/src/app/api/billing/refunds/route.ts @@ -19,7 +19,7 @@ const createRefundSchema = z reason: z .enum(["duplicate", "fraudulent", "requested_by_customer"]) .optional(), - metadata: z.record(z.string()).optional(), + metadata: z.record(z.string(), z.string()).optional(), reverseTransfer: z.boolean().optional(), refundApplicationFee: z.boolean().optional(), instructionsEmail: z.string().email().optional(), @@ -30,7 +30,7 @@ const createRefundSchema = z }); const bulkRefundSchema = z.object({ - refunds: z.array(createRefundSchema.innerType()), + refunds: z.array(createRefundSchema), stopOnError: z.boolean().optional(), }); @@ -43,7 +43,7 @@ export async function POST(request: NextRequest) { const validation = bulkRefundSchema.safeParse(body); if (!validation.success) { return NextResponse.json( - { error: "Invalid request", details: validation.error.errors }, + { error: "Invalid request", details: validation.error.issues }, { status: 400 }, ); } @@ -76,7 +76,7 @@ export async function POST(request: NextRequest) { const validation = createRefundSchema.safeParse(body); if (!validation.success) { return NextResponse.json( - { error: "Invalid request", details: validation.error.errors }, + { error: "Invalid request", details: validation.error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/billing/subscribe/route.ts b/frontend/src/app/api/billing/subscribe/route.ts index 8f50ef284..e9336ad15 100644 --- a/frontend/src/app/api/billing/subscribe/route.ts +++ b/frontend/src/app/api/billing/subscribe/route.ts @@ -33,7 +33,7 @@ export async function POST(request: NextRequest) { return NextResponse.json( { error: "Validation failed", - details: validationResult.error.errors, + details: validationResult.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/billing/token-gate/route.ts b/frontend/src/app/api/billing/token-gate/route.ts index 42b0dbf13..c4baceb10 100644 --- a/frontend/src/app/api/billing/token-gate/route.ts +++ b/frontend/src/app/api/billing/token-gate/route.ts @@ -93,7 +93,7 @@ export async function POST(request: NextRequest) { return NextResponse.json( { error: "Validation failed", - details: validationResult.error.errors, + details: validationResult.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/billing/token-gate/verify/route.ts b/frontend/src/app/api/billing/token-gate/verify/route.ts index 4ddbdb670..c27f960e4 100644 --- a/frontend/src/app/api/billing/token-gate/verify/route.ts +++ b/frontend/src/app/api/billing/token-gate/verify/route.ts @@ -26,7 +26,7 @@ export async function POST(request: NextRequest) { return NextResponse.json( { error: "Validation failed", - details: validationResult.error.errors, + details: validationResult.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/billing/treasury/route.ts b/frontend/src/app/api/billing/treasury/route.ts index e183ee5fe..b65655325 100644 --- a/frontend/src/app/api/billing/treasury/route.ts +++ b/frontend/src/app/api/billing/treasury/route.ts @@ -83,7 +83,7 @@ export async function POST(request: NextRequest) { if (!validation.success) { return NextResponse.json( - { error: "Invalid request", details: validation.error.errors }, + { error: "Invalid request", details: validation.error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/billing/upgrade/route.ts b/frontend/src/app/api/billing/upgrade/route.ts index afdbff6e6..c7ab88591 100644 --- a/frontend/src/app/api/billing/upgrade/route.ts +++ b/frontend/src/app/api/billing/upgrade/route.ts @@ -78,7 +78,7 @@ export async function POST(request: NextRequest) { return NextResponse.json( { error: "Validation failed", - details: validationResult.error.errors, + details: validationResult.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/calls/[id]/participants/route.ts b/frontend/src/app/api/calls/[id]/participants/route.ts index c4fa34d48..00ab555e0 100644 --- a/frontend/src/app/api/calls/[id]/participants/route.ts +++ b/frontend/src/app/api/calls/[id]/participants/route.ts @@ -303,7 +303,7 @@ export async function POST( const validation = addParticipantsSchema.safeParse(body); if (!validation.success) { return badRequestResponse("Invalid request body", "VALIDATION_ERROR", { - errors: validation.error.errors, + errors: validation.error.issues, }); } @@ -507,7 +507,7 @@ export async function DELETE( const validation = removeParticipantSchema.safeParse(body); if (!validation.success) { return badRequestResponse("Invalid request body", "VALIDATION_ERROR", { - errors: validation.error.errors, + errors: validation.error.issues, }); } diff --git a/frontend/src/app/api/calls/[id]/recording/route.ts b/frontend/src/app/api/calls/[id]/recording/route.ts index bcbd8a5c3..82364c156 100644 --- a/frontend/src/app/api/calls/[id]/recording/route.ts +++ b/frontend/src/app/api/calls/[id]/recording/route.ts @@ -60,7 +60,7 @@ export async function POST( if (!validation.success) { return NextResponse.json( - { error: "Invalid request body", details: validation.error.errors }, + { error: "Invalid request body", details: validation.error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/calls/initiate/route.ts b/frontend/src/app/api/calls/initiate/route.ts index 58513ce51..9b20ad355 100644 --- a/frontend/src/app/api/calls/initiate/route.ts +++ b/frontend/src/app/api/calls/initiate/route.ts @@ -17,7 +17,7 @@ const initiateCallSchema = z.object({ targetUserIds: z.array(z.string().uuid()).optional(), channelId: z.string().uuid().optional(), type: z.enum(["audio", "video", "screen_share"]).default("audio"), - metadata: z.record(z.unknown()).optional(), + metadata: z.record(z.string(), z.unknown()).optional(), }); export async function POST(request: NextRequest) { @@ -41,7 +41,7 @@ export async function POST(request: NextRequest) { if (!validation.success) { return NextResponse.json( - { error: "Invalid request", details: validation.error.errors }, + { error: "Invalid request", details: validation.error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/calls/quality/route.ts b/frontend/src/app/api/calls/quality/route.ts index 6ee3f5228..399cc5280 100644 --- a/frontend/src/app/api/calls/quality/route.ts +++ b/frontend/src/app/api/calls/quality/route.ts @@ -254,7 +254,7 @@ const QualityMetricsSchema = z.object({ .optional(), // Raw WebRTC stats - rtcStats: z.record(z.unknown()).optional(), + rtcStats: z.record(z.string(), z.unknown()).optional(), }); const QualityQuerySchema = z.object({ diff --git a/frontend/src/app/api/channels/[id]/categories/route.ts b/frontend/src/app/api/channels/[id]/categories/route.ts index 1cfa3c6a5..1b7f678ef 100644 --- a/frontend/src/app/api/channels/[id]/categories/route.ts +++ b/frontend/src/app/api/channels/[id]/categories/route.ts @@ -96,7 +96,7 @@ export async function PUT( { success: false, error: "Invalid request body", - details: validation.error.errors, + details: validation.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/channels/[id]/token-gate/route.ts b/frontend/src/app/api/channels/[id]/token-gate/route.ts index 8c4b0ca13..abc1ccb15 100644 --- a/frontend/src/app/api/channels/[id]/token-gate/route.ts +++ b/frontend/src/app/api/channels/[id]/token-gate/route.ts @@ -39,7 +39,7 @@ export async function POST( return NextResponse.json( { error: "Validation failed", - details: validationResult.error.errors, + details: validationResult.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/channels/broadcast/[id]/route.ts b/frontend/src/app/api/channels/broadcast/[id]/route.ts index 8a5fa88b1..817a89ea0 100644 --- a/frontend/src/app/api/channels/broadcast/[id]/route.ts +++ b/frontend/src/app/api/channels/broadcast/[id]/route.ts @@ -208,7 +208,7 @@ export async function POST( { success: false, error: "Invalid request body", - details: validation.error.errors, + details: validation.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/channels/broadcast/route.ts b/frontend/src/app/api/channels/broadcast/route.ts index 200f74552..30b9db9b4 100644 --- a/frontend/src/app/api/channels/broadcast/route.ts +++ b/frontend/src/app/api/channels/broadcast/route.ts @@ -135,7 +135,7 @@ export async function GET(request: NextRequest) { { success: false, error: "Invalid query parameters", - details: error.errors, + details: error.issues, }, { status: 400 }, ); @@ -180,7 +180,7 @@ export async function POST(request: NextRequest) { { success: false, error: "Invalid request body", - details: validation.error.errors, + details: validation.error.issues, }, { status: 400 }, ); @@ -249,7 +249,7 @@ export async function POST(request: NextRequest) { { success: false, error: "Invalid request body", - details: error.errors, + details: error.issues, }, { status: 400 }, ); @@ -276,7 +276,7 @@ async function handleSendBroadcast( { success: false, error: "Invalid broadcast data", - details: validation.error.errors, + details: validation.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/channels/categories/route.ts b/frontend/src/app/api/channels/categories/route.ts index 8003107ae..e63608b31 100644 --- a/frontend/src/app/api/channels/categories/route.ts +++ b/frontend/src/app/api/channels/categories/route.ts @@ -113,7 +113,7 @@ export async function GET(request: NextRequest) { { success: false, error: "Invalid query parameters", - details: validation.error.errors, + details: validation.error.issues, }, { status: 400 }, ); @@ -189,7 +189,7 @@ export async function POST(request: NextRequest) { { success: false, error: "Invalid request body", - details: validation.error.errors, + details: validation.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/channels/communities/[id]/groups/route.ts b/frontend/src/app/api/channels/communities/[id]/groups/route.ts index 35d8c763c..d5cde34bf 100644 --- a/frontend/src/app/api/channels/communities/[id]/groups/route.ts +++ b/frontend/src/app/api/channels/communities/[id]/groups/route.ts @@ -166,7 +166,7 @@ export async function POST( { success: false, error: "Invalid request body", - details: validation.error.errors, + details: validation.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/channels/communities/[id]/route.ts b/frontend/src/app/api/channels/communities/[id]/route.ts index 8afecdf06..99cccd115 100644 --- a/frontend/src/app/api/channels/communities/[id]/route.ts +++ b/frontend/src/app/api/channels/communities/[id]/route.ts @@ -204,7 +204,7 @@ export async function PATCH( { success: false, error: "Invalid request body", - details: validation.error.errors, + details: validation.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/channels/communities/route.ts b/frontend/src/app/api/channels/communities/route.ts index c6c86a0d5..a8c4e0467 100644 --- a/frontend/src/app/api/channels/communities/route.ts +++ b/frontend/src/app/api/channels/communities/route.ts @@ -134,7 +134,7 @@ export async function GET(request: NextRequest) { { success: false, error: "Invalid query parameters", - details: error.errors, + details: error.issues, }, { status: 400 }, ); @@ -171,7 +171,7 @@ export async function POST(request: NextRequest) { { success: false, error: "Invalid request body", - details: validation.error.errors, + details: validation.error.issues, }, { status: 400 }, ); @@ -248,7 +248,7 @@ export async function POST(request: NextRequest) { { success: false, error: "Invalid request body", - details: error.errors, + details: error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/channels/guild/[id]/members/route.ts b/frontend/src/app/api/channels/guild/[id]/members/route.ts index f2c8fc27c..9629120d6 100644 --- a/frontend/src/app/api/channels/guild/[id]/members/route.ts +++ b/frontend/src/app/api/channels/guild/[id]/members/route.ts @@ -144,7 +144,7 @@ export async function GET( { success: false, error: "Invalid query parameters", - details: validation.error.errors, + details: validation.error.issues, }, { status: 400 }, ); @@ -331,7 +331,7 @@ export async function POST( { success: false, error: "Invalid request body", - details: singleValidation.error.errors, + details: singleValidation.error.issues, }, { status: 400 }, ); @@ -451,7 +451,7 @@ export async function PATCH( { success: false, error: "Invalid request body", - details: validation.error.errors, + details: validation.error.issues, }, { status: 400 }, ); @@ -585,7 +585,7 @@ export async function DELETE( { success: false, error: "Invalid request body", - details: validation.error.errors, + details: validation.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/channels/guild/[id]/route.ts b/frontend/src/app/api/channels/guild/[id]/route.ts index af5658c0c..4dc0cbd12 100644 --- a/frontend/src/app/api/channels/guild/[id]/route.ts +++ b/frontend/src/app/api/channels/guild/[id]/route.ts @@ -35,8 +35,8 @@ const updateGuildSchema = z.object({ maxFileSizeMb: z.number().int().min(8).max(1024).optional(), systemChannelId: z.string().uuid().optional().nullable(), rulesChannelId: z.string().uuid().optional().nullable(), - settings: z.record(z.any()).optional(), - features: z.record(z.any()).optional(), + settings: z.record(z.string(), z.any()).optional(), + features: z.record(z.string(), z.any()).optional(), }); // Helper functions @@ -235,7 +235,7 @@ export async function PATCH( { success: false, error: "Invalid request body", - details: validation.error.errors, + details: validation.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/channels/guild/route.ts b/frontend/src/app/api/channels/guild/route.ts index 77fda8bc2..b6670446c 100644 --- a/frontend/src/app/api/channels/guild/route.ts +++ b/frontend/src/app/api/channels/guild/route.ts @@ -122,7 +122,7 @@ export async function GET(request: NextRequest) { { success: false, error: "Invalid query parameters", - details: error.errors, + details: error.issues, }, { status: 400 }, ); @@ -162,7 +162,7 @@ export async function POST(request: NextRequest) { { success: false, error: "Invalid request body", - details: validation.error.errors, + details: validation.error.issues, }, { status: 400 }, ); @@ -406,7 +406,7 @@ export async function POST(request: NextRequest) { { success: false, error: "Invalid request body", - details: error.errors, + details: error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/entities/[id]/convert/route.ts b/frontend/src/app/api/entities/[id]/convert/route.ts index 3e4405397..d17f0d4d9 100644 --- a/frontend/src/app/api/entities/[id]/convert/route.ts +++ b/frontend/src/app/api/entities/[id]/convert/route.ts @@ -141,7 +141,7 @@ export async function POST(request: NextRequest, context: RouteContext) { { success: false, error: "Invalid request body", - details: parseResult.error.errors, + details: parseResult.error.issues, }, { status: 400 }, ); @@ -277,7 +277,7 @@ export async function POST(request: NextRequest, context: RouteContext) { { success: false, error: "Invalid request body", - details: error.errors, + details: error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/entities/route.ts b/frontend/src/app/api/entities/route.ts index ec8da6031..e907a7128 100644 --- a/frontend/src/app/api/entities/route.ts +++ b/frontend/src/app/api/entities/route.ts @@ -72,7 +72,7 @@ const createEntitySchema = z.discriminatedUnion("type", [ description: z.string().max(2000).optional(), avatarUrl: z.string().url().optional(), participantIds: z.array(z.string().uuid()).min(1).max(255), - settings: z.record(z.unknown()).optional(), + settings: z.record(z.string(), z.unknown()).optional(), }), // Supergroup creation z.object({ @@ -85,7 +85,7 @@ const createEntitySchema = z.discriminatedUnion("type", [ visibility: z .enum(["private", "public", "discoverable"]) .default("private"), - settings: z.record(z.unknown()).optional(), + settings: z.record(z.string(), z.unknown()).optional(), }), // Community creation z.object({ @@ -101,7 +101,7 @@ const createEntitySchema = z.discriminatedUnion("type", [ visibility: z .enum(["private", "public", "discoverable"]) .default("private"), - settings: z.record(z.unknown()).optional(), + settings: z.record(z.string(), z.unknown()).optional(), }), // Channel creation z.object({ @@ -111,7 +111,7 @@ const createEntitySchema = z.discriminatedUnion("type", [ avatarUrl: z.string().url().optional(), username: z.string().min(5).max(32).optional(), visibility: z.enum(["private", "public", "discoverable"]).default("public"), - settings: z.record(z.unknown()).optional(), + settings: z.record(z.string(), z.unknown()).optional(), }), ]); @@ -179,7 +179,7 @@ export async function GET(request: NextRequest) { { success: false, error: "Invalid query parameters", - details: error.errors, + details: error.issues, }, { status: 400 }, ); @@ -217,7 +217,7 @@ export async function POST(request: NextRequest) { { success: false, error: "Invalid request body", - details: parseResult.error.errors, + details: parseResult.error.issues, }, { status: 400 }, ); @@ -541,7 +541,7 @@ export async function POST(request: NextRequest) { { success: false, error: "Invalid request body", - details: error.errors, + details: error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/keys/backup/route.ts b/frontend/src/app/api/keys/backup/route.ts index f5fb752ec..be06760e1 100644 --- a/frontend/src/app/api/keys/backup/route.ts +++ b/frontend/src/app/api/keys/backup/route.ts @@ -85,7 +85,7 @@ export async function POST(request: NextRequest) { { error: "Validation error", code: "VALIDATION_ERROR", - details: error.errors, + details: error.issues, }, { status: 400 }, ); @@ -197,7 +197,7 @@ export async function PUT(request: NextRequest) { { error: "Validation error", code: "VALIDATION_ERROR", - details: error.errors, + details: error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/keys/devices/route.ts b/frontend/src/app/api/keys/devices/route.ts index 28b7d2193..ca2e8755b 100644 --- a/frontend/src/app/api/keys/devices/route.ts +++ b/frontend/src/app/api/keys/devices/route.ts @@ -96,7 +96,7 @@ export async function POST(request: NextRequest) { { error: "Validation error", code: "VALIDATION_ERROR", - details: error.errors, + details: error.issues, }, { status: 400 }, ); @@ -273,7 +273,7 @@ export async function PUT(request: NextRequest) { { error: "Validation error", code: "VALIDATION_ERROR", - details: error.errors, + details: error.issues, }, { status: 400 }, ); @@ -376,7 +376,7 @@ export async function PATCH(request: NextRequest) { { error: "Validation error", code: "VALIDATION_ERROR", - details: error.errors, + details: error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/keys/recovery/route.ts b/frontend/src/app/api/keys/recovery/route.ts index f7b411723..5740d431a 100644 --- a/frontend/src/app/api/keys/recovery/route.ts +++ b/frontend/src/app/api/keys/recovery/route.ts @@ -102,7 +102,7 @@ export async function POST(request: NextRequest) { { error: "Validation error", code: "VALIDATION_ERROR", - details: error.errors, + details: error.issues, }, { status: 400 }, ); @@ -180,7 +180,7 @@ export async function PUT(request: NextRequest) { { error: "Validation error", code: "VALIDATION_ERROR", - details: error.errors, + details: error.issues, }, { status: 400 }, ); @@ -245,7 +245,7 @@ export async function PATCH(request: NextRequest) { { error: "Validation error", code: "VALIDATION_ERROR", - details: error.errors, + details: error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/keys/revoke/route.ts b/frontend/src/app/api/keys/revoke/route.ts index b1df3577b..06c614445 100644 --- a/frontend/src/app/api/keys/revoke/route.ts +++ b/frontend/src/app/api/keys/revoke/route.ts @@ -89,7 +89,7 @@ export async function POST(request: NextRequest) { { error: "Validation error", code: "VALIDATION_ERROR", - details: error.errors, + details: error.issues, }, { status: 400 }, ); @@ -192,7 +192,7 @@ export async function PUT(request: NextRequest) { { error: "Validation error", code: "VALIDATION_ERROR", - details: error.errors, + details: error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/keys/rotate/route.ts b/frontend/src/app/api/keys/rotate/route.ts index 8554c8d26..26b8b9a19 100644 --- a/frontend/src/app/api/keys/rotate/route.ts +++ b/frontend/src/app/api/keys/rotate/route.ts @@ -103,7 +103,7 @@ export async function POST(request: NextRequest) { { error: "Validation error", code: "VALIDATION_ERROR", - details: error.errors, + details: error.issues, }, { status: 400 }, ); @@ -172,7 +172,7 @@ export async function PUT(request: NextRequest) { { error: "Validation error", code: "VALIDATION_ERROR", - details: error.errors, + details: error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/keys/status/route.ts b/frontend/src/app/api/keys/status/route.ts index 3e4f99c79..5184370bf 100644 --- a/frontend/src/app/api/keys/status/route.ts +++ b/frontend/src/app/api/keys/status/route.ts @@ -233,7 +233,7 @@ export async function POST(request: NextRequest) { { error: "Validation error", code: "VALIDATION_ERROR", - details: error.errors, + details: error.issues, }, { status: 400 }, ); @@ -300,7 +300,7 @@ export async function PUT(request: NextRequest) { { error: "Validation error", code: "VALIDATION_ERROR", - details: error.errors, + details: error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/livechat/conversations/[id]/messages/route.ts b/frontend/src/app/api/livechat/conversations/[id]/messages/route.ts index de267c421..074f2d090 100644 --- a/frontend/src/app/api/livechat/conversations/[id]/messages/route.ts +++ b/frontend/src/app/api/livechat/conversations/[id]/messages/route.ts @@ -64,7 +64,7 @@ const SendMessageSchema = z.object({ ) .optional(), isInternal: z.boolean().optional(), - metadata: z.record(z.unknown()).optional(), + metadata: z.record(z.string(), z.unknown()).optional(), }); const ListMessagesSchema = z.object({ diff --git a/frontend/src/app/api/livechat/conversations/[id]/route.ts b/frontend/src/app/api/livechat/conversations/[id]/route.ts index aa9f214d7..70d43998e 100644 --- a/frontend/src/app/api/livechat/conversations/[id]/route.ts +++ b/frontend/src/app/api/livechat/conversations/[id]/route.ts @@ -40,7 +40,7 @@ const UpdateConversationSchema = z.object({ priority: z.enum(["low", "medium", "high", "urgent"]).optional(), department: z.string().optional(), tags: z.array(z.string()).optional(), - customFields: z.record(z.unknown()).optional(), + customFields: z.record(z.string(), z.unknown()).optional(), }); // ============================================================================ diff --git a/frontend/src/app/api/livechat/conversations/route.ts b/frontend/src/app/api/livechat/conversations/route.ts index 779181782..350e82eec 100644 --- a/frontend/src/app/api/livechat/conversations/route.ts +++ b/frontend/src/app/api/livechat/conversations/route.ts @@ -50,7 +50,7 @@ const CreateConversationSchema = z.object({ "api", ]), priority: z.enum(["low", "medium", "high", "urgent"]).optional(), - customFields: z.record(z.unknown()).optional(), + customFields: z.record(z.string(), z.unknown()).optional(), source: z .object({ type: z.enum(["widget", "email", "api", "social"]), diff --git a/frontend/src/app/api/livechat/visitors/route.ts b/frontend/src/app/api/livechat/visitors/route.ts index c456856fa..f355dd547 100644 --- a/frontend/src/app/api/livechat/visitors/route.ts +++ b/frontend/src/app/api/livechat/visitors/route.ts @@ -48,8 +48,8 @@ const CreateVisitorSchema = z.object({ "sms", "api", ]), - customFields: z.record(z.unknown()).optional(), - metadata: z.record(z.unknown()).optional(), + customFields: z.record(z.string(), z.unknown()).optional(), + metadata: z.record(z.string(), z.unknown()).optional(), }); const ListVisitorsSchema = z.object({ diff --git a/frontend/src/app/api/messages/[id]/route.ts b/frontend/src/app/api/messages/[id]/route.ts index 2e17966c3..d024ff8d8 100644 --- a/frontend/src/app/api/messages/[id]/route.ts +++ b/frontend/src/app/api/messages/[id]/route.ts @@ -45,7 +45,7 @@ const UpdateMessageSchema = z.object({ .min(1, "Message content is required") .max(4000, "Message content too long"), mentions: z.array(z.string().uuid()).optional(), - metadata: z.record(z.unknown()).optional(), + metadata: z.record(z.string(), z.unknown()).optional(), }); // ============================================================================ diff --git a/frontend/src/app/api/messages/route.ts b/frontend/src/app/api/messages/route.ts index 25e3e9240..a77c2dcb3 100644 --- a/frontend/src/app/api/messages/route.ts +++ b/frontend/src/app/api/messages/route.ts @@ -66,7 +66,7 @@ const CreateMessageSchema = z.object({ }), ) .optional(), - metadata: z.record(z.unknown()).optional(), + metadata: z.record(z.string(), z.unknown()).optional(), }); const UpdateMessageSchema = z.object({ @@ -76,7 +76,7 @@ const UpdateMessageSchema = z.object({ .min(1, "Message content is required") .max(4000, "Message content too long"), mentions: z.array(z.string().uuid()).optional(), - metadata: z.record(z.unknown()).optional(), + metadata: z.record(z.string(), z.unknown()).optional(), }); const SearchQuerySchema = z.object({ diff --git a/frontend/src/app/api/notifications/batch/route.ts b/frontend/src/app/api/notifications/batch/route.ts index 13932d23e..1b21d9ab6 100644 --- a/frontend/src/app/api/notifications/batch/route.ts +++ b/frontend/src/app/api/notifications/batch/route.ts @@ -38,7 +38,7 @@ const NotificationSchema = z.object({ messageId: z.string().uuid().optional(), threadId: z.string().uuid().optional(), actionUrl: z.string().url().optional(), - metadata: z.record(z.unknown()).optional(), + metadata: z.record(z.string(), z.unknown()).optional(), }); const BatchCreateSchema = z.object({ @@ -366,7 +366,7 @@ export async function POST(request: NextRequest): Promise { { success: false, error: "Invalid request data", - details: parsed.error.errors, + details: parsed.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/notifications/digest/route.ts b/frontend/src/app/api/notifications/digest/route.ts index 5a921ca5b..a62f99a8e 100644 --- a/frontend/src/app/api/notifications/digest/route.ts +++ b/frontend/src/app/api/notifications/digest/route.ts @@ -357,7 +357,7 @@ export async function POST(request: NextRequest): Promise { { success: false, error: "Invalid request data", - details: parsed.error.errors, + details: parsed.error.issues, }, { status: 400 }, ); @@ -542,7 +542,7 @@ export async function PUT(request: NextRequest): Promise { { success: false, error: "Invalid settings data", - details: parsed.error.errors, + details: parsed.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/notifications/preferences/route.ts b/frontend/src/app/api/notifications/preferences/route.ts index 5d059a8c6..379497163 100644 --- a/frontend/src/app/api/notifications/preferences/route.ts +++ b/frontend/src/app/api/notifications/preferences/route.ts @@ -283,7 +283,7 @@ export async function PUT(request: NextRequest): Promise { { success: false, error: "Invalid preferences data", - details: parsed.error.errors, + details: parsed.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/notifications/route.ts b/frontend/src/app/api/notifications/route.ts index e246fe410..815edea60 100644 --- a/frontend/src/app/api/notifications/route.ts +++ b/frontend/src/app/api/notifications/route.ts @@ -51,7 +51,7 @@ const CreateNotificationSchema = z.object({ messageId: z.string().uuid().optional(), threadId: z.string().uuid().optional(), actionUrl: z.string().url().optional(), - metadata: z.record(z.unknown()).optional(), + metadata: z.record(z.string(), z.unknown()).optional(), }); const UpdateNotificationSchema = z.object({ @@ -349,7 +349,7 @@ export async function GET(request: NextRequest) { { success: false, error: "Invalid query parameters", - details: parsed.error.errors, + details: parsed.error.issues, }, { status: 400 }, ); @@ -480,7 +480,7 @@ export async function POST(request: NextRequest) { { success: false, error: "Invalid notification data", - details: parsed.error.errors, + details: parsed.error.issues, }, { status: 400 }, ); @@ -563,7 +563,7 @@ export async function PUT(request: NextRequest) { { success: false, error: "Invalid update data", - details: parsed.error.errors, + details: parsed.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/notifications/subscribe/route.ts b/frontend/src/app/api/notifications/subscribe/route.ts index d7194c8d1..4207c25c5 100644 --- a/frontend/src/app/api/notifications/subscribe/route.ts +++ b/frontend/src/app/api/notifications/subscribe/route.ts @@ -202,7 +202,7 @@ export async function POST(request: NextRequest): Promise { { success: false, error: "Invalid subscription data", - details: parsed.error.errors, + details: parsed.error.issues, }, { status: 400 }, ); @@ -341,7 +341,7 @@ export async function DELETE(request: NextRequest): Promise { { success: false, error: "Invalid unsubscribe data", - details: parsed.error.errors, + details: parsed.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/presence/route.ts b/frontend/src/app/api/presence/route.ts index 417cf7aa0..0e4141889 100644 --- a/frontend/src/app/api/presence/route.ts +++ b/frontend/src/app/api/presence/route.ts @@ -293,7 +293,7 @@ export async function GET(request: NextRequest) { { success: false, error: "Invalid query parameters", - details: parsed.error.errors, + details: parsed.error.issues, }, { status: 400 }, ); @@ -460,7 +460,7 @@ export async function POST(request: NextRequest) { { success: false, error: "Invalid request body", - details: parsed.error.errors, + details: parsed.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/privacy/consent/route.ts b/frontend/src/app/api/privacy/consent/route.ts index e3c84beca..e4b9a858f 100644 --- a/frontend/src/app/api/privacy/consent/route.ts +++ b/frontend/src/app/api/privacy/consent/route.ts @@ -154,7 +154,7 @@ export async function POST(request: NextRequest) { { error: "Validation Error", message: "Invalid consent data", - details: validation.error.errors, + details: validation.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/privacy/export/route.ts b/frontend/src/app/api/privacy/export/route.ts index 5909acd3d..87b88a751 100644 --- a/frontend/src/app/api/privacy/export/route.ts +++ b/frontend/src/app/api/privacy/export/route.ts @@ -99,7 +99,7 @@ export async function POST(request: NextRequest) { { error: "Validation Error", message: "Invalid export request", - details: validation.error.errors, + details: validation.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/privacy/settings/route.ts b/frontend/src/app/api/privacy/settings/route.ts index edbff35ff..a209cb336 100644 --- a/frontend/src/app/api/privacy/settings/route.ts +++ b/frontend/src/app/api/privacy/settings/route.ts @@ -217,7 +217,7 @@ export async function PUT(request: NextRequest) { { error: "Validation Error", message: "Invalid settings data", - details: validation.error.errors, + details: validation.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/recordings/[id]/route.ts b/frontend/src/app/api/recordings/[id]/route.ts index 709c4f334..244383b1e 100644 --- a/frontend/src/app/api/recordings/[id]/route.ts +++ b/frontend/src/app/api/recordings/[id]/route.ts @@ -130,7 +130,7 @@ export async function PATCH( const validation = updateRecordingSchema.safeParse(body); if (!validation.success) { return NextResponse.json( - { error: "Invalid request body", details: validation.error.errors }, + { error: "Invalid request body", details: validation.error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/recordings/redaction/route.ts b/frontend/src/app/api/recordings/redaction/route.ts index b5374415b..be50f8e2d 100644 --- a/frontend/src/app/api/recordings/redaction/route.ts +++ b/frontend/src/app/api/recordings/redaction/route.ts @@ -60,7 +60,7 @@ export async function POST(request: NextRequest) { const validation = createRedactionSchema.safeParse(body); if (!validation.success) { return NextResponse.json( - { error: "Invalid request body", details: validation.error.errors }, + { error: "Invalid request body", details: validation.error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/recordings/retention/route.ts b/frontend/src/app/api/recordings/retention/route.ts index fd37f31df..89d578a90 100644 --- a/frontend/src/app/api/recordings/retention/route.ts +++ b/frontend/src/app/api/recordings/retention/route.ts @@ -105,7 +105,7 @@ export async function POST(request: NextRequest) { const validation = createPolicySchema.safeParse(body); if (!validation.success) { return NextResponse.json( - { error: "Invalid request body", details: validation.error.errors }, + { error: "Invalid request body", details: validation.error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/recordings/route.ts b/frontend/src/app/api/recordings/route.ts index 577cd29e4..1b85ad57c 100644 --- a/frontend/src/app/api/recordings/route.ts +++ b/frontend/src/app/api/recordings/route.ts @@ -87,7 +87,7 @@ export async function GET(request: NextRequest) { const validation = listRecordingsSchema.safeParse(searchParams); if (!validation.success) { return NextResponse.json( - { error: "Invalid parameters", details: validation.error.errors }, + { error: "Invalid parameters", details: validation.error.issues }, { status: 400 }, ); } @@ -135,7 +135,7 @@ export async function POST(request: NextRequest) { const validation = startRecordingSchema.safeParse(body); if (!validation.success) { return NextResponse.json( - { error: "Invalid request body", details: validation.error.errors }, + { error: "Invalid request body", details: validation.error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/recordings/share/route.ts b/frontend/src/app/api/recordings/share/route.ts index 305539107..af2953b05 100644 --- a/frontend/src/app/api/recordings/share/route.ts +++ b/frontend/src/app/api/recordings/share/route.ts @@ -50,7 +50,7 @@ export async function POST(request: NextRequest) { const validation = createShareLinkSchema.safeParse(body); if (!validation.success) { return NextResponse.json( - { error: "Invalid request body", details: validation.error.errors }, + { error: "Invalid request body", details: validation.error.issues }, { status: 400 }, ); } @@ -140,7 +140,7 @@ export async function GET(request: NextRequest) { const validation = validateShareLinkSchema.safeParse({ token, password }); if (!validation.success) { return NextResponse.json( - { error: "Invalid parameters", details: validation.error.errors }, + { error: "Invalid parameters", details: validation.error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/security/scan/route.ts b/frontend/src/app/api/security/scan/route.ts index c464997da..fe4b92999 100644 --- a/frontend/src/app/api/security/scan/route.ts +++ b/frontend/src/app/api/security/scan/route.ts @@ -198,7 +198,7 @@ export async function POST(request: NextRequest) { } catch (error) { if (error instanceof z.ZodError) { return NextResponse.json( - { error: "Invalid request body", details: error.errors }, + { error: "Invalid request body", details: error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/security/vulnerabilities/[id]/route.ts b/frontend/src/app/api/security/vulnerabilities/[id]/route.ts index 81fad8641..73f9f78de 100644 --- a/frontend/src/app/api/security/vulnerabilities/[id]/route.ts +++ b/frontend/src/app/api/security/vulnerabilities/[id]/route.ts @@ -189,7 +189,7 @@ export async function PATCH( } catch (error) { if (error instanceof z.ZodError) { return NextResponse.json( - { error: "Invalid request body", details: error.errors }, + { error: "Invalid request body", details: error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/security/vulnerabilities/route.ts b/frontend/src/app/api/security/vulnerabilities/route.ts index 0d2c17cfd..251a135b0 100644 --- a/frontend/src/app/api/security/vulnerabilities/route.ts +++ b/frontend/src/app/api/security/vulnerabilities/route.ts @@ -180,7 +180,7 @@ export async function GET(request: NextRequest) { } catch (error) { if (error instanceof z.ZodError) { return NextResponse.json( - { error: "Invalid query parameters", details: error.errors }, + { error: "Invalid query parameters", details: error.issues }, { status: 400 }, ); } @@ -225,7 +225,7 @@ export async function POST(request: NextRequest) { } catch (error) { if (error instanceof z.ZodError) { return NextResponse.json( - { error: "Invalid request body", details: error.errors }, + { error: "Invalid request body", details: error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/settings/route.ts b/frontend/src/app/api/settings/route.ts index 50029a01f..38bc6d3ef 100644 --- a/frontend/src/app/api/settings/route.ts +++ b/frontend/src/app/api/settings/route.ts @@ -100,7 +100,7 @@ const localeSettingsSchema = z.object({ const keyboardShortcutSettingsSchema = z.object({ enabled: z.boolean(), - customShortcuts: z.record(z.string()), + customShortcuts: z.record(z.string(), z.string()), sendMessage: z.string(), newLine: z.string(), search: z.string(), @@ -242,7 +242,7 @@ async function postSettingsHandler(request: AuthenticatedRequest) { const validationResult = userSettingsSchema.safeParse(body); if (!validationResult.success) { const errors: Record = {}; - for (const error of validationResult.error.errors) { + for (const error of validationResult.error.issues) { const path = error.path.join("."); if (!errors[path]) { errors[path] = []; @@ -329,7 +329,7 @@ async function patchSettingsHandler(request: AuthenticatedRequest) { const validationResult = partialUserSettingsSchema.safeParse(body); if (!validationResult.success) { const errors: Record = {}; - for (const error of validationResult.error.errors) { + for (const error of validationResult.error.issues) { const path = error.path.join("."); if (!errors[path]) { errors[path] = []; diff --git a/frontend/src/app/api/settings/sync/route.ts b/frontend/src/app/api/settings/sync/route.ts index 256eee37f..40c93d831 100644 --- a/frontend/src/app/api/settings/sync/route.ts +++ b/frontend/src/app/api/settings/sync/route.ts @@ -117,7 +117,7 @@ const localeSettingsSchema = z.object({ const keyboardShortcutSettingsSchema = z.object({ enabled: z.boolean(), - customShortcuts: z.record(z.string()), + customShortcuts: z.record(z.string(), z.string()), sendMessage: z.string(), newLine: z.string(), search: z.string(), @@ -377,7 +377,7 @@ async function syncSettingsHandler(request: AuthenticatedRequest) { const validationResult = syncRequestSchema.safeParse(body); if (!validationResult.success) { const errors: Record = {}; - for (const error of validationResult.error.errors) { + for (const error of validationResult.error.issues) { const path = error.path.join("."); if (!errors[path]) { errors[path] = []; diff --git a/frontend/src/app/api/streams/[id]/analytics/route.ts b/frontend/src/app/api/streams/[id]/analytics/route.ts index fed2290c3..066a23564 100644 --- a/frontend/src/app/api/streams/[id]/analytics/route.ts +++ b/frontend/src/app/api/streams/[id]/analytics/route.ts @@ -268,7 +268,7 @@ export async function GET( logger.error("Error fetching stream analytics:", error); if (error instanceof z.ZodError) { return NextResponse.json( - { error: "Invalid query parameters", details: error.errors }, + { error: "Invalid query parameters", details: error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/streams/[id]/reactions/route.ts b/frontend/src/app/api/streams/[id]/reactions/route.ts index 1de7477f6..5105182b1 100644 --- a/frontend/src/app/api/streams/[id]/reactions/route.ts +++ b/frontend/src/app/api/streams/[id]/reactions/route.ts @@ -148,7 +148,7 @@ export async function POST( if (!validation.success) { return NextResponse.json( - { error: "Invalid request body", details: validation.error.errors }, + { error: "Invalid request body", details: validation.error.issues }, { status: 400 }, ); } diff --git a/frontend/src/app/api/tenants/[id]/route.ts b/frontend/src/app/api/tenants/[id]/route.ts index b954aeb1f..ac9b1c945 100644 --- a/frontend/src/app/api/tenants/[id]/route.ts +++ b/frontend/src/app/api/tenants/[id]/route.ts @@ -26,9 +26,9 @@ const updateTenantSchema = z.object({ customCSS: z.string().optional(), }) .optional(), - limits: z.record(z.any()).optional(), - features: z.record(z.any()).optional(), - metadata: z.record(z.any()).optional(), + limits: z.record(z.string(), z.any()).optional(), + features: z.record(z.string(), z.any()).optional(), + metadata: z.record(z.string(), z.any()).optional(), }); export async function GET( @@ -90,7 +90,7 @@ export async function PUT( return NextResponse.json( { error: "Validation failed", - details: validationResult.error.errors, + details: validationResult.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/tenants/create/route.ts b/frontend/src/app/api/tenants/create/route.ts index c571531fe..23ff86614 100644 --- a/frontend/src/app/api/tenants/create/route.ts +++ b/frontend/src/app/api/tenants/create/route.ts @@ -27,7 +27,7 @@ const createTenantSchema = z.object({ ownerPassword: z.string().min(8), plan: z.enum(["free", "pro", "enterprise", "custom"]).optional(), trial: z.boolean().optional(), - metadata: z.record(z.any()).optional(), + metadata: z.record(z.string(), z.any()).optional(), }); export async function POST(request: NextRequest) { @@ -41,7 +41,7 @@ export async function POST(request: NextRequest) { return NextResponse.json( { error: "Validation failed", - details: validationResult.error.errors, + details: validationResult.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/threads/[id]/reply/route.ts b/frontend/src/app/api/threads/[id]/reply/route.ts index b45b73ed7..6f18d35b7 100644 --- a/frontend/src/app/api/threads/[id]/reply/route.ts +++ b/frontend/src/app/api/threads/[id]/reply/route.ts @@ -43,7 +43,7 @@ const ThreadReplySchema = z.object({ }), ) .optional(), - metadata: z.record(z.unknown()).optional(), + metadata: z.record(z.string(), z.unknown()).optional(), }); // ============================================================================ diff --git a/frontend/src/app/api/web3/token-gate/[id]/route.ts b/frontend/src/app/api/web3/token-gate/[id]/route.ts index ba7bb37fa..534182404 100644 --- a/frontend/src/app/api/web3/token-gate/[id]/route.ts +++ b/frontend/src/app/api/web3/token-gate/[id]/route.ts @@ -126,7 +126,7 @@ export async function PUT( return NextResponse.json( { error: "Validation failed", - details: validationResult.error.errors, + details: validationResult.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/web3/token-gate/invalidate/route.ts b/frontend/src/app/api/web3/token-gate/invalidate/route.ts index cd6d29df0..6a16343ff 100644 --- a/frontend/src/app/api/web3/token-gate/invalidate/route.ts +++ b/frontend/src/app/api/web3/token-gate/invalidate/route.ts @@ -84,7 +84,7 @@ export async function POST(request: NextRequest) { return NextResponse.json( { error: "Validation failed", - details: validationResult.error.errors, + details: validationResult.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/web3/token-gate/route.ts b/frontend/src/app/api/web3/token-gate/route.ts index 20c6642a5..d56bb2df8 100644 --- a/frontend/src/app/api/web3/token-gate/route.ts +++ b/frontend/src/app/api/web3/token-gate/route.ts @@ -103,7 +103,7 @@ export async function POST(request: NextRequest) { return NextResponse.json( { error: "Validation failed", - details: validationResult.error.errors, + details: validationResult.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/app/api/web3/token-gate/verify/route.ts b/frontend/src/app/api/web3/token-gate/verify/route.ts index 31384804e..bdb4451e1 100644 --- a/frontend/src/app/api/web3/token-gate/verify/route.ts +++ b/frontend/src/app/api/web3/token-gate/verify/route.ts @@ -59,7 +59,7 @@ export async function POST(request: NextRequest) { return NextResponse.json( { error: "Validation failed", - details: validationResult.error.errors, + details: validationResult.error.issues, }, { status: 400 }, ); @@ -103,7 +103,7 @@ export async function POST(request: NextRequest) { return NextResponse.json( { error: "Validation failed", - details: validationResult.error.errors, + details: validationResult.error.issues, }, { status: 400 }, ); @@ -130,7 +130,7 @@ export async function POST(request: NextRequest) { return NextResponse.json( { error: "Validation failed", - details: validationResult.error.errors, + details: validationResult.error.issues, }, { status: 400 }, ); diff --git a/frontend/src/lib/env/validation.ts b/frontend/src/lib/env/validation.ts index 177d275ac..7d5581c04 100644 --- a/frontend/src/lib/env/validation.ts +++ b/frontend/src/lib/env/validation.ts @@ -135,7 +135,7 @@ export function validatePublicEnv() { }); } catch (error) { if (error instanceof z.ZodError) { - const errors = error.errors + const errors = error.issues .map((e) => ` - ${e.path.join(".")}: ${e.message}`) .join("\n"); throw new Error( @@ -187,7 +187,7 @@ export function validateServerEnv() { }); } catch (error) { if (error instanceof z.ZodError) { - const errors = error.errors + const errors = error.issues .map((e) => ` - ${e.path.join(".")}: ${e.message}`) .join("\n"); throw new Error( diff --git a/frontend/src/lib/env/validator.ts b/frontend/src/lib/env/validator.ts index d48db2b97..a94112d12 100644 --- a/frontend/src/lib/env/validator.ts +++ b/frontend/src/lib/env/validator.ts @@ -232,7 +232,9 @@ export function getEnvStatus(): EnvStatus { for (const issue of result.errors.issues) { const path = issue.path.join("."); - if (issue.code === "invalid_type" && issue.received === "undefined") { + // zod 4 dropped `issue.received`; env is parsed straight from process.env, so + // a variable that is absent there is the "missing" case. + if (issue.code === "invalid_type" && process.env[path] === undefined) { missing.push(path); } else { invalid.push(`${path}: ${issue.message}`); diff --git a/frontend/src/lib/secrets/secret-validator.ts b/frontend/src/lib/secrets/secret-validator.ts index 5c6fb3dcf..25976405d 100644 --- a/frontend/src/lib/secrets/secret-validator.ts +++ b/frontend/src/lib/secrets/secret-validator.ts @@ -418,7 +418,7 @@ export class SecretValidator { if (schema) { const parseResult = schema.safeParse(value); if (!parseResult.success) { - parseResult.error.errors.forEach((err) => { + parseResult.error.issues.forEach((err) => { errors.push(`${key}: ${err.message}`); }); result.valid = false; diff --git a/frontend/src/lib/security/input-validation.ts b/frontend/src/lib/security/input-validation.ts index b0e28f0f3..011c19826 100644 --- a/frontend/src/lib/security/input-validation.ts +++ b/frontend/src/lib/security/input-validation.ts @@ -324,7 +324,7 @@ export function validate( if (error instanceof z.ZodError) { return { success: false, - errors: error.errors.map((e) => `${e.path.join(".")}: ${e.message}`), + errors: error.issues.map((e) => `${e.path.join(".")}: ${e.message}`), }; } return { diff --git a/frontend/src/lib/settings/settings-schema.ts b/frontend/src/lib/settings/settings-schema.ts index c9cb504d3..81405911d 100644 --- a/frontend/src/lib/settings/settings-schema.ts +++ b/frontend/src/lib/settings/settings-schema.ts @@ -220,7 +220,7 @@ export const settingsExportSchema = z.object({ version: z.string(), exportedAt: z.string().datetime(), settings: partialUserSettingsSchema, - metadata: z.record(z.unknown()).optional(), + metadata: z.record(z.string(), z.unknown()).optional(), }); // ============================================================================ diff --git a/package.json b/package.json index a97d57b49..518234985 100644 --- a/package.json +++ b/package.json @@ -100,9 +100,10 @@ "joi@<17.13.8": ">=17.13.8 <18.0.0", "js-cookie@<3.0.7": ">=3.0.7", "moment@<2.31.0": ">=2.31.0 <3.0.0", - "body-parser@<1.20.6": ">=1.20.6 <2.0.0", + "body-parser@<1.20.9": ">=1.20.9 <2.0.0", + "body-parser@>=2.0.0 <2.4.0": ">=2.4.0 <3.0.0", "@puppeteer/browsers": ">=3.2.2 <4", - "puppeteer-core": ">=25.9.0 <26", + "puppeteer-core": ">=25.13.0 <26", "handlebars@<4.7.10": ">=4.7.10 <5.0.0", "proxy-addr@<2.0.8": ">=2.0.8 <3.0.0", "compression@<1.8.2": ">=1.8.2 <2.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 55e7f04ba..a192b7f14 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -85,9 +85,10 @@ overrides: joi@<17.13.8: '>=17.13.8 <18.0.0' js-cookie@<3.0.7: '>=3.0.7' moment@<2.31.0: '>=2.31.0 <3.0.0' - body-parser@<1.20.6: '>=1.20.6 <2.0.0' + body-parser@<1.20.9: '>=1.20.9 <2.0.0' + body-parser@>=2.0.0 <2.4.0: '>=2.4.0 <3.0.0' '@puppeteer/browsers': '>=3.2.2 <4' - puppeteer-core: '>=25.9.0 <26' + puppeteer-core: '>=25.13.0 <26' handlebars@<4.7.10: '>=4.7.10 <5.0.0' proxy-addr@<2.0.8: '>=2.0.8 <3.0.0' compression@<1.8.2: '>=1.8.2 <2.0.0' @@ -213,7 +214,7 @@ importers: version: 8.0.2 '@apollo/client': specifier: ^3.14.0 - version: 3.14.1(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.14.0)(ws@8.21.3))(graphql@16.14.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + version: 3.14.1(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.14.0)(ws@8.22.0))(graphql@16.14.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@aws-sdk/client-s3': specifier: ^3.1009.0 version: 3.1048.0 @@ -471,7 +472,7 @@ importers: version: 16.14.0 graphql-ws: specifier: ^6.0.6 - version: 6.0.8(graphql@16.14.0)(ws@8.21.3) + version: 6.0.8(graphql@16.14.0)(ws@8.22.0) highlight.js: specifier: ^11.11.1 version: 11.11.1 @@ -650,8 +651,8 @@ importers: specifier: ^9.0.4 version: 9.0.5 zod: - specifier: ^3.24.1 - version: 3.25.76 + specifier: ^4.6.7 + version: 4.6.7 zustand: specifier: ^5.0.3 version: 5.0.13(@types/react@19.2.17)(immer@11.1.8)(react@19.2.6)(use-sync-external-store@1.6.0(react@19.2.6)) @@ -772,16 +773,16 @@ importers: version: 9.27.1 '@wdio/appium-service': specifier: ^9.26.1 - version: 9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0) + version: 9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0) '@wdio/cli': specifier: ^9.26.1 - version: 9.27.1(@types/node@25.9.3)(expect-webdriverio@5.6.5)(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0) + version: 9.27.1(@types/node@25.9.3)(expect-webdriverio@5.6.5)(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0) '@wdio/junit-reporter': specifier: ^9.26.1 version: 9.27.1 '@wdio/local-runner': specifier: ^9.26.1 - version: 9.27.1(@wdio/globals@9.27.1)(proxy-agent@6.5.0)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0))(yauzl@3.4.0) + version: 9.27.1(@wdio/globals@9.27.1)(proxy-agent@6.5.0)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0))(yauzl@3.4.0) '@wdio/mocha-framework': specifier: ^9.26.1 version: 9.27.1(proxy-agent@6.5.0)(yauzl@3.4.0) @@ -907,7 +908,7 @@ importers: version: 6.0.3 webdriverio: specifier: ^9.26.1 - version: 9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0) + version: 9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0) yaml: specifier: ^2.9.0 version: 2.9.0 @@ -1104,7 +1105,7 @@ importers: dependencies: '@apollo/client': specifier: ^3.14.0 - version: 3.14.1(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.14.0)(ws@8.21.3))(graphql@16.14.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + version: 3.14.1(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.14.0)(ws@8.22.0))(graphql@16.14.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@nhost/nhost-js': specifier: ^3.3.1 version: 3.3.1(encoding@0.1.13)(graphql@16.14.0) @@ -7171,12 +7172,12 @@ packages: blurhash@2.0.5: resolution: {integrity: sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==} - body-parser@1.20.8: - resolution: {integrity: sha512-JNcyFQ64OiijEkPzUBTCe+hyPXUD/3LEldGQ6iF5LR1w00mx9o7xtDWHXBY2iItjdCFGoilOLNQbH943ut7pHA==} + body-parser@1.20.9: + resolution: {integrity: sha512-FISIQxV5u91Y9gvuFq3q/tA/qTqLJn3AhRcEvyozyhJTh5OBFFtv827AdHU7Rbyct4r+Ba1/99oFa1Y3yuFsdw==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - body-parser@2.3.0: - resolution: {integrity: sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==} + body-parser@2.4.0: + resolution: {integrity: sha512-Ifk1KcLrxaGt1occQagQNFNNOqRt1LFuehEnHHzB8Z6cRgIxRU1TBaiIsUiCdA+gy5PL7Y1IX31DNKkRmxtXjQ==} engines: {node: '>=18'} boolbase@1.0.0: @@ -7471,8 +7472,8 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} - chromium-bidi@17.0.2: - resolution: {integrity: sha512-5v9GQFhTktFvotn/OFNJBmKLKRAb6n9r0bVCwf7sHgWc3/JryK0bj1nn93L3pHFrfgcsu6Be6EWsDi+1XHTGDg==} + chromium-bidi@157.0.8090-0: + resolution: {integrity: sha512-KJw7IQgqXwxpJgJlEIPg5mr2ZoqA+jkTRtc5EABI7sUJ3bu3cpI7NuEBoj4Gn1AsF78CaT9So5WQWspK3/wYag==} engines: {node: '>=20.19.0 <22.0.0 || >=22.12.0'} peerDependencies: devtools-protocol: '*' @@ -7696,6 +7697,10 @@ packages: resolution: {integrity: sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==} engines: {node: '>=18'} + content-type@2.1.0: + resolution: {integrity: sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==} + engines: {node: '>=18'} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -8137,8 +8142,8 @@ packages: devtools-protocol@0.0.1467305: resolution: {integrity: sha512-LxwMLqBoPPGpMdRL4NkLFRNy3QLp6Uqa7GNp1v6JaBheop2QrB9Q7q0A/q/CYYP9sBfZdHOyszVx4gc9zyk7ow==} - devtools-protocol@0.0.1687809: - resolution: {integrity: sha512-t7kSb+UKYdyxcmqy98U2P86ne6rCve3DIJ4+lp54i/hhClgFuG35JrLj23rO14Jw3sWDsp7i+22QhNU0+/qk8g==} + devtools-protocol@0.0.1704951: + resolution: {integrity: sha512-GQhQOs9u/Mvm1zMtJIH872JS4AskuZdUSsPNPk4ChahtWAUqgz6atEtIsMt+nO7MqF1Ic4HxII/k8Cu36JivNg==} didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -9418,6 +9423,10 @@ packages: resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} + iconv-lite@0.7.3: + resolution: {integrity: sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==} + engines: {node: '>=0.10.0'} + idb@7.1.1: resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} @@ -10288,8 +10297,8 @@ packages: leac@0.6.0: resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} - legacy-javascript@0.0.3: - resolution: {integrity: sha512-1r6MT4dVaJyXt4G07Cm2cQ0AUaLJdefiEp4SmIAylA++gnEQ82YvmzE58RkM5EP0fk5hROLCslUPGnwIYdZQVA==} + legacy-javascript@0.0.4: + resolution: {integrity: sha512-UTmeKBVxnfJcpmpOvzzNnLsQT99BXHpPlc/ZKddIRmWmrR0fw6335I3lq4+sJoP60UTbBNaYsGYVPc65YB1x3A==} leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} @@ -11941,8 +11950,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - puppeteer-core@25.12.0: - resolution: {integrity: sha512-z6LQUt5SH7jwGtGA+nMtJuEjZIsqPiwQ+EFHCYuVDQrJpvifNmmGuyDvTzAKPyFzihxgHc5f3aMzu2kn8Ps37A==} + puppeteer-core@25.16.0: + resolution: {integrity: sha512-VA5Pf54N8shfopNkZZXCdiiwfnnY8ZJYAMqFQRhlH5mGUhfwf53Ar770GPtdpTDLUqvQeYpIBtC9/G2Jij2IJw==} engines: {node: '>=22.12.0'} pure-rand@6.1.0: @@ -11965,6 +11974,10 @@ packages: resolution: {integrity: sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==} engines: {node: '>=0.6'} + qs@6.16.1: + resolution: {integrity: sha512-5Px6J7rfHBAGUhNQ3es4YzcOdBBw0SDcVtThJml4RdnKw4tKs2epA0kPZ+K8X+WiHktT93RHVcQ/3ym5aTCgtg==} + engines: {node: '>=0.6'} + query-selector-shadow-dom@1.0.1: resolution: {integrity: sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==} @@ -13597,8 +13610,8 @@ packages: typed-emitter@2.1.0: resolution: {integrity: sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==} - typed-query-selector@2.12.2: - resolution: {integrity: sha512-EOPFbyIub4ngnEdqi2yOcNeDLaX/0jcE1JoAXQDDMIthap7FoN795lc/SHfIq2d416VufXpM8z/lD+WRm2gfOQ==} + typed-query-selector@2.12.3: + resolution: {integrity: sha512-/dtuMZyutHLlrxWhhC1uib00ELUr2dZ8C9B8YzZYsJmeE3V56OxRblrSM2UaF142pcMtak7ehZ6+poWGeehNIg==} typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} @@ -13970,8 +13983,8 @@ packages: web-vitals@6.2.3: resolution: {integrity: sha512-Dmy+vdO1UPMqXiAtZSNayhl4f794Bxfd94W4HIj2HlYtczEQfEOon969memlcpcHrTuOKLa5baFjX7WbgmOq+A==} - webdriver-bidi-protocol@0.4.3: - resolution: {integrity: sha512-uuN0goWfxP22B7J/uAgBpOYNPttC+XVseYE+rSY5+rQ+YBeVz/VORw8WbmLVcqW78zNg5A4qnjNXYUWR3il2ig==} + webdriver-bidi-protocol@1.0.1: + resolution: {integrity: sha512-WXWs/aXF2a6Al1Z2/V/7Gp2oPZOAAmHjJOTmv4KCXRJ122IMj3tSSMc6a4q3K4QOmhQbse/Ahr+oTVJOU2dUiw==} webdriver@9.27.1: resolution: {integrity: sha512-vr6h+RNQ75O2cofgVrdupGxtKjPEBaBYx/lHCHe0giJfAK01oL0U/yrOksJi7kmpev/daN93ldFPhlIlmWtv8Q==} @@ -13981,7 +13994,7 @@ packages: resolution: {integrity: sha512-iPaIU/DluYY7zfLiwXDdoLU/6ZW8eup4PNwQikrCzTfvH/ITllRhFUe6NRDTEEePSxxRTeXAn9nehCs98xWGVA==} engines: {node: '>=18.20.0'} peerDependencies: - puppeteer-core: '>=25.9.0 <26' + puppeteer-core: '>=25.13.0 <26' peerDependenciesMeta: puppeteer-core: optional: true @@ -14213,6 +14226,18 @@ packages: utf-8-validate: optional: true + ws@8.22.0: + resolution: {integrity: sha512-Ydggc987+RO0AnWtZ/7Wq9FtNvcrL1b/RO0ud9mWjUPgDrsAAwQSF51sm2hm1XofbU/4jkpGEsLFsZZxU+1DOg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + wsl-utils@0.1.0: resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} engines: {node: '>=18'} @@ -14416,8 +14441,8 @@ packages: peerDependencies: zod: ^3.25.0 || ^4.0.0 - zod@3.25.76: - resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + zod@4.6.7: + resolution: {integrity: sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==} zustand@5.0.13: resolution: {integrity: sha512-efI2tVaVQPqtOh114loML/Z80Y4NP3yc+Ff0fYiZJPauNeWZeIp/bRFD7I9bfmCOYBh/PHxlglQ9+wvlwnPikQ==} @@ -14456,7 +14481,7 @@ snapshots: '@capacitor/core': 6.2.1 '@capacitor/ios': 6.2.2(@capacitor/core@6.2.1) - '@apollo/client@3.14.1(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.14.0)(ws@8.21.3))(graphql@16.14.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@apollo/client@3.14.1(@types/react@19.2.17)(graphql-ws@6.0.8(graphql@16.14.0)(ws@8.22.0))(graphql@16.14.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.14.0) '@wry/caches': 1.0.1 @@ -14473,7 +14498,7 @@ snapshots: tslib: 2.8.1 zen-observable-ts: 1.2.5 optionalDependencies: - graphql-ws: 6.0.8(graphql@16.14.0)(ws@8.21.3) + graphql-ws: 6.0.8(graphql@16.14.0)(ws@8.22.0) react: 19.2.6 react-dom: 19.2.6(react@19.2.6) transitivePeerDependencies: @@ -14486,7 +14511,7 @@ snapshots: async-lock: 1.4.1 asyncbox: 6.4.2 axios: 1.20.0 - body-parser: 2.3.0 + body-parser: 2.4.0 express: 5.2.1 fastest-levenshtein: 1.0.16 http-status-codes: 2.3.0 @@ -17800,7 +17825,7 @@ snapshots: '@paulirish/trace_engine@0.0.53': dependencies: - legacy-javascript: 0.0.3 + legacy-javascript: 0.0.4 third-party-web: 0.30.0 '@pkgjs/parseargs@0.11.0': @@ -20885,7 +20910,7 @@ snapshots: obug: 2.2.1 std-env: 4.2.0 tinyrainbow: 3.1.1 - vitest: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@22.19.21)(@vitest/coverage-v8@4.1.11)(jsdom@29.1.1(@noble/hashes@2.2.0)(canvas@3.2.3))(msw@2.14.6(@types/node@22.19.21)(typescript@5.6.3))(vite@6.4.5(@types/node@22.19.21)(jiti@1.21.7)(lightningcss@1.33.0)(terser@5.50.0)(tsx@4.22.0)(yaml@2.9.0)) + vitest: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/coverage-v8@4.1.11)(jsdom@24.1.3(canvas@3.2.3))(msw@2.14.6(@types/node@26.2.0)(typescript@6.0.3))(vite@6.4.5(@types/node@26.2.0)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.50.0)(tsx@4.22.0)(yaml@2.9.0)) '@vitest/expect@2.0.5': dependencies: @@ -20982,7 +21007,7 @@ snapshots: transitivePeerDependencies: - allure-playwright - '@wdio/appium-service@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0)': + '@wdio/appium-service@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0)': dependencies: '@wdio/config': 9.27.1(proxy-agent@6.5.0)(yauzl@3.4.0) '@wdio/logger': 9.18.0 @@ -20994,7 +21019,7 @@ snapshots: get-port: 7.2.0 import-meta-resolve: 4.2.0 tree-kill: 1.2.2 - webdriverio: 9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0) + webdriverio: 9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0) xpath: 0.0.34 transitivePeerDependencies: - bare-abort-controller @@ -21007,11 +21032,11 @@ snapshots: - utf-8-validate - yauzl - '@wdio/cli@9.27.1(@types/node@25.9.3)(expect-webdriverio@5.6.5)(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0)': + '@wdio/cli@9.27.1(@types/node@25.9.3)(expect-webdriverio@5.6.5)(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0)': dependencies: '@vitest/snapshot': 2.1.9 '@wdio/config': 9.27.1(proxy-agent@6.5.0)(yauzl@3.4.0) - '@wdio/globals': 9.27.1(expect-webdriverio@5.6.5)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0)) + '@wdio/globals': 9.27.1(expect-webdriverio@5.6.5)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0)) '@wdio/logger': 9.18.0 '@wdio/protocols': 9.27.1 '@wdio/types': 9.27.1 @@ -21027,7 +21052,7 @@ snapshots: lodash.union: 4.6.0 read-pkg-up: 10.1.0 tsx: 4.22.0 - webdriverio: 9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0) + webdriverio: 9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0) yargs: 17.7.2 transitivePeerDependencies: - '@types/node' @@ -21062,10 +21087,10 @@ snapshots: '@wdio/types': 9.27.1 chalk: 5.6.2 - '@wdio/globals@9.27.1(expect-webdriverio@5.6.5)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0))': + '@wdio/globals@9.27.1(expect-webdriverio@5.6.5)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0))': dependencies: - expect-webdriverio: 5.6.5(@wdio/globals@9.27.1)(@wdio/logger@9.18.0)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0)) - webdriverio: 9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0) + expect-webdriverio: 5.6.5(@wdio/globals@9.27.1)(@wdio/logger@9.18.0)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0)) + webdriverio: 9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0) '@wdio/junit-reporter@9.27.1': dependencies: @@ -21074,16 +21099,16 @@ snapshots: json-stringify-safe: 5.0.1 junit-report-builder: 5.1.2 - '@wdio/local-runner@9.27.1(@wdio/globals@9.27.1)(proxy-agent@6.5.0)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0))(yauzl@3.4.0)': + '@wdio/local-runner@9.27.1(@wdio/globals@9.27.1)(proxy-agent@6.5.0)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0))(yauzl@3.4.0)': dependencies: '@types/node': 20.19.41 '@wdio/logger': 9.18.0 '@wdio/repl': 9.16.2 - '@wdio/runner': 9.27.1(expect-webdriverio@5.6.5)(proxy-agent@6.5.0)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0))(yauzl@3.4.0) + '@wdio/runner': 9.27.1(expect-webdriverio@5.6.5)(proxy-agent@6.5.0)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0))(yauzl@3.4.0) '@wdio/types': 9.27.1 '@wdio/xvfb': 9.27.1 exit-hook: 4.0.0 - expect-webdriverio: 5.6.5(@wdio/globals@9.27.1)(@wdio/logger@9.18.0)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0)) + expect-webdriverio: 5.6.5(@wdio/globals@9.27.1)(@wdio/logger@9.18.0)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0)) split2: 4.2.0 stream-buffers: 3.0.3 transitivePeerDependencies: @@ -21130,19 +21155,19 @@ snapshots: diff: 8.0.4 object-inspect: 1.13.4 - '@wdio/runner@9.27.1(expect-webdriverio@5.6.5)(proxy-agent@6.5.0)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0))(yauzl@3.4.0)': + '@wdio/runner@9.27.1(expect-webdriverio@5.6.5)(proxy-agent@6.5.0)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0))(yauzl@3.4.0)': dependencies: '@types/node': 20.19.41 '@wdio/config': 9.27.1(proxy-agent@6.5.0)(yauzl@3.4.0) '@wdio/dot-reporter': 9.27.1 - '@wdio/globals': 9.27.1(expect-webdriverio@5.6.5)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0)) + '@wdio/globals': 9.27.1(expect-webdriverio@5.6.5)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0)) '@wdio/logger': 9.18.0 '@wdio/types': 9.27.1 '@wdio/utils': 9.27.1(proxy-agent@6.5.0)(yauzl@3.4.0) deepmerge-ts: 8.0.2 - expect-webdriverio: 5.6.5(@wdio/globals@9.27.1)(@wdio/logger@9.18.0)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0)) + expect-webdriverio: 5.6.5(@wdio/globals@9.27.1)(@wdio/logger@9.18.0)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0)) webdriver: 9.27.1(proxy-agent@6.5.0)(yauzl@3.4.0) - webdriverio: 9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0) + webdriverio: 9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0) transitivePeerDependencies: - bufferutil - proxy-agent @@ -22356,7 +22381,7 @@ snapshots: blurhash@2.0.5: {} - body-parser@1.20.8: + body-parser@1.20.9: dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -22373,15 +22398,15 @@ snapshots: transitivePeerDependencies: - supports-color - body-parser@2.3.0: + body-parser@2.4.0: dependencies: bytes: 3.1.2 - content-type: 2.0.0 + content-type: 2.1.0 debug: 4.4.3(supports-color@10.2.2) http-errors: 2.0.1 - iconv-lite: 0.7.2 + iconv-lite: 0.7.3 on-finished: 2.4.1 - qs: 6.16.0 + qs: 6.16.1 raw-body: 3.0.2 type-is: 2.1.0 transitivePeerDependencies: @@ -22714,11 +22739,11 @@ snapshots: chrome-trace-event@1.0.4: optional: true - chromium-bidi@17.0.2(devtools-protocol@0.0.1687809): + chromium-bidi@157.0.8090-0(devtools-protocol@0.0.1704951): dependencies: - devtools-protocol: 0.0.1687809 + devtools-protocol: 0.0.1704951 mitt: 3.0.1 - zod: 3.25.76 + zod: 4.6.7 ci-info@3.9.0: {} @@ -22934,6 +22959,8 @@ snapshots: content-type@2.0.0: {} + content-type@2.1.0: {} + convert-source-map@2.0.0: {} cookie-es@3.1.1: {} @@ -23411,7 +23438,7 @@ snapshots: devtools-protocol@0.0.1467305: {} - devtools-protocol@0.0.1687809: {} + devtools-protocol@0.0.1704951: {} didyoumean@1.2.2: {} @@ -23909,8 +23936,8 @@ snapshots: '@babel/parser': 7.29.7 eslint: 10.9.1(jiti@2.7.0) hermes-parser: 0.25.1 - zod: 3.25.76 - zod-validation-error: 4.0.2(zod@3.25.76) + zod: 4.6.7 + zod-validation-error: 4.0.2(zod@4.6.7) transitivePeerDependencies: - supports-color @@ -24094,15 +24121,15 @@ snapshots: expect-type@1.4.0: {} - expect-webdriverio@5.6.5(@wdio/globals@9.27.1)(@wdio/logger@9.18.0)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0)): + expect-webdriverio@5.6.5(@wdio/globals@9.27.1)(@wdio/logger@9.18.0)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0)): dependencies: '@vitest/snapshot': 4.1.6 - '@wdio/globals': 9.27.1(expect-webdriverio@5.6.5)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0)) + '@wdio/globals': 9.27.1(expect-webdriverio@5.6.5)(webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0)) '@wdio/logger': 9.18.0 deep-eql: 5.0.2 expect: 30.4.1 jest-matcher-utils: 30.4.1 - webdriverio: 9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0) + webdriverio: 9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0) expect@29.7.0: dependencies: @@ -24125,7 +24152,7 @@ snapshots: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.8 + body-parser: 1.20.9 content-disposition: 0.5.4 content-type: 1.0.5 cookie: 0.7.2 @@ -24160,7 +24187,7 @@ snapshots: express@5.2.1: dependencies: accepts: 2.0.0 - body-parser: 2.3.0 + body-parser: 2.4.0 content-disposition: 1.1.0 content-type: 1.0.5 cookie: 0.7.2 @@ -24736,11 +24763,11 @@ snapshots: graphql: 16.14.0 tslib: 2.8.1 - graphql-ws@6.0.8(graphql@16.14.0)(ws@8.21.3): + graphql-ws@6.0.8(graphql@16.14.0)(ws@8.22.0): dependencies: graphql: 16.14.0 optionalDependencies: - ws: 8.21.3 + ws: 8.22.0 graphql@16.14.0: {} @@ -25040,6 +25067,10 @@ snapshots: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.7.3: + dependencies: + safer-buffer: 2.1.2 + idb@7.1.1: {} ieee754@1.2.1: {} @@ -26331,7 +26362,7 @@ snapshots: leac@0.6.0: {} - legacy-javascript@0.0.3: {} + legacy-javascript@0.0.4: {} leven@3.1.0: {} @@ -26385,7 +26416,7 @@ snapshots: metaviewport-parser: 0.3.0 open: 8.4.2 parse-cache-control: 1.0.1 - puppeteer-core: 25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0) + puppeteer-core: 25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0) robots-parser: 3.0.1 semver: 5.7.2 speedline-core: 1.4.3 @@ -28069,14 +28100,14 @@ snapshots: punycode@2.3.1: {} - puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0): + puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0): dependencies: '@puppeteer/browsers': 3.2.3(proxy-agent@6.5.0)(yauzl@3.4.0) - chromium-bidi: 17.0.2(devtools-protocol@0.0.1687809) - devtools-protocol: 0.0.1687809 - typed-query-selector: 2.12.2 - webdriver-bidi-protocol: 0.4.3 - ws: 8.21.3 + chromium-bidi: 157.0.8090-0(devtools-protocol@0.0.1704951) + devtools-protocol: 0.0.1704951 + typed-query-selector: 2.12.3 + webdriver-bidi-protocol: 1.0.1 + ws: 8.22.0 transitivePeerDependencies: - bufferutil - proxy-agent @@ -28102,6 +28133,11 @@ snapshots: es-define-property: 1.0.1 side-channel: 1.1.1 + qs@6.16.1: + dependencies: + es-define-property: 1.0.1 + side-channel: 1.1.1 + query-selector-shadow-dom@1.0.1: {} querystringify@2.2.0: {} @@ -28145,7 +28181,7 @@ snapshots: dependencies: bytes: 3.1.2 http-errors: 2.0.1 - iconv-lite: 0.7.2 + iconv-lite: 0.7.3 unpipe: 1.0.0 rc@1.2.8: @@ -29999,7 +30035,7 @@ snapshots: optionalDependencies: rxjs: 7.8.2 - typed-query-selector@2.12.2: {} + typed-query-selector@2.12.3: {} typedarray-to-buffer@3.1.5: dependencies: @@ -30427,7 +30463,7 @@ snapshots: web-vitals@6.2.3: {} - webdriver-bidi-protocol@0.4.3: {} + webdriver-bidi-protocol@1.0.1: {} webdriver@9.27.1(proxy-agent@6.5.0)(yauzl@3.4.0): dependencies: @@ -30449,7 +30485,7 @@ snapshots: - utf-8-validate - yauzl - webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0): + webdriverio@9.27.1(proxy-agent@6.5.0)(puppeteer-core@25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0))(yauzl@3.4.0): dependencies: '@types/node': 20.19.41 '@types/sinonjs__fake-timers': 8.1.5 @@ -30477,7 +30513,7 @@ snapshots: urlpattern-polyfill: 10.1.0 webdriver: 9.27.1(proxy-agent@6.5.0)(yauzl@3.4.0) optionalDependencies: - puppeteer-core: 25.12.0(proxy-agent@6.5.0)(yauzl@3.4.0) + puppeteer-core: 25.16.0(proxy-agent@6.5.0)(yauzl@3.4.0) transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -30762,6 +30798,8 @@ snapshots: ws@8.21.3: {} + ws@8.22.0: {} + wsl-utils@0.1.0: dependencies: is-wsl: 3.1.1 @@ -30950,11 +30988,11 @@ snapshots: normalize-path: 3.0.0 readable-stream: 4.7.0 - zod-validation-error@4.0.2(zod@3.25.76): + zod-validation-error@4.0.2(zod@4.6.7): dependencies: - zod: 3.25.76 + zod: 4.6.7 - zod@3.25.76: {} + zod@4.6.7: {} zustand@5.0.13(@types/react@19.2.17)(immer@11.1.8)(react@19.2.6)(use-sync-external-store@1.6.0(react@19.2.6)): optionalDependencies: