diff --git a/src/components/actionBar/index.tsx b/src/components/actionBar/index.tsx index 818483f..27260d0 100644 --- a/src/components/actionBar/index.tsx +++ b/src/components/actionBar/index.tsx @@ -441,7 +441,7 @@ export default function ActionBar() {
-

+

{title}

diff --git a/src/components/avatarInfo/index.tsx b/src/components/avatarInfo/index.tsx index cf86a4e..f345f3a 100644 --- a/src/components/avatarInfo/index.tsx +++ b/src/components/avatarInfo/index.tsx @@ -83,7 +83,7 @@ export default function AvatarInfo() { {/* Header */}

-
+
{transI18n("characterSettings")}

@@ -92,7 +92,7 @@ export default function AvatarInfo() { {/* Level Control */}

-
+
{transI18n("levelConfiguration")}

@@ -142,7 +142,7 @@ export default function AvatarInfo() { {/* Energy Control */}

-
+
{transI18n("ultimateEnergy")}

@@ -189,7 +189,7 @@ export default function AvatarInfo() { {/* Technique Toggle */}

-
+
{transI18n("battleConfiguration")}

@@ -277,7 +277,7 @@ export default function AvatarInfo() { {/* Header */}

-
+
{transI18n("lightconeEquipment")}

@@ -288,7 +288,7 @@ export default function AvatarInfo() { {/* Level & Rank Controls */}

-
+
{transI18n("lightconeSettings")}

diff --git a/src/components/card/characterCard.tsx b/src/components/card/characterCard.tsx index 1c7ca41..650e66a 100644 --- a/src/components/card/characterCard.tsx +++ b/src/components/card/characterCard.tsx @@ -16,12 +16,12 @@ export default function CharacterCard({ data }: CharacterCardProps) { return (
  • { switch (rarity) { - case '3': return 'border-green-500 shadow-green-500/50 bg-gradient-to-br from-green-700 via-green-400 to-green-500'; - case '4': return 'border-blue-500 shadow-blue-500/50 bg-gradient-to-br from-blue-700 via-blue-400 to-blue-500'; - case '5': return 'border-purple-500 shadow-purple-500/50 bg-gradient-to-br from-purple-700 via-purple-400 to-purple-500'; - case '6': return 'border-yellow-500 shadow-yellow-500/50 bg-gradient-to-br from-yellow-700 via-yellow-400 to-yellow-500'; + case '3': return 'border-green-500 shadow-green-500/50 bg-linear-to-br from-green-700 via-green-400 to-green-500'; + case '4': return 'border-blue-500 shadow-blue-500/50 bg-linear-to-br from-blue-700 via-blue-400 to-blue-500'; + case '5': return 'border-purple-500 shadow-purple-500/50 bg-linear-to-br from-purple-700 via-purple-400 to-purple-500'; + case '6': return 'border-yellow-500 shadow-yellow-500/50 bg-linear-to-br from-yellow-700 via-yellow-400 to-yellow-500'; default: return 'border-gray-500 shadow-gray-500/50'; } }; diff --git a/src/components/eidolonsInfo/index.tsx b/src/components/eidolonsInfo/index.tsx index b81b52f..a147b93 100644 --- a/src/components/eidolonsInfo/index.tsx +++ b/src/components/eidolonsInfo/index.tsx @@ -28,7 +28,7 @@ export default function EidolonsInfo() { return (

    -
    +
    {transI18n("eidolons")}

    diff --git a/src/components/header/index.tsx b/src/components/header/index.tsx index 71a6d2b..fbb0ea7 100644 --- a/src/components/header/index.tsx +++ b/src/components/header/index.tsx @@ -350,7 +350,7 @@ export default function Header() {

    Firefly Sr - + Tools

    @@ -557,7 +557,7 @@ export default function Header() { {/* GitHub Link */}
    -

    +

    {title}

    diff --git a/src/components/importBar/freesr.tsx b/src/components/importBar/freesr.tsx index 0b64be7..00c5b17 100644 --- a/src/components/importBar/freesr.tsx +++ b/src/components/importBar/freesr.tsx @@ -6,7 +6,7 @@ import useUserDataStore from "@/stores/userDataStore"; import { CharacterInfoCardType } from "@/types"; import { useState } from "react"; import CharacterInfoCard from "../card/characterInfoCard"; -import { freeSRJsonSchema } from "@/zod"; +import { freeSrJsonSchema } from "@/zod"; import { toast } from "react-toastify"; import { converterOneFreeSRDataToAvatarStore } from "@/helper"; import { useTranslations } from "next-intl"; @@ -80,7 +80,7 @@ export default function FreeSRImport() { reader.onload = (e) => { try { const data = JSON.parse(e.target?.result as string); - const parsed = freeSRJsonSchema.parse(data) + const parsed = freeSrJsonSchema.parse(data) setFreeSRData(parsed) setError("") diff --git a/src/components/lightconeBar/index.tsx b/src/components/lightconeBar/index.tsx index aeef447..5f4f3f7 100644 --- a/src/components/lightconeBar/index.tsx +++ b/src/components/lightconeBar/index.tsx @@ -57,7 +57,7 @@ export default function LightconeBar() { return (
    -

    +

    {transI18n("lightConeSetting")}

    diff --git a/src/components/relicBar/index.tsx b/src/components/relicBar/index.tsx index 83e7f99..b7c5601 100644 --- a/src/components/relicBar/index.tsx +++ b/src/components/relicBar/index.tsx @@ -240,7 +240,7 @@ export default function RelicMaker() { return (
    -

    +

    {transI18n("relicMaker")}

    diff --git a/src/components/relicsInfo/index.tsx b/src/components/relicsInfo/index.tsx index a3a21c4..14c4109 100644 --- a/src/components/relicsInfo/index.tsx +++ b/src/components/relicsInfo/index.tsx @@ -181,7 +181,7 @@ export default function RelicsInfo() {

    -
    +
    {transI18n("relics")}

    @@ -280,7 +280,7 @@ export default function RelicsInfo() { {/* Set Effects Panel */}

    -
    +
    {transI18n("setEffects")}

    @@ -353,7 +353,7 @@ export default function RelicsInfo() { {title && (
    -

    +

    {title}

    diff --git a/src/components/showcaseCard/relicShowcase.tsx b/src/components/showcaseCard/relicShowcase.tsx index 96029ac..94ddc68 100644 --- a/src/components/showcaseCard/relicShowcase.tsx +++ b/src/components/showcaseCard/relicShowcase.tsx @@ -14,7 +14,7 @@ export default function RelicShowcase({ return ( <>
    {/* Subtle glow overlay */}
    diff --git a/src/components/skillsInfo/index.tsx b/src/components/skillsInfo/index.tsx index 9f6fb25..2c99760 100644 --- a/src/components/skillsInfo/index.tsx +++ b/src/components/skillsInfo/index.tsx @@ -146,7 +146,7 @@ export default function SkillsInfo() {

    -
    +
    {transI18n("skills")}

    @@ -271,7 +271,7 @@ export default function SkillsInfo() {

    -
    +
    {transI18n("details")}

    {skillSelected && avatarInfo?.SkillTrees && avatarData && ( diff --git a/src/helper/connect.ts b/src/helper/connect.ts index 7827bb1..f85eb90 100644 --- a/src/helper/connect.ts +++ b/src/helper/connect.ts @@ -3,7 +3,7 @@ import { SendDataThroughProxy, SendDataToServer } from "@/lib/api/api" import useConnectStore from "@/stores/connectStore" import useUserDataStore from "@/stores/userDataStore" import { converterToFreeSRJson } from "./converterToFreeSRJson" -import { pSResponseSchema } from "@/zod" +import { psResponseSchema } from "@/zod" import useGlobalStore from "@/stores/globalStore" export const connectToPS = async (): Promise<{ success: boolean, message: string }> => { @@ -29,7 +29,7 @@ export const connectToPS = async (): Promise<{ success: boolean, message: string } else if (response.error) { return { success: false, message: response.error } } else { - const parsed = pSResponseSchema.safeParse(response.data) + const parsed = psResponseSchema.safeParse(response.data) if (!parsed.success) { return { success: false, message: "Invalid response schema" } } @@ -78,7 +78,7 @@ export const syncDataToPS = async (): Promise<{ success: boolean, message: strin } else if (response.error) { return { success: false, message: response.error } } else { - const parsed = pSResponseSchema.safeParse(response.data) + const parsed = psResponseSchema.safeParse(response.data) if (!parsed.success) { return { success: false, message: "Invalid response schema" } } diff --git a/src/lib/api/api.ts b/src/lib/api/api.ts index c42dc2a..b269fcf 100644 --- a/src/lib/api/api.ts +++ b/src/lib/api/api.ts @@ -2,7 +2,7 @@ import { AffixDetail, ASDetail, CharacterDetail, ConfigMaze, FreeSRJson, LightConeDetail, MocDetail, MonsterDetail, PeakDetail, PFDetail, PSResponse, RelicDetail } from "@/types"; import axios from 'axios'; -import { pSResponseSchema } from "@/zod"; +import { psResponseSchema } from "@/zod"; import { ExtraData } from "@/types"; export async function getConfigMazeApi(): Promise { @@ -246,7 +246,7 @@ export async function SendDataToServer( ): Promise { try { const response = await axios.post(`${serverUrl}`, { username, password, data, extra_data: extraData }) - const parsed = pSResponseSchema.safeParse(response.data) + const parsed = psResponseSchema.safeParse(response.data) if (!parsed.success) { return "Invalid response schema"; } diff --git a/src/types/asDetail.ts b/src/types/asDetail.ts index 788f1d6..931f155 100644 --- a/src/types/asDetail.ts +++ b/src/types/asDetail.ts @@ -4,7 +4,7 @@ import { BuffDetail, OptionDetail } from "./pfDetail" export interface ASDetail { Id: number Name: string - Buff: BuffDetail + Buff?: BuffDetail BuffList1: OptionDetail[] BuffList2: OptionDetail[] BeginTime: string @@ -43,7 +43,7 @@ export interface BossTag { Name: string Desc: string Param: number[] - SkillID: number | null + SkillID?: number | null ParamFix: number[] Child: BossChildTag[] } @@ -57,7 +57,7 @@ export interface BossChildTag { export interface BossDifficultyGuide { Desc: string Param: number[] - SkillID: number | null + SkillID?: number | null ParamFix: number[] } diff --git a/src/types/card.ts b/src/types/card.ts index 9ae731f..c4ca0bc 100644 --- a/src/types/card.ts +++ b/src/types/card.ts @@ -20,6 +20,6 @@ export interface CharacterInfoCardType { export interface AvatarProfileCardType { key: number; profile_name: string, - lightcone: LightconeStore | null, + lightcone?: LightconeStore | null, relics: Record } \ No newline at end of file diff --git a/src/types/characterDetail.ts b/src/types/characterDetail.ts index 99b4bb9..0601490 100644 --- a/src/types/characterDetail.ts +++ b/src/types/characterDetail.ts @@ -1,4 +1,4 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ + export interface CharacterDetail { Name: string; Desc: string; @@ -21,8 +21,8 @@ export interface CharacterDetail { export interface EnhancedType { Descs: string[]; - ChangeRankList: any; - ChangeSkillTreeList: any; + ChangeRankList: unknown; + ChangeSkillTreeList: unknown; Ranks: Record; Skills: Record; SkillTrees: Record>; @@ -113,7 +113,7 @@ export interface Memosprite { SpeedSkill: number; Aggro: number; Skills: Record; - Talent: Record; + Talent: Record; } export interface SpriteSkill { diff --git a/src/types/enka.ts b/src/types/enka.ts index 82d6afe..47c15a6 100644 --- a/src/types/enka.ts +++ b/src/types/enka.ts @@ -6,10 +6,6 @@ interface PrivacySettingInfo { displayDiary: boolean } -interface ChallengeInfo { - // Thêm các field cụ thể nếu có -} - interface RecordInfo { achievementCount: number bookCount: number @@ -17,7 +13,7 @@ interface RecordInfo { equipmentCount: number musicCount: number relicCount: number - challengeInfo: ChallengeInfo + challengeInfo: unknown; maxRogueChallengeScore: number } diff --git a/src/types/index.ts b/src/types/index.ts index 3d7b56e..8038e70 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -21,3 +21,4 @@ export * from "./peakDetail" export * from "./monsterDetail" export * from "./extraData" export * from "./showcase" +export * from "./srtools" diff --git a/src/types/mics.ts b/src/types/mics.ts index 02efbae..08ae3ad 100644 --- a/src/types/mics.ts +++ b/src/types/mics.ts @@ -1,6 +1,6 @@ export type AvatarDataStore = { rank: number, - skills: { [key: string]: number } + skills: Record } export type LightconeStore = { level: number; @@ -118,4 +118,5 @@ export interface Mics { pf_config: PFConfigStore; as_config: ASConfigStore; ce_config: CEConfigStore; + peak_config: PEAKConfigStore } \ No newline at end of file diff --git a/src/types/mocDetail.ts b/src/types/mocDetail.ts index 33e68bc..172678d 100644 --- a/src/types/mocDetail.ts +++ b/src/types/mocDetail.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ export interface MocDetail { Id: number Name: string @@ -21,7 +20,7 @@ export interface MocDetail { export interface ChallengeDetail { Name: string - Param?: number + Param?: number | null } export interface EventStageDetail { @@ -32,17 +31,17 @@ export interface EventStageDetail { Level: number EliteGroup?: number LevelGraphPath: string - StageAbilityConfig: any[] - BattleScoringGroup?: number - SubLevelGraphs: any[] + StageAbilityConfig: unknown[] + BattleScoringGroup?: number | null + SubLevelGraphs: unknown[] StageConfigData: StageConfig[] MonsterList: Record[] LevelLoseCondition: string[] LevelWinCondition: string[] Release: boolean ForbidExitBattle: boolean - MonsterWarningRatio?: number - TrialAvatarList: any[] + MonsterWarningRatio?: number | null + TrialAvatarList: unknown[] } export interface StageConfig { $type: string diff --git a/src/types/pfDetail.ts b/src/types/pfDetail.ts index bf9e982..1141303 100644 --- a/src/types/pfDetail.ts +++ b/src/types/pfDetail.ts @@ -12,8 +12,8 @@ export interface PFDetail { } export interface BuffDetail { - Name: string | null - Desc: string | null + Name?: string | null + Desc?: string | null Param: number[] } diff --git a/src/types/showcase.tsx b/src/types/showcase.ts similarity index 100% rename from src/types/showcase.tsx rename to src/types/showcase.ts diff --git a/src/types/srtools.ts b/src/types/srtools.ts index 1350d27..e6cc74b 100644 --- a/src/types/srtools.ts +++ b/src/types/srtools.ts @@ -26,7 +26,7 @@ export interface LightconeJson { } export interface AvatarData { rank: number, - skills: { [key: string]: number } + skills: Record } export interface AvatarJson { @@ -75,7 +75,7 @@ export interface FreeSRJson { key?: string; lightcones: LightconeJson[]; relics: RelicJson[]; - avatars: { [key: string]: AvatarJson }; + avatars: Record; battle_config: BattleConfigJson; loadout?: LoadoutJson[]; } diff --git a/src/zod/affix.zod.ts b/src/zod/affix.zod.ts index 72de43a..6e0bcec 100644 --- a/src/zod/affix.zod.ts +++ b/src/zod/affix.zod.ts @@ -2,8 +2,8 @@ import { z } from "zod"; export const affixDetailSchema = z.object({ - property: z.string(), - base: z.number(), - step: z.number(), - step_num: z.number(), + property: z.string(), + base: z.number(), + step: z.number(), + step_num: z.number() }); diff --git a/src/zod/asDetail.zod.ts b/src/zod/asDetail.zod.ts index bbe4c03..9146d13 100644 --- a/src/zod/asDetail.zod.ts +++ b/src/zod/asDetail.zod.ts @@ -2,24 +2,24 @@ import { z } from "zod"; export const bossDifficultyGuideSchema = z.object({ - Desc: z.string(), - Param: z.array(z.number()), - SkillID: z.number().nullable(), - ParamFix: z.array(z.number()), + Desc: z.string(), + Param: z.array(z.number()), + SkillID: z.number().optional().nullable(), + ParamFix: z.array(z.number()) }); export const bossPhaseSchema = z.object({ - Name: z.string(), - Desc: z.string(), - Answer: z.string(), - Difficulty: z.number(), - SkillList: z.array(z.number()), + Name: z.string(), + Desc: z.string(), + Answer: z.string(), + Difficulty: z.number(), + SkillList: z.array(z.number()) }); export const bossChildTagSchema = z.object({ - Name: z.string(), - Desc: z.string(), - Param: z.array(z.number()), + Name: z.string(), + Desc: z.string(), + Param: z.array(z.number()) }); const buffDetailSchema = z.any(); @@ -31,48 +31,48 @@ const challengeDetailSchema = z.any(); const eventStageDetailSchema = z.any(); export const bossTagSchema = z.object({ - Name: z.string(), - Desc: z.string(), - Param: z.array(z.number()), - SkillID: z.number().nullable(), - ParamFix: z.array(z.number()), - Child: z.array(bossChildTagSchema), + Name: z.string(), + Desc: z.string(), + Param: z.array(z.number()), + SkillID: z.number().optional().nullable(), + ParamFix: z.array(z.number()), + Child: z.array(bossChildTagSchema) }); export const bossMonsterConfigSchema = z.object({ - Difficulty: z.number(), - DifficultyList: z.array(z.number()), - TagList: z.array(bossTagSchema), - DifficultyGuideList: z.array(bossDifficultyGuideSchema), - TextGuideList: z.array(z.string()), - PhaseList: z.array(bossPhaseSchema), + Difficulty: z.number(), + DifficultyList: z.array(z.number()), + TagList: z.array(bossTagSchema), + DifficultyGuideList: z.array(bossDifficultyGuideSchema), + TextGuideList: z.array(z.string()), + PhaseList: z.array(bossPhaseSchema) }); -export const aSLevelSchema = z.object({ - Id: z.number(), - Name: z.string(), - Challenge: z.array(challengeDetailSchema), - DamageType1: z.array(z.string()), - DamageType2: z.array(z.string()), - MazeGroupID1: z.number(), - MazeGroupID2: z.number(), - BossMonsterID1: z.number(), - BossMonsterID2: z.number(), - BossMonsterID1SkillList: z.array(z.number()), - BossMonsterID2SkillList: z.array(z.number()), - BossMonsterConfig1: bossMonsterConfigSchema, - BossMonsterConfig2: bossMonsterConfigSchema, - EventIDList1: z.array(eventStageDetailSchema), - EventIDList2: z.array(eventStageDetailSchema), +export const asLevelSchema = z.object({ + Id: z.number(), + Name: z.string(), + Challenge: z.array(challengeDetailSchema), + DamageType1: z.array(z.string()), + DamageType2: z.array(z.string()), + MazeGroupID1: z.number(), + MazeGroupID2: z.number(), + BossMonsterID1: z.number(), + BossMonsterID2: z.number(), + BossMonsterID1SkillList: z.array(z.number()), + BossMonsterID2SkillList: z.array(z.number()), + BossMonsterConfig1: bossMonsterConfigSchema, + BossMonsterConfig2: bossMonsterConfigSchema, + EventIDList1: z.array(eventStageDetailSchema), + EventIDList2: z.array(eventStageDetailSchema) }); -export const aSDetailSchema = z.object({ - Id: z.number(), - Name: z.string(), - Buff: buffDetailSchema, - BuffList1: z.array(optionDetailSchema), - BuffList2: z.array(optionDetailSchema), - BeginTime: z.string(), - EndTime: z.string(), - Level: z.array(aSLevelSchema), +export const asDetailSchema = z.object({ + Id: z.number(), + Name: z.string(), + Buff: buffDetailSchema.optional(), + BuffList1: z.array(optionDetailSchema), + BuffList2: z.array(optionDetailSchema), + BeginTime: z.string(), + EndTime: z.string(), + Level: z.array(asLevelSchema) }); diff --git a/src/zod/card.zod.ts b/src/zod/card.zod.ts index f0a5ba6..89557ca 100644 --- a/src/zod/card.zod.ts +++ b/src/zod/card.zod.ts @@ -2,22 +2,20 @@ import { z } from "zod"; export const characterInfoCardTypeSchema = z.object({ - key: z.number(), - avatar_id: z.number(), - rank: z.number(), - level: z.number(), - lightcone: z.object({ - level: z.number(), + key: z.number(), + avatar_id: z.number(), rank: z.number(), - item_id: z.number(), - }), - relics: z.array( - z.object({ - level: z.number(), - relic_id: z.number(), - relic_set_id: z.number(), + level: z.number(), + lightcone: z.object({ + level: z.number(), + rank: z.number(), + item_id: z.number() }), - ), + relics: z.array(z.object({ + level: z.number(), + relic_id: z.number(), + relic_set_id: z.number() + })) }); const lightconeStoreSchema = z.any(); @@ -25,8 +23,8 @@ const lightconeStoreSchema = z.any(); const relicStoreSchema = z.any(); export const avatarProfileCardTypeSchema = z.object({ - key: z.number(), - profile_name: z.string(), - lightcone: lightconeStoreSchema.nullable(), - relics: z.record(relicStoreSchema), + key: z.number(), + profile_name: z.string(), + lightcone: lightconeStoreSchema.optional().nullable(), + relics: z.record(z.string(), relicStoreSchema) }); diff --git a/src/zod/characterBasic.zod.ts b/src/zod/characterBasic.zod.ts index 52be1f9..a424ecd 100644 --- a/src/zod/characterBasic.zod.ts +++ b/src/zod/characterBasic.zod.ts @@ -2,14 +2,14 @@ import { z } from "zod"; export const characterBasicRawSchema = z.object({ - release: z.number(), - icon: z.string(), - rank: z.string(), - baseType: z.string(), - damageType: z.string(), - en: z.string(), - desc: z.string(), - kr: z.string(), - cn: z.string(), - jp: z.string(), + release: z.number(), + icon: z.string(), + rank: z.string(), + baseType: z.string(), + damageType: z.string(), + en: z.string(), + desc: z.string(), + kr: z.string(), + cn: z.string(), + jp: z.string() }); diff --git a/src/zod/characterDetail.zod.ts b/src/zod/characterDetail.zod.ts index 46731af..273eb81 100644 --- a/src/zod/characterDetail.zod.ts +++ b/src/zod/characterDetail.zod.ts @@ -2,162 +2,180 @@ import { z } from "zod"; export const rankTypeSchema = z.object({ - Id: z.number(), - Name: z.string(), - Desc: z.string(), - ParamList: z.array(z.number()), -}); - -export const uniqueAbilitySchema = z.object({ - Tag: z.string(), - Name: z.string(), - Desc: z.string(), - Param: z.array(z.number()), + Id: z.number(), + Name: z.string(), + Desc: z.string(), + ParamList: z.array(z.number()) }); export const voiceActorsSchema = z.object({ - Chinese: z.string().nullable(), - Japanese: z.string().nullable(), - Korean: z.string().nullable(), - English: z.string().nullable(), + Chinese: z.string().nullable(), + Japanese: z.string().nullable(), + Korean: z.string().nullable(), + English: z.string().nullable() }); export const levelParamsSchema = z.object({ - Level: z.number(), - ParamList: z.array(z.number()), + Level: z.number(), + ParamList: z.array(z.number()) +}); + +export const statusAddTypeSchema = z.object({ + $type: z.string(), + PropertyType: z.string(), + Value: z.number(), + Name: z.string() }); export const itemConfigRowSchema = z.object({ - $type: z.string(), - ItemID: z.number(), - ItemNum: z.number(), - Rarity: z.string(), + $type: z.string(), + ItemID: z.number(), + ItemNum: z.number(), + Rarity: z.string() }); -export const spriteSkillSchema = z.object({ - Name: z.string(), - Desc: z.string().nullable(), - Type: z.string().nullable(), - Tag: z.string(), - SPBase: z.number().nullable(), - BPNeed: z.number(), - BPAdd: z.number().nullable(), - ShowStanceList: z.array(z.number()), - SkillComboValueDelta: z.number().nullable(), - Level: z.record(levelParamsSchema), +export const extraSchema = z.object({ + name: z.string(), + desc: z.string(), + param: z.array(z.number()) +}); + +export const uniqueAbilitySchema = z.object({ + Tag: z.string(), + Name: z.string(), + Desc: z.string(), + Param: z.array(z.number()), + Extra: z.record(z.string(), extraSchema) }); export const statSchema = z.object({ - AttackBase: z.number(), - AttackAdd: z.number(), - DefenceBase: z.number(), - DefenceAdd: z.number(), - HPBase: z.number(), - HPAdd: z.number(), - SpeedBase: z.number(), - CriticalChance: z.number(), - CriticalDamage: z.number(), - BaseAggro: z.number(), - Cost: z.array(itemConfigRowSchema), + AttackBase: z.number(), + AttackAdd: z.number(), + DefenceBase: z.number(), + DefenceAdd: z.number(), + HPBase: z.number(), + HPAdd: z.number(), + SpeedBase: z.number(), + CriticalChance: z.number(), + CriticalDamage: z.number(), + BaseAggro: z.number(), + Cost: z.array(itemConfigRowSchema) }); export const relicRecommendPropertySchema = z.object({ - $type: z.string(), - RelicType: z.string(), - PropertyType: z.string(), + $type: z.string(), + RelicType: z.string(), + PropertyType: z.string() }); export const characterInfoSchema = z.object({ - Camp: z.string().nullable(), - VA: voiceActorsSchema, - Stories: z.record(z.string().nullable()), - Voicelines: z.array(z.string()), + Camp: z.string().nullable(), + VA: voiceActorsSchema, + Stories: z.record(z.string(), z.string().nullable()), + Voicelines: z.array(z.string()) }); export const skillTypeSchema = z.object({ - Id: z.number(), - Name: z.string(), - Desc: z.string(), - Type: z.string(), - Tag: z.string(), - SPBase: z.number().nullable(), - BPNeed: z.number(), - BPAdd: z.number(), - ShowStanceList: z.array(z.number()), - SkillComboValueDelta: z.number().nullable(), - Level: z.record(levelParamsSchema), + Id: z.number(), + Name: z.string(), + Desc: z.string().nullable(), + SimpleDesc: z.string(), + Type: z.string(), + Tag: z.string(), + SPBase: z.number().nullable(), + BPNeed: z.number(), + BPAdd: z.number(), + ShowStanceList: z.array(z.number()), + SkillComboValueDelta: z.number().nullable(), + Level: z.record(z.string(), levelParamsSchema) }); export const skillTreePointSchema = z.object({ - Anchor: z.string(), - AvatarPromotionLimit: z.number().nullable(), - AvatarLevelLimit: z.number().nullable(), - DefaultUnlock: z.boolean(), - Icon: z.string(), - LevelUpSkillID: z.array(z.number()), - MaterialList: z.array(itemConfigRowSchema), - MaxLevel: z.number(), - ParamList: z.array(z.any()), - PointID: z.number(), - PointName: z.string().nullable(), - PointDesc: z.string().nullable(), - PointTriggerKey: z.number(), - PointType: z.number(), - PrePoint: z.array(z.string()), - StatusAddList: z.array(z.any()), -}); - -export const memospriteSchema = z.object({ - Name: z.string(), - Icon: z.string(), - HPBase: z.string(), - HPInherit: z.string(), - HPSkill: z.number().nullable(), - SpeedBase: z.string(), - SpeedInherit: z.string(), - SpeedSkill: z.number(), - Aggro: z.number(), - Skills: z.record(spriteSkillSchema), - Talent: z.record(z.any()), + Anchor: z.string(), + AvatarPromotionLimit: z.number().nullable(), + AvatarLevelLimit: z.number().nullable(), + DefaultUnlock: z.boolean(), + Icon: z.string(), + LevelUpSkillID: z.array(z.number()), + MaterialList: z.array(itemConfigRowSchema), + MaxLevel: z.number(), + ParamList: z.array(z.number()), + PointID: z.number(), + PointName: z.string().nullable(), + PointDesc: z.string().nullable(), + PointTriggerKey: z.number(), + PointType: z.number(), + PrePoint: z.array(z.string()), + StatusAddList: z.array(statusAddTypeSchema) }); export const relicsSchema = z.object({ - AvatarID: z.number(), - Set4IDList: z.array(z.number()), - Set2IDList: z.array(z.number()), - PropertyList3: z.array(z.string()), - PropertyList4: z.array(z.string()), - PropertyList5: z.array(z.string()), - PropertyList6: z.array(z.string()), - PropertyList: z.array(relicRecommendPropertySchema), - SubAffixPropertyList: z.array(z.string()), - ScoreRankList: z.array(z.number()), + AvatarID: z.number(), + Set4IDList: z.array(z.number()), + Set2IDList: z.array(z.number()), + PropertyList3: z.array(z.string()), + PropertyList4: z.array(z.string()), + PropertyList5: z.array(z.string()), + PropertyList6: z.array(z.string()), + PropertyList: z.array(relicRecommendPropertySchema), + SubAffixPropertyList: z.array(z.string()), + ScoreRankList: z.array(z.number()) }); export const enhancedTypeSchema = z.object({ - Descs: z.array(z.string()), - ChangeRankList: z.any(), - ChangeSkillTreeList: z.any(), - Ranks: z.record(rankTypeSchema), - Skills: z.record(skillTypeSchema), - SkillTrees: z.record(z.record(skillTreePointSchema)), + Descs: z.array(z.string()), + ChangeRankList: z.unknown(), + ChangeSkillTreeList: z.unknown(), + Ranks: z.record(z.string(), rankTypeSchema), + Skills: z.record(z.string(), skillTypeSchema), + SkillTrees: z.record(z.string(), z.record(z.string(), skillTreePointSchema)) +}); + +export const spriteSkillSchema = z.object({ + Name: z.string(), + Desc: z.string().nullable(), + SimpleDesc: z.string(), + Type: z.string().nullable(), + Tag: z.string(), + SPBase: z.number().nullable(), + BPNeed: z.number(), + BPAdd: z.number().nullable(), + ShowStanceList: z.array(z.number()), + SkillComboValueDelta: z.number().nullable(), + Extra: z.record(z.string(), extraSchema), + Level: z.record(z.string(), levelParamsSchema) +}); + +export const memospriteSchema = z.object({ + Name: z.string(), + Icon: z.string(), + HPBase: z.string(), + HPInherit: z.string(), + HPSkill: z.number().nullable(), + SpeedBase: z.string(), + SpeedInherit: z.string(), + SpeedSkill: z.number(), + Aggro: z.number(), + Skills: z.record(z.string(), spriteSkillSchema), + Talent: z.record(z.string(), z.unknown()) }); export const characterDetailSchema = z.object({ - Name: z.string(), - Desc: z.string(), - CharaInfo: characterInfoSchema, - Rarity: z.string(), - AvatarVOTag: z.string(), - SPNeed: z.number().nullable(), - BaseType: z.string(), - DamageType: z.string(), - Ranks: z.record(rankTypeSchema), - Skills: z.record(skillTypeSchema), - SkillTrees: z.record(z.record(skillTreePointSchema)), - Memosprite: memospriteSchema, - Unique: z.record(uniqueAbilitySchema), - Stats: z.record(statSchema), - Relics: relicsSchema, - Enhanced: z.record(enhancedTypeSchema), + Name: z.string(), + Desc: z.string(), + CharaInfo: characterInfoSchema, + Rarity: z.string(), + AvatarVOTag: z.string(), + SPNeed: z.number().nullable(), + BaseType: z.string(), + DamageType: z.string(), + Ranks: z.record(z.string(), rankTypeSchema), + Skills: z.record(z.string(), skillTypeSchema), + SkillTrees: z.record(z.string(), z.record(z.string(), skillTreePointSchema)), + Memosprite: memospriteSchema, + Unique: z.record(z.string(), uniqueAbilitySchema), + Stats: z.record(z.string(), statSchema), + Relics: relicsSchema, + Enhanced: z.record(z.string(), enhancedTypeSchema), + RankIcon: z.array(z.string()) }); diff --git a/src/zod/config_maze.zod.ts b/src/zod/config_maze.zod.ts index e4698c4..f94860b 100644 --- a/src/zod/config_maze.zod.ts +++ b/src/zod/config_maze.zod.ts @@ -1,28 +1,36 @@ // Generated by ts-to-zod import { z } from "zod"; -export const aSConfigMazeSchema = z.object({ - buff_1: z.array(z.number()), - buff_2: z.array(z.number()), - maze_buff: z.number(), +export const asConfigMazeSchema = z.object({ + buff_1: z.array(z.number()), + buff_2: z.array(z.number()), + maze_buff: z.number() }); -export const pFConfigMazeSchema = z.object({ - buff: z.array(z.number()), - maze_buff: z.number(), +export const pfConfigMazeSchema = z.object({ + buff: z.array(z.number()), + maze_buff: z.number() }); -export const mOCConfigMazeSchema = z.object({ - maze_buff: z.number(), +export const mocConfigMazeSchema = z.object({ + maze_buff: z.number() }); export const avatarConfigMazeSchema = z.object({ - maze_buff: z.array(z.number()), + maze_buff: z.array(z.number()) +}); + +export const stageConfigMazeSchema = z.object({ + stage_id: z.number(), + stage_type: z.string(), + level: z.number(), + monster_list: z.array(z.record(z.string(), z.number())) }); export const configMazeSchema = z.object({ - Avatar: z.record(avatarConfigMazeSchema), - MOC: z.record(mOCConfigMazeSchema), - AS: z.record(aSConfigMazeSchema), - PF: z.record(pFConfigMazeSchema), + Avatar: z.record(z.string(), avatarConfigMazeSchema), + MOC: z.record(z.string(), mocConfigMazeSchema), + AS: z.record(z.string(), asConfigMazeSchema), + PF: z.record(z.string(), pfConfigMazeSchema), + Stage: z.record(z.string(), stageConfigMazeSchema) }); diff --git a/src/zod/enka.zod.ts b/src/zod/enka.zod.ts index 9f58f2b..d87879e 100644 --- a/src/zod/enka.zod.ts +++ b/src/zod/enka.zod.ts @@ -2,99 +2,97 @@ import { z } from "zod"; const privacySettingInfoSchema = z.object({ - displayCollection: z.boolean(), - displayRecord: z.boolean(), - displayRecordTeam: z.boolean(), - displayOnlineStatus: z.boolean(), - displayDiary: z.boolean(), + displayCollection: z.boolean(), + displayRecord: z.boolean(), + displayRecordTeam: z.boolean(), + displayOnlineStatus: z.boolean(), + displayDiary: z.boolean() }); -const challengeInfoSchema = z.object({}); - const recordInfoSchema = z.object({ - achievementCount: z.number(), - bookCount: z.number(), - avatarCount: z.number(), - equipmentCount: z.number(), - musicCount: z.number(), - relicCount: z.number(), - challengeInfo: challengeInfoSchema, - maxRogueChallengeScore: z.number(), + achievementCount: z.number(), + bookCount: z.number(), + avatarCount: z.number(), + equipmentCount: z.number(), + musicCount: z.number(), + relicCount: z.number(), + challengeInfo: z.unknown(), + maxRogueChallengeScore: z.number() }); const subAffixSchema = z.object({ - affixId: z.number(), - cnt: z.number(), - step: z.number().optional(), + affixId: z.number(), + cnt: z.number(), + step: z.number().optional() }); const flatPropSchema = z.object({ - type: z.string(), - value: z.number(), + type: z.string(), + value: z.number() }); const relicFlatSchema = z.object({ - props: z.array(flatPropSchema), - setName: z.string(), - setID: z.number(), + props: z.array(flatPropSchema), + setName: z.string(), + setID: z.number() }); const relicSchema = z.object({ - mainAffixId: z.number(), - subAffixList: z.array(subAffixSchema), - tid: z.number(), - type: z.number(), - level: z.number(), - _flat: relicFlatSchema, + mainAffixId: z.number(), + subAffixList: z.array(subAffixSchema), + tid: z.number(), + type: z.number(), + level: z.number(), + _flat: relicFlatSchema }); const skillTreeSchema = z.object({ - pointId: z.number(), - level: z.number(), + pointId: z.number(), + level: z.number() }); const equipmentFlatSchema = z.object({ - props: z.array(flatPropSchema), - name: z.string(), + props: z.array(flatPropSchema), + name: z.string() }); const equipmentSchema = z.object({ - rank: z.number(), - tid: z.number(), - promotion: z.number(), - level: z.number(), - _flat: equipmentFlatSchema, + rank: z.number(), + tid: z.number(), + promotion: z.number(), + level: z.number(), + _flat: equipmentFlatSchema }); export const avatarEnkaDetailSchema = z.object({ - relicList: z.array(relicSchema), - level: z.number(), - promotion: z.number(), - rank: z.number().optional(), - skillTreeList: z.array(skillTreeSchema), - equipment: equipmentSchema, - avatarId: z.number(), - _assist: z.boolean().optional(), + relicList: z.array(relicSchema), + level: z.number(), + promotion: z.number(), + rank: z.number().optional(), + skillTreeList: z.array(skillTreeSchema), + equipment: equipmentSchema, + avatarId: z.number(), + _assist: z.boolean().optional() }); const detailInfoSchema = z.object({ - worldLevel: z.number(), - privacySettingInfo: privacySettingInfoSchema, - headIcon: z.number(), - signature: z.string(), - avatarDetailList: z.array(avatarEnkaDetailSchema), - platform: z.string(), - recordInfo: recordInfoSchema, - uid: z.number(), - level: z.number(), - nickname: z.string(), - isDisplayAvatar: z.boolean(), - friendCount: z.number(), - personalCardId: z.number(), + worldLevel: z.number(), + privacySettingInfo: privacySettingInfoSchema, + headIcon: z.number(), + signature: z.string(), + avatarDetailList: z.array(avatarEnkaDetailSchema), + platform: z.string(), + recordInfo: recordInfoSchema, + uid: z.number(), + level: z.number(), + nickname: z.string(), + isDisplayAvatar: z.boolean(), + friendCount: z.number(), + personalCardId: z.number() }); export const enkaResponseSchema = z.object({ - detailInfo: detailInfoSchema, - ttl: z.number(), - uid: z.string(), + detailInfo: detailInfoSchema, + ttl: z.number(), + uid: z.string() }); diff --git a/src/zod/eventBasic.zod.ts b/src/zod/eventBasic.zod.ts index d8f6d52..dc6d9df 100644 --- a/src/zod/eventBasic.zod.ts +++ b/src/zod/eventBasic.zod.ts @@ -2,14 +2,14 @@ import { z } from "zod"; export const eventBasicRawSchema = z.object({ - param: z.array(z.number()).optional(), - en: z.string(), - id: z.string(), - begin: z.string(), - end: z.string(), - live_begin: z.string(), - live_end: z.string(), - kr: z.string(), - cn: z.string(), - jp: z.string(), + param: z.array(z.number()).optional(), + en: z.string(), + id: z.string(), + begin: z.string(), + end: z.string(), + live_begin: z.string(), + live_end: z.string(), + kr: z.string(), + cn: z.string(), + jp: z.string() }); diff --git a/src/zod/extraData.zod.ts b/src/zod/extraData.zod.ts index 59385cf..ed55ece 100644 --- a/src/zod/extraData.zod.ts +++ b/src/zod/extraData.zod.ts @@ -1,15 +1,16 @@ +// Generated by ts-to-zod import { z } from "zod"; export const extraDataSchema = z.object({ theory_craft: z.object({ hp: z.record(z.string(), z.array(z.number())), cycle_count: z.number(), - mode: z.boolean(), + mode: z.boolean() }), setting: z.object({ censorship: z.boolean(), cm: z.boolean(), first_person: z.boolean(), - hide_ui: z.boolean(), - }), -}); \ No newline at end of file + hide_ui: z.boolean() + }) +}); diff --git a/src/zod/filter.zod.ts b/src/zod/filter.zod.ts index 718fe35..e638849 100644 --- a/src/zod/filter.zod.ts +++ b/src/zod/filter.zod.ts @@ -2,29 +2,21 @@ import { z } from "zod"; export const filterAvatarTypeSchema = z.object({ - name: z.string(), - path: z.array(z.string()), - element: z.array(z.string()), - rarity: z.array(z.string()), - locale: z.string(), + name: z.string(), + path: z.array(z.string()), + element: z.array(z.string()), + rarity: z.array(z.string()), + locale: z.string() }); export const filterLightconeTypeSchema = z.object({ - path: z.array(z.string()), - rarity: z.array(z.string()), - locale: z.string(), - name: z.string(), + path: z.array(z.string()), + rarity: z.array(z.string()), + locale: z.string(), + name: z.string() }); export const filterRelicTypeSchema = z.object({ - locale: z.string(), - name: z.string(), -}); - -export const filterMonsterTypeSchema = z.object({ - name: z.string(), - id: z.string(), - rarity: z.array(z.string()), - locale: z.string(), - weak: z.array(z.string()), + locale: z.string(), + name: z.string() }); diff --git a/src/zod/index.ts b/src/zod/index.ts index 0c2898f..12a90c2 100644 --- a/src/zod/index.ts +++ b/src/zod/index.ts @@ -1,14 +1,25 @@ -export * from "./affix.zod"; -export * from "./card.zod"; -export * from "./characterBasic.zod"; -export * from "./characterDetail.zod"; -export * from "./config_maze.zod"; -export * from "./enka.zod"; -export * from "./filter.zod"; -export * from "./lightconeBasic.zod"; -export * from "./lightconeDetail.zod"; -export * from "./mics.zod"; -export * from "./relicBasic.zod"; -export * from "./relicDetail.zod"; -export * from "./srtools.zod"; -export * from "./extraData.zod"; +export * from "./characterBasic.zod" +export * from "./characterDetail.zod" +export * from "./srtools.zod" +export * from "./filter.zod" +export * from "./mics.zod" +export * from "./config_maze.zod" +export * from "./lightconeBasic.zod" +export * from "./lightconeDetail.zod" +export * from "./relicBasic.zod" +export * from "./relicDetail.zod" +export * from "./affix.zod" +export * from "./enka.zod" +export * from "./card.zod" +export * from "./eventBasic.zod" +export * from "./monsterBasic.zod" +export * from "./pfDetail.zod" +export * from "./asDetail.zod" +export * from "./mocDetail.zod" +export * from "./monsterValue.zod" +export * from "./peakDetail.zod" +export * from "./monsterDetail.zod" +export * from "./extraData.zod" +export * from "./showcase.zod" +export * from "./srtools.zod" + diff --git a/src/zod/index.zod.ts b/src/zod/index.zod.ts index ab019cb..cdefba9 100644 --- a/src/zod/index.zod.ts +++ b/src/zod/index.zod.ts @@ -1,2 +1,4 @@ // Generated by ts-to-zod import { z } from "zod"; + + diff --git a/src/zod/lightconeBasic.zod.ts b/src/zod/lightconeBasic.zod.ts index bab4a06..31fd24d 100644 --- a/src/zod/lightconeBasic.zod.ts +++ b/src/zod/lightconeBasic.zod.ts @@ -2,11 +2,11 @@ import { z } from "zod"; export const lightConeBasicRawSchema = z.object({ - rank: z.string(), - baseType: z.string(), - en: z.string(), - desc: z.string(), - kr: z.string(), - cn: z.string(), - jp: z.string(), + rank: z.string(), + baseType: z.string(), + en: z.string(), + desc: z.string(), + kr: z.string(), + cn: z.string(), + jp: z.string() }); diff --git a/src/zod/lightconeDetail.zod.ts b/src/zod/lightconeDetail.zod.ts index c1a3c6c..7cea922 100644 --- a/src/zod/lightconeDetail.zod.ts +++ b/src/zod/lightconeDetail.zod.ts @@ -2,42 +2,44 @@ import { z } from "zod"; const refinementDetailSchema = z.object({ - Name: z.string(), - Desc: z.string(), - Level: z.record( - z.object({ - ParamList: z.array(z.number()), - }), - ), + Name: z.string(), + Desc: z.string(), + Level: z.record(z.string(), z.object({ + ParamList: z.array(z.number()) + })) }); const promotionCostSchema = z.object({ - $type: z.string(), - ItemID: z.number(), - ItemNum: z.number(), - Rarity: z.string(), + $type: z.string(), + ItemID: z.number(), + ItemNum: z.number(), + Rarity: z.string() }); const statEntryDetailSchema = z.object({ - EquipmentID: z.number(), - Promotion: z.number().optional(), - PromotionCostList: z.array(promotionCostSchema), - PlayerLevelRequire: z.number().optional(), - WorldLevelRequire: z.number().optional(), - MaxLevel: z.number(), - BaseHP: z.number(), - BaseHPAdd: z.number(), - BaseAttack: z.number(), - BaseAttackAdd: z.number(), - BaseDefence: z.number(), - BaseDefenceAdd: z.number(), + EquipmentID: z.number(), + Promotion: z.number().optional(), + PromotionCostList: z.array(promotionCostSchema), + PlayerLevelRequire: z.number().optional(), + WorldLevelRequire: z.number().optional(), + MaxLevel: z.number(), + BaseHP: z.number(), + BaseHPAdd: z.number(), + BaseAttack: z.number(), + BaseAttackAdd: z.number(), + BaseDefence: z.number(), + BaseDefenceAdd: z.number() }); export const lightConeDetailSchema = z.object({ - Name: z.string(), - Desc: z.string(), - Rarity: z.string(), - BaseType: z.string(), - Refinements: refinementDetailSchema, - Stats: z.array(statEntryDetailSchema), + Name: z.string(), + Desc: z.string(), + Rarity: z.string(), + BaseType: z.string(), + Refinements: refinementDetailSchema, + Stats: z.array(statEntryDetailSchema), + Bonus: z.record(z.string(), z.array(z.object({ + type: z.string(), + value: z.number() + }))) }); diff --git a/src/zod/mics.zod.ts b/src/zod/mics.zod.ts index a7993dd..caae13a 100644 --- a/src/zod/mics.zod.ts +++ b/src/zod/mics.zod.ts @@ -2,111 +2,104 @@ import { z } from "zod"; export const avatarDataStoreSchema = z.object({ - rank: z.number(), - skills: z.record(z.number()), + rank: z.number(), + skills: z.record(z.string(), z.number()) }); export const lightconeStoreSchema = z.object({ - level: z.number(), - item_id: z.number(), - rank: z.number(), - promotion: z.number(), + level: z.number(), + item_id: z.number(), + rank: z.number(), + promotion: z.number() }); export const subAffixStoreSchema = z.object({ - sub_affix_id: z.number(), - count: z.number(), - step: z.number(), + sub_affix_id: z.number(), + count: z.number(), + step: z.number() }); export const relicStoreSchema = z.object({ - level: z.number(), - relic_id: z.number(), - relic_set_id: z.number(), - main_affix_id: z.number(), - sub_affixes: z.array(subAffixStoreSchema), + level: z.number(), + relic_id: z.number(), + relic_set_id: z.number(), + main_affix_id: z.number(), + sub_affixes: z.array(subAffixStoreSchema) }); export const avatarProfileStoreSchema = z.object({ - profile_name: z.string(), - lightcone: lightconeStoreSchema.nullable(), - relics: z.record(relicStoreSchema), + profile_name: z.string(), + lightcone: lightconeStoreSchema.nullable(), + relics: z.record(z.string(), relicStoreSchema) }); export const avatarStoreSchema = z.object({ - owner_uid: z.number().optional(), - avatar_id: z.number(), - data: avatarDataStoreSchema, - level: z.number(), - promotion: z.number(), - techniques: z.array(z.number()), - sp_value: z.number(), - sp_max: z.number(), - can_change_sp: z.boolean(), - enhanced: z.string(), - profileSelect: z.number(), - profileList: z.array(avatarProfileStoreSchema), + owner_uid: z.number().optional(), + avatar_id: z.number(), + data: avatarDataStoreSchema, + level: z.number(), + promotion: z.number(), + techniques: z.array(z.number()), + sp_value: z.number(), + sp_max: z.number(), + can_change_sp: z.boolean(), + enhanced: z.string(), + profileSelect: z.number(), + profileList: z.array(avatarProfileStoreSchema) }); export const monsterStoreSchema = z.object({ - monster_id: z.number(), - level: z.number(), - amount: z.number(), + monster_id: z.number(), + level: z.number(), + amount: z.number() }); export const dynamicKeyStoreSchema = z.object({ - key: z.string(), - value: z.number(), + key: z.string(), + value: z.number() }); export const battleBuffStoreSchema = z.object({ - level: z.number(), - id: z.number(), - dynamic_key: dynamicKeyStoreSchema.optional(), + level: z.number(), + id: z.number(), + dynamic_key: dynamicKeyStoreSchema.optional() }); -export const mOCConfigStoreSchema = z.object({ - event_id: z.number(), - challenge_id: z.number(), - floor_side: z.string(), - use_turbulence_buff: z.boolean(), - use_cycle_count: z.boolean(), - blessings: z.array(battleBuffStoreSchema), - cycle_count: z.number(), - stage_id: z.number(), - monsters: z.array(z.array(monsterStoreSchema)), +export const mocConfigStoreSchema = z.object({ + event_id: z.number(), + challenge_id: z.number(), + floor_side: z.string(), + use_turbulence_buff: z.boolean(), + use_cycle_count: z.boolean(), + blessings: z.array(battleBuffStoreSchema), + cycle_count: z.number(), + stage_id: z.number(), + monsters: z.array(z.array(monsterStoreSchema)) }); -export const pFConfigStoreSchema = z.object({ - event_id: z.number(), - challenge_id: z.number(), - floor_side: z.string(), - buff_id: z.number(), - blessings: z.array(battleBuffStoreSchema), - cycle_count: z.number(), - stage_id: z.number(), - monsters: z.array(z.array(monsterStoreSchema)), +export const pfConfigStoreSchema = z.object({ + event_id: z.number(), + challenge_id: z.number(), + buff_id: z.number(), + floor_side: z.string(), + blessings: z.array(battleBuffStoreSchema), + cycle_count: z.number(), + stage_id: z.number(), + monsters: z.array(z.array(monsterStoreSchema)) }); -export const aSConfigStoreSchema = z.object({ - event_id: z.number(), - challenge_id: z.number(), - buff_id: z.number(), - floor_side: z.string(), - blessings: z.array(battleBuffStoreSchema), - cycle_count: z.number(), - stage_id: z.number(), - monsters: z.array(z.array(monsterStoreSchema)), +export const asConfigStoreSchema = z.object({ + event_id: z.number(), + challenge_id: z.number(), + buff_id: z.number(), + floor_side: z.string(), + blessings: z.array(battleBuffStoreSchema), + cycle_count: z.number(), + stage_id: z.number(), + monsters: z.array(z.array(monsterStoreSchema)) }); -export const cEConfigStoreSchema = z.object({ - blessings: z.array(battleBuffStoreSchema), - cycle_count: z.number(), - stage_id: z.number(), - monsters: z.array(z.array(monsterStoreSchema)), -}); - -export const pEAKConfigStoreSchema = z.object({ +export const peakConfigStoreSchema = z.object({ event_id: z.number(), challenge_id: z.number(), buff_id: z.number(), @@ -114,15 +107,22 @@ export const pEAKConfigStoreSchema = z.object({ blessings: z.array(battleBuffStoreSchema), cycle_count: z.number(), stage_id: z.number(), - monsters: z.array(z.array(monsterStoreSchema)), + monsters: z.array(z.array(monsterStoreSchema)) +}); + +export const ceConfigStoreSchema = z.object({ + blessings: z.array(battleBuffStoreSchema), + cycle_count: z.number(), + stage_id: z.number(), + monsters: z.array(z.array(monsterStoreSchema)) }); export const micsSchema = z.object({ - avatars: z.record(avatarStoreSchema), - battle_type: z.string(), - moc_config: mOCConfigStoreSchema, - pf_config: pFConfigStoreSchema, - as_config: aSConfigStoreSchema, - ce_config: cEConfigStoreSchema, - peak_config: pEAKConfigStoreSchema, + avatars: z.record(z.string(), avatarStoreSchema), + battle_type: z.string(), + moc_config: mocConfigStoreSchema, + pf_config: pfConfigStoreSchema, + as_config: asConfigStoreSchema, + ce_config: ceConfigStoreSchema, + peak_config: peakConfigStoreSchema }); diff --git a/src/zod/mocDetail.zod.ts b/src/zod/mocDetail.zod.ts index 5f8dbd2..d9fc7ee 100644 --- a/src/zod/mocDetail.zod.ts +++ b/src/zod/mocDetail.zod.ts @@ -2,53 +2,51 @@ import { z } from "zod"; export const challengeDetailSchema = z.object({ - Name: z.string(), - Param: z.number().optional(), + Name: z.string(), + Param: z.number().optional() }); -export const stageConfigSchema = z.record(z.string()).and( - z.object({ - $type: z.string(), - }), -); +export const stageConfigSchema = z.record(z.string(), z.string()).and(z.object({ + $type: z.string() +})); export const eventStageDetailSchema = z.object({ - StageID: z.number(), - StageType: z.string(), - StageName: z.number(), - HardLevelGroup: z.number(), - Level: z.number(), - EliteGroup: z.number().optional(), - LevelGraphPath: z.string(), - StageAbilityConfig: z.array(z.any()), - BattleScoringGroup: z.number().optional(), - SubLevelGraphs: z.array(z.any()), - StageConfigData: z.array(stageConfigSchema), - MonsterList: z.array(z.record(z.number())), - LevelLoseCondition: z.array(z.string()), - LevelWinCondition: z.array(z.string()), - Release: z.boolean(), - ForbidExitBattle: z.boolean(), - MonsterWarningRatio: z.number().optional(), - TrialAvatarList: z.array(z.any()), + StageID: z.number(), + StageType: z.string(), + StageName: z.number(), + HardLevelGroup: z.number(), + Level: z.number(), + EliteGroup: z.number().optional(), + LevelGraphPath: z.string(), + StageAbilityConfig: z.array(z.any()), + BattleScoringGroup: z.number().optional(), + SubLevelGraphs: z.array(z.any()), + StageConfigData: z.array(stageConfigSchema), + MonsterList: z.array(z.record(z.string(), z.number())), + LevelLoseCondition: z.array(z.string()), + LevelWinCondition: z.array(z.string()), + Release: z.boolean(), + ForbidExitBattle: z.boolean(), + MonsterWarningRatio: z.number().optional(), + TrialAvatarList: z.array(z.any()) }); export const mocDetailSchema = z.object({ - Id: z.number(), - Name: z.string(), - GroupName: z.string(), - Desc: z.string(), - Param: z.array(z.number()), - Challenge: z.array(challengeDetailSchema), - Countdown: z.number(), - DamageType1: z.array(z.string()), - DamageType2: z.array(z.string()), - MazeGroupID1: z.number(), - MazeGroupID2: z.number(), - NpcMonsterIDList1: z.array(z.number()), - NpcMonsterIDList2: z.array(z.number()), - EventIDList1: z.array(eventStageDetailSchema), - EventIDList2: z.array(eventStageDetailSchema), - BeginTime: z.string(), - EndTime: z.string(), + Id: z.number(), + Name: z.string(), + GroupName: z.string(), + Desc: z.string(), + Param: z.array(z.number()), + Challenge: z.array(challengeDetailSchema), + Countdown: z.number(), + DamageType1: z.array(z.string()), + DamageType2: z.array(z.string()), + MazeGroupID1: z.number(), + MazeGroupID2: z.number(), + NpcMonsterIDList1: z.array(z.number()), + NpcMonsterIDList2: z.array(z.number()), + EventIDList1: z.array(eventStageDetailSchema), + EventIDList2: z.array(eventStageDetailSchema), + BeginTime: z.string(), + EndTime: z.string() }); diff --git a/src/zod/monsterBasic.zod.ts b/src/zod/monsterBasic.zod.ts index 7693037..81beedc 100644 --- a/src/zod/monsterBasic.zod.ts +++ b/src/zod/monsterBasic.zod.ts @@ -2,14 +2,14 @@ import { z } from "zod"; export const monsterBasicRawSchema = z.object({ - rank: z.string(), - camp: z.string().nullable(), - icon: z.string(), - child: z.array(z.number()), - weak: z.array(z.string()), - en: z.string(), - desc: z.string(), - kr: z.string(), - cn: z.string(), - jp: z.string(), + rank: z.string(), + camp: z.string().nullable(), + icon: z.string(), + child: z.array(z.number()), + weak: z.array(z.string()), + en: z.string(), + desc: z.string(), + kr: z.string(), + cn: z.string(), + jp: z.string() }); diff --git a/src/zod/monsterDetail.zod.ts b/src/zod/monsterDetail.zod.ts new file mode 100644 index 0000000..501366e --- /dev/null +++ b/src/zod/monsterDetail.zod.ts @@ -0,0 +1,64 @@ +// Generated by ts-to-zod +import { z } from "zod"; + +export const monsterDetailElementResistanceSchema = z.object({ + $type: z.string(), + DamageType: z.string(), + Value: z.number() +}); + +export const monsterDetailSkillSchema = z.object({ + Id: z.number(), + SkillName: z.string().nullable(), + SkillDesc: z.string().nullable(), + DamageType: z.string(), + SPHitBase: z.union([z.number(), z.string()]) +}); + +export const monsterDetailDropItemSchema = z.object({ + $type: z.string(), + ID: z.number() +}); + +export const monsterDetailChildSchema = z.object({ + Id: z.number(), + AttackModifyRatio: z.number(), + DefenceModifyRatio: z.number(), + EliteGroup: z.number(), + HPModifyRatio: z.number(), + SpeedModifyRatio: z.number(), + SpeedModifyValue: z.number().nullable(), + StanceModifyRatio: z.number(), + StanceWeakList: z.array(z.string()), + HardLevelGroup: z.number(), + DamageTypeResistance: z.array(monsterDetailElementResistanceSchema), + SkillList: z.array(monsterDetailSkillSchema) +}); + +export const monsterDetailDropSchema = z.object({ + MonsterTemplateID: z.number(), + WorldLevel: z.number().optional(), + AvatarExpReward: z.number(), + DisplayItemList: z.array(monsterDetailDropItemSchema) +}); + +export const monsterDetailSchema = z.object({ + Id: z.number(), + Name: z.string(), + Desc: z.string(), + MonsterCampID: z.number().nullable(), + AttackBase: z.number(), + CriticalDamageBase: z.number(), + DefenceBase: z.number(), + HPBase: z.number(), + InitialDelayRatio: z.number(), + ImagePath: z.string(), + MinimumFatigueRatio: z.number(), + Rank: z.string(), + SpeedBase: z.number(), + StanceBase: z.number(), + StanceCount: z.number(), + StatusResistanceBase: z.number(), + Child: z.array(monsterDetailChildSchema), + Drop: z.array(monsterDetailDropSchema) +}); diff --git a/src/zod/monsterValue.zod.ts b/src/zod/monsterValue.zod.ts new file mode 100644 index 0000000..993add7 --- /dev/null +++ b/src/zod/monsterValue.zod.ts @@ -0,0 +1,26 @@ +// Generated by ts-to-zod +import { z } from "zod"; + +export const monsterChildSchema = z.object({ + Id: z.number(), + AttackModifyRatio: z.number(), + DefenceModifyRatio: z.number(), + EliteGroup: z.number(), + HPModifyRatio: z.number(), + SpeedModifyRatio: z.number(), + SpeedModifyValue: z.number().nullable(), + StanceModifyRatio: z.number(), + HardLevelGroup: z.number(), + StanceWeakList: z.array(z.string()) +}); + +export const monsterValueSchema = z.object({ + Rank: z.string(), + AttackBase: z.number(), + DefenceBase: z.number(), + HPBase: z.number(), + SpeedBase: z.number(), + StanceBase: z.number(), + StatusResistanceBase: z.number(), + child: z.array(monsterChildSchema) +}); diff --git a/src/zod/peakDetail.zod.ts b/src/zod/peakDetail.zod.ts new file mode 100644 index 0000000..d2375ee --- /dev/null +++ b/src/zod/peakDetail.zod.ts @@ -0,0 +1,40 @@ +// Generated by ts-to-zod +import { z } from "zod"; + +export const challengeTagSchema = z.object({ + Id: z.number(), + Name: z.string(), + Desc: z.string(), + Param: z.array(z.number()) +}); + +const eventStageDetailSchema = z.any(); + +const infiniteWaveSchema = z.any(); + +export const peakLevelSchema = z.object({ + Id: z.number(), + Name: z.string(), + DamageType: z.array(z.string()), + MazeGroupID: z.number(), + NpcMonsterIDList: z.array(z.number()), + EventIDList: z.array(eventStageDetailSchema), + TagList: z.array(challengeTagSchema), + InfiniteList: z.record(z.string(), infiniteWaveSchema) +}); + +export const bossConfigSchema = z.object({ + HardName: z.string(), + BuffList: z.array(challengeTagSchema), + EventIDList: z.array(eventStageDetailSchema), + TagList: z.array(challengeTagSchema), + InfiniteList: z.record(z.string(), infiniteWaveSchema) +}); + +export const peakDetailSchema = z.object({ + Id: z.number(), + Name: z.string(), + PreLevel: z.array(peakLevelSchema), + BossLevel: peakLevelSchema, + BossConfig: bossConfigSchema +}); diff --git a/src/zod/pfDetail.zod.ts b/src/zod/pfDetail.zod.ts index e604df4..01a8e4e 100644 --- a/src/zod/pfDetail.zod.ts +++ b/src/zod/pfDetail.zod.ts @@ -2,55 +2,55 @@ import { z } from "zod"; export const buffDetailSchema = z.object({ - Name: z.string().nullable(), - Desc: z.string().nullable(), - Param: z.array(z.number()), + Name: z.string().nullable(), + Desc: z.string().nullable(), + Param: z.array(z.number()) }); export const optionDetailSchema = z.object({ - Name: z.string(), - Desc: z.string(), - Param: z.array(z.number()), + Name: z.string(), + Desc: z.string(), + Param: z.array(z.number()) }); export const infiniteWaveSchema = z.object({ - InfiniteWaveID: z.number(), - MonsterGroupIDList: z.array(z.number()), - MaxMonsterCount: z.number(), - MaxTeammateCount: z.number(), - Ability: z.string(), - ParamList: z.array(z.number()), - ClearPreviousAbility: z.boolean(), - EliteGroup: z.number(), + InfiniteWaveID: z.number(), + MonsterGroupIDList: z.array(z.number()), + MaxMonsterCount: z.number(), + MaxTeammateCount: z.number(), + Ability: z.string(), + ParamList: z.array(z.number()), + ClearPreviousAbility: z.boolean(), + EliteGroup: z.number() }); const challengeDetailSchema = z.any(); const eventStageDetailSchema = z.any(); -export const pFLevelSchema = z.object({ - Id: z.number(), - Name: z.string(), - Challenge: z.array(challengeDetailSchema), - DamageType1: z.array(z.string()), - DamageType2: z.array(z.string()), - MazeGroupID1: z.number(), - MazeGroupID2: z.number(), - NpcMonsterIDList1: z.array(z.number()), - NpcMonsterIDList2: z.array(z.number()), - EventIDList1: z.array(eventStageDetailSchema), - EventIDList2: z.array(eventStageDetailSchema), - InfiniteList1: z.record(infiniteWaveSchema), - InfiniteList2: z.record(infiniteWaveSchema), +export const pfLevelSchema = z.object({ + Id: z.number(), + Name: z.string(), + Challenge: z.array(challengeDetailSchema), + DamageType1: z.array(z.string()), + DamageType2: z.array(z.string()), + MazeGroupID1: z.number(), + MazeGroupID2: z.number(), + NpcMonsterIDList1: z.array(z.number()), + NpcMonsterIDList2: z.array(z.number()), + EventIDList1: z.array(eventStageDetailSchema), + EventIDList2: z.array(eventStageDetailSchema), + InfiniteList1: z.record(z.string(), infiniteWaveSchema), + InfiniteList2: z.record(z.string(), infiniteWaveSchema) }); -export const pFDetailSchema = z.object({ - Id: z.number(), - Name: z.string(), - Buff: buffDetailSchema, - Option: z.array(optionDetailSchema), - SubOption: z.array(optionDetailSchema), - BeginTime: z.string(), - EndTime: z.string(), - Level: z.array(pFLevelSchema), +export const pfDetailSchema = z.object({ + Id: z.number(), + Name: z.string(), + Buff: buffDetailSchema, + Option: z.array(optionDetailSchema), + SubOption: z.array(optionDetailSchema), + BeginTime: z.string(), + EndTime: z.string(), + Level: z.array(pfLevelSchema) }); diff --git a/src/zod/relicBasic.zod.ts b/src/zod/relicBasic.zod.ts index 7ab14d8..ed74086 100644 --- a/src/zod/relicBasic.zod.ts +++ b/src/zod/relicBasic.zod.ts @@ -2,9 +2,9 @@ import { z } from "zod"; export const relicBasicRawEffectSchema = z.object({ - en: z.string(), - ParamList: z.array(z.number()), - kr: z.string(), - cn: z.string(), - jp: z.string(), + en: z.string(), + ParamList: z.array(z.number()), + kr: z.string(), + cn: z.string(), + jp: z.string() }); diff --git a/src/zod/relicDetail.zod.ts b/src/zod/relicDetail.zod.ts index 46d2a19..e514711 100644 --- a/src/zod/relicDetail.zod.ts +++ b/src/zod/relicDetail.zod.ts @@ -2,19 +2,23 @@ import { z } from "zod"; export const partDataSchema = z.object({ - Name: z.string(), - Desc: z.string(), - Story: z.string(), + Name: z.string(), + Desc: z.string(), + Story: z.string() }); export const requireBonusSchema = z.object({ - Desc: z.string(), - ParamList: z.array(z.number()), + Desc: z.string(), + ParamList: z.array(z.number()) }); export const relicDetailSchema = z.object({ - Name: z.string(), - Icon: z.string(), - Parts: z.record(partDataSchema), - RequireNum: z.record(requireBonusSchema), + Name: z.string(), + Icon: z.string(), + Parts: z.record(z.string(), partDataSchema), + RequireNum: z.record(z.string(), requireBonusSchema), + Bonus: z.record(z.string(), z.array(z.object({ + type: z.string(), + value: z.number() + }))) }); diff --git a/src/zod/showcase.zod.ts b/src/zod/showcase.zod.ts new file mode 100644 index 0000000..304d71d --- /dev/null +++ b/src/zod/showcase.zod.ts @@ -0,0 +1,29 @@ +// Generated by ts-to-zod +import { z } from "zod"; + +export const relicShowcaseTypeSchema = z.object({ + img: z.string(), + mainAffix: z.object({ + property: z.string(), + level: z.number(), + valueAffix: z.string(), + detail: z.object({ + name: z.string(), + icon: z.string(), + unit: z.string(), + baseStat: z.string() + }) + }), + subAffix: z.array(z.object({ + property: z.string(), + valueAffix: z.string(), + detail: z.object({ + name: z.string(), + icon: z.string(), + unit: z.string(), + baseStat: z.string() + }), + step: z.number(), + count: z.number() + })) +}); diff --git a/src/zod/srtools.zod.ts b/src/zod/srtools.zod.ts index 67367d8..f5044e3 100644 --- a/src/zod/srtools.zod.ts +++ b/src/zod/srtools.zod.ts @@ -1,92 +1,93 @@ // Generated by ts-to-zod import { z } from "zod"; -import { extraDataSchema } from "./extraData.zod"; export const subAffixSchema = z.object({ - sub_affix_id: z.number(), - count: z.number(), - step: z.number(), + sub_affix_id: z.number(), + count: z.number(), + step: z.number() }); export const relicJsonSchema = z.object({ - level: z.number(), - relic_id: z.number(), - relic_set_id: z.number(), - main_affix_id: z.number(), - sub_affixes: z.array(subAffixSchema), - internal_uid: z.number(), - equip_avatar: z.number(), + level: z.number(), + relic_id: z.number(), + relic_set_id: z.number(), + main_affix_id: z.number(), + sub_affixes: z.array(subAffixSchema), + internal_uid: z.number(), + equip_avatar: z.number() }); export const lightconeJsonSchema = z.object({ - level: z.number(), - item_id: z.number(), - equip_avatar: z.number(), - rank: z.number(), - promotion: z.number(), - internal_uid: z.number(), + level: z.number(), + item_id: z.number(), + equip_avatar: z.number(), + rank: z.number(), + promotion: z.number(), + internal_uid: z.number() }); export const avatarDataSchema = z.object({ - rank: z.number(), - skills: z.record(z.number()), + rank: z.number(), + skills: z.record(z.string(), z.number()) }); export const avatarJsonSchema = z.object({ - owner_uid: z.number().optional(), - avatar_id: z.number(), - data: avatarDataSchema, - level: z.number(), - promotion: z.number(), - techniques: z.array(z.number()), - sp_value: z.number(), - sp_max: z.number(), + owner_uid: z.number().optional(), + avatar_id: z.number(), + data: avatarDataSchema, + level: z.number(), + promotion: z.number(), + techniques: z.array(z.number()), + sp_value: z.number(), + sp_max: z.number() }); export const monsterJsonSchema = z.object({ - monster_id: z.number(), - level: z.number(), - amount: z.number(), + monster_id: z.number(), + level: z.number(), + amount: z.number() }); export const dynamicKeyJsonSchema = z.object({ - key: z.string(), - value: z.number(), + key: z.string(), + value: z.number() }); export const battleBuffJsonSchema = z.object({ - level: z.number(), - id: z.number(), - dynamic_key: dynamicKeyJsonSchema.optional(), + level: z.number(), + id: z.number(), + dynamic_key: dynamicKeyJsonSchema.optional() }); export const battleConfigJsonSchema = z.object({ - battle_type: z.string(), - blessings: z.array(battleBuffJsonSchema), - custom_stats: z.array(subAffixSchema), - cycle_count: z.number(), - stage_id: z.number(), - path_resonance_id: z.number(), - monsters: z.array(z.array(monsterJsonSchema)), + battle_type: z.string(), + blessings: z.array(battleBuffJsonSchema), + custom_stats: z.array(subAffixSchema), + cycle_count: z.number(), + stage_id: z.number(), + path_resonance_id: z.number(), + monsters: z.array(z.array(monsterJsonSchema)) }); -export const loadoutJsonSchema = z.object({ - name: z.string(), - avatar_id: z.number(), - relic_list: z.array(z.string()), +const loadoutJsonSchema = z.object({ + name: z.string(), + avatar_id: z.number(), + relic_list: z.array(z.string()) }); -export const freeSRJsonSchema = z.object({ - key: z.string().optional(), - lightcones: z.array(lightconeJsonSchema), - relics: z.array(relicJsonSchema), - avatars: z.record(avatarJsonSchema), - battle_config: battleConfigJsonSchema, - loadout: z.array(loadoutJsonSchema).optional(), +export const freeSrJsonSchema = z.object({ + key: z.string().optional(), + lightcones: z.array(lightconeJsonSchema), + relics: z.array(relicJsonSchema), + avatars: z.record(z.string(), avatarJsonSchema), + battle_config: battleConfigJsonSchema, + loadout: z.array(loadoutJsonSchema).optional() }); -export const pSResponseSchema = z.object({ - status: z.number(), - message: z.string(), - extra_data: extraDataSchema.optional(), +const extraDataSchema = z.any(); + +export const psResponseSchema = z.object({ + status: z.number(), + message: z.string(), + extra_data: extraDataSchema.optional() });