Upgrade zod package to 4 (#2677)

This commit is contained in:
Kalle 2025-12-29 20:04:40 +02:00 committed by GitHub
parent 81483de0db
commit 658421d899
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
84 changed files with 88 additions and 98 deletions

View File

@ -3,7 +3,7 @@ import * as React from "react";
import { type DefaultValues, FormProvider, useForm } from "react-hook-form";
import { useTranslation } from "react-i18next";
import { useFetcher } from "react-router";
import type { z } from "zod/v4";
import type { z } from "zod";
import { logger } from "~/utils/logger";
import type { ActionError } from "~/utils/remix.server";
import { LinkButton } from "../elements/Button";

View File

@ -1,5 +1,5 @@
import type { ActionFunctionArgs } from "react-router";
import { z } from "zod/v4";
import { z } from "zod";
import * as AdminRepository from "~/features/admin/AdminRepository.server";
import { requireUser } from "~/features/auth/core/user.server";
import { refreshBannedCache } from "~/features/ban/core/banned.server";

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import { friendCode } from "~/utils/zod";
export const adminActionSearchParamsSchema = z.object({

View File

@ -1,5 +1,5 @@
import type { ActionFunction } from "react-router";
import { z } from "zod/v4";
import { z } from "zod";
import { seed } from "~/db/seed";
import { DANGEROUS_CAN_ACCESS_DEV_CONTROLS } from "~/features/admin/core/dev-controls";
import { SEED_VARIATIONS } from "~/features/api-private/constants";

View File

@ -1,6 +1,6 @@
import type { LoaderFunctionArgs } from "react-router";
import { cors } from "remix-utils/cors";
import { z } from "zod/v4";
import { z } from "zod";
import { db } from "~/db/sql";
import {
databaseTimestampToDate,

View File

@ -1,7 +1,7 @@
import { jsonArrayFrom } from "kysely/helpers/sqlite";
import type { LoaderFunctionArgs } from "react-router";
import { cors } from "remix-utils/cors";
import { z } from "zod/v4";
import { z } from "zod";
import { db } from "~/db/sql";
import { concatUserSubmittedImagePrefix } from "~/utils/kysely.server";
import { notFoundIfFalsy, parseParams } from "~/utils/remix.server";

View File

@ -1,6 +1,6 @@
import type { LoaderFunctionArgs } from "react-router";
import { cors } from "remix-utils/cors";
import { z } from "zod/v4";
import { z } from "zod";
import { SendouQ } from "~/features/sendouq/core/SendouQ.server";
import { parseParams } from "~/utils/remix.server";
import { id } from "~/utils/zod";

View File

@ -1,6 +1,6 @@
import type { LoaderFunctionArgs } from "react-router";
import { cors } from "remix-utils/cors";
import { z } from "zod/v4";
import { z } from "zod";
import * as SQMatchRepository from "~/features/sendouq-match/SQMatchRepository.server";
import { i18next } from "~/modules/i18n/i18next.server";
import { notFoundIfFalsy, parseParams } from "~/utils/remix.server";

View File

@ -1,6 +1,6 @@
import type { LoaderFunctionArgs } from "react-router";
import { cors } from "remix-utils/cors";
import { z } from "zod/v4";
import { z } from "zod";
import { db } from "~/db/sql";
import { concatUserSubmittedImagePrefix } from "~/utils/kysely.server";
import { notFoundIfFalsy, parseParams } from "~/utils/remix.server";

View File

@ -1,7 +1,7 @@
import { jsonArrayFrom } from "kysely/helpers/sqlite";
import type { LoaderFunctionArgs } from "react-router";
import { cors } from "remix-utils/cors";
import { z } from "zod/v4";
import { z } from "zod";
import { db } from "~/db/sql";
import * as TournamentRepository from "~/features/tournament/TournamentRepository.server";
import * as TournamentTeamRepository from "~/features/tournament/TournamentTeamRepository.server";

View File

@ -1,6 +1,6 @@
import type { LoaderFunctionArgs } from "react-router";
import { cors } from "remix-utils/cors";
import { z } from "zod/v4";
import { z } from "zod";
import { tournamentFromDB } from "~/features/tournament-bracket/core/Tournament.server";
import { notFoundIfFalsy, parseParams } from "~/utils/remix.server";
import { id } from "~/utils/zod";

View File

@ -1,6 +1,6 @@
import type { LoaderFunctionArgs } from "react-router";
import { cors } from "remix-utils/cors";
import { z } from "zod/v4";
import { z } from "zod";
import type { Bracket } from "~/features/tournament-bracket/core/Bracket";
import { tournamentFromDB } from "~/features/tournament-bracket/core/Tournament.server";
import { notFoundIfFalsy, parseParams } from "~/utils/remix.server";

View File

@ -1,6 +1,6 @@
import type { LoaderFunctionArgs } from "react-router";
import { cors } from "remix-utils/cors";
import { z } from "zod/v4";
import { z } from "zod";
import { db } from "~/db/sql";
import { notFoundIfFalsy, parseParams } from "~/utils/remix.server";
import { id } from "~/utils/zod";

View File

@ -1,6 +1,6 @@
import type { LoaderFunctionArgs } from "react-router";
import { cors } from "remix-utils/cors";
import { z } from "zod/v4";
import { z } from "zod";
import * as TournamentMatchRepository from "~/features/tournament-bracket/TournamentMatchRepository.server";
import { parseParams } from "~/utils/remix.server";
import { id } from "~/utils/zod";

View File

@ -1,7 +1,7 @@
import { jsonArrayFrom, jsonObjectFrom } from "kysely/helpers/sqlite";
import type { LoaderFunctionArgs } from "react-router";
import { cors } from "remix-utils/cors";
import { z } from "zod/v4";
import { z } from "zod";
import { db } from "~/db/sql";
import { ordinalToSp } from "~/features/mmr/mmr-utils";
import * as TournamentRepository from "~/features/tournament/TournamentRepository.server";

View File

@ -1,7 +1,7 @@
import { jsonArrayFrom } from "kysely/helpers/sqlite";
import type { LoaderFunctionArgs } from "react-router";
import { cors } from "remix-utils/cors";
import { z } from "zod/v4";
import { z } from "zod";
import { db } from "~/db/sql";
import { databaseTimestampToDate } from "~/utils/dates";
import { notFoundIfFalsy, parseParams } from "~/utils/remix.server";

View File

@ -1,7 +1,7 @@
import { jsonArrayFrom } from "kysely/helpers/sqlite";
import type { LoaderFunctionArgs } from "react-router";
import { cors } from "remix-utils/cors";
import { z } from "zod/v4";
import { z } from "zod";
import { db } from "~/db/sql";
import * as Seasons from "~/features/mmr/core/Seasons";
import { userSkills as _userSkills } from "~/features/mmr/tiered.server";

View File

@ -1,5 +1,5 @@
import type { ActionFunctionArgs } from "react-router";
import { z } from "zod/v4";
import { z } from "zod";
import { refreshApiTokensCache } from "~/features/api-public/api-public-utils.server";
import { requireUser } from "~/features/auth/core/user.server";
import { parseRequestPayload, successToast } from "~/utils/remix.server";

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import {
_action,
checkboxValueToDbBoolean,

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
const authorName = z.string().min(1);

View File

@ -1,7 +1,7 @@
import fs from "node:fs";
import path from "node:path";
import matter from "gray-matter";
import { ZodError, type z } from "zod/v4";
import { ZodError, type z } from "zod";
import { ARTICLES_FOLDER_PATH } from "../articles-constants";
import { articleDataSchema } from "../articles-schemas.server";

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import { _action, id, inviteCode, safeStringSchema } from "~/utils/zod";
import { ASSOCIATION } from "./associations-constants";

View File

@ -1,5 +1,5 @@
import { useTranslation } from "react-i18next";
import type { z } from "zod/v4";
import type { z } from "zod";
import { SendouDialog } from "~/components/elements/Dialog";
import { InputFormField } from "~/components/form/InputFormField";
import { SendouForm } from "~/components/form/SendouForm";

View File

@ -1,5 +1,5 @@
import { OAuth2Strategy } from "remix-auth-oauth2";
import { z } from "zod/v4";
import { z } from "zod";
import * as UserRepository from "~/features/user-page/UserRepository.server";
import invariant from "~/utils/invariant";
import { logger } from "~/utils/logger";

View File

@ -1,7 +1,7 @@
import { isbot } from "isbot";
import type { ActionFunction, LoaderFunction } from "react-router";
import { redirect } from "react-router";
import { z } from "zod/v4";
import { z } from "zod";
import { DANGEROUS_CAN_ACCESS_DEV_CONTROLS } from "~/features/admin/core/dev-controls";
import * as UserRepository from "~/features/user-page/UserRepository.server";
import { requireRole } from "~/modules/permissions/guards.server";

View File

@ -1,6 +1,6 @@
import type { ActionFunction } from "react-router";
import { redirect } from "react-router";
import { z } from "zod/v4";
import { z } from "zod";
import { requireUser } from "~/features/auth/core/user.server";
import { notify } from "~/features/notifications/core/notify.server";
import {

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import { _action, id, noDuplicates, safeJSONParse } from "~/utils/zod";
export const editBadgeActionSchema = z.union([

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import { ability, modeShort, safeJSONParse } from "~/utils/zod";
import { MAX_BUILD_FILTERS } from "./builds-constants";

View File

@ -1,6 +1,6 @@
import type { ActionFunction } from "react-router";
import { redirect } from "react-router";
import { z } from "zod/v4";
import { z } from "zod";
import { requireUserId } from "~/features/auth/core/user.server";
import * as CalendarRepository from "~/features/calendar/CalendarRepository.server";
import * as ShowcaseTournaments from "~/features/front-page/core/ShowcaseTournaments.server";

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import * as CalendarRepository from "~/features/calendar/CalendarRepository.server";
import { MapPool } from "~/features/map-list-generator/core/map-pool";
import { rankedModesShort } from "~/modules/in-game-lists/modes";

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import { type CalendarEventTag, TOURNAMENT_STAGE_TYPES } from "~/db/tables";
import { TOURNAMENT } from "~/features/tournament/tournament-constants";
import * as Progression from "~/features/tournament-bracket/core/Progression";

View File

@ -1,4 +1,4 @@
import type { z } from "zod/v4";
import type { z } from "zod";
import type { CalendarEventTag, Tables } from "~/db/tables";
import type { calendarFiltersSearchParamsSchema } from "~/features/calendar/calendar-schemas";
import type { ModeShortWithSpecial } from "~/modules/in-game-lists/types";

View File

@ -1,5 +1,5 @@
import { formatDistance } from "date-fns";
import { z } from "zod/v4";
import { z } from "zod";
import { logger } from "~/utils/logger";
const BSKY_URL =

View File

@ -2,7 +2,7 @@ import type { FileUpload } from "@remix-run/form-data-parser";
import { parseFormData } from "@remix-run/form-data-parser";
import type { ActionFunctionArgs } from "react-router";
import { redirect } from "react-router";
import { z } from "zod/v4";
import { z } from "zod";
import { requireUser } from "~/features/auth/core/user.server";
import * as TeamRepository from "~/features/team/TeamRepository.server";
import { isTeamManager } from "~/features/team/team-utils";

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import { _action, id, safeJSONParse } from "~/utils/zod";
const validateManySchema = z.object({

View File

@ -1,6 +1,6 @@
import type { ActionFunctionArgs } from "react-router";
import { redirect } from "react-router";
import { z } from "zod/v4";
import { z } from "zod";
import { requireUser } from "~/features/auth/core/user.server";
import * as UserRepository from "~/features/user-page/UserRepository.server";
import { errorToastIfFalsy, parseRequestPayload } from "~/utils/remix.server";

View File

@ -1,5 +1,5 @@
import type { ActionFunctionArgs } from "react-router";
import { z } from "zod/v4";
import { z } from "zod";
import { requireUser } from "~/features/auth/core/user.server";
import { errorToastIfFalsy, parseRequestPayload } from "~/utils/remix.server";
import { _action, id } from "~/utils/zod";

View File

@ -1,5 +1,5 @@
import type { LoaderFunctionArgs } from "react-router";
import { z } from "zod/v4";
import { z } from "zod";
import { requireUser } from "~/features/auth/core/user.server";
import * as QSettingsRepository from "~/features/sendouq-settings/QSettingsRepository.server";
import * as UserRepository from "~/features/user-page/UserRepository.server";

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import { id } from "~/utils/zod";
import { NOTIFICATIONS } from "./notifications-contants";

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import { _action, actualNumber, trimmedString } from "~/utils/zod";
import { PLUS_SUGGESTION, PLUS_TIERS } from "./plus-suggestions-constants";

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import type { PlusVoteFromFE } from "~/features/plus-voting/core";
import { assertType } from "~/utils/types";
import { safeJSONParse } from "~/utils/zod";

View File

@ -1,6 +1,6 @@
import { add } from "date-fns";
import { type ActionFunctionArgs, redirect } from "react-router";
import type { z } from "zod/v4";
import type { z } from "zod";
import type { Tables } from "~/db/tables";
import { requireUser } from "~/features/auth/core/user.server";
import { userIsBanned } from "~/features/ban/core/banned.server";

View File

@ -2,7 +2,7 @@ import clsx from "clsx";
import * as React from "react";
import { useTranslation } from "react-i18next";
import { Link, useLoaderData } from "react-router";
import type { z } from "zod/v4";
import type { z } from "zod";
import { Alert } from "~/components/Alert";
import { SendouButton } from "~/components/elements/Button";
import { SendouDialog } from "~/components/elements/Dialog";

View File

@ -2,7 +2,7 @@ import * as React from "react";
import { Controller, useFormContext, useWatch } from "react-hook-form";
import { useTranslation } from "react-i18next";
import { useLoaderData } from "react-router";
import type { z } from "zod/v4";
import type { z } from "zod";
import { TournamentSearch } from "~/components/elements/TournamentSearch";
import { DateFormField } from "~/components/form/DateFormField";
import { SelectFormField } from "~/components/form/SelectFormField";

View File

@ -4,7 +4,7 @@ import { useTranslation } from "react-i18next";
import type { MetaFunction } from "react-router";
import { useLoaderData } from "react-router";
import * as R from "remeda";
import type { z } from "zod/v4";
import type { z } from "zod";
import { AddNewButton } from "~/components/AddNewButton";
import { LinkButton, SendouButton } from "~/components/elements/Button";
import { useUser } from "~/features/auth/core/user";

View File

@ -1,5 +1,5 @@
import { add, sub } from "date-fns";
import { z } from "zod/v4";
import { z } from "zod";
import {
_action,
date,

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import { SENDOUQ, SENDOUQ_BEST_OF } from "~/features/sendouq/q-constants";
import {
_action,

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import { languagesUnified } from "~/modules/i18n/config";
import {
_action,

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import {
_action,
deduplicate,

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import { _action } from "~/utils/zod";
export const settingsEditSchema = z.union([

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import {
_action,
customCssVarObject,

View File

@ -7,7 +7,7 @@ import { arrayMove } from "@dnd-kit/sortable";
import JSONCrush from "jsoncrush";
import * as React from "react";
import { useSearchParams } from "react-router";
import { z } from "zod/v4";
import { z } from "zod";
import {
useSearchParamState,
useSearchParamStateEncoder,

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import { assertType } from "~/utils/types";
import {
hexCode,

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import {
_action,
checkboxValueToBoolean,

View File

@ -1,5 +1,5 @@
import { useTranslation } from "react-i18next";
import type { z } from "zod/v4";
import type { z } from "zod";
import { SendouButton } from "~/components/elements/Button";
import { SendouDialog } from "~/components/elements/Dialog";
import { DateFormField } from "~/components/form/DateFormField";

View File

@ -1,5 +1,5 @@
import type { LoaderFunctionArgs } from "react-router";
import { z } from "zod/v4";
import { z } from "zod";
import { getUser } from "~/features/auth/core/user.server";
import type { SerializeFrom } from "~/utils/remix";
import { parseSafeSearchParams } from "~/utils/remix.server";

View File

@ -1,7 +1,7 @@
import { Controller, useFieldArray, useFormContext } from "react-hook-form";
import { useTranslation } from "react-i18next";
import { Link, useLoaderData } from "react-router";
import type { z } from "zod/v4";
import type { z } from "zod";
import { FormMessage } from "~/components/FormMessage";
import { AddFieldButton } from "~/components/form/AddFieldButton";
import { FormFieldset } from "~/components/form/FormFieldset";

View File

@ -1,5 +1,5 @@
import { useTranslation } from "react-i18next";
import type { z } from "zod/v4";
import type { z } from "zod";
import { Alert } from "~/components/Alert";
import { InputFormField } from "~/components/form/InputFormField";
import { SendouForm } from "~/components/form/SendouForm";

View File

@ -1,5 +1,5 @@
import { isFuture } from "date-fns";
import { z } from "zod/v4";
import { z } from "zod";
import { TOURNAMENT_ORGANIZATION_ROLES } from "~/db/tables";
import { TOURNAMENT_ORGANIZATION } from "~/features/tournament-organization/tournament-organization-constants";
import { dayMonthYearToDate } from "~/utils/dates";

View File

@ -1,5 +1,5 @@
import type { LoaderFunctionArgs } from "react-router";
import { z } from "zod/v4";
import { z } from "zod";
import { notFoundIfFalsy, parseParams } from "~/utils/remix.server";
import * as TournamentOrganizationRepository from "./TournamentOrganizationRepository.server";

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import {
id,
processMany,

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import {
_action,
checkboxValueToBoolean,

View File

@ -1,5 +1,5 @@
import { type ActionFunction, redirect } from "react-router";
import { z } from "zod/v4";
import { z } from "zod";
import { requireUser } from "~/features/auth/core/user.server";
import * as BuildRepository from "~/features/builds/BuildRepository.server";
import { BUILD } from "~/features/builds/builds-constants";

View File

@ -1,5 +1,5 @@
import { type ActionFunction, redirect } from "react-router";
import { z } from "zod/v4";
import { z } from "zod";
import { BUILD_SORT_IDENTIFIERS } from "~/db/tables";
import { requireUser } from "~/features/auth/core/user.server";
import * as BuildRepository from "~/features/builds/BuildRepository.server";

View File

@ -1,5 +1,5 @@
import type { LoaderFunctionArgs } from "react-router";
import { z } from "zod/v4";
import { z } from "zod";
import { requireUserId } from "~/features/auth/core/user.server";
import * as BuildRepository from "~/features/builds/BuildRepository.server";
import type { Ability } from "~/modules/in-game-lists/types";

View File

@ -1,5 +1,5 @@
import { useLoaderData } from "react-router";
import type { z } from "zod/v4";
import type { z } from "zod";
import { Divider } from "~/components/Divider";
import { SendouButton } from "~/components/elements/Button";
import { SendouDialog } from "~/components/elements/Dialog";

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import { BADGE } from "~/features/badges/badges-constants";
import { isCustomUrl } from "~/utils/urls";
import {

View File

@ -1,5 +1,5 @@
import type { LoaderFunctionArgs } from "react-router";
import { z } from "zod/v4";
import { z } from "zod";
import { DANGEROUS_CAN_ACCESS_DEV_CONTROLS } from "~/features/admin/core/dev-controls";
import { getUserId } from "~/features/auth/core/user.server";
import * as UserRepository from "~/features/user-page/UserRepository.server";

View File

@ -1,5 +1,5 @@
import type { LoaderFunctionArgs } from "react-router";
import { z } from "zod/v4";
import { z } from "zod";
import { requireUser } from "~/features/auth/core/user.server";
import { notFoundIfFalsy } from "~/utils/remix.server";
import { actualNumber, id } from "~/utils/zod";

View File

@ -8,7 +8,7 @@ import {
} from "react-hook-form";
import { useTranslation } from "react-i18next";
import { useLoaderData } from "react-router";
import type { z } from "zod/v4";
import type { z } from "zod";
import { SendouButton } from "~/components/elements/Button";
import { UserSearch } from "~/components/elements/UserSearch";
import { FormMessage } from "~/components/FormMessage";

View File

@ -1,5 +1,5 @@
import { add } from "date-fns";
import { z } from "zod/v4";
import { z } from "zod";
import {
dayMonthYear,
id,

View File

@ -1,4 +1,4 @@
import type { z } from "zod/v4";
import type { z } from "zod";
import type { Tables } from "~/db/tables";
import type { MainWeaponId } from "~/modules/in-game-lists/types";
import type { videoSchema } from "./vods-schemas";

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import {
TIER_1_ID,
TIER_2_ID,

View File

@ -1,4 +1,4 @@
import type { z } from "zod/v4";
import type { z } from "zod";
import { STAFF_DISCORD_IDS } from "~/features/admin/admin-constants";
import * as UserRepository from "~/features/user-page/UserRepository.server";
import { dateToDatabaseTimestamp } from "~/utils/dates";

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
import type { Unpacked } from "~/utils/types";
export const streamsSchema = z.object({

View File

@ -4,7 +4,7 @@ import type {
Params,
} from "react-router";
import { expect } from "vitest";
import type { z } from "zod/v4";
import type { z } from "zod";
import { REGULAR_USER_TEST_ID } from "~/db/seed/constants";
import { db, sql } from "~/db/sql";
import { ADMIN_ID } from "~/features/admin/admin-constants";

View File

@ -5,7 +5,7 @@ import { nanoid } from "nanoid";
import type { Ok, Result } from "neverthrow";
import type { Params, UIMatch } from "react-router";
import { data, redirect } from "react-router";
import type { z } from "zod/v4";
import type { z } from "zod";
import type { navItems } from "~/components/layout/nav-items";
import { uploadStreamToS3 } from "~/features/img-upload/s3.server";
import invariant from "./invariant";

View File

@ -1,5 +1,5 @@
import type { ZodType } from "zod/v4";
import { z } from "zod/v4";
import type { ZodType } from "zod";
import { z } from "zod";
import { CUSTOM_CSS_VAR_COLORS } from "~/features/user-page/user-page-constants";
import {
abilities,

18
package-lock.json generated
View File

@ -67,7 +67,7 @@
"slugify": "^1.6.6",
"swr": "^2.3.8",
"web-push": "^3.6.7",
"zod": "^3.25.61"
"zod": "^4.2.1"
},
"devDependencies": {
"@biomejs/biome": "2.3.10",
@ -10808,16 +10808,6 @@
"js-yaml": "bin/js-yaml.js"
}
},
"node_modules/knip/node_modules/zod": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.2.1.tgz",
"integrity": "sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==",
"dev": true,
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
},
"node_modules/kysely": {
"version": "0.28.9",
"resolved": "https://registry.npmjs.org/kysely/-/kysely-0.28.9.tgz",
@ -15026,9 +15016,9 @@
}
},
"node_modules/zod": {
"version": "3.25.76",
"resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
"integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.2.1.tgz",
"integrity": "sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"

View File

@ -89,7 +89,7 @@
"slugify": "^1.6.6",
"swr": "^2.3.8",
"web-push": "^3.6.7",
"zod": "^3.25.61"
"zod": "^4.2.1"
},
"devDependencies": {
"@biomejs/biome": "2.3.10",

View File

@ -1,7 +1,7 @@
/** biome-ignore-all lint/suspicious/noConsole: Biome v2 migration */
import fs from "node:fs";
import path from "node:path";
import { z } from "zod/v4";
import { z } from "zod";
import badgesJson from "../app/features/badges/homemade.json" with {
type: "json",
};

View File

@ -10,7 +10,7 @@
import fs from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";
import { z } from "zod/v4";
import { z } from "zod";
import type {
MainWeaponParams,
ParamsJson,

View File

@ -1,7 +1,7 @@
// for testing use the command `npx tsx ./scripts/create-league-divisions.ts 6 'https://gist.githubusercontent.com/sendou-ink/38aa4d5d8426035ce178c09598ae627f/raw/17be9bb53a9f017c2097d0624f365d1c5a029f01/league.csv'`
import "dotenv/config";
import { z } from "zod/v4";
import { z } from "zod";
import { db } from "~/db/sql";
import { ADMIN_ID } from "~/features/admin/admin-constants";
import * as CalendarRepository from "~/features/calendar/CalendarRepository.server";

View File

@ -1,4 +1,4 @@
import { z } from "zod/v4";
import { z } from "zod";
const placements = z.object({
edges: z.array(