Add API type definitions
This commit is contained in:
parent
1b6da60aa3
commit
e8fa1545f8
2 changed files with 342 additions and 0 deletions
174
src/lib/types/api/entities.ts
Normal file
174
src/lib/types/api/entities.ts
Normal file
|
|
@ -0,0 +1,174 @@
|
|||
// Core entity types based on Rails blueprints
|
||||
// These are the base types for game objects
|
||||
|
||||
export interface LocalizedName {
|
||||
en: string
|
||||
ja: string
|
||||
}
|
||||
|
||||
// Weapon entity from WeaponBlueprint
|
||||
export interface Weapon {
|
||||
id: string
|
||||
granblueId: string
|
||||
name: LocalizedName
|
||||
element: number
|
||||
proficiency: number
|
||||
rarity: number
|
||||
maxLevel: number
|
||||
maxSkillLevel: number
|
||||
maxAwakeningLevel: number
|
||||
series: number
|
||||
ax: boolean
|
||||
axType: number
|
||||
hp: {
|
||||
minHp: number
|
||||
maxHp: number
|
||||
maxHpFlb: number
|
||||
maxHpUlb: number
|
||||
}
|
||||
atk: {
|
||||
minAtk: number
|
||||
maxAtk: number
|
||||
maxAtkFlb: number
|
||||
maxAtkUlb: number
|
||||
}
|
||||
uncap: {
|
||||
flb: boolean
|
||||
ulb: boolean
|
||||
transcendence: boolean
|
||||
}
|
||||
}
|
||||
|
||||
// Character entity from CharacterBlueprint
|
||||
export interface Character {
|
||||
id: string
|
||||
granblueId: string
|
||||
name: LocalizedName
|
||||
element: number
|
||||
rarity: number
|
||||
maxLevel: number
|
||||
flb: boolean
|
||||
ulb: boolean
|
||||
transcendence: boolean
|
||||
special: boolean
|
||||
recruits: string | null
|
||||
}
|
||||
|
||||
// Summon entity from SummonBlueprint
|
||||
export interface Summon {
|
||||
id: string
|
||||
granblueId: string
|
||||
name: LocalizedName
|
||||
element: number
|
||||
rarity: number
|
||||
maxLevel: number
|
||||
flb: boolean
|
||||
ulb: boolean
|
||||
transcendence: boolean
|
||||
subaura: boolean
|
||||
hp: {
|
||||
minHp: number
|
||||
maxHp: number
|
||||
maxHpFlb: number
|
||||
maxHpUlb: number
|
||||
}
|
||||
atk: {
|
||||
minAtk: number
|
||||
maxAtk: number
|
||||
maxAtkFlb: number
|
||||
maxAtkUlb: number
|
||||
}
|
||||
}
|
||||
|
||||
// Job entity from JobBlueprint
|
||||
export interface Job {
|
||||
id: string
|
||||
granblueId: string
|
||||
name: LocalizedName
|
||||
row: number
|
||||
order: number
|
||||
proficiency: [number, number]
|
||||
masterLevel?: number
|
||||
ultimateMastery?: number
|
||||
accessory?: boolean
|
||||
accessoryType?: number
|
||||
}
|
||||
|
||||
// JobSkill entity
|
||||
export interface JobSkill {
|
||||
id: string
|
||||
name: LocalizedName
|
||||
slug: string
|
||||
category: number
|
||||
main: boolean
|
||||
sub: boolean
|
||||
}
|
||||
|
||||
// JobAccessory entity
|
||||
export interface JobAccessory {
|
||||
id: string
|
||||
name: LocalizedName
|
||||
slug: string
|
||||
granblueId: string
|
||||
}
|
||||
|
||||
// Raid entity from RaidBlueprint
|
||||
export interface Raid {
|
||||
id: string
|
||||
slug: string
|
||||
name: LocalizedName
|
||||
level: number
|
||||
element: number
|
||||
group?: RaidGroup
|
||||
}
|
||||
|
||||
// RaidGroup entity from RaidGroupBlueprint
|
||||
export interface RaidGroup {
|
||||
id: string
|
||||
name: LocalizedName
|
||||
section: string
|
||||
order: number
|
||||
difficulty: number
|
||||
hl: boolean
|
||||
extra: boolean
|
||||
guidebooks: boolean
|
||||
}
|
||||
|
||||
// Awakening entity
|
||||
export interface Awakening {
|
||||
id: string
|
||||
name: LocalizedName
|
||||
slug: string
|
||||
}
|
||||
|
||||
// WeaponKey entity
|
||||
export interface WeaponKey {
|
||||
id: string
|
||||
name: LocalizedName
|
||||
slug: string
|
||||
keyType: string
|
||||
slot: number
|
||||
}
|
||||
|
||||
// SimpleAxSkill for weapon AX skills
|
||||
export interface SimpleAxSkill {
|
||||
modifier: number
|
||||
strength: number
|
||||
}
|
||||
|
||||
// Guidebook entity
|
||||
export interface Guidebook {
|
||||
id: string
|
||||
name: LocalizedName
|
||||
slug: string
|
||||
}
|
||||
|
||||
// User entity
|
||||
export interface User {
|
||||
id: string
|
||||
username: string
|
||||
profilePicture?: string
|
||||
role?: string
|
||||
createdAt?: string
|
||||
updatedAt?: string
|
||||
}
|
||||
168
src/lib/types/api/party.ts
Normal file
168
src/lib/types/api/party.ts
Normal file
|
|
@ -0,0 +1,168 @@
|
|||
// Party and Grid types based on Rails blueprints
|
||||
// These define the party composition structure
|
||||
|
||||
import type {
|
||||
Weapon,
|
||||
Character,
|
||||
Summon,
|
||||
Job,
|
||||
JobSkill,
|
||||
JobAccessory,
|
||||
Raid,
|
||||
Guidebook,
|
||||
User,
|
||||
Awakening,
|
||||
WeaponKey,
|
||||
SimpleAxSkill
|
||||
} from './entities'
|
||||
|
||||
// Grid item types - these are the junction tables between Party and entities
|
||||
|
||||
// GridWeapon from GridWeaponBlueprint
|
||||
export interface GridWeapon {
|
||||
id: string
|
||||
position: number
|
||||
mainhand?: boolean
|
||||
uncapLevel?: number
|
||||
transcendenceStep?: number
|
||||
element?: number
|
||||
weapon: Weapon // Named properly, not "object"
|
||||
weaponKeys?: WeaponKey[]
|
||||
ax?: SimpleAxSkill[]
|
||||
awakening?: {
|
||||
type: Awakening
|
||||
level: number
|
||||
}
|
||||
}
|
||||
|
||||
// GridCharacter from GridCharacterBlueprint
|
||||
export interface GridCharacter {
|
||||
id: string
|
||||
position: number
|
||||
uncapLevel?: number
|
||||
perpetuity?: boolean
|
||||
transcendenceStep?: number
|
||||
character: Character // Named properly, not "object"
|
||||
awakening?: Awakening
|
||||
rings?: Array<{ modifier: number; strength: number }>
|
||||
earring?: { modifier: number; strength: number }
|
||||
aetherial_mastery?: { modifier: number; strength: number }
|
||||
over_mastery?: Array<{ modifier: number; strength: number }>
|
||||
}
|
||||
|
||||
// GridSummon from GridSummonBlueprint
|
||||
export interface GridSummon {
|
||||
id: string
|
||||
position: number
|
||||
main?: boolean
|
||||
friend?: boolean
|
||||
quickSummon?: boolean
|
||||
uncapLevel?: number
|
||||
transcendenceStep?: number
|
||||
summon: Summon // Named properly, not "object"
|
||||
}
|
||||
|
||||
// JobSkillList for party job skills
|
||||
export interface JobSkillList {
|
||||
0?: JobSkill
|
||||
1?: JobSkill
|
||||
2?: JobSkill
|
||||
3?: JobSkill
|
||||
}
|
||||
|
||||
// GuidebookList for party guidebooks
|
||||
export interface GuidebookList {
|
||||
0?: Guidebook
|
||||
1?: Guidebook
|
||||
2?: Guidebook
|
||||
}
|
||||
|
||||
// Party from PartyBlueprint
|
||||
export interface Party {
|
||||
id: string
|
||||
shortcode: string
|
||||
name?: string
|
||||
description?: string
|
||||
fullAuto?: boolean
|
||||
autoGuard?: boolean
|
||||
autoSummon?: boolean
|
||||
chargeAttack?: boolean
|
||||
clearTime?: number
|
||||
buttonCount?: number
|
||||
turnCount?: number
|
||||
chainCount?: number
|
||||
visibility?: number
|
||||
favorited?: boolean
|
||||
extra?: boolean
|
||||
remix?: boolean
|
||||
|
||||
// Relationships
|
||||
weapons: GridWeapon[]
|
||||
characters: GridCharacter[]
|
||||
summons: GridSummon[]
|
||||
job?: Job
|
||||
jobSkills?: JobSkillList
|
||||
accessory?: JobAccessory
|
||||
raid?: Raid
|
||||
guidebooks?: GuidebookList
|
||||
user?: User
|
||||
sourceParty?: Party
|
||||
remixes?: Party[]
|
||||
|
||||
// Local client state
|
||||
localId?: string
|
||||
|
||||
// Timestamps
|
||||
createdAt?: string
|
||||
updatedAt?: string
|
||||
}
|
||||
|
||||
// Minimal party for list views
|
||||
export interface PartyPreview {
|
||||
id: string
|
||||
shortcode: string
|
||||
name?: string
|
||||
favorited?: boolean
|
||||
visibility?: number
|
||||
raid?: {
|
||||
name: { en: string; ja: string }
|
||||
group?: {
|
||||
difficulty?: number
|
||||
extra?: boolean
|
||||
guidebooks?: boolean
|
||||
}
|
||||
}
|
||||
job?: {
|
||||
name: { en: string; ja: string }
|
||||
}
|
||||
weapons: Array<{
|
||||
position: number
|
||||
mainhand?: boolean
|
||||
weapon: {
|
||||
granblueId: number
|
||||
name?: { en: string; ja: string }
|
||||
}
|
||||
}>
|
||||
characters: Array<{
|
||||
position: number
|
||||
character: {
|
||||
granblueId: number
|
||||
name?: { en: string; ja: string }
|
||||
}
|
||||
}>
|
||||
summons: Array<{
|
||||
position: number
|
||||
main?: boolean
|
||||
friend?: boolean
|
||||
summon: {
|
||||
granblueId: number
|
||||
name?: { en: string; ja: string }
|
||||
}
|
||||
}>
|
||||
user?: {
|
||||
id: string
|
||||
username: string
|
||||
}
|
||||
createdAt?: string
|
||||
updatedAt?: string
|
||||
}
|
||||
Loading…
Reference in a new issue