From 7b05fa0497b2cb3946e9414dd9b3d0417d7a726e Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Tue, 9 Sep 2025 00:27:26 -0700 Subject: [PATCH] Migrate type defs --- src/lib/types/AccountCookie.d.ts | 6 ++ src/lib/types/AppUpdate.d.ts | 5 ++ src/lib/types/Awakening.d.ts | 11 +++ src/lib/types/Character.d.ts | 38 ++++++++++ src/lib/types/CheckedState.d.ts | 4 + src/lib/types/ElementState.d.ts | 10 +++ src/lib/types/FilterSet.d.ts | 23 ++++++ src/lib/types/GranblueCookie.d.ts | 5 ++ src/lib/types/GranblueElement.d.ts | 10 +++ src/lib/types/GridArray.d.ts | 1 + src/lib/types/GridCharacter.d.ts | 14 ++++ src/lib/types/GridSummon.d.ts | 10 +++ src/lib/types/GridWeapon.d.ts | 15 ++++ src/lib/types/Guidebook.d.ts | 14 ++++ src/lib/types/ItemSkill.d.ts | 16 ++++ src/lib/types/Job.d.ts | 20 +++++ src/lib/types/JobAccessory.d.ts | 11 +++ src/lib/types/JobSkill.d.ts | 16 ++++ src/lib/types/MentionItem.d.ts | 10 +++ src/lib/types/OnClickEvent.d.ts | 3 + src/lib/types/Party.d.ts | 49 ++++++++++++ src/lib/types/ProficiencyState.d.ts | 13 ++++ src/lib/types/Raid.d.ts | 12 +++ src/lib/types/RaidGroup.d.ts | 15 ++++ src/lib/types/RarityState.d.ts | 5 ++ src/lib/types/SimpleAxSkill.d.ts | 4 + src/lib/types/Summon.d.ts | 33 +++++++++ src/lib/types/TeamElement.d.ts | 8 ++ src/lib/types/User.d.ts | 11 +++ src/lib/types/UserCookie.d.ts | 7 ++ src/lib/types/Weapon.d.ts | 38 ++++++++++ src/lib/types/WeaponKey.d.ts | 14 ++++ src/lib/types/WeaponSeries.d.ts | 27 +++++++ src/lib/types/declarations.d.ts | 7 ++ src/lib/types/index.d.ts | 111 ++++++++++++++++++++++++++++ 35 files changed, 596 insertions(+) create mode 100644 src/lib/types/AccountCookie.d.ts create mode 100644 src/lib/types/AppUpdate.d.ts create mode 100644 src/lib/types/Awakening.d.ts create mode 100644 src/lib/types/Character.d.ts create mode 100644 src/lib/types/CheckedState.d.ts create mode 100644 src/lib/types/ElementState.d.ts create mode 100644 src/lib/types/FilterSet.d.ts create mode 100644 src/lib/types/GranblueCookie.d.ts create mode 100644 src/lib/types/GranblueElement.d.ts create mode 100644 src/lib/types/GridArray.d.ts create mode 100644 src/lib/types/GridCharacter.d.ts create mode 100644 src/lib/types/GridSummon.d.ts create mode 100644 src/lib/types/GridWeapon.d.ts create mode 100644 src/lib/types/Guidebook.d.ts create mode 100644 src/lib/types/ItemSkill.d.ts create mode 100644 src/lib/types/Job.d.ts create mode 100644 src/lib/types/JobAccessory.d.ts create mode 100644 src/lib/types/JobSkill.d.ts create mode 100644 src/lib/types/MentionItem.d.ts create mode 100644 src/lib/types/OnClickEvent.d.ts create mode 100644 src/lib/types/Party.d.ts create mode 100644 src/lib/types/ProficiencyState.d.ts create mode 100644 src/lib/types/Raid.d.ts create mode 100644 src/lib/types/RaidGroup.d.ts create mode 100644 src/lib/types/RarityState.d.ts create mode 100644 src/lib/types/SimpleAxSkill.d.ts create mode 100644 src/lib/types/Summon.d.ts create mode 100644 src/lib/types/TeamElement.d.ts create mode 100644 src/lib/types/User.d.ts create mode 100644 src/lib/types/UserCookie.d.ts create mode 100644 src/lib/types/Weapon.d.ts create mode 100644 src/lib/types/WeaponKey.d.ts create mode 100644 src/lib/types/WeaponSeries.d.ts create mode 100644 src/lib/types/declarations.d.ts create mode 100644 src/lib/types/index.d.ts diff --git a/src/lib/types/AccountCookie.d.ts b/src/lib/types/AccountCookie.d.ts new file mode 100644 index 00000000..747e6b7d --- /dev/null +++ b/src/lib/types/AccountCookie.d.ts @@ -0,0 +1,6 @@ +interface AccountCookie { + userId: string + username: string + token: string + role: number +} diff --git a/src/lib/types/AppUpdate.d.ts b/src/lib/types/AppUpdate.d.ts new file mode 100644 index 00000000..d11aa079 --- /dev/null +++ b/src/lib/types/AppUpdate.d.ts @@ -0,0 +1,5 @@ +interface AppUpdate { + version: string + update_type: string + updated_at: string +} diff --git a/src/lib/types/Awakening.d.ts b/src/lib/types/Awakening.d.ts new file mode 100644 index 00000000..59c2769b --- /dev/null +++ b/src/lib/types/Awakening.d.ts @@ -0,0 +1,11 @@ +interface Awakening { + id: string + name: { + [key: string]: string + en: string + jp: string + } + slug: string + object_type?: string + order: number +} diff --git a/src/lib/types/Character.d.ts b/src/lib/types/Character.d.ts new file mode 100644 index 00000000..3ecedb6c --- /dev/null +++ b/src/lib/types/Character.d.ts @@ -0,0 +1,38 @@ +interface Character { + type: 'character' + + id: string + granblue_id: string + character_id: readonly number[] + element: number + rarity: number + gender: number + max_level: number + name: { + [key: string]: string + en: string + ja: string + } + hp: { + min_hp: number + max_hp: number + max_hp_flb: number + } + atk: { + min_atk: number + max_atk: number + max_atk_flb: number + } + uncap: { + flb: boolean + ulb: boolean + } + race: { + race1: number + race2: number + } + proficiency: number[] + awakenings: Awakening[] + position?: number + special: boolean +} diff --git a/src/lib/types/CheckedState.d.ts b/src/lib/types/CheckedState.d.ts new file mode 100644 index 00000000..00c6a235 --- /dev/null +++ b/src/lib/types/CheckedState.d.ts @@ -0,0 +1,4 @@ +interface CheckedState { + id: number + checked: boolean +} diff --git a/src/lib/types/ElementState.d.ts b/src/lib/types/ElementState.d.ts new file mode 100644 index 00000000..03e4d164 --- /dev/null +++ b/src/lib/types/ElementState.d.ts @@ -0,0 +1,10 @@ +interface ElementState { + [key: string]: CheckedState + null: CheckedState + wind: CheckedState + fire: CheckedState + water: CheckedState + earth: CheckedState + dark: CheckedState + light: CheckedState +} diff --git a/src/lib/types/FilterSet.d.ts b/src/lib/types/FilterSet.d.ts new file mode 100644 index 00000000..9fe42a5e --- /dev/null +++ b/src/lib/types/FilterSet.d.ts @@ -0,0 +1,23 @@ +interface FilterSet { + element?: number + raid?: string + recency?: number + full_auto?: number + auto_guard?: number + charge_attack?: number + characters_count?: number + weapons_count?: number + summons_count?: number + button_count?: number + turn_count?: number + name_quality?: boolean + user_quality?: boolean + original?: boolean + includes?: MentionItem[] + excludes?: MentionItem[] +} + +interface ConvertedFilters extends Omit { + includes: string + excludes: string +} diff --git a/src/lib/types/GranblueCookie.d.ts b/src/lib/types/GranblueCookie.d.ts new file mode 100644 index 00000000..eb0cca52 --- /dev/null +++ b/src/lib/types/GranblueCookie.d.ts @@ -0,0 +1,5 @@ +interface GranblueCookie { + account: AccountCookie + user: UserCookie + locale: string +} diff --git a/src/lib/types/GranblueElement.d.ts b/src/lib/types/GranblueElement.d.ts new file mode 100644 index 00000000..fe8c1c93 --- /dev/null +++ b/src/lib/types/GranblueElement.d.ts @@ -0,0 +1,10 @@ +interface GranblueElement { + [key: string]: any + id: number + weaknessId: number + name: { + en: string + ja: string + } + slug: string +} diff --git a/src/lib/types/GridArray.d.ts b/src/lib/types/GridArray.d.ts new file mode 100644 index 00000000..92a0fb0f --- /dev/null +++ b/src/lib/types/GridArray.d.ts @@ -0,0 +1 @@ +type GridArray = { [key: number]: T | undefined } diff --git a/src/lib/types/GridCharacter.d.ts b/src/lib/types/GridCharacter.d.ts new file mode 100644 index 00000000..11eeb44f --- /dev/null +++ b/src/lib/types/GridCharacter.d.ts @@ -0,0 +1,14 @@ +interface GridCharacter { + id: string + position: number + object: Character + uncap_level: number + transcendence_step: number + perpetuity: boolean + over_mastery: ExtendedMastery[] + aetherial_mastery?: ExtendedMastery + awakening: { + type: Awakening + level: number + } +} diff --git a/src/lib/types/GridSummon.d.ts b/src/lib/types/GridSummon.d.ts new file mode 100644 index 00000000..865318b1 --- /dev/null +++ b/src/lib/types/GridSummon.d.ts @@ -0,0 +1,10 @@ +interface GridSummon { + id: string + main: boolean + friend: boolean + position: number + object: Summon + uncap_level: number + quick_summon: boolean + transcendence_step: number +} diff --git a/src/lib/types/GridWeapon.d.ts b/src/lib/types/GridWeapon.d.ts new file mode 100644 index 00000000..5f968108 --- /dev/null +++ b/src/lib/types/GridWeapon.d.ts @@ -0,0 +1,15 @@ +interface GridWeapon { + id: string + mainhand: boolean + position: number + object: Weapon + uncap_level: number + transcendence_step: number + element: number + weapon_keys?: Array + ax?: Array + awakening?: { + type: Awakening + level: number + } +} diff --git a/src/lib/types/Guidebook.d.ts b/src/lib/types/Guidebook.d.ts new file mode 100644 index 00000000..093e3dc5 --- /dev/null +++ b/src/lib/types/Guidebook.d.ts @@ -0,0 +1,14 @@ +interface Guidebook { + id: string + granblue_id: string + name: { + [key: string]: string + en: string + jp: string + } + description: { + [key: string]: string + en: string + jp: string + } +} diff --git a/src/lib/types/ItemSkill.d.ts b/src/lib/types/ItemSkill.d.ts new file mode 100644 index 00000000..56690ec3 --- /dev/null +++ b/src/lib/types/ItemSkill.d.ts @@ -0,0 +1,16 @@ +interface ItemSkill { + name: { + [key: string]: string + en: string + ja: string + } + id: number + granblue_id: string + slug: string + minValue: number + maxValue: number + fractional: boolean + suffix?: string + secondary?: ItemSkill[] + values?: number[] +} diff --git a/src/lib/types/Job.d.ts b/src/lib/types/Job.d.ts new file mode 100644 index 00000000..1f435177 --- /dev/null +++ b/src/lib/types/Job.d.ts @@ -0,0 +1,20 @@ +interface Job { + id: string + granblue_id: string + row: string + master_level: boolean + ultimate_mastery: boolean + order: number + name: { + [key: string]: string + en: string + ja: string + } + proficiency: { + proficiency1: number + proficiency2: number + } + base_job?: Job + accessory: boolean + accessory_type: number +} diff --git a/src/lib/types/JobAccessory.d.ts b/src/lib/types/JobAccessory.d.ts new file mode 100644 index 00000000..1b0b3d8e --- /dev/null +++ b/src/lib/types/JobAccessory.d.ts @@ -0,0 +1,11 @@ +interface JobAccessory { + id: string + granblue_id: string + job: Job + name: { + [key: string]: string + en: string + ja: string + } + rarity: number +} diff --git a/src/lib/types/JobSkill.d.ts b/src/lib/types/JobSkill.d.ts new file mode 100644 index 00000000..f1067964 --- /dev/null +++ b/src/lib/types/JobSkill.d.ts @@ -0,0 +1,16 @@ +interface JobSkill { + id: string + job: Job + name: { + [key: string]: string + en: string + ja: string + } + slug: string + color: number + main: boolean + base: boolean + sub: boolean + emp: boolean + order: number +} diff --git a/src/lib/types/MentionItem.d.ts b/src/lib/types/MentionItem.d.ts new file mode 100644 index 00000000..a431e1de --- /dev/null +++ b/src/lib/types/MentionItem.d.ts @@ -0,0 +1,10 @@ +interface MentionItem { + name: { + [key: string]: string + en: string + ja: string + } + type: string + granblue_id: string + element: GranblueElement +} diff --git a/src/lib/types/OnClickEvent.d.ts b/src/lib/types/OnClickEvent.d.ts new file mode 100644 index 00000000..c0ee98a5 --- /dev/null +++ b/src/lib/types/OnClickEvent.d.ts @@ -0,0 +1,3 @@ +type OnClickEvent = ( + event: React.MouseEvent +) => void diff --git a/src/lib/types/Party.d.ts b/src/lib/types/Party.d.ts new file mode 100644 index 00000000..74d35263 --- /dev/null +++ b/src/lib/types/Party.d.ts @@ -0,0 +1,49 @@ +type JobSkillList = { + [key: number]: JobSkill | undefined + 0: JobSkill | undefined + 1: JobSkill | undefined + 2: JobSkill | undefined + 3: JobSkill | undefined +} + +type GuidebookList = { + [key: number]: Guidebook | undefined + 0: Guidebook | undefined + 1: Guidebook | undefined + 2: Guidebook | undefined +} + +interface Party { + id: string + name: string + description: string + raid: Raid + full_auto: boolean + auto_guard: boolean + auto_summon: boolean + charge_attack: boolean + clear_time: number + button_count?: number + turn_count?: number + chain_count?: number + source_party?: Party + job: Job + master_level?: number + ultimate_mastery?: number + job_skills: JobSkillList + accessory: JobAccessory + shortcode: string + extra: boolean + guidebooks: GuidebookList + favorited: boolean + characters: Array + weapons: Array + summons: Array + user: User + local_id?: string + remix: boolean + remixes: Party[] + visibility: number + created_at: string + updated_at: string +} diff --git a/src/lib/types/ProficiencyState.d.ts b/src/lib/types/ProficiencyState.d.ts new file mode 100644 index 00000000..a71bfc43 --- /dev/null +++ b/src/lib/types/ProficiencyState.d.ts @@ -0,0 +1,13 @@ +interface ProficiencyState { + [key: string]: CheckedState + sabre: CheckedState + dagger: CheckedState + spear: CheckedState + axe: CheckedState + staff: CheckedState + melee: CheckedState + gun: CheckedState + bow: CheckedState + harp: CheckedState + katana: CheckedState +} diff --git a/src/lib/types/Raid.d.ts b/src/lib/types/Raid.d.ts new file mode 100644 index 00000000..89e599d5 --- /dev/null +++ b/src/lib/types/Raid.d.ts @@ -0,0 +1,12 @@ +interface Raid { + id: string + group: RaidGroup + name: { + [key: string]: string + en: string + ja: string + } + slug: string + level: number + element: number +} diff --git a/src/lib/types/RaidGroup.d.ts b/src/lib/types/RaidGroup.d.ts new file mode 100644 index 00000000..f4dc72f9 --- /dev/null +++ b/src/lib/types/RaidGroup.d.ts @@ -0,0 +1,15 @@ +interface RaidGroup { + id: string + name: { + [key: string]: string + en: string + ja: string + } + raids: Raid[] + difficulty: number + section: number + order: number + extra: boolean + guidebooks: boolean + hl: boolean +} diff --git a/src/lib/types/RarityState.d.ts b/src/lib/types/RarityState.d.ts new file mode 100644 index 00000000..e0b17fed --- /dev/null +++ b/src/lib/types/RarityState.d.ts @@ -0,0 +1,5 @@ +interface RarityState { + [key: string]: CheckedState + sr: CheckedState + ssr: CheckedState +} diff --git a/src/lib/types/SimpleAxSkill.d.ts b/src/lib/types/SimpleAxSkill.d.ts new file mode 100644 index 00000000..04b85938 --- /dev/null +++ b/src/lib/types/SimpleAxSkill.d.ts @@ -0,0 +1,4 @@ +interface SimpleAxSkill { + modifier: number + strength: number +} diff --git a/src/lib/types/Summon.d.ts b/src/lib/types/Summon.d.ts new file mode 100644 index 00000000..3fb3ee7b --- /dev/null +++ b/src/lib/types/Summon.d.ts @@ -0,0 +1,33 @@ +interface Summon { + type: 'summon' + + id: string + granblue_id: number + element: number + max_level: number + name: { + [key: string]: string + en: string + ja: string + } + hp: { + min_hp: number + max_hp: number + max_hp_flb: number + max_hp_ulb: number + max_hp_xlb: number + } + atk: { + min_atk: number + max_atk: number + max_atk_flb: number + max_atk_ulb: number + max_atk_xlb: number + } + uncap: { + flb: boolean + ulb: boolean + transcendence: boolean + } + position?: number +} diff --git a/src/lib/types/TeamElement.d.ts b/src/lib/types/TeamElement.d.ts new file mode 100644 index 00000000..43289f6f --- /dev/null +++ b/src/lib/types/TeamElement.d.ts @@ -0,0 +1,8 @@ +interface TeamElement { + id: number + opposite_id: number + name: { + en: string + ja: string + } +} diff --git a/src/lib/types/User.d.ts b/src/lib/types/User.d.ts new file mode 100644 index 00000000..c98cf947 --- /dev/null +++ b/src/lib/types/User.d.ts @@ -0,0 +1,11 @@ +interface User { + id: string + username: string + granblueId: string + avatar: { + picture: string + element: string + } + gender: number + role: number +} diff --git a/src/lib/types/UserCookie.d.ts b/src/lib/types/UserCookie.d.ts new file mode 100644 index 00000000..15a6c840 --- /dev/null +++ b/src/lib/types/UserCookie.d.ts @@ -0,0 +1,7 @@ +interface UserCookie { + picture: string + element: string + language: string + gender: number + theme: string +} diff --git a/src/lib/types/Weapon.d.ts b/src/lib/types/Weapon.d.ts new file mode 100644 index 00000000..fd24c94a --- /dev/null +++ b/src/lib/types/Weapon.d.ts @@ -0,0 +1,38 @@ +interface Weapon { + type: 'weapon' + + id: string + granblue_id: number + element: number + proficiency: number + max_level: number + max_skill_level: number + max_awakening_level: number + series: number + ax: boolean + ax_type: number + awakenings: Awakening[] + name: { + [key: string]: string + en: string + ja: string + } + hp: { + min_hp: number + max_hp: number + max_hp_flb: number + max_hp_ulb: number + } + atk: { + min_atk: number + max_atk: number + max_atk_flb: number + max_atk_ulb: number + } + uncap: { + flb: boolean + ulb: boolean + transcendence: boolean + } + position?: number +} diff --git a/src/lib/types/WeaponKey.d.ts b/src/lib/types/WeaponKey.d.ts new file mode 100644 index 00000000..f1e43256 --- /dev/null +++ b/src/lib/types/WeaponKey.d.ts @@ -0,0 +1,14 @@ +interface WeaponKey { + id: string + granblue_id: string + name: { + [key: string]: string + en: string + ja: string + } + slug: string + series: integer[] + slot: integer + group: integer + order: integer +} diff --git a/src/lib/types/WeaponSeries.d.ts b/src/lib/types/WeaponSeries.d.ts new file mode 100644 index 00000000..d5fba384 --- /dev/null +++ b/src/lib/types/WeaponSeries.d.ts @@ -0,0 +1,27 @@ +interface WeaponSeriesState { + [key: string]: CheckedState + seraphic: CheckedState + grand: CheckedState + opus: CheckedState + draconic: CheckedState + ultima: CheckedState + bahamut: CheckedState + omega: CheckedState + primal: CheckedState + olden_primal: CheckedState + militis: CheckedState + beast: CheckedState + rose: CheckedState + xeno: CheckedState + hollowsky: CheckedState + astral: CheckedState + epic: CheckedState + ennead: CheckedState + cosmic: CheckedState + ancestral: CheckedState + superlative: CheckedState + vintage: CheckedState + class_champion: CheckedState + sephira: CheckedState + new_world: CheckedState +} diff --git a/src/lib/types/declarations.d.ts b/src/lib/types/declarations.d.ts new file mode 100644 index 00000000..52d708fa --- /dev/null +++ b/src/lib/types/declarations.d.ts @@ -0,0 +1,7 @@ +declare module '*.jpg' + +declare module '*.svg' { + import React from 'react' + const SVG: React.FunctionComponent> + export default SVG +} diff --git a/src/lib/types/index.d.ts b/src/lib/types/index.d.ts new file mode 100644 index 00000000..6e2ae6e7 --- /dev/null +++ b/src/lib/types/index.d.ts @@ -0,0 +1,111 @@ +export type SearchableObject = + | Character + | Weapon + | Summon + | JobSkill + | Guidebook +export type SearchableObjectArray = (Character | Weapon | Summon | JobSkill)[] +export type JobSkillObject = { + [key: number]: JobSkill | undefined + 0: JobSkill | undefined + 1: JobSkill | undefined + 2: JobSkill | undefined + 3: JobSkill | undefined +} + +export type FilterObject = { + raid?: string + element?: number + recency?: number +} + +export type PaginationObject = { + count: number + totalPages: number + perPage: number +} + +export type DetailsObject = { + [key: string]: boolean | number | string | string[] | Raid | undefined + fullAuto?: boolean + autoGuard?: boolean + autoSummon?: boolean + chargeAttack?: boolean + clearTime?: number + buttonCount?: number + turnCount?: number + chainCount?: number + name?: string + description?: string + raid?: Raid + job?: Job + guidebooks?: string[] + visibility?: number +} + +export type ExtendedMastery = { + modifier?: number + strength?: number +} + +export type CharacterOverMastery = ExtendedMastery[] + +export interface MasteryBonuses { + awakening?: { + type: Awakening + level: number + } + over_mastery?: CharacterOverMastery + aetherial_mastery?: ExtendedMastery +} + +export interface GridCharacterObject { + character: { + rings: ExtendedMastery[] + earring: ExtendedMastery + awakening?: { + id: string + level: number + } + transcendence_step: number + perpetuity: boolean + } +} + +interface GridWeaponObject { + weapon: { + element?: number + weapon_key1_id?: string + weapon_key2_id?: string + weapon_key3_id?: string + ax_modifier1?: number + ax_modifier2?: number + ax_strength1?: number + ax_strength2?: number + awakening_id?: string + awakening_level?: Number + } +} + +interface PerpetuityObject { + character: { + perpetuity: boolean + } +} + +interface PageContextObj { + user?: User + teams?: Party[] + party?: Party + jobs?: Job[] + jobSkills?: JobSkill[] + raidGroups: RaidGroup[] + weaponKeys?: GroupedWeaponKeys + pagination?: PaginationObject + meta?: { [key: string]: string } +} + +interface ResponseStatus { + code: number + text: string +}