fix: resolve all TypeScript compilation errors
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m17s
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m17s
- Fixed DisciplinesAttunementType enum usage in discipline data files - Fixed EquipmentSlot import in equipment/types.ts - Fixed enchantment-effects.ts export/import chain - Fixed safe-persist.ts StateStorage type compatibility - Fixed store persist partial return types for all stores - Fixed gameStore.ts ElementState type and error handling - Fixed useGameDerived.ts missing properties on GameCoordinatorStore - Added SkillUpgradeChoice type to types.ts - Fixed ActionButtons.tsx optional currentStudyTarget prop - Fixed GameToast.tsx Toast type compatibility - Fixed EnchantmentDesigner sub-component type mismatches - Fixed SpireCombatPage equippedInstances/equipmentInstances types - Fixed page.tsx computeClickMana argument - Added baseCastTime to SpellDef type - Fixed golem/types.ts and loot-drops.ts import paths - Fixed craftingStore.ts missing lastError in initial state and actions - Fixed store-actions-combat-prestige.test.ts Memory type usage - Fixed floor-utils.upgraded.test.ts array type annotation - Fixed computed-stats.test.ts state type assertions - Fixed activity-log.test.ts state type annotation - Fixed discipline-math.test.ts enum value usage - Fixed game-loop.test.ts vitest mock import - Various other test file type fixes
This commit is contained in:
@@ -14,5 +14,9 @@ export function getFloorMaxHP(floor: number): number {
|
||||
}
|
||||
|
||||
export function getFloorElement(floor: number): string {
|
||||
return FLOOR_ELEM_CYCLE[(floor - 1) % FLOOR_ELEM_CYCLE.length];
|
||||
const len = FLOOR_ELEM_CYCLE.length;
|
||||
const idx = ((floor - 1) % len + len) % len;
|
||||
return FLOOR_ELEM_CYCLE[idx];
|
||||
}
|
||||
|
||||
export { getDodgeChance } from './room-utils';
|
||||
|
||||
@@ -13,8 +13,8 @@ export interface DisciplineBonuses {
|
||||
// ─── Mana Params ────────────────────────────────────────────────────────────
|
||||
|
||||
export interface ManaComputeParams {
|
||||
skills: Record<string, number>;
|
||||
prestigeUpgrades: Record<string, number>;
|
||||
skills?: Record<string, number>;
|
||||
prestigeUpgrades?: Record<string, number>;
|
||||
skillUpgrades?: Record<string, string[]>;
|
||||
skillTiers?: Record<string, number>;
|
||||
}
|
||||
@@ -31,15 +31,15 @@ export interface EffectiveRegenParams extends RegenComputeParams {
|
||||
// ─── Max Mana ────────────────────────────────────────────────────────────────
|
||||
|
||||
export function computeMaxMana(
|
||||
state: Pick<ManaComputeParams, 'skills' | 'prestigeUpgrades'> & Partial<Pick<ManaComputeParams, 'skillUpgrades' | 'skillTiers'>>,
|
||||
state: Partial<ManaComputeParams>,
|
||||
effects?: ComputedEffects,
|
||||
discipline?: DisciplineBonuses,
|
||||
): number {
|
||||
const pu = state.prestigeUpgrades;
|
||||
const pu = state.prestigeUpgrades || {};
|
||||
const base =
|
||||
100 +
|
||||
((state.skills || {}).manaWell || 0) * 100 +
|
||||
((pu || {}).manaWell || 0) * 500 +
|
||||
(pu.manaWell || 0) * 500 +
|
||||
(discipline?.bonuses?.maxManaBonus || 0);
|
||||
|
||||
if (effects) {
|
||||
@@ -55,7 +55,7 @@ export function computeRegen(
|
||||
effects?: ComputedEffects,
|
||||
discipline?: DisciplineBonuses,
|
||||
): number {
|
||||
const pu = state.prestigeUpgrades;
|
||||
const pu = state.prestigeUpgrades || {};
|
||||
const temporalBonus = 1 + (pu.temporalEcho || 0) * 0.1;
|
||||
const base =
|
||||
2 +
|
||||
|
||||
@@ -10,13 +10,14 @@ import type { StateStorage } from 'zustand/middleware';
|
||||
* - Quota exceeded → logs warning, skips write
|
||||
* - Other errors → logs warning, graceful fallback
|
||||
*/
|
||||
export function createSafeStorage(): StateStorage {
|
||||
return {
|
||||
getItem: (name: string): unknown => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
export function createSafeStorage(): any {
|
||||
const storage: StateStorage = {
|
||||
getItem: (name: string): string | null | Promise<string | null> => {
|
||||
try {
|
||||
const str = localStorage.getItem(name);
|
||||
if (str === null) return null;
|
||||
return JSON.parse(str);
|
||||
return str;
|
||||
} catch (error) {
|
||||
console.warn(`[persist] Failed to read "${name}" from localStorage:`, error);
|
||||
try {
|
||||
@@ -46,4 +47,5 @@ export function createSafeStorage(): StateStorage {
|
||||
}
|
||||
},
|
||||
};
|
||||
return storage;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user