Cleanup batch 5: Remove unused exported types

Made 75+ types internal (removed export keyword) across 24 files:
- Analytics event types (kept GameEventMap, GameEventName, GameEventProperties)
- Level config types (QuaternionArray, MaterialConfig, etc.)
- Ship types (SightConfig, InputState, etc.)
- Store state types (AuthState, GameConfigData, etc.)
- Various config interfaces

These types are still used internally but were never imported elsewhere.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Michael Mainguy 2025-11-28 18:11:40 -06:00
parent e60280cf83
commit 44c685ac2d
25 changed files with 53 additions and 85 deletions

View File

@ -1,7 +1,7 @@
import { AnalyticsAdapter, AnalyticsEvent } from './analyticsAdapter'; import { AnalyticsAdapter, AnalyticsEvent } from './analyticsAdapter';
import { BrowserAgent } from '@newrelic/browser-agent/loaders/browser-agent'; import { BrowserAgent } from '@newrelic/browser-agent/loaders/browser-agent';
export interface NewRelicAdapterConfig { interface NewRelicAdapterConfig {
/** Maximum events to batch before auto-flush */ /** Maximum events to batch before auto-flush */
batchSize?: number; batchSize?: number;
/** Maximum time (ms) to wait before auto-flush */ /** Maximum time (ms) to wait before auto-flush */

View File

@ -7,25 +7,25 @@
// Session Events // Session Events
// ============================================================================ // ============================================================================
export interface SessionStartEvent { interface SessionStartEvent {
platform: 'desktop' | 'mobile' | 'vr'; platform: 'desktop' | 'mobile' | 'vr';
userAgent: string; userAgent: string;
screenWidth: number; screenWidth: number;
screenHeight: number; screenHeight: number;
} }
export interface SessionEndEvent { interface SessionEndEvent {
duration: number; // seconds duration: number; // seconds
totalLevelsPlayed: number; totalLevelsPlayed: number;
totalAsteroidsDestroyed: number; totalAsteroidsDestroyed: number;
} }
export interface WebXRSessionStartEvent { interface WebXRSessionStartEvent {
deviceName: string; deviceName: string;
isImmersive: boolean; isImmersive: boolean;
} }
export interface WebXRSessionEndEvent { interface WebXRSessionEndEvent {
duration: number; // seconds duration: number; // seconds
reason: 'user_exit' | 'error' | 'browser_tab_close'; reason: 'user_exit' | 'error' | 'browser_tab_close';
} }
@ -34,13 +34,13 @@ export interface WebXRSessionEndEvent {
// Level Events // Level Events
// ============================================================================ // ============================================================================
export interface LevelStartEvent { interface LevelStartEvent {
levelName: string; levelName: string;
difficulty: 'recruit' | 'pilot' | 'captain' | 'commander' | 'test'; difficulty: 'recruit' | 'pilot' | 'captain' | 'commander' | 'test';
playCount: number; // nth time playing this level/difficulty playCount: number; // nth time playing this level/difficulty
} }
export interface LevelCompleteEvent { interface LevelCompleteEvent {
levelName: string; levelName: string;
difficulty: string; difficulty: string;
completionTime: number; // seconds completionTime: number; // seconds
@ -54,7 +54,7 @@ export interface LevelCompleteEvent {
isNewBestAccuracy: boolean; isNewBestAccuracy: boolean;
} }
export interface LevelFailedEvent { interface LevelFailedEvent {
levelName: string; levelName: string;
difficulty: string; difficulty: string;
survivalTime: number; // seconds survivalTime: number; // seconds
@ -68,26 +68,26 @@ export interface LevelFailedEvent {
// Gameplay Events // Gameplay Events
// ============================================================================ // ============================================================================
export interface AsteroidDestroyedEvent { interface AsteroidDestroyedEvent {
weaponType: string; weaponType: string;
distance: number; distance: number;
asteroidSize: number; asteroidSize: number;
remainingCount: number; remainingCount: number;
} }
export interface ShotFiredEvent { interface ShotFiredEvent {
weaponType: string; weaponType: string;
consecutiveShotsCount: number; consecutiveShotsCount: number;
} }
export interface HullDamageEvent { interface HullDamageEvent {
damageAmount: number; damageAmount: number;
remainingHull: number; remainingHull: number;
damagePercent: number; // 0-1 damagePercent: number; // 0-1
source: 'asteroid_collision' | 'environmental'; source: 'asteroid_collision' | 'environmental';
} }
export interface ShipCollisionEvent { interface ShipCollisionEvent {
impactVelocity: number; impactVelocity: number;
damageDealt: number; damageDealt: number;
objectType: 'asteroid' | 'station' | 'boundary'; objectType: 'asteroid' | 'station' | 'boundary';
@ -97,7 +97,7 @@ export interface ShipCollisionEvent {
// Performance Events // Performance Events
// ============================================================================ // ============================================================================
export interface PerformanceSnapshotEvent { interface PerformanceSnapshotEvent {
fps: number; fps: number;
drawCalls: number; drawCalls: number;
activeMeshes: number; activeMeshes: number;
@ -106,7 +106,7 @@ export interface PerformanceSnapshotEvent {
renderTime: number; // ms renderTime: number; // ms
} }
export interface AssetLoadingEvent { interface AssetLoadingEvent {
assetType: 'mesh' | 'texture' | 'audio' | 'system'; assetType: 'mesh' | 'texture' | 'audio' | 'system';
assetName: string; assetName: string;
loadTimeMs: number; loadTimeMs: number;
@ -118,14 +118,14 @@ export interface AssetLoadingEvent {
// Error Events // Error Events
// ============================================================================ // ============================================================================
export interface JavaScriptErrorEvent { interface JavaScriptErrorEvent {
errorMessage: string; errorMessage: string;
errorStack?: string; errorStack?: string;
componentName: string; componentName: string;
isCritical: boolean; isCritical: boolean;
} }
export interface WebXRErrorEvent { interface WebXRErrorEvent {
errorType: 'initialization' | 'controller' | 'session' | 'feature'; errorType: 'initialization' | 'controller' | 'session' | 'feature';
errorMessage: string; errorMessage: string;
recoverable: boolean; recoverable: boolean;
@ -135,7 +135,7 @@ export interface WebXRErrorEvent {
// Progression Events // Progression Events
// ============================================================================ // ============================================================================
export interface ProgressionUpdateEvent { interface ProgressionUpdateEvent {
levelName: string; levelName: string;
difficulty: string; difficulty: string;
bestTime?: number; bestTime?: number;
@ -144,7 +144,7 @@ export interface ProgressionUpdateEvent {
firstPlayDate: string; firstPlayDate: string;
} }
export interface EditorUnlockedEvent { interface EditorUnlockedEvent {
timestamp: string; timestamp: string;
levelsCompleted: number; levelsCompleted: number;
} }

View File

@ -5,31 +5,3 @@
// Core service // Core service
export { getAnalytics } from './analyticsService'; export { getAnalytics } from './analyticsService';
// Adapters (interfaces exported as types)
export type { AnalyticsAdapter, EventOptions, AnalyticsConfig } from './adapters/analyticsAdapter';
export type { NewRelicAdapterConfig } from './adapters/newRelicAdapter';
// Event types
export type {
GameEventName,
GameEventProperties,
GameEventMap,
SessionStartEvent,
SessionEndEvent,
WebXRSessionStartEvent,
WebXRSessionEndEvent,
LevelStartEvent,
LevelCompleteEvent,
LevelFailedEvent,
AsteroidDestroyedEvent,
ShotFiredEvent,
HullDamageEvent,
ShipCollisionEvent,
PerformanceSnapshotEvent,
AssetLoadingEvent,
JavaScriptErrorEvent,
WebXRErrorEvent,
ProgressionUpdateEvent,
EditorUnlockedEvent
} from './events/gameEvents';

View File

@ -12,7 +12,7 @@ import debugLog from '../../core/debug';
/** /**
* Configuration for explosion effects * Configuration for explosion effects
*/ */
export interface ExplosionConfig { interface ExplosionConfig {
/** Duration of explosion in milliseconds */ /** Duration of explosion in milliseconds */
duration?: number; duration?: number;
/** Maximum explosion force (how far pieces spread) */ /** Maximum explosion force (how far pieces spread) */

View File

@ -4,7 +4,7 @@ import debugLog from '../../core/debug';
/** /**
* Configuration options for background stars * Configuration options for background stars
*/ */
export interface BackgroundStarsConfig { interface BackgroundStarsConfig {
/** Number of stars to generate */ /** Number of stars to generate */
count?: number; count?: number;
/** Radius of the sphere containing the stars */ /** Radius of the sphere containing the stars */

View File

@ -11,7 +11,7 @@ import debugLog from "../../core/debug";
import loadAsset from "../../utils/loadAsset"; import loadAsset from "../../utils/loadAsset";
import {Vector3Array} from "../../levels/config/levelConfig"; import {Vector3Array} from "../../levels/config/levelConfig";
export interface StarBaseResult { interface StarBaseResult {
baseMesh: AbstractMesh; baseMesh: AbstractMesh;
landingAggregate: PhysicsAggregate | null; landingAggregate: PhysicsAggregate | null;
} }

View File

@ -11,7 +11,7 @@ export interface LevelProgress {
playCount: number; playCount: number;
} }
export interface ProgressionData { interface ProgressionData {
version: string; version: string;
completedLevels: Map<string, LevelProgress>; completedLevels: Map<string, LevelProgress>;
editorUnlocked: boolean; editorUnlocked: boolean;

View File

@ -7,7 +7,7 @@
/** /**
* Star rating levels (0-3 stars per category) * Star rating levels (0-3 stars per category)
*/ */
export interface StarRatings { interface StarRatings {
time: number; // 0-3 stars based on completion time time: number; // 0-3 stars based on completion time
accuracy: number; // 0-3 stars based on shot accuracy accuracy: number; // 0-3 stars based on shot accuracy
fuel: number; // 0-3 stars based on fuel efficiency fuel: number; // 0-3 stars based on fuel efficiency
@ -18,7 +18,7 @@ export interface StarRatings {
/** /**
* Debug information for score calculation * Debug information for score calculation
*/ */
export interface ScoreDebugInfo { interface ScoreDebugInfo {
rawFuelConsumed: number; // Actual fuel consumed (can be >100%) rawFuelConsumed: number; // Actual fuel consumed (can be >100%)
rawHullDamage: number; // Actual hull damage (can be >100%) rawHullDamage: number; // Actual hull damage (can be >100%)
fuelEfficiency: number; // 0-100 display value (clamped) fuelEfficiency: number; // 0-100 display value (clamped)
@ -42,7 +42,7 @@ export interface ScoreCalculation {
/** /**
* Configuration for score calculation * Configuration for score calculation
*/ */
export interface ScoreConfig { interface ScoreConfig {
baseScore?: number; // Default: 10000 baseScore?: number; // Default: 10000
minMultiplier?: number; // Minimum multiplier floor (default: 0.5) minMultiplier?: number; // Minimum multiplier floor (default: 0.5)
maxTimeMultiplier?: number; // Maximum time bonus (default: 3.0) maxTimeMultiplier?: number; // Maximum time bonus (default: 3.0)

View File

@ -10,17 +10,17 @@ export type Vector3Array = [number, number, number];
/** /**
* 4D quaternion stored as array [x, y, z, w] * 4D quaternion stored as array [x, y, z, w]
*/ */
export type QuaternionArray = [number, number, number, number]; type QuaternionArray = [number, number, number, number];
/** /**
* 4D color stored as array [r, g, b, a] (0-1 range) * 4D color stored as array [r, g, b, a] (0-1 range)
*/ */
export type Color4Array = [number, number, number, number]; type Color4Array = [number, number, number, number];
/** /**
* Material configuration for PBR materials * Material configuration for PBR materials
*/ */
export interface MaterialConfig { interface MaterialConfig {
id: string; id: string;
name: string; name: string;
type: "PBR" | "Standard" | "Basic"; type: "PBR" | "Standard" | "Basic";
@ -43,7 +43,7 @@ export interface MaterialConfig {
/** /**
* Scene hierarchy node (TransformNode or Mesh) * Scene hierarchy node (TransformNode or Mesh)
*/ */
export interface SceneNodeConfig { interface SceneNodeConfig {
id: string; id: string;
name: string; name: string;
type: "TransformNode" | "Mesh" | "InstancedMesh"; type: "TransformNode" | "Mesh" | "InstancedMesh";
@ -73,7 +73,7 @@ export interface ShipConfig {
* Start base configuration (yellow cylinder where asteroids are constrained to) * Start base configuration (yellow cylinder where asteroids are constrained to)
* All fields optional to allow levels without start bases * All fields optional to allow levels without start bases
*/ */
export interface StartBaseConfig { interface StartBaseConfig {
position?: Vector3Array; // Defaults to [0, 0, 0] if not specified position?: Vector3Array; // Defaults to [0, 0, 0] if not specified
baseGlbPath?: string; // Path to base GLB model (defaults to 'base.glb') baseGlbPath?: string; // Path to base GLB model (defaults to 'base.glb')
landingGlbPath?: string; // Path to landing zone GLB model (uses same file as base, different mesh name) landingGlbPath?: string; // Path to landing zone GLB model (uses same file as base, different mesh name)
@ -82,7 +82,7 @@ export interface StartBaseConfig {
/** /**
* Sun configuration * Sun configuration
*/ */
export interface SunConfig { interface SunConfig {
position: Vector3Array; position: Vector3Array;
diameter: number; diameter: number;
intensity?: number; // Light intensity intensity?: number; // Light intensity
@ -91,7 +91,7 @@ export interface SunConfig {
/** /**
* Individual planet configuration * Individual planet configuration
*/ */
export interface PlanetConfig { interface PlanetConfig {
name: string; name: string;
position: Vector3Array; position: Vector3Array;
diameter: number; diameter: number;
@ -102,7 +102,7 @@ export interface PlanetConfig {
/** /**
* Individual asteroid configuration * Individual asteroid configuration
*/ */
export interface AsteroidConfig { interface AsteroidConfig {
id: string; id: string;
position: Vector3Array; position: Vector3Array;
scale: number; // Uniform scale applied to all axes scale: number; // Uniform scale applied to all axes
@ -114,7 +114,7 @@ export interface AsteroidConfig {
/** /**
* Difficulty configuration settings * Difficulty configuration settings
*/ */
export interface DifficultyConfig { interface DifficultyConfig {
rockCount: number; rockCount: number;
forceMultiplier: number; forceMultiplier: number;
rockSizeMin: number; rockSizeMin: number;
@ -160,7 +160,7 @@ export interface LevelConfig {
/** /**
* Validation result * Validation result
*/ */
export interface ValidationResult { interface ValidationResult {
valid: boolean; valid: boolean;
errors: string[]; errors: string[];
} }

View File

@ -8,7 +8,7 @@ const MIGRATION_STATUS_KEY = 'space-game-migration-status';
/** /**
* Migration status information * Migration status information
*/ */
export interface MigrationStatus { interface MigrationStatus {
migrated: boolean; migrated: boolean;
migratedAt?: Date; migratedAt?: Date;
version: string; version: string;
@ -19,7 +19,7 @@ export interface MigrationStatus {
/** /**
* Result of migration operation * Result of migration operation
*/ */
export interface MigrationResult { interface MigrationResult {
success: boolean; success: boolean;
customLevelsMigrated: number; customLevelsMigrated: number;
defaultLevelsFound: number; defaultLevelsFound: number;

View File

@ -3,7 +3,6 @@ import {
Color3, Color3,
CreateAudioEngineAsync, CreateAudioEngineAsync,
Engine, Engine,
FreeCamera,
HavokPlugin, HavokPlugin,
ParticleHelper, ParticleHelper,
Scene, Scene,
@ -29,12 +28,9 @@ import {LevelRegistry} from "./levels/storage/levelRegistry";
import debugLog from './core/debug'; import debugLog from './core/debug';
import {ReplaySelectionScreen} from "./replay/ReplaySelectionScreen"; import {ReplaySelectionScreen} from "./replay/ReplaySelectionScreen";
import {ReplayManager} from "./replay/ReplayManager"; import {ReplayManager} from "./replay/ReplayManager";
import {AuthService} from "./services/authService";
import {updateUserProfile} from "./ui/screens/loginScreen";
import {Preloader} from "./ui/screens/preloader"; import {Preloader} from "./ui/screens/preloader";
import {DiscordWidget} from "./ui/widgets/discordWidget"; import {DiscordWidget} from "./ui/widgets/discordWidget";
// Svelte App
import { mount } from 'svelte'; import { mount } from 'svelte';
import App from './components/layouts/App.svelte'; import App from './components/layouts/App.svelte';

View File

@ -6,7 +6,7 @@ import { LevelConfig } from "../../levels/config/levelConfig";
/** /**
* Represents the physics state of a single object at a point in time * Represents the physics state of a single object at a point in time
*/ */
export interface PhysicsObjectState { interface PhysicsObjectState {
id: string; id: string;
position: [number, number, number]; position: [number, number, number];
rotation: [number, number, number, number]; // Quaternion (x, y, z, w) rotation: [number, number, number, number]; // Quaternion (x, y, z, w)
@ -28,7 +28,7 @@ export interface PhysicsSnapshot {
/** /**
* Recording metadata * Recording metadata
*/ */
export interface RecordingMetadata { interface RecordingMetadata {
startTime: number; startTime: number;
endTime: number; endTime: number;
frameCount: number; frameCount: number;

View File

@ -15,7 +15,7 @@ export type StickAction =
/** /**
* Available button actions * Available button actions
*/ */
export type ButtonAction = type ButtonAction =
| 'fire' // Fire weapon | 'fire' // Fire weapon
| 'cameraUp' // Adjust camera up | 'cameraUp' // Adjust camera up
| 'cameraDown' // Adjust camera down | 'cameraDown' // Adjust camera down

View File

@ -6,7 +6,7 @@ import debugLog from "../../core/debug";
/** /**
* State change event emitted when ship controls or pointer selection state changes * State change event emitted when ship controls or pointer selection state changes
*/ */
export interface InputControlStateChange { interface InputControlStateChange {
shipControlsEnabled: boolean; shipControlsEnabled: boolean;
pointerSelectionEnabled: boolean; pointerSelectionEnabled: boolean;
requester: string; // e.g., "StatusScreen", "MissionBrief", "Level1" requester: string; // e.g., "StatusScreen", "MissionBrief", "Level1"

View File

@ -7,7 +7,7 @@ import { FreeCamera, Observable, Scene, Vector2 } from "@babylonjs/core";
/** /**
* Recording control action types * Recording control action types
*/ */
export type RecordingAction = type RecordingAction =
| "exportRingBuffer" // R key | "exportRingBuffer" // R key
| "toggleLongRecording" // Ctrl+R | "toggleLongRecording" // Ctrl+R
| "exportLongRecording"; // Shift+R | "exportLongRecording"; // Shift+R

View File

@ -3,12 +3,12 @@ import { GameConfig } from "../core/gameConfig";
import { ShipStatus } from "./shipStatus"; import { ShipStatus } from "./shipStatus";
import { GameStats } from "../game/gameStats"; import { GameStats } from "../game/gameStats";
export interface InputState { interface InputState {
leftStick: Vector2; leftStick: Vector2;
rightStick: Vector2; rightStick: Vector2;
} }
export interface ForceApplicationResult { interface ForceApplicationResult {
linearMagnitude: number; linearMagnitude: number;
angularMagnitude: number; angularMagnitude: number;
} }

View File

@ -13,7 +13,7 @@ export interface ShipStatusChangeEvent {
/** /**
* Ship status values container * Ship status values container
*/ */
export interface ShipStatusValues { interface ShipStatusValues {
fuel: number; fuel: number;
hull: number; hull: number;
ammo: number; ammo: number;

View File

@ -12,7 +12,7 @@ import {
/** /**
* Configuration options for the sight reticle * Configuration options for the sight reticle
*/ */
export interface SightConfig { interface SightConfig {
/** Position relative to parent */ /** Position relative to parent */
position?: Vector3; position?: Vector3;
/** Circle radius */ /** Circle radius */

View File

@ -6,7 +6,7 @@ import { ScoreEvent } from "../ui/hud/scoreboard";
/** /**
* Priority levels for voice messages * Priority levels for voice messages
*/ */
export enum VoiceMessagePriority { enum VoiceMessagePriority {
HIGH = 0, // Critical warnings (danger, immediate action needed) HIGH = 0, // Critical warnings (danger, immediate action needed)
NORMAL = 1, // Standard warnings and status updates NORMAL = 1, // Standard warnings and status updates
LOW = 2 // Informational messages LOW = 2 // Informational messages

View File

@ -1,7 +1,7 @@
import { writable } from 'svelte/store'; import { writable } from 'svelte/store';
import { AuthService } from '../services/authService'; import { AuthService } from '../services/authService';
export interface AuthState { interface AuthState {
isAuthenticated: boolean; isAuthenticated: boolean;
user: any | null; user: any | null;
isLoading: boolean; isLoading: boolean;

View File

@ -2,7 +2,7 @@ import { writable, get } from 'svelte/store';
const STORAGE_KEY = 'game-config'; const STORAGE_KEY = 'game-config';
export interface GameConfigData { interface GameConfigData {
physicsEnabled: boolean; physicsEnabled: boolean;
debugEnabled: boolean; debugEnabled: boolean;
progressionEnabled: boolean; progressionEnabled: boolean;

View File

@ -3,7 +3,7 @@ import { LevelRegistry } from '../levels/storage/levelRegistry';
import type { LevelConfig } from '../levels/config/levelConfig'; import type { LevelConfig } from '../levels/config/levelConfig';
import type { CloudLevelEntry } from '../services/cloudLevelService'; import type { CloudLevelEntry } from '../services/cloudLevelService';
export interface LevelRegistryState { interface LevelRegistryState {
isInitialized: boolean; isInitialized: boolean;
levels: Map<string, CloudLevelEntry>; levels: Map<string, CloudLevelEntry>;
} }

View File

@ -1,6 +1,6 @@
import { writable } from 'svelte/store'; import { writable } from 'svelte/store';
export interface NavigationState { interface NavigationState {
currentRoute: string; currentRoute: string;
isLoading: boolean; isLoading: boolean;
loadingMessage: string; loadingMessage: string;

View File

@ -3,7 +3,7 @@
* Dynamically loads the widget script to avoid npm bundling issues * Dynamically loads the widget script to avoid npm bundling issues
*/ */
export interface DiscordWidgetOptions { interface DiscordWidgetOptions {
server: string; server: string;
channel: string; channel: string;
location?: string[]; location?: string[];

View File

@ -2,7 +2,7 @@ import {DefaultScene} from "../core/defaultScene";
import {AbstractMesh, AssetContainer, LoadAssetContainerAsync} from "@babylonjs/core"; import {AbstractMesh, AssetContainer, LoadAssetContainerAsync} from "@babylonjs/core";
import debugLog from "../core/debug"; import debugLog from "../core/debug";
export type LoadedAsset = { type LoadedAsset = {
container: AssetContainer, container: AssetContainer,
meshes: Map<string, AbstractMesh>, meshes: Map<string, AbstractMesh>,
} }