@series-inc/venus-sdk 2.2.1 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/venus-api/systems/theme.js","../../src/venus-api/systems/rooms.js","../../src/venus-api/systems/asset-loader.js","../../src/venus-api/lib/break_eternity.js","../../src/venus-api/systems/numbers.js","../../src/post/MockPostApi.ts","../../src/post/RpcPostApi.ts","../../src/post/index.ts","../../src/rooms/MockRoomsApi.ts","../../src/MockHost.ts","../../src/VenusTransport.ts","../../src/notifications/RpcNotificationsApi.ts","../../src/rooms/VenusRoom.ts","../../src/rooms/RpcRoomsApi.ts","../../src/RemoteHost.ts","../../src/Host.ts","../../src/venus-api/index.js"],"names":["r","createProxiedMethod","value","createProxiedObject","VenusAPI"],"mappings":"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","file":"index.mjs","sourcesContent":["import { createProxiedMethod } from './core.js';\n\n// Default typography settings that match our application\nconst DEFAULT_TYPOGRAPHY = {\n fontFamily: {\n base: 'Plus Jakarta Sans, Roboto, sans-serif',\n heading: 'Plus Jakarta Sans, Roboto, sans-serif',\n mono: 'monospace',\n },\n fontSize: {\n '2xs': '10px',\n xs: '12px',\n sm: '14px',\n md: '16px',\n lg: '18px',\n xl: '20px',\n '2xl': '24px',\n '3xl': '30px',\n '4xl': '36px',\n '5xl': '48px',\n '6xl': '60px',\n },\n fontWeight: {\n thin: '100',\n extralight: '200',\n light: '300',\n regular: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n extrablack: '950',\n },\n lineHeight: {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n },\n};\n\n// Default theme that matches H5ApiCore.ts DEFAULT_THEME\nconst DEFAULT_THEME = {\n background: {\n default: '#131419', // Dark background\n muted: '#1b1d25', // Mid-dark background\n dark: '#0d0e11', // Darker background\n },\n text: {\n primary: '#ffffff', // White\n muted: '#808080', // Gray\n inverted: '#000000', // Black\n },\n theme: {\n primary: '#f6c833', // Different yellow for testing (slightly lighter)\n secondary: '#6366f1', // Different secondary for testing (purple)\n background: '#131419', // Dark background\n border: '#262626', // Dark border\n card: '#1b1d25', // Dark card\n 'card-glass': 'rgba(27, 29, 37, 0.8)', // Translucent dark card\n },\n typography: DEFAULT_TYPOGRAPHY,\n};\n\n// Initialize theme functionality on a VenusAPI instance\nexport function initializeTheme(venusApiInstance) {\n // Add theme constants to the mock data\n if (!venusApiInstance._mock.theme) {\n venusApiInstance._mock.theme = DEFAULT_THEME;\n }\n\n // Add typography to mock data if not present\n if (!venusApiInstance._mock.typography) {\n venusApiInstance._mock.typography = DEFAULT_TYPOGRAPHY;\n }\n\n // Add safe area mock data\n if (!venusApiInstance._mock.safeArea) {\n venusApiInstance._mock.safeArea = { top: 0, bottom: 0, left: 0, right: 0 };\n }\n\n // NOTE: HUD insets are now provided dynamically via onShow/onPlay context\n // and should not be accessed from config\n\n // Apply theme colors from the Venus API to CSS variables\n venusApiInstance.applyVenusThemeToCSS = function(theme) {\n if (!theme) return;\n\n const root = document.documentElement;\n\n // Apply background colors\n if (theme.background) {\n if (theme.background.default)\n root.style.setProperty('--color-background', theme.background.default);\n if (theme.background.muted)\n root.style.setProperty(\n '--color-background-muted',\n theme.background.muted,\n );\n if (theme.background.dark)\n root.style.setProperty(\n '--color-background-dark',\n theme.background.dark,\n );\n }\n\n // Apply text colors\n if (theme.text) {\n if (theme.text.primary)\n root.style.setProperty('--color-text-primary', theme.text.primary);\n if (theme.text.muted)\n root.style.setProperty('--color-text-muted', theme.text.muted);\n }\n\n // Apply theme colors\n if (theme.theme) {\n if (theme.theme.primary)\n root.style.setProperty('--color-primary', theme.theme.primary);\n if (theme.theme.secondary)\n root.style.setProperty('--color-secondary', theme.theme.secondary);\n if (theme.theme.border)\n root.style.setProperty('--color-border', theme.theme.border);\n }\n\n // Apply typography if available\n if (theme.typography && theme.typography.fontFamily) {\n if (theme.typography.fontFamily.base) {\n root.style.setProperty(\n '--font-family',\n theme.typography.fontFamily.base,\n );\n }\n }\n\n // Apply the background color to body immediately\n document.body.style.backgroundColor = root.style.getPropertyValue(\n '--color-background-dark',\n );\n };\n\n // Apply theme method\n venusApiInstance.applyTheme = createProxiedMethod('applyTheme', function() {\n // Get theme from Venus API if available\n let apiTheme = null;\n apiTheme = this.config.theme;\n\n // Apply theme to the game\n if (apiTheme) {\n // Apply theme colors to CSS variables\n this.applyVenusThemeToCSS(apiTheme);\n\n // Set up colors for the game rendering\n this.colors = {\n primary: apiTheme.theme?.primary || '#FF2877',\n secondary: apiTheme.theme?.secondary || '#4755FF',\n dark: apiTheme.background?.dark || '#0D0E11',\n darkLight: apiTheme.background?.muted || '#1B1D25',\n darkLighter: apiTheme.background?.default || '#23252F',\n textPrimary: apiTheme.text?.primary || '#FFFFFF',\n textMuted: apiTheme.text?.muted || '#808080',\n border: apiTheme.theme?.border || '#262626',\n };\n } else {\n // Fallback colors\n this.colors = {\n primary: '#FF2877',\n secondary: '#4755FF',\n dark: '#0D0E11',\n darkLight: '#1B1D25',\n darkLighter: '#23252F',\n textPrimary: '#FFFFFF',\n textMuted: '#808080',\n border: '#262626',\n };\n }\n\n this.log('Theme applied successfully');\n });\n\n // Apply safe area method\n venusApiInstance.applySafeArea = createProxiedMethod('applySafeArea', function() {\n try {\n // Apply safe area insets if available\n const safeArea = this.config.ui.safeArea;\n\n if (safeArea) {\n this.log('Applying safe area insets: ' + JSON.stringify(safeArea));\n\n // You could apply safe area insets to your game container or canvas here\n // For example, adjusting the position of UI elements\n if (this.tapToStartScreen) {\n this.tapToStartScreen.style.marginTop = `${safeArea.top}px`;\n this.tapToStartScreen.style.marginBottom = `${safeArea.bottom}px`;\n }\n\n if (this.gameOverScreen) {\n this.gameOverScreen.style.marginTop = `${safeArea.top}px`;\n this.gameOverScreen.style.marginBottom = `${safeArea.bottom}px`;\n }\n\n // Apply safe area to max score container\n if (this.maxScoreContainer) {\n this.maxScoreContainer.style.marginTop = `${safeArea.top}px`;\n this.maxScoreContainer.style.marginRight = `${safeArea.right}px`;\n }\n }\n } catch (error) {\n this.error('Error applying safe area: ' + error.message);\n console.error('Error applying safe area:', error);\n }\n });\n\n // Export theme constants for use by other modules\n venusApiInstance.DEFAULT_THEME = DEFAULT_THEME;\n venusApiInstance.DEFAULT_TYPOGRAPHY = DEFAULT_TYPOGRAPHY;\n} ","// Mock room storage to simulate real-time rooms in development\nconst mockRooms = new Map();\nconst mockMessages = new Map(); // roomId -> messages[]\nconst mockRoomMoves = new Map(); // roomId -> moves[] \nconst mockSubscriptions = new Map(); // instanceId -> subscriptions\n\n// Helper to generate room IDs\nfunction generateRoomId() {\n return 'room_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n}\n\n// Helper to generate message IDs\nfunction generateMessageId() {\n return 'msg_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n}\n\n// Helper to generate room codes\nfunction generateRoomCode() {\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n let code = '';\n for (let i = 0; i < 6; i++) {\n code += characters.charAt(Math.floor(Math.random() * characters.length));\n }\n return code;\n}\n\n// Helper to simulate real-time events\nfunction broadcastEvent(roomId, eventType, eventData) {\n console.log(`[Venus Mock Rooms] Broadcasting ${eventType} for room ${roomId}:`, eventData);\n \n // Find all subscriptions for this room and trigger callbacks\n for (const [instanceId, subscriptions] of mockSubscriptions.entries()) {\n const roomSubscriptions = subscriptions.get(roomId);\n if (roomSubscriptions) {\n // Simulate real-time event delivery after a short delay\n setTimeout(() => {\n if (roomSubscriptions.onRoomDataUpdated && eventType === 'room_data_updated') {\n roomSubscriptions.onRoomDataUpdated(eventData);\n }\n if (roomSubscriptions.onMessageReceived && eventType === 'message_received') {\n roomSubscriptions.onMessageReceived(eventData);\n }\n if (roomSubscriptions.onPlayerJoined && eventType === 'player_joined') {\n roomSubscriptions.onPlayerJoined(eventData);\n }\n if (roomSubscriptions.onPlayerLeft && eventType === 'player_left') {\n roomSubscriptions.onPlayerLeft(eventData);\n }\n if (roomSubscriptions.onGameStarted && eventType === 'game_started') {\n roomSubscriptions.onGameStarted(eventData);\n }\n if (roomSubscriptions.onTurnChanged && eventType === 'turn_changed') {\n roomSubscriptions.onTurnChanged(eventData);\n }\n if (roomSubscriptions.onOptimisticGameStateUpdated && eventType === 'app:h5:optimisticGameStateUpdated') {\n roomSubscriptions.onOptimisticGameStateUpdated(eventData);\n }\n if (roomSubscriptions.onProposedMoveValidationUpdated && eventType === 'app:h5:proposedMoveValidationUpdated') {\n roomSubscriptions.onProposedMoveValidationUpdated(eventData);\n }\n }, 50); // 50ms delay to simulate network latency\n }\n }\n}\n\n// Import DRY utilities from core.js\nimport { createProxiedMethod, createProxiedObject } from './core.js';\n\n// Mock VenusRoom class that mimics the injected API VenusRoom\nclass MockVenusRoom {\n constructor(roomData) {\n // Use server's canonical ID field\n this.id = roomData.id;\n this.roomId = roomData.id; // Legacy alias for chess app\n this.name = roomData.name;\n this.players = roomData.currentPlayers || [];\n this.maxPlayers = roomData.maxPlayers;\n this.gameType = roomData.gameType;\n this._subscriptions = new Map();\n \n // Preserve complete server room data including game state\n this.appId = roomData.appId;\n this.type = roomData.type;\n this.createdBy = roomData.createdBy;\n this.createdAt = roomData.createdAt;\n this.updatedAt = roomData.updatedAt;\n this.isPrivate = roomData.isPrivate;\n this.currentPlayers = roomData.currentPlayers || [];\n this.status = roomData.status;\n this.customMetadata = roomData.customMetadata || {};\n this.admins = roomData.admins || [];\n this.roomCode = roomData.roomCode;\n this.description = roomData.description;\n this.data = roomData.data || {};\n this.version = roomData.version;\n \n console.log(`[Venus Mock VenusRoom] Created room object for ${this.id}`, {\n hasCustomMetadata: !!this.customMetadata,\n hasGameState: !!this.customMetadata?.rules?.gameState,\n gamePhase: this.customMetadata?.rules?.gameState?.phase,\n currentPlayer: this.customMetadata?.rules?.gameState?.currentPlayer\n });\n }\n\n // Update room data\n async updateData(updates, merge = true) {\n return roomsMock.updateRoomData(this.roomId, updates, merge);\n }\n\n // Get room data\n async getData() {\n return roomsMock.getRoomData(this.roomId);\n }\n\n // Send message\n async sendMessage(messageData) {\n return roomsMock.sendMessage(this.roomId, messageData);\n }\n\n // Subscribe to room data changes\n subscribeToData(callback) {\n return roomsMock.subscribeToRoom(this.roomId, {\n onRoomDataUpdated: callback\n });\n }\n\n // Subscribe to messages\n subscribeToMessages(callback) {\n return roomsMock.subscribeToRoom(this.roomId, {\n onMessageReceived: callback\n });\n }\n\n // Leave room\n async leave() {\n // Clean up all subscriptions\n this._subscriptions.forEach(sub => {\n if (sub.unsubscribe) sub.unsubscribe();\n });\n this._subscriptions.clear();\n \n return { success: true };\n }\n\n // Start game\n async startGame(gameConfig = {}, turnOrder = null) {\n return roomsMock.startGame(this.roomId, gameConfig);\n }\n\n // End game\n async endGame(winner = null, reason = null, gameResults = {}) {\n return roomsMock.endGame(this.roomId, winner, reason, gameResults);\n }\n\n // Propose move (for client-proposed state architecture)\n async proposeMove(proposalPayload) {\n return roomsMock.proposeMove(this.roomId, proposalPayload);\n }\n\n // Validate move\n async validateMove(moveId, isValid, reason = null, validatorId = null) {\n console.log(`[Venus Mock VenusRoom] Validating move ${moveId}: ${isValid}`);\n // For mock, just return success\n return { success: true, moveId, isValid, reason };\n }\n\n // Subscribe to game events\n subscribeToGameEvents(callback) {\n return roomsMock.subscribeToRoom(this.roomId, {\n onOptimisticGameStateUpdated: callback,\n onProposedMoveValidationUpdated: callback\n });\n }\n\n // Generic message handler for room-manager.js integration\n onMessage(callback) {\n // Subscribe to all events for this room\n return roomsMock.subscribeToRoom(this.roomId, {\n onRoomDataUpdated: callback,\n onMessageReceived: callback,\n onGameStarted: callback,\n onTurnChanged: callback,\n onOptimisticGameStateUpdated: callback,\n onProposedMoveValidationUpdated: callback\n });\n }\n\n // Unified subscription helper\n subscribe(options = {}) {\n const unsubFns = [];\n \n if (options.onData) {\n const sub = this.subscribeToData(options.onData);\n unsubFns.push(() => sub.unsubscribe());\n }\n \n if (options.onMessages) {\n const sub = this.subscribeToMessages(options.onMessages);\n unsubFns.push(() => sub.unsubscribe());\n }\n \n if (options.onMoves || options.onGameEvents) {\n const handler = options.onMoves || options.onGameEvents;\n const sub = this.subscribeToGameEvents(handler);\n unsubFns.push(() => sub.unsubscribe());\n }\n\n // Return composite unsubscribe\n let called = false;\n return () => {\n if (called) return;\n called = true;\n unsubFns.forEach(fn => {\n try { fn(); } catch (e) { console.error('Mock room subscribe teardown error', e); }\n });\n };\n }\n}\n\n// Mock room implementation\nconst roomsMock = {\n createRoom(options = {}) {\n try {\n console.log(`[Venus Mock Rooms] Creating room with options:`, options);\n \n const roomId = generateRoomId();\n const creatorId = options.userId || 'mock-user-creator'; // Simulate a creator ID\n const creatorDisplayName = options.userDisplayName || `Creator ${creatorId.slice(-4)}`;\n\n const initialGameState = {\n phase: 'waiting',\n currentPlayer: creatorId, // Creator might be the first player by default\n turnOrder: [creatorId],\n playerStates: {\n [creatorId]: {\n displayName: creatorDisplayName,\n status: 'active',\n role: 'admin', // Creator is admin\n joinedAt: new Date(),\n }\n },\n gameStartedAt: null,\n turnCount: 0,\n // other game-specific state can be added by the H5 app via customMetadata or startGame\n };\n\n const room = {\n id: roomId,\n appId: options.appId || 'mock-app',\n name: options.name || 'Mock Room',\n type: 'shared',\n createdBy: creatorId,\n createdAt: new Date(),\n updatedAt: new Date(),\n isPrivate: options.isPrivate || false,\n maxPlayers: options.maxPlayers || 4,\n currentPlayers: [creatorId],\n status: 'active',\n customMetadata: {\n ...(options.customMetadata || {}),\n rules: {\n ...(options.customMetadata?.rules || {}),\n // Default generic rules, can be overridden by H5 app's options\n ruleEngine: options.customMetadata?.rules?.ruleEngine || 'generic-v1',\n turnBased: options.customMetadata?.rules?.turnBased ?? true,\n minPlayers: options.customMetadata?.rules?.minPlayers || 1,\n maxPlayers: options.maxPlayers || 4,\n gameState: initialGameState,\n },\n },\n admins: [creatorId],\n roomCode: options.roomCode || (options.isPrivate ? generateRoomCode() : null),\n description: options.description,\n gameType: options.gameType,\n data: {}, // General purpose data, game state is in customMetadata.rules.gameState\n version: 1,\n };\n\n mockRooms.set(roomId, room);\n mockMessages.set(roomId, []);\n mockRoomMoves.set(roomId, []); // Initialize moves list for the room\n\n console.log(`[Venus Mock Rooms] Created room ${roomId} with initial state:`, room);\n \n // Return MockVenusRoom instance\n return Promise.resolve(new MockVenusRoom(room));\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error creating room:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to create room' });\n }\n },\n\n joinRoom(roomId, playerMetadata = {}) {\n try {\n console.log(`[Venus Mock Rooms] Joining room ${roomId}`);\n \n const room = mockRooms.get(roomId);\n if (!room) {\n return Promise.reject({ success: false, error: 'Room not found' });\n }\n\n const joiningPlayerId = playerMetadata.userId || 'mock-user-' + Math.random().toString(36).substr(2, 5);\n const joiningPlayerDisplayName = playerMetadata.displayName || `Player ${joiningPlayerId.slice(-4)}`;\n\n if (room.currentPlayers.includes(joiningPlayerId)) {\n console.log(`[Venus Mock Rooms] Player ${joiningPlayerId} already in room ${roomId}. Updating display name if needed.`);\n // Ensure playerState has display name\n if (room.customMetadata.rules.gameState.playerStates[joiningPlayerId]) {\n room.customMetadata.rules.gameState.playerStates[joiningPlayerId].displayName = joiningPlayerDisplayName;\n room.customMetadata.rules.gameState.playerStates[joiningPlayerId].status = 'active';\n } else {\n // This case should ideally not happen if player is in currentPlayers\n room.customMetadata.rules.gameState.playerStates[joiningPlayerId] = {\n displayName: joiningPlayerDisplayName,\n status: 'active',\n role: 'player',\n joinedAt: new Date(),\n };\n }\n room.updatedAt = new Date();\n room.version++;\n broadcastEvent(roomId, 'room_data_updated', { roomId: roomId, roomData: room, timestamp: Date.now() });\n return Promise.resolve(new MockVenusRoom(room)); // Return MockVenusRoom instance\n }\n\n if (room.currentPlayers.length >= room.maxPlayers) {\n return Promise.reject({ success: false, error: 'Room is full' });\n }\n \n room.currentPlayers.push(joiningPlayerId);\n room.customMetadata.rules.gameState.playerStates[joiningPlayerId] = {\n displayName: joiningPlayerDisplayName,\n status: 'active',\n role: 'player',\n joinedAt: new Date(),\n };\n // If turnOrder exists and game is waiting, add player to turnOrder\n if (room.customMetadata.rules.gameState.phase === 'waiting' && room.customMetadata.rules.gameState.turnOrder) {\n if (!room.customMetadata.rules.gameState.turnOrder.includes(joiningPlayerId)) {\n room.customMetadata.rules.gameState.turnOrder.push(joiningPlayerId);\n }\n }\n\n room.updatedAt = new Date();\n room.version++;\n\n broadcastEvent(roomId, 'player_joined', { roomId: roomId, player: { id: joiningPlayerId, displayName: joiningPlayerDisplayName } });\n broadcastEvent(roomId, 'room_data_updated', { roomId: roomId, roomData: room, timestamp: Date.now() });\n\n console.log(`[Venus Mock Rooms] Player ${joiningPlayerId} joined room ${roomId}. Current state:`, room);\n return Promise.resolve(new MockVenusRoom(room)); // Return MockVenusRoom instance\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error joining room:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to join room' });\n }\n },\n\n updateRoomData(roomId, updates, merge = true) {\n try {\n console.log(`[Venus Mock Rooms] Updating room ${roomId} data:`, updates);\n \n const room = mockRooms.get(roomId);\n if (!room) {\n throw new Error('Room not found');\n }\n\n if (merge) {\n room.data = { ...room.data, ...updates };\n } else {\n room.data = updates;\n }\n room.updatedAt = new Date();\n room.version++;\n\n // Broadcast room data updated event\n broadcastEvent(roomId, 'room_data_updated', {\n roomId: roomId,\n roomData: room,\n timestamp: Date.now()\n });\n\n return Promise.resolve({\n success: true,\n });\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error updating room data:`, error);\n return Promise.reject(new Error(error.message || 'Failed to update room data'));\n }\n },\n\n getRoomData(roomId) {\n try {\n console.log(`[Venus Mock Rooms] Getting room ${roomId} data`);\n \n const room = mockRooms.get(roomId);\n if (!room) {\n throw new Error('Room not found');\n }\n\n return Promise.resolve({\n success: true,\n data: room.data || {},\n });\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error getting room data:`, error);\n return Promise.reject(new Error(error.message || 'Failed to get room data'));\n }\n },\n\n sendMessage(roomId, message) {\n try {\n const room = mockRooms.get(roomId);\n if (!room) {\n return Promise.reject({ success: false, error: 'Room not found' });\n }\n\n if (message.type === 'chat') {\n console.log(`[Venus Mock Rooms] Sending CHAT message to room ${roomId}:`, message);\n const messageId = generateMessageId();\n const messageData = {\n id: messageId,\n roomId: roomId,\n senderId: message.senderId || 'mock-user-chatter', // H5 app should provide senderId\n content: message.content || '',\n type: 'chat',\n metadata: message.metadata || {},\n timestamp: new Date(),\n };\n const messages = mockMessages.get(roomId) || [];\n messages.push(messageData);\n mockMessages.set(roomId, messages);\n broadcastEvent(roomId, 'message_received', { roomId: roomId, message: messageData });\n return Promise.resolve({ success: true, messageId: messageId });\n } else {\n // All non-chat messages are now treated as game moves/actions\n console.log(`[Venus Mock Rooms] Sending GAME ACTION/MOVE to room ${roomId} via moves subcollection:`, message);\n \n const playerId = message.playerId || message.metadata?.playerId || 'mock-player-action'; // H5 must provide this\n if (!playerId) {\n return Promise.reject({ success: false, error: 'playerId is required for game actions.'});\n }\n\n const move = {\n playerId: playerId,\n moveData: message.moveData || message.content || message.metadata || { type: message.type }, // Ensure type is captured\n clientValidationHash: message.clientValidationHash,\n timestamp: new Date(), // client-side timestamp for the move proposal\n status: 'pending_mock_processing',\n };\n const roomMoves = mockRoomMoves.get(roomId) || [];\n roomMoves.push(move);\n mockRoomMoves.set(roomId, roomMoves);\n\n // Simulate server processing this move\n this._processMockMove(roomId, move, room); // Use the new helper\n\n return Promise.resolve({ success: true, moveId: 'mock-move-' + Date.now() }); \n }\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error sending message/move:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to send message/move' });\n }\n },\n\n subscribeToRoom(roomId, options = {}) {\n try {\n console.log(`[Venus Mock Rooms] Subscribing to room ${roomId}:`, options);\n \n const room = mockRooms.get(roomId);\n if (!room) {\n throw new Error('Room not found');\n }\n\n // Store subscription for mock event broadcasting\n const instanceId = 'mock-instance-' + Date.now();\n if (!mockSubscriptions.has(instanceId)) {\n mockSubscriptions.set(instanceId, new Map());\n }\n \n const subscriptions = mockSubscriptions.get(instanceId);\n subscriptions.set(roomId, {\n onRoomDataUpdated: options.onRoomDataUpdated,\n onMessageReceived: options.onMessageReceived,\n onPlayerJoined: options.onPlayerJoined,\n onPlayerLeft: options.onPlayerLeft,\n onGameStarted: options.onGameStarted,\n onTurnChanged: options.onTurnChanged,\n });\n\n return Promise.resolve({\n success: true,\n unsubscribe: () => {\n subscriptions.delete(roomId);\n console.log(`[Venus Mock Rooms] Unsubscribed from room ${roomId}`);\n }\n });\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error subscribing to room:`, error);\n return Promise.reject(new Error(error.message || 'Failed to subscribe to room'));\n }\n },\n\n listPublicRooms(gameType, limit = 20) {\n try {\n console.log(`[Venus Mock Rooms] Listing public rooms:`, { gameType, limit });\n \n let rooms = Array.from(mockRooms.values()).filter(room => \n !room.isPrivate && \n room.status === 'active' &&\n (!gameType || room.gameType === gameType)\n );\n \n rooms = rooms.slice(0, limit);\n\n return Promise.resolve({\n success: true,\n rooms: rooms,\n });\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error listing public rooms:`, error);\n return Promise.reject(new Error(error.message || 'Failed to list public rooms'));\n }\n },\n\n searchRooms(searchQuery, gameType, limit = 20) {\n try {\n console.log(`[Venus Mock Rooms] Searching rooms:`, { searchQuery, gameType, limit });\n \n let rooms = Array.from(mockRooms.values()).filter(room => \n !room.isPrivate && \n room.status === 'active' &&\n (!gameType || room.gameType === gameType) &&\n (!searchQuery || \n room.name.toLowerCase().includes(searchQuery.toLowerCase()) ||\n room.description?.toLowerCase().includes(searchQuery.toLowerCase()))\n );\n \n rooms = rooms.slice(0, limit);\n\n return Promise.resolve({\n success: true,\n rooms: rooms,\n });\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error searching rooms:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to search rooms' });\n }\n },\n\n // Smart matchmaking - join existing room or create new one\n joinOrCreateRoom(options = {}) {\n try {\n console.log(`[Venus Mock Rooms] Smart matchmaking with options:`, options);\n \n const { matchCriteria = {}, createOptions = {} } = options;\n \n // Try to find matching room first\n let matchingRoom = null;\n for (const room of mockRooms.values()) {\n // Check if room matches criteria\n const matchesGameType = !matchCriteria.gameType || room.gameType === matchCriteria.gameType;\n const matchesPrivacy = !matchCriteria.hasOwnProperty('isPrivate') || room.isPrivate === matchCriteria.isPrivate;\n const hasSpace = !matchCriteria.hasSpace || room.currentPlayers.length < room.maxPlayers;\n const isActive = room.status === 'active';\n const isWaiting = room.customMetadata?.rules?.gameState?.phase === 'waiting';\n \n if (matchesGameType && matchesPrivacy && hasSpace && isActive && isWaiting) {\n matchingRoom = room;\n console.log(`[Venus Mock Rooms] Found matching room: ${room.id}`);\n break;\n }\n }\n \n if (matchingRoom) {\n // Join existing room\n console.log(`[Venus Mock Rooms] Joining existing room: ${matchingRoom.id}`);\n \n const joiningPlayerId = createOptions.userId || options.userId || 'mock-user-joiner';\n const joiningPlayerDisplayName = createOptions.userDisplayName || options.userDisplayName || `Player ${joiningPlayerId.slice(-4)}`;\n \n // Check if already in room\n if (matchingRoom.currentPlayers.includes(joiningPlayerId)) {\n return Promise.resolve({\n action: 'joined',\n room: new MockVenusRoom(matchingRoom),\n playersJoined: 0\n });\n }\n \n // Add player to room\n matchingRoom.currentPlayers.push(joiningPlayerId);\n matchingRoom.customMetadata.rules.gameState.playerStates[joiningPlayerId] = {\n displayName: joiningPlayerDisplayName,\n status: 'active',\n role: 'player',\n joinedAt: new Date(),\n };\n \n // Add to turn order if game is waiting\n if (matchingRoom.customMetadata.rules.gameState.phase === 'waiting' && \n matchingRoom.customMetadata.rules.gameState.turnOrder) {\n if (!matchingRoom.customMetadata.rules.gameState.turnOrder.includes(joiningPlayerId)) {\n matchingRoom.customMetadata.rules.gameState.turnOrder.push(joiningPlayerId);\n }\n }\n \n matchingRoom.updatedAt = new Date();\n matchingRoom.version++;\n \n // Auto-start game if room is full\n if (matchingRoom.currentPlayers.length >= matchingRoom.maxPlayers) {\n console.log(`[Venus Mock Rooms] Room ${matchingRoom.id} is full, auto-starting game`);\n const gameState = matchingRoom.customMetadata.rules.gameState;\n gameState.phase = 'playing';\n gameState.gameStartedAt = new Date();\n \n // Set up turn order and assign chess colors\n let turnOrder = [...matchingRoom.currentPlayers];\n if (matchingRoom.customMetadata.rules.randomizePlayerOrder) {\n for (let i = turnOrder.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [turnOrder[i], turnOrder[j]] = [turnOrder[j], turnOrder[i]];\n }\n }\n gameState.turnOrder = turnOrder;\n gameState.currentPlayer = turnOrder[0] || null;\n \n // Assign chess colors\n if (matchingRoom.gameType === 'chess' && turnOrder.length >= 2) {\n gameState.playerStates[turnOrder[0]].gameRole = 'white';\n gameState.playerStates[turnOrder[1]].gameRole = 'black';\n }\n \n broadcastEvent(matchingRoom.id, 'game_started', { \n roomId: matchingRoom.id, \n gameState: gameState, \n turnOrder: gameState.turnOrder, \n currentPlayer: gameState.currentPlayer \n });\n }\n \n broadcastEvent(matchingRoom.id, 'player_joined', { \n roomId: matchingRoom.id, \n player: { id: joiningPlayerId, displayName: joiningPlayerDisplayName } \n });\n broadcastEvent(matchingRoom.id, 'room_data_updated', { \n roomId: matchingRoom.id, \n roomData: matchingRoom, \n timestamp: Date.now() \n });\n \n return Promise.resolve({\n action: 'joined',\n room: new MockVenusRoom(matchingRoom),\n playersJoined: 1\n });\n \n } else {\n // Create new room\n console.log(`[Venus Mock Rooms] No matching room found, creating new room`);\n \n const roomCreationOptions = {\n ...createOptions,\n userId: createOptions.userId || options.userId || 'mock-user-creator',\n userDisplayName: createOptions.userDisplayName || options.userDisplayName || 'Creator',\n };\n \n const createResult = this.createRoom(roomCreationOptions);\n \n return createResult.then(room => ({\n action: 'created',\n room: room, // createRoom already returns MockVenusRoom instance\n playersJoined: 1\n }));\n }\n \n } catch (error) {\n console.error(`[Venus Mock Rooms] Error in joinOrCreateRoom:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to join or create room' });\n }\n },\n\n joinRoomByCode(roomCode, playerMetadata = {}) {\n try {\n console.log(`[Venus Mock Rooms] Joining room by code ${roomCode}`);\n \n // Find room by code\n let foundRoom = null;\n for (const [roomId, room] of mockRooms.entries()) {\n if (room.roomCode === roomCode && room.status === 'active') {\n foundRoom = room;\n break;\n }\n }\n \n if (!foundRoom) {\n return Promise.reject({ success: false, error: `Room not found with code: ${roomCode}` });\n }\n \n // Use existing joinRoom method\n return this.joinRoom(foundRoom.id, playerMetadata);\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error joining room by code:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to join room by code' });\n }\n },\n\n // Stage 2: Enhanced game features\n startGame(roomId, gameConfig = {}, requestingUserId = 'mock-admin-user') {\n try {\n console.log(`[Venus Mock Rooms] Starting game in room ${roomId} by ${requestingUserId}`);\n const room = mockRooms.get(roomId);\n if (!room) {\n return Promise.reject({ success: false, error: 'Room not found' });\n }\n\n // Basic validation (mocking server-side checks)\n if (!room.admins.includes(requestingUserId) && room.createdBy !== requestingUserId) {\n return Promise.reject({ success: false, error: 'Only admin or creator can start game' });\n }\n if (room.customMetadata.rules.gameState.phase === 'playing') {\n return Promise.reject({ success: false, error: 'Game already in progress' });\n }\n const minPlayers = room.customMetadata.rules.minPlayers || 1;\n if (room.currentPlayers.length < minPlayers) {\n return Promise.reject({ success: false, error: `Not enough players. Needs ${minPlayers}` });\n }\n\n // Update game state for start\n const gameState = room.customMetadata.rules.gameState;\n gameState.phase = 'playing';\n gameState.gameStartedAt = new Date();\n\n // Ensure turn order and current player\n let turnOrder = [...room.currentPlayers]; // Default to current players array\n if (room.customMetadata.rules.randomizePlayerOrder) {\n for (let i = turnOrder.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [turnOrder[i], turnOrder[j]] = [turnOrder[j], turnOrder[i]];\n }\n }\n gameState.turnOrder = turnOrder;\n gameState.currentPlayer = turnOrder[0] || null;\n\n // Ensure all players in turnOrder have displayNames in playerStates\n turnOrder.forEach(playerId => {\n if (!gameState.playerStates[playerId]) {\n gameState.playerStates[playerId] = { displayName: `Player ${playerId.slice(-4)}`, status: 'active', role: 'player' };\n } else {\n gameState.playerStates[playerId].status = 'active'; // Ensure active\n if (!gameState.playerStates[playerId].displayName) {\n gameState.playerStates[playerId].displayName = `Player ${playerId.slice(-4)}`;\n }\n }\n });\n \n room.updatedAt = new Date();\n room.version++;\n\n console.log(`[Venus Mock Rooms] Game started in room ${roomId}. New state:`, room);\n broadcastEvent(roomId, 'game_started', { roomId: roomId, gameState: gameState, turnOrder: gameState.turnOrder, currentPlayer: gameState.currentPlayer });\n broadcastEvent(roomId, 'room_data_updated', { roomId: roomId, roomData: room, timestamp: Date.now() });\n \n // Simulate server returning the updated room object\n return Promise.resolve({ success: true, ...room }); \n } catch (error) {\n console.error(`[Venus Mock Rooms] Error starting game:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to start game' });\n }\n },\n\n endGame(roomId, winner = null, reason = null, gameResults = {}) {\n try {\n console.log(`[Venus Mock Rooms] Player requesting to end game in room ${roomId}`);\n const room = mockRooms.get(roomId);\n if (!room) return Promise.reject({ success: false, error: 'Room not found' });\n\n const playerId = gameResults.endedBy || 'mock-player-ender'; // H5 should provide who is ending\n\n const move = {\n playerId: playerId,\n moveData: {\n type: 'end_game',\n winner,\n reason,\n gameResults,\n },\n timestamp: new Date(),\n status: 'pending_mock_processing',\n };\n const roomMoves = mockRoomMoves.get(roomId) || [];\n roomMoves.push(move);\n mockRoomMoves.set(roomId, roomMoves);\n\n // Simulate server processing this move\n this._processMockMove(roomId, move, room);\n \n return Promise.resolve({ success: true, moveId: 'mock-move-' + Date.now() });\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error ending game:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to end game' });\n }\n },\n\n // NEW: Propose move (client-proposed state architecture)\n proposeMove(roomId, proposalPayload, proposerId = 'mock-proposer') {\n try {\n console.log(`[Venus Mock Rooms] Player ${proposerId} proposing move in room ${roomId}:`, proposalPayload);\n const room = mockRooms.get(roomId);\n if (!room) return Promise.reject({ success: false, error: 'Room not found' });\n\n const proposedMoveId = `prop_move_${Date.now()}_${Math.random().toString(36).substr(2, 5)}`;\n \n // Create proposed move document (mock version)\n const proposedMove = {\n id: proposedMoveId,\n proposerProfileId: proposerId,\n timestamp: new Date(),\n gameSpecificState: proposalPayload.gameSpecificState,\n moveType: proposalPayload.moveType,\n clientContext: proposalPayload.clientContext,\n clientProposalId: proposalPayload.clientProposalId,\n serverGenericValidationStatus: 'pending',\n serverCustomValidationStatus: 'pending',\n clientConsensusStatus: 'pending',\n ...(proposalPayload.resignedBy && { resignedBy: proposalPayload.resignedBy }),\n ...(proposalPayload.winner && { winner: proposalPayload.winner }),\n };\n\n // Store in mock proposed moves\n if (!mockRoomMoves.has(roomId + '_proposed')) {\n mockRoomMoves.set(roomId + '_proposed', []);\n }\n mockRoomMoves.get(roomId + '_proposed').push(proposedMove);\n\n // Update room with optimistic state\n if (proposalPayload.gameSpecificState) {\n room.optimisticGameState = proposalPayload.gameSpecificState;\n room.lastProposedMoveId = proposedMoveId;\n room.lastProposedMoveBy = proposerId;\n room.lastProposedMoveAt = new Date();\n room.updatedAt = new Date();\n room.version++;\n }\n\n // Simulate server processing after short delay\n setTimeout(() => {\n this._processMockProposedMove(roomId, proposedMoveId, proposedMove, room);\n }, 100);\n\n // Broadcast optimistic update immediately\n broadcastEvent(roomId, 'room_data_updated', {\n roomId: roomId,\n roomData: room,\n timestamp: Date.now()\n });\n\n // Also broadcast optimistic game state update\n if (proposalPayload.gameSpecificState) {\n broadcastEvent(roomId, 'app:h5:optimisticGameStateUpdated', {\n roomId: roomId,\n optimisticGameState: proposalPayload.gameSpecificState\n });\n }\n\n return Promise.resolve({ \n success: true, \n proposedMoveId: proposedMoveId,\n optimisticGameState: proposalPayload.gameSpecificState\n });\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error proposing move:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to propose move' });\n }\n },\n\n // NEW internal helper to simulate server-side move processing for mock API\n _processMockMove(roomId, move, room) {\n console.log('[Venus Mock Rooms] Simulating server processing for move:', move);\n move.id = 'processed-mock-move-' + Date.now(); // Give it a mock processed ID\n setTimeout(() => {\n const currentRoomState = mockRooms.get(roomId);\n if (!currentRoomState) return;\n\n const { rules, gameState } = currentRoomState.customMetadata;\n const { playerId, moveData } = move;\n let isValidMove = true;\n let validationError = null;\n\n // Mock Generic Validation\n if (rules.turnBased && gameState.currentPlayer !== playerId) {\n isValidMove = false;\n validationError = 'Not current player\\'s turn.';\n console.warn(`[Venus Mock Rooms] Invalid move by ${playerId}: Not their turn. Current: ${gameState.currentPlayer}`);\n }\n \n // Further mock validation based on moveData.type if H5 provides it\n const moveType = moveData?.type;\n if (isValidMove && moveType && rules.allowedMessageTypes?.[gameState.phase]?.[moveType]) {\n const ruleForMoveType = rules.allowedMessageTypes[gameState.phase][moveType];\n if (ruleForMoveType.requiredFields) {\n for (const field of ruleForMoveType.requiredFields) {\n if (!(field in moveData)) {\n isValidMove = false;\n validationError = `Missing required field: ${field} for move type ${moveType}.`;\n console.warn(`[Venus Mock Rooms] Invalid move by ${playerId}: ${validationError}`);\n break;\n }\n }\n }\n } else if (isValidMove && moveType && !rules.allowedMessageTypes?.[gameState.phase]?.[moveType]) {\n // If moveType is specified but no rule allows it (could be a warning or error in real server)\n console.warn(`[Venus Mock Rooms] Move type \"${moveType}\" not defined in allowedMessageTypes for phase \"${gameState.phase}\". Processing by default.`);\n }\n\n if (isValidMove) {\n console.log('[Venus Mock Rooms] Move considered valid by mock server. Updating game state.');\n move.status = 'mock_valid';\n // Apply mock game state updates based on the move\n gameState.lastMoveBy = playerId;\n gameState.lastMoveTimestamp = new Date();\n\n if (moveData.type === 'end_game') {\n gameState.phase = 'ended';\n gameState.endedAt = new Date();\n currentRoomState.status = 'archived'; // Mock archiving room on game end\n console.log('[Venus Mock Rooms] Mock: Game ended.');\n } else if (moveData.type === 'force_update_state') {\n Object.assign(gameState, moveData.payload); // Directly apply payload to gameState\n console.log('[Venus Mock Rooms] Mock: Game state forcibly updated with:', moveData.payload);\n }\n\n // Common logic for advancing turn if applicable (and not an end_game or specific state-setting move)\n const nonTurnAdvancingMoves = ['end_game', 'force_update_state'];\n if (rules.turnBased && gameState.turnOrder && gameState.turnOrder.length > 0 && !nonTurnAdvancingMoves.includes(moveData.type)) {\n const currentPlayerIndex = gameState.turnOrder.indexOf(gameState.currentPlayer || '');\n if (currentPlayerIndex !== -1) {\n const nextPlayerIndex = (currentPlayerIndex + 1) % gameState.turnOrder.length;\n gameState.currentPlayer = gameState.turnOrder[nextPlayerIndex];\n gameState.turnCount = (gameState.turnCount || 0) + 1;\n console.log(`[Venus Mock Rooms] Mock: Turn advanced to ${gameState.currentPlayer}`);\n broadcastEvent(roomId, 'turn_changed', {\n roomId: roomId,\n currentPlayer: gameState.currentPlayer,\n previousPlayer: playerId, // The one who just moved\n turnCount: gameState.turnCount\n });\n }\n }\n currentRoomState.updatedAt = new Date();\n currentRoomState.version++;\n broadcastEvent(roomId, 'room_data_updated', { roomId: roomId, roomData: currentRoomState, timestamp: Date.now() });\n } else {\n console.warn('[Venus Mock Rooms] Move considered invalid by mock server. No game state change.', { validationError });\n move.status = 'mock_invalid';\n move.error = validationError;\n // Optionally, send a system message or specific event for invalid move\n }\n console.log('[Venus Mock Rooms] Finished mock processing for move:', move);\n }, 100); // Simulate processing delay\n },\n\n // NEW: Process proposed move for mock API\n _processMockProposedMove(roomId, proposedMoveId, proposedMove, room) {\n console.log('[Venus Mock Rooms] Simulating server processing for proposed move:', proposedMoveId);\n \n const { rules, gameState } = room.customMetadata;\n const { proposerProfileId, gameSpecificState, moveType } = proposedMove;\n \n // Mock generic validation\n let isGenericValid = true;\n let genericValidationReason = '';\n \n // 🛡️ SECURITY: Special handling for resignation moves (matching real server)\n if (moveType === 'resignation') {\n // Check for resignedBy in multiple possible locations (matching server fix)\n const resignedBy = proposedMove.resignedBy || gameSpecificState?.resignedBy;\n \n if (!resignedBy) {\n isGenericValid = false;\n genericValidationReason = 'Security violation: Resignation move must specify who is resigning (resignedBy field required).';\n } else if (resignedBy !== proposerProfileId) {\n isGenericValid = false;\n genericValidationReason = `Security violation: Player ${proposerProfileId} cannot resign on behalf of player ${resignedBy}. Players can only resign themselves.`;\n } else if (!gameState.playerStates || !gameState.playerStates[proposerProfileId]) {\n isGenericValid = false;\n genericValidationReason = `Security violation: Player ${proposerProfileId} is not in this game and cannot resign.`;\n } else {\n console.log(`[Venus Mock Rooms] ✅ Resignation move validated: ${proposerProfileId} is resigning themselves`);\n }\n } else {\n // Normal turn validation for non-resignation moves\n if (rules.turnBased && gameState.currentPlayer !== proposerProfileId) {\n isGenericValid = false;\n genericValidationReason = `Not player's turn. Current: ${gameState.currentPlayer}`;\n }\n }\n \n // Field requirements validation\n if (isGenericValid && moveType && rules.allowedMessageTypes?.[gameState.phase]?.[moveType]) {\n const ruleForMoveType = rules.allowedMessageTypes[gameState.phase][moveType];\n if (ruleForMoveType.requiredFields) {\n for (const field of ruleForMoveType.requiredFields) {\n // For resignation, check both top-level and gameSpecificState\n const hasField = moveType === 'resignation' ? \n (proposedMove[field] !== undefined || gameSpecificState[field] !== undefined) :\n (gameSpecificState[field] !== undefined);\n \n if (!hasField) {\n isGenericValid = false;\n genericValidationReason = `Missing required field: ${field}`;\n break;\n }\n }\n }\n }\n \n // Update proposed move status\n proposedMove.serverGenericValidationStatus = isGenericValid ? 'valid' : 'invalid';\n proposedMove.serverGenericValidationReason = genericValidationReason;\n proposedMove.serverCustomValidationStatus = 'not_applicable'; // Mock: no custom validation\n proposedMove.clientConsensusStatus = 'valid'; // Mock: assume consensus\n \n if (isGenericValid) {\n // Apply game state updates from gameSpecificState\n Object.assign(gameState, gameSpecificState);\n \n // Check if game ended (generic game-agnostic detection)\n if (gameSpecificState.isGameOver === true) {\n gameState.phase = 'ended';\n gameState.winner = gameSpecificState.winner || null;\n gameState.endReason = gameSpecificState.gameStatus || 'completed';\n gameState.endedAt = new Date();\n gameState.currentPlayer = null; // Clear current player since game is over\n console.log(`[Venus Mock Rooms] 🏁 Game ended in room ${roomId}: ${gameState.endReason}, winner: ${gameState.winner || 'draw'}`);\n } else {\n // Advance turn if applicable and game is not over\n if (rules.turnBased && gameState.turnOrder && gameState.turnOrder.length > 0) {\n const currentPlayerIndex = gameState.turnOrder.indexOf(gameState.currentPlayer || '');\n if (currentPlayerIndex !== -1) {\n const nextPlayerIndex = (currentPlayerIndex + 1) % gameState.turnOrder.length;\n gameState.currentPlayer = gameState.turnOrder[nextPlayerIndex];\n gameState.turnCount = (gameState.turnCount || 0) + 1;\n }\n }\n }\n \n gameState.lastMoveBy = proposerProfileId;\n gameState.lastMoveTimestamp = new Date();\n room.updatedAt = new Date();\n room.version++;\n \n console.log(`[Venus Mock Rooms] Proposed move ${proposedMoveId} validated and applied`);\n } else {\n console.log(`[Venus Mock Rooms] Proposed move ${proposedMoveId} validation failed: ${genericValidationReason}`);\n }\n \n // Broadcast validation update\n broadcastEvent(roomId, 'app:h5:proposedMoveValidationUpdated', {\n roomId: roomId,\n proposedMoveId: proposedMoveId,\n proposedMoveData: proposedMove\n });\n \n // If valid, broadcast final room update\n if (isGenericValid) {\n broadcastEvent(roomId, 'room_data_updated', {\n roomId: roomId,\n roomData: room,\n timestamp: Date.now()\n });\n }\n },\n\n getUserRooms(appId, includeArchived = false) {\n try {\n console.log(`[Venus Mock Rooms] Getting user rooms:`, { appId, includeArchived });\n \n const userId = 'mock-user'; // Could be enhanced to support multiple users\n \n let rooms = Array.from(mockRooms.values()).filter(room => \n room.currentPlayers.includes(userId) &&\n (!appId || room.appId === appId) &&\n (includeArchived || room.status === 'active')\n );\n\n // Sort by most recent activity\n rooms.sort((a, b) => new Date(b.updatedAt) - new Date(a.updatedAt));\n\n return Promise.resolve({\n success: true,\n rooms: rooms,\n });\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error getting user rooms:`, error);\n return Promise.reject(new Error(error.message || 'Failed to get user rooms'));\n }\n },\n\n getGameState(roomId) {\n try {\n console.log(`[Venus Mock Rooms] Getting game state for room ${roomId}`);\n \n const room = mockRooms.get(roomId);\n if (!room) {\n return Promise.reject({ success: false, error: 'Room not found'});\n }\n\n const gameState = room.customMetadata?.rules?.gameState || {};\n\n return Promise.resolve({\n success: true,\n data: gameState, // Return the authoritative game state from the mock room\n });\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error getting game state:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to get game state' });\n }\n },\n};\n\n// Initialize rooms functionality on a VenusAPI instance\nexport function initializeRooms(venusApiInstance, mockData = null) {\n // Initializing room system mock\n\n // Initialize with default mock data if provided\n if (mockData && Array.isArray(mockData.rooms)) {\n mockData.rooms.forEach(room => {\n mockRooms.set(room.id, room);\n mockMessages.set(room.id, []);\n mockPlayers.set(room.id, room.currentPlayers.map(playerId => ({\n id: playerId,\n roomId: room.id,\n joinedAt: new Date(),\n lastActive: new Date(),\n status: 'active',\n customData: {},\n role: playerId === room.createdBy ? 'owner' : 'member',\n })));\n });\n // Initialized with default rooms\n }\n\n // Create proxied objects that will delegate to real API when available\n venusApiInstance.rooms = createProxiedObject.call(venusApiInstance, 'rooms', roomsMock);\n\n // Expose room methods directly on venus for compatibility with venus-rooms.ts\n venusApiInstance.getUserRooms = createProxiedMethod('getUserRooms', roomsMock.getUserRooms);\n venusApiInstance.createRoom = createProxiedMethod('createRoom', roomsMock.createRoom);\n venusApiInstance.joinRoom = createProxiedMethod('joinRoom', roomsMock.joinRoom);\n venusApiInstance.joinOrCreateRoom = createProxiedMethod('joinOrCreateRoom', roomsMock.joinOrCreateRoom);\n venusApiInstance.joinRoomByCode = createProxiedMethod('joinRoomByCode', roomsMock.joinRoomByCode);\n venusApiInstance.listPublicRooms = createProxiedMethod('listPublicRooms', roomsMock.listPublicRooms);\n venusApiInstance.searchRooms = createProxiedMethod('searchRooms', roomsMock.searchRooms);\n venusApiInstance.subscribeToRoom = createProxiedMethod('subscribeToRoom', roomsMock.subscribeToRoom);\n\n // Add feature detection\n venusApiInstance.isRoomSystemEnabled = function() {\n return true; // Always enabled in mock for development\n };\n\n // Room system mock initialized successfully\n} ","/**\n * Venus Asset Loader - Unified asset loading for all H5 apps\n * Simplifies complex asset loading with automatic WebView handling, streaming support, and caching\n */\n\nclass VenusAssetLoader {\n constructor() {\n this.cache = new Map();\n this.blobUrls = new Map();\n // Will be set during initialization when VenusAPI is available\n this.isWebView = false;\n this.venusAPI = null;\n }\n\n // Set the VenusAPI reference during initialization\n setVenusAPI(api) {\n this.venusAPI = api;\n // Use VenusAPI's platform detection\n this.isWebView = !api.isWeb || !api.isWeb();\n }\n\n /**\n * Load any asset with automatic optimization\n * @param {string} url - Asset URL\n * @param {Object} options - Loading options\n * @returns {Promise<string>} - URL to use (original, blob, or object URL)\n */\n async loadAsset(url, options = {}) {\n const {\n type = 'auto', // 'image', 'audio', 'video', 'text', 'json', 'auto'\n cache = true, // Use cache\n timeout = 30000,\n isOptional = false // New option to suppress error logging for optional assets\n } = options;\n\n // Resolve the URL to ensure it has proper CDN prefix if needed\n // Use the public resolveAssetUrl if available (which adds CDN prefix)\n const resolvedUrl = (this.venusAPI && this.venusAPI.resolveAssetUrl) \n ? this.venusAPI.resolveAssetUrl(url)\n : this._resolveAssetUrl(url);\n\n // Check cache first\n if (cache && this.cache.has(resolvedUrl)) {\n return this.cache.get(resolvedUrl);\n }\n\n // Auto-detect type if needed\n const assetType = type === 'auto' ? this._detectType(resolvedUrl) : type;\n\n try {\n let resultUrl = resolvedUrl;\n\n // Text/JSON always fetched directly\n if (assetType === 'text' || assetType === 'json') {\n const content = await this._fetchText(resolvedUrl, timeout);\n this.cache.set(resolvedUrl, content);\n return content;\n }\n\n // Skip blob loading in mock mode (development)\n const isMockMode = this.venusAPI && this.venusAPI.isMock && this.venusAPI.isMock();\n \n // For media assets in WebView (but not mock mode), decide between streaming and blob\n if (this.isWebView && !isMockMode && ['image', 'audio', 'video'].includes(assetType)) {\n // Always use blob loading for videos in WebView to avoid streaming issues\n if (assetType === 'video') {\n resultUrl = await this._loadAsBlob(resolvedUrl, assetType);\n // Skip verification for blob videos - they're already verified during blob creation\n if (cache) {\n this.cache.set(resolvedUrl, resultUrl);\n }\n return resultUrl;\n } else if (assetType === 'audio') {\n // Audio also uses blob loading in WebView\n resultUrl = await this._loadAsBlob(resolvedUrl, assetType);\n } else {\n // Images use blob loading in WebView\n resultUrl = await this._loadAsBlob(resolvedUrl, assetType);\n }\n }\n\n // Verify the asset can be loaded (skip for WebView videos handled above)\n if (!(this.isWebView && !isMockMode && assetType === 'video')) {\n await this._verifyAsset(resultUrl, assetType);\n }\n\n if (cache) {\n this.cache.set(resolvedUrl, resultUrl);\n }\n\n return resultUrl;\n } catch (error) {\n // Only log errors for required assets\n if (!isOptional) {\n console.error(`[VenusAssetLoader] Failed to load ${resolvedUrl}:`, error);\n }\n throw error;\n }\n }\n\n async _fetchText(url, timeout) {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n try {\n // Use VenusAPI.fetchFromCdn if available\n const response = typeof VenusAPI !== 'undefined' && VenusAPI.fetchFromCdn\n ? await VenusAPI.fetchFromCdn(url, { signal: controller.signal })\n : await fetch(url, { signal: controller.signal });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n\n return await response.text();\n } catch (error) {\n clearTimeout(timeoutId);\n throw error;\n }\n }\n\n async _loadAsBlob(url, type) {\n // Check if we already have a blob URL for this asset\n if (this.blobUrls.has(url)) {\n return this.blobUrls.get(url);\n }\n\n const mimeType = {\n image: 'image/*',\n audio: 'audio/*',\n video: 'video/*'\n }[type] || '*/*';\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), 30000);\n\n try {\n // Always use native fetch for blob loading since VenusAPI doesn't support blob()\n const response = await fetch(url, {\n mode: 'cors',\n credentials: 'omit',\n headers: { Accept: mimeType },\n signal: controller.signal\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n\n const blob = await response.blob();\n const blobUrl = URL.createObjectURL(blob);\n \n // Track blob URL for cleanup\n this.blobUrls.set(url, blobUrl);\n \n return blobUrl;\n } catch (error) {\n clearTimeout(timeoutId);\n throw error;\n }\n }\n\n async _checkStreamingSupport(url) {\n try {\n // Use VenusAPI.fetchFromCdn if available\n const response = typeof VenusAPI !== 'undefined' && VenusAPI.fetchFromCdn\n ? await VenusAPI.fetchFromCdn(url, { method: 'HEAD' })\n : await fetch(url, { method: 'HEAD' });\n\n const acceptRanges = response.headers.get('Accept-Ranges') === 'bytes';\n const contentLength = response.headers.get('Content-Length');\n \n return acceptRanges && !!contentLength;\n } catch {\n return false;\n }\n }\n\n async _verifyAsset(url, type) {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject(new Error(`Verification timeout for ${type} asset`));\n }, 10000);\n\n if (type === 'image') {\n const img = new Image();\n console.log(`🖼️ [Asset Verification] Verifying image: ${url}`);\n img.onload = () => {\n console.log(`✅ [Asset Verification] Image verified successfully: ${url}`);\n clearTimeout(timeout);\n resolve();\n };\n img.onerror = (error) => {\n console.log(`❌ [Asset Verification] Image verification failed: ${url}`, error);\n clearTimeout(timeout);\n reject(new Error('Failed to load image'));\n };\n img.src = url;\n } else if (type === 'audio') {\n const audio = new Audio();\n audio.oncanplaythrough = () => {\n clearTimeout(timeout);\n resolve();\n };\n audio.onerror = () => {\n clearTimeout(timeout);\n reject(new Error('Failed to load audio'));\n };\n audio.src = url;\n audio.load();\n } else if (type === 'video') {\n const video = document.createElement('video');\n video.onloadedmetadata = () => {\n clearTimeout(timeout);\n video.src = ''; // Clean up\n resolve();\n };\n video.onerror = () => {\n clearTimeout(timeout);\n reject(new Error('Failed to load video'));\n };\n video.src = url;\n } else {\n clearTimeout(timeout);\n resolve(); // No verification needed for other types\n }\n });\n }\n\n _detectType(url) {\n const ext = url.split('.').pop()?.toLowerCase();\n if (['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg'].includes(ext)) return 'image';\n if (['mp3', 'wav', 'ogg', 'm4a', 'aac'].includes(ext)) return 'audio';\n if (['mp4', 'webm', 'mov', 'm4v'].includes(ext)) return 'video';\n if (['json'].includes(ext)) return 'json';\n return 'text';\n }\n\n _resolveAssetUrl(url) {\n // If already a full URL, return as-is\n if (url.startsWith('http://') || url.startsWith('https://')) {\n return url;\n }\n\n // Check if forceRemoteCdn is enabled\n const forceRemoteCdn = this.venusAPI && this.venusAPI._mock && this.venusAPI._mock.forceRemoteCdn;\n \n if (forceRemoteCdn) {\n // Force remote CDN usage - construct full CDN URL\n const CDN_BASE_URL = 'https://venus-static-01293ak.web.app/';\n const cleanUrl = url.startsWith('/') ? url.slice(1) : url;\n const fullUrl = CDN_BASE_URL + cleanUrl;\n console.log(`🌐 [Asset Loader] Force remote CDN: ${url} -> ${fullUrl}`);\n return fullUrl;\n }\n\n // In mock/development mode with relative paths, ensure they work correctly\n if (this.venusAPI && this.venusAPI.isMock && this.venusAPI.isMock()) {\n // In mock mode, paths starting with / are relative to the server root\n return url;\n }\n\n // In production, paths might need CDN prefix (handled by fetchFromCdn)\n return url;\n }\n\n /**\n * Preload multiple assets in parallel\n * @param {(string|{url: string, isOptional?: boolean})[]} urls - Array of URLs or URL objects with optional metadata\n * @param {Object} options - Loading options\n */\n async preloadAssets(urls, options = {}) {\n const { onProgress } = options;\n let loaded = 0;\n const total = urls.length;\n\n // Normalize input to always work with objects internally\n const normalizedUrls = urls.map(item => {\n if (typeof item === 'string') {\n return { url: item, isOptional: false };\n }\n return { \n url: item.url, \n isOptional: item.isOptional || false \n };\n });\n\n const results = await Promise.allSettled(\n normalizedUrls.map(async (item) => {\n try {\n // Pass isOptional flag to loadAsset\n const result = await this.loadAsset(item.url, { ...options, isOptional: item.isOptional });\n loaded++;\n if (onProgress) {\n onProgress(loaded / total, { loaded, total, current: item.url });\n }\n return { url: item.url, result, success: true, isOptional: item.isOptional };\n } catch (error) {\n loaded++;\n \n // loadAsset now handles logging based on isOptional flag\n if (onProgress) {\n onProgress(loaded / total, { loaded, total, current: item.url, error });\n }\n return { url: item.url, error, success: false, isOptional: item.isOptional };\n }\n })\n );\n\n // Only count/warn about required assets that failed\n const failedRequired = results.filter(r => \n (r.status === 'rejected' || !r.value?.success) && !r.value?.isOptional\n );\n \n if (failedRequired.length > 0) {\n console.warn(`[VenusAssetLoader] ${failedRequired.length} required assets failed to load`);\n // Log the URLs of failed required assets for debugging\n failedRequired.forEach(r => {\n console.warn(`[VenusAssetLoader] Failed required asset: ${r.value?.url}`);\n });\n }\n\n // Log optional failures at info level for debugging\n const failedOptional = results.filter(r => \n (r.status === 'rejected' || !r.value?.success) && r.value?.isOptional\n );\n \n if (failedOptional.length > 0) {\n console.info(`[VenusAssetLoader] ${failedOptional.length} optional assets were not found (this is OK)`);\n }\n\n return results.map(r => r.value);\n }\n\n /**\n * Clean up blob URLs to prevent memory leaks\n */\n cleanup() {\n for (const blobUrl of this.blobUrls.values()) {\n URL.revokeObjectURL(blobUrl);\n }\n this.blobUrls.clear();\n this.cache.clear();\n }\n\n /**\n * Get a cached asset URL if available\n */\n getCached(url) {\n // Use the public resolveAssetUrl if available (which adds CDN prefix)\n const resolvedUrl = (this.venusAPI && this.venusAPI.resolveAssetUrl) \n ? this.venusAPI.resolveAssetUrl(url)\n : this._resolveAssetUrl(url);\n return this.cache.get(resolvedUrl);\n }\n}\n\n// Export as part of VenusAPI\nif (typeof VenusAPI !== 'undefined') {\n VenusAPI.assetLoader = new VenusAssetLoader();\n \n // Convenience methods\n VenusAPI.loadAsset = (url, options) => VenusAPI.assetLoader.loadAsset(url, options);\n VenusAPI.preloadAssets = (urls, options) => VenusAPI.assetLoader.preloadAssets(urls, options);\n VenusAPI.cleanupAssets = () => VenusAPI.assetLoader.cleanup();\n}\n\n// Export initialization function for Venus API\nexport function initializeAssetLoader(api, createProxiedMethod) {\n // Create the asset loader instance\n const assetLoader = new VenusAssetLoader();\n \n // Set the VenusAPI reference for platform detection\n assetLoader.setVenusAPI(api);\n \n // Add the instance to the API (not proxied)\n api._assetLoader = assetLoader;\n \n // Also expose as public assetLoader property as documented in the API\n api.assetLoader = assetLoader;\n \n // Add convenience methods using createProxiedMethod if available\n if (createProxiedMethod) {\n api.loadAsset = createProxiedMethod('loadAsset', function(url, options) {\n return assetLoader.loadAsset(url, options);\n });\n \n api.preloadAssets = createProxiedMethod('preloadAssets', function(urls, options) {\n return assetLoader.preloadAssets(urls, options);\n });\n \n api.cleanupAssets = createProxiedMethod('cleanupAssets', function() {\n return assetLoader.cleanup();\n });\n } else {\n // Fallback for environments without createProxiedMethod\n api.loadAsset = function(url, options) {\n return assetLoader.loadAsset(url, options);\n };\n \n api.preloadAssets = function(urls, options) {\n return assetLoader.preloadAssets(urls, options);\n };\n \n api.cleanupAssets = function() {\n return assetLoader.cleanup();\n };\n }\n \n // Also expose on global VenusAPI for backward compatibility\n if (typeof window !== 'undefined' && window.VenusAPI) {\n window.VenusAPI.loadAsset = api.loadAsset;\n window.VenusAPI.preloadAssets = api.preloadAssets;\n window.VenusAPI.cleanupAssets = api.cleanupAssets;\n }\n} ","/* esm.sh - break_eternity.js@2.1.2 */\nfunction se(r,n){if(!(r instanceof n))throw new TypeError(\"Cannot call a class as a function\")}function le(r,n){for(var e=0;e<n.length;e++){var t=n[e];t.enumerable=t.enumerable||!1,t.configurable=!0,\"value\"in t&&(t.writable=!0),Object.defineProperty(r,t.key,t)}}function ue(r,n,e){return n&&le(r.prototype,n),e&&le(r,e),Object.defineProperty(r,\"prototype\",{writable:!1}),r}var me=function(){function r(n){se(this,r),this.map=new Map,this.first=void 0,this.last=void 0,this.maxSize=n}return ue(r,[{key:\"size\",get:function(){return this.map.size}},{key:\"get\",value:function(e){var t=this.map.get(e);if(t!==void 0)return t!==this.first&&(t===this.last?(this.last=t.prev,this.last.next=void 0):(t.prev.next=t.next,t.next.prev=t.prev),t.next=this.first,this.first.prev=t,this.first=t),t.value}},{key:\"set\",value:function(e,t){if(!(this.maxSize<1)){if(this.map.has(e))throw new Error(\"Cannot update existing keys in the cache\");var i=new ge(e,t);for(this.first===void 0?(this.first=i,this.last=i):(i.next=this.first,this.first.prev=i,this.first=i),this.map.set(e,i);this.map.size>this.maxSize;){var a=this.last;this.map.delete(a.key),this.last=a.prev,this.last.next=void 0}}}}]),r}(),ge=ue(function r(n,e){se(this,r),this.next=void 0,this.prev=void 0,this.key=n,this.value=e}),ne=17,T=9e15,ce=Math.log10(9e15),$=1/9e15,ve=308,ye=-324,fe=5,de=1023,Ne=function(){for(var r=[],n=ye+1;n<=ve;n++)r.push(+(\"1e\"+n));var e=323;return function(t){return r[t+e]}}(),_=[2,Math.E,3,4,5,6,7,8,9,10],be=[[1,1.0891180521811203,1.1789767925673957,1.2701455431742086,1.3632090180450092,1.4587818160364217,1.5575237916251419,1.6601571006859253,1.767485818836978,1.8804192098842727,2],[1,1.1121114330934079,1.231038924931609,1.3583836963111375,1.4960519303993531,1.6463542337511945,1.8121385357018724,1.996971324618307,2.2053895545527546,2.4432574483385254,Math.E],[1,1.1187738849693603,1.2464963939368214,1.38527004705667,1.5376664685821402,1.7068895236551784,1.897001227148399,2.1132403089001035,2.362480153784171,2.6539010333870774,3],[1,1.1367350847096405,1.2889510672956703,1.4606478703324786,1.6570295196661111,1.8850062585672889,2.1539465047453485,2.476829779693097,2.872061932789197,3.3664204535587183,4],[1,1.1494592900767588,1.319708228183931,1.5166291280087583,1.748171114438024,2.0253263297298045,2.3636668498288547,2.7858359149579424,3.3257226212448145,4.035730287722532,5],[1,1.159225940787673,1.343712473580932,1.5611293155111927,1.8221199554561318,2.14183924486326,2.542468319282638,3.0574682501653316,3.7390572020926873,4.6719550537360774,6],[1,1.1670905356972596,1.3632807444991446,1.5979222279405536,1.8842640123816674,2.2416069644878687,2.69893426559423,3.3012632110403577,4.121250340630164,5.281493033448316,7],[1,1.1736630594087796,1.379783782386201,1.6292821855668218,1.9378971836180754,2.3289975651071977,2.8384347394720835,3.5232708454565906,4.478242031114584,5.868592169644505,8],[1,1.1793017514670474,1.394054150657457,1.65664127441059,1.985170999970283,2.4069682290577457,2.9647310119960752,3.7278665320924946,4.814462547283592,6.436522247411611,9],[1,1.1840100246247336,1.4061375836156955,1.6802272208863964,2.026757028388619,2.4770056063449646,3.080525271755482,3.9191964192627284,5.135152840833187,6.989961179534715,10]],we=[[-1,-.9194161097107025,-.8335625019330468,-.7425599821143978,-.6466611521029437,-.5462617907227869,-.4419033816638769,-.3342645487554494,-.224140440909962,-.11241087890006762,0],[-1,-.90603157029014,-.80786507256596,-.7064666939634,-.60294836853664,-.49849837513117,-.39430303318768,-.29147201034755,-.19097820800866,-.09361896280296,0],[-1,-.9021579584316141,-.8005762598234203,-.6964780623319391,-.5911906810998454,-.486050182576545,-.3823089430815083,-.28106046722897615,-.1831906535795894,-.08935809204418144,0],[-1,-.8917227442365535,-.781258746326964,-.6705130326902455,-.5612813129406509,-.4551067709033134,-.35319256652135966,-.2563741554088552,-.1651412821106526,-.0796919581982668,0],[-1,-.8843387974366064,-.7678744063886243,-.6529563724510552,-.5415870994657841,-.4352842206588936,-.33504449124791424,-.24138853420685147,-.15445285440944467,-.07409659641336663,0],[-1,-.8786709358426346,-.7577735191184886,-.6399546189952064,-.527284921869926,-.4211627631006314,-.3223479611761232,-.23107655627789858,-.1472057700818259,-.07035171210706326,0],[-1,-.8740862815291583,-.7497032990976209,-.6297119746181752,-.5161838335958787,-.41036238255751956,-.31277212146489963,-.2233976621705518,-.1418697367979619,-.06762117662323441,0],[-1,-.8702632331800649,-.7430366914122081,-.6213373075161548,-.5072025698095242,-.40171437727184167,-.30517930701410456,-.21736343968190863,-.137710238299109,-.06550774483471955,0],[-1,-.8670016295947213,-.7373984232432306,-.6143173985094293,-.49973884395492807,-.394584953527678,-.2989649949848695,-.21245647317021688,-.13434688362382652,-.0638072667348083,0],[-1,-.8641642839543857,-.732534623168535,-.6083127477059322,-.4934049257184696,-.3885773075899922,-.29376029055315767,-.2083678561173622,-.13155653399373268,-.062401588652553186,0]],s=function(n){return k.fromValue_noAlloc(n)},m=function(n,e,t){return k.fromComponents(n,e,t)},c=function(n,e,t){return k.fromComponents_noNormalize(n,e,t)},K=function(n,e){var t=e+1,i=Math.ceil(Math.log10(Math.abs(n))),a=Math.round(n*Math.pow(10,t-i))*Math.pow(10,i-t);return parseFloat(a.toFixed(Math.max(t-i,0)))},ie=function(n){return Math.sign(n)*Math.log10(Math.abs(n))},ke=function(n){if(!isFinite(n))return n;if(n<-50)return n===Math.trunc(n)?Number.NEGATIVE_INFINITY:0;for(var e=1;n<10;)e=e*n,++n;n-=1;var t=.9189385332046727;t=t+(n+.5)*Math.log(n),t=t-n;var i=n*n,a=n;return t=t+1/(12*a),a=a*i,t=t-1/(360*a),a=a*i,t=t+1/(1260*a),a=a*i,t=t-1/(1680*a),a=a*i,t=t+1/(1188*a),a=a*i,t=t-691/(360360*a),a=a*i,t=t+7/(1092*a),a=a*i,t=t-3617/(122400*a),Math.exp(t)/e},Me=.36787944117144233,oe=.5671432904097838,ae=function(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e-10,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,i,a;if(!Number.isFinite(n))return n;if(t){if(n===0)return n;if(n===1)return oe;n<10?i=0:i=Math.log(n)-Math.log(Math.log(n))}else{if(n===0)return-1/0;n<=-.1?i=-2:i=Math.log(-n)-Math.log(-Math.log(-n))}for(var l=0;l<100;++l){if(a=(n*Math.exp(-i)+i*i)/(i+1),Math.abs(a-i)<e*Math.abs(a))return a;i=a}throw Error(\"Iteration failed to converge: \".concat(n.toString()))};function he(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e-10,e=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,t,i,a,l;if(!Number.isFinite(r.mag))return new k(r);if(e){if(r.eq(k.dZero))return c(0,0,0);if(r.eq(k.dOne))return k.fromNumber(oe);t=k.ln(r)}else{if(r.eq(k.dZero))return new k(k.dNegInf);t=k.ln(r.neg())}for(var f=0;f<100;++f){if(i=t.neg().exp(),a=t.sub(r.mul(i)),l=t.sub(a.div(t.add(1).sub(t.add(2).mul(a).div(k.mul(2,t).add(2))))),k.abs(l.sub(t)).lt(k.abs(l).mul(n)))return l;t=l}throw Error(\"Iteration failed to converge: \".concat(r.toString()))}var k=function(){function r(n){se(this,r),this.sign=0,this.mag=0,this.layer=0,n instanceof r?this.fromDecimal(n):typeof n==\"number\"?this.fromNumber(n):typeof n==\"string\"&&this.fromString(n)}return ue(r,[{key:\"m\",get:function(){if(this.sign===0)return 0;if(this.layer===0){var e=Math.floor(Math.log10(this.mag)),t;return this.mag===5e-324?t=5:t=this.mag/Ne(e),this.sign*t}else if(this.layer===1){var i=this.mag-Math.floor(this.mag);return this.sign*Math.pow(10,i)}else return this.sign},set:function(e){this.layer<=2?this.fromMantissaExponent(e,this.e):(this.sign=Math.sign(e),this.sign===0&&(this.layer=0,this.exponent=0))}},{key:\"e\",get:function(){return this.sign===0?0:this.layer===0?Math.floor(Math.log10(this.mag)):this.layer===1?Math.floor(this.mag):this.layer===2?Math.floor(Math.sign(this.mag)*Math.pow(10,Math.abs(this.mag))):this.mag*Number.POSITIVE_INFINITY},set:function(e){this.fromMantissaExponent(this.m,e)}},{key:\"s\",get:function(){return this.sign},set:function(e){e===0?(this.sign=0,this.layer=0,this.mag=0):this.sign=e}},{key:\"mantissa\",get:function(){return this.m},set:function(e){this.m=e}},{key:\"exponent\",get:function(){return this.e},set:function(e){this.e=e}},{key:\"normalize\",value:function(){if(this.sign===0||this.mag===0&&this.layer===0||this.mag===Number.NEGATIVE_INFINITY&&this.layer>0&&Number.isFinite(this.layer))return this.sign=0,this.mag=0,this.layer=0,this;if(this.layer===0&&this.mag<0&&(this.mag=-this.mag,this.sign=-this.sign),this.mag===Number.POSITIVE_INFINITY||this.layer===Number.POSITIVE_INFINITY||this.mag===Number.NEGATIVE_INFINITY||this.layer===Number.NEGATIVE_INFINITY)return this.mag=Number.POSITIVE_INFINITY,this.layer=Number.POSITIVE_INFINITY,this;if(this.layer===0&&this.mag<$)return this.layer+=1,this.mag=Math.log10(this.mag),this;var e=Math.abs(this.mag),t=Math.sign(this.mag);if(e>=T)return this.layer+=1,this.mag=t*Math.log10(e),this;for(;e<ce&&this.layer>0;)this.layer-=1,this.layer===0?this.mag=Math.pow(10,this.mag):(this.mag=t*Math.pow(10,e),e=Math.abs(this.mag),t=Math.sign(this.mag));return this.layer===0&&(this.mag<0?(this.mag=-this.mag,this.sign=-this.sign):this.mag===0&&(this.sign=0)),(Number.isNaN(this.sign)||Number.isNaN(this.layer)||Number.isNaN(this.mag))&&(this.sign=Number.NaN,this.layer=Number.NaN,this.mag=Number.NaN),this}},{key:\"fromComponents\",value:function(e,t,i){return this.sign=e,this.layer=t,this.mag=i,this.normalize(),this}},{key:\"fromComponents_noNormalize\",value:function(e,t,i){return this.sign=e,this.layer=t,this.mag=i,this}},{key:\"fromMantissaExponent\",value:function(e,t){return this.layer=1,this.sign=Math.sign(e),e=Math.abs(e),this.mag=t+Math.log10(e),this.normalize(),this}},{key:\"fromMantissaExponent_noNormalize\",value:function(e,t){return this.fromMantissaExponent(e,t),this}},{key:\"fromDecimal\",value:function(e){return this.sign=e.sign,this.layer=e.layer,this.mag=e.mag,this}},{key:\"fromNumber\",value:function(e){return this.mag=Math.abs(e),this.sign=Math.sign(e),this.layer=0,this.normalize(),this}},{key:\"fromString\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i=e,a=r.fromStringCache.get(i);if(a!==void 0)return this.fromDecimal(a);e=e.replace(\",\",\"\");var l=e.split(\"^^^\");if(l.length===2){var f=parseFloat(l[0]),g=parseFloat(l[1]),h=l[1].split(\";\"),v=1;if(h.length===2&&(v=parseFloat(h[1]),isFinite(v)||(v=1)),isFinite(f)&&isFinite(g)){var u=r.pentate(f,g,v,t);return this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}}var M=e.split(\"^^\");if(M.length===2){var x=parseFloat(M[0]),w=parseFloat(M[1]),o=M[1].split(\";\"),F=1;if(o.length===2&&(F=parseFloat(o[1]),isFinite(F)||(F=1)),isFinite(x)&&isFinite(w)){var A=r.tetrate(x,w,F,t);return this.sign=A.sign,this.layer=A.layer,this.mag=A.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}}var d=e.split(\"^\");if(d.length===2){var S=parseFloat(d[0]),p=parseFloat(d[1]);if(isFinite(S)&&isFinite(p)){var q=r.pow(S,p);return this.sign=q.sign,this.layer=q.layer,this.mag=q.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}}e=e.trim().toLowerCase();var I,N,y=e.split(\"pt\");if(y.length===2){I=10;var V=!1;y[0][0]==\"-\"&&(V=!0,y[0]=y[0].slice(1)),N=parseFloat(y[0]),y[1]=y[1].replace(\"(\",\"\"),y[1]=y[1].replace(\")\",\"\");var C=parseFloat(y[1]);if(isFinite(C)||(C=1),isFinite(I)&&isFinite(N)){var D=r.tetrate(I,N,C,t);return this.sign=D.sign,this.layer=D.layer,this.mag=D.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),V&&(this.sign*=-1),this}}if(y=e.split(\"p\"),y.length===2){I=10;var Y=!1;y[0][0]==\"-\"&&(Y=!0,y[0]=y[0].slice(1)),N=parseFloat(y[0]),y[1]=y[1].replace(\"(\",\"\"),y[1]=y[1].replace(\")\",\"\");var L=parseFloat(y[1]);if(isFinite(L)||(L=1),isFinite(I)&&isFinite(N)){var G=r.tetrate(I,N,L,t);return this.sign=G.sign,this.layer=G.layer,this.mag=G.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),Y&&(this.sign*=-1),this}}if(y=e.split(\"f\"),y.length===2){I=10;var E=!1;y[0][0]==\"-\"&&(E=!0,y[0]=y[0].slice(1)),y[0]=y[0].replace(\"(\",\"\"),y[0]=y[0].replace(\")\",\"\");var X=parseFloat(y[0]);if(y[1]=y[1].replace(\"(\",\"\"),y[1]=y[1].replace(\")\",\"\"),N=parseFloat(y[1]),isFinite(X)||(X=1),isFinite(I)&&isFinite(N)){var Q=r.tetrate(I,N,X,t);return this.sign=Q.sign,this.layer=Q.layer,this.mag=Q.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),E&&(this.sign*=-1),this}}var J=e.split(\"e\"),Z=J.length-1;if(Z===0){var re=parseFloat(e);if(isFinite(re))return this.fromNumber(re),r.fromStringCache.size>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}else if(Z===1){var W=parseFloat(e);if(isFinite(W)&&Math.abs(W)>1e-307)return this.fromNumber(W),r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}var H=e.split(\"e^\");if(H.length===2){this.sign=1,H[0].charAt(0)==\"-\"&&(this.sign=-1);for(var te=\"\",U=0;U<H[1].length;++U){var P=H[1].charCodeAt(U);if(P>=43&&P<=57||P===101)te+=H[1].charAt(U);else{if(this.layer=parseFloat(te),this.mag=parseFloat(H[1].substr(U+1)),this.layer<0||this.layer%1!=0){var B=r.tetrate(10,this.layer,this.mag,t);this.sign=B.sign,this.layer=B.layer,this.mag=B.mag}return this.normalize(),r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}}}if(Z<1)return this.sign=0,this.layer=0,this.mag=0,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this;var z=parseFloat(J[0]);if(z===0)return this.sign=0,this.layer=0,this.mag=0,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this;var R=parseFloat(J[J.length-1]);if(Z>=2){var ee=parseFloat(J[J.length-2]);isFinite(ee)&&(R*=Math.sign(ee),R+=ie(ee))}if(!isFinite(z))this.sign=J[0]===\"-\"?-1:1,this.layer=Z,this.mag=R;else if(Z===1)this.sign=Math.sign(z),this.layer=1,this.mag=R+Math.log10(Math.abs(z));else if(this.sign=Math.sign(z),this.layer=Z,Z===2){var j=r.mul(m(1,2,R),s(z));return this.sign=j.sign,this.layer=j.layer,this.mag=j.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}else this.mag=R;return this.normalize(),r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}},{key:\"fromValue\",value:function(e){return e instanceof r?this.fromDecimal(e):typeof e==\"number\"?this.fromNumber(e):typeof e==\"string\"?this.fromString(e):(this.sign=0,this.layer=0,this.mag=0,this)}},{key:\"toNumber\",value:function(){return this.mag===Number.POSITIVE_INFINITY&&this.layer===Number.POSITIVE_INFINITY&&this.sign===1?Number.POSITIVE_INFINITY:this.mag===Number.POSITIVE_INFINITY&&this.layer===Number.POSITIVE_INFINITY&&this.sign===-1?Number.NEGATIVE_INFINITY:Number.isFinite(this.layer)?this.layer===0?this.sign*this.mag:this.layer===1?this.sign*Math.pow(10,this.mag):this.mag>0?this.sign>0?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:0:Number.NaN}},{key:\"mantissaWithDecimalPlaces\",value:function(e){return isNaN(this.m)?Number.NaN:this.m===0?0:K(this.m,e)}},{key:\"magnitudeWithDecimalPlaces\",value:function(e){return isNaN(this.mag)?Number.NaN:this.mag===0?0:K(this.mag,e)}},{key:\"toString\",value:function(){return isNaN(this.layer)||isNaN(this.sign)||isNaN(this.mag)?\"NaN\":this.mag===Number.POSITIVE_INFINITY||this.layer===Number.POSITIVE_INFINITY?this.sign===1?\"Infinity\":\"-Infinity\":this.layer===0?this.mag<1e21&&this.mag>1e-7||this.mag===0?(this.sign*this.mag).toString():this.m+\"e\"+this.e:this.layer===1?this.m+\"e\"+this.e:this.layer<=fe?(this.sign===-1?\"-\":\"\")+\"e\".repeat(this.layer)+this.mag:(this.sign===-1?\"-\":\"\")+\"(e^\"+this.layer+\")\"+this.mag}},{key:\"toExponential\",value:function(e){return this.layer===0?(this.sign*this.mag).toExponential(e):this.toStringWithDecimalPlaces(e)}},{key:\"toFixed\",value:function(e){return this.layer===0?(this.sign*this.mag).toFixed(e):this.toStringWithDecimalPlaces(e)}},{key:\"toPrecision\",value:function(e){return this.e<=-7?this.toExponential(e-1):e>this.e?this.toFixed(e-this.exponent-1):this.toExponential(e-1)}},{key:\"valueOf\",value:function(){return this.toString()}},{key:\"toJSON\",value:function(){return this.toString()}},{key:\"toStringWithDecimalPlaces\",value:function(e){return this.layer===0?this.mag<1e21&&this.mag>1e-7||this.mag===0?(this.sign*this.mag).toFixed(e):K(this.m,e)+\"e\"+K(this.e,e):this.layer===1?K(this.m,e)+\"e\"+K(this.e,e):this.layer<=fe?(this.sign===-1?\"-\":\"\")+\"e\".repeat(this.layer)+K(this.mag,e):(this.sign===-1?\"-\":\"\")+\"(e^\"+this.layer+\")\"+K(this.mag,e)}},{key:\"abs\",value:function(){return c(this.sign===0?0:1,this.layer,this.mag)}},{key:\"neg\",value:function(){return c(-this.sign,this.layer,this.mag)}},{key:\"negate\",value:function(){return this.neg()}},{key:\"negated\",value:function(){return this.neg()}},{key:\"sgn\",value:function(){return this.sign}},{key:\"round\",value:function(){return this.mag<0?c(0,0,0):this.layer===0?m(this.sign,0,Math.round(this.mag)):new r(this)}},{key:\"floor\",value:function(){return this.mag<0?this.sign===-1?c(-1,0,1):c(0,0,0):this.sign===-1?this.neg().ceil().neg():this.layer===0?m(this.sign,0,Math.floor(this.mag)):new r(this)}},{key:\"ceil\",value:function(){return this.mag<0?this.sign===1?c(1,0,1):c(0,0,0):this.sign===-1?this.neg().floor().neg():this.layer===0?m(this.sign,0,Math.ceil(this.mag)):new r(this)}},{key:\"trunc\",value:function(){return this.mag<0?c(0,0,0):this.layer===0?m(this.sign,0,Math.trunc(this.mag)):new r(this)}},{key:\"add\",value:function(e){var t=s(e);if(this.eq(r.dInf)&&t.eq(r.dNegInf)||this.eq(r.dNegInf)&&t.eq(r.dInf))return new r(r.dNaN);if(!Number.isFinite(this.layer))return new r(this);if(!Number.isFinite(t.layer))return new r(t);if(this.sign===0)return new r(t);if(t.sign===0)return new r(this);if(this.sign===-t.sign&&this.layer===t.layer&&this.mag===t.mag)return c(0,0,0);var i,a;if(this.layer>=2||t.layer>=2)return this.maxabs(t);if(r.cmpabs(this,t)>0?(i=new r(this),a=new r(t)):(i=new r(t),a=new r(this)),i.layer===0&&a.layer===0)return r.fromNumber(i.sign*i.mag+a.sign*a.mag);var l=i.layer*Math.sign(i.mag),f=a.layer*Math.sign(a.mag);if(l-f>=2)return i;if(l===0&&f===-1){if(Math.abs(a.mag-Math.log10(i.mag))>ne)return i;var g=Math.pow(10,Math.log10(i.mag)-a.mag),h=a.sign+i.sign*g;return m(Math.sign(h),1,a.mag+Math.log10(Math.abs(h)))}if(l===1&&f===0){if(Math.abs(i.mag-Math.log10(a.mag))>ne)return i;var v=Math.pow(10,i.mag-Math.log10(a.mag)),u=a.sign+i.sign*v;return m(Math.sign(u),1,Math.log10(a.mag)+Math.log10(Math.abs(u)))}if(Math.abs(i.mag-a.mag)>ne)return i;var M=Math.pow(10,i.mag-a.mag),x=a.sign+i.sign*M;return m(Math.sign(x),1,a.mag+Math.log10(Math.abs(x)))}},{key:\"plus\",value:function(e){return this.add(e)}},{key:\"sub\",value:function(e){return this.add(s(e).neg())}},{key:\"subtract\",value:function(e){return this.sub(e)}},{key:\"minus\",value:function(e){return this.sub(e)}},{key:\"mul\",value:function(e){var t=s(e);if(this.eq(r.dInf)&&t.eq(r.dNegInf)||this.eq(r.dNegInf)&&t.eq(r.dInf))return new r(r.dNegInf);if(this.mag==Number.POSITIVE_INFINITY&&t.eq(r.dZero)||this.eq(r.dZero)&&this.mag==Number.POSITIVE_INFINITY)return new r(r.dNaN);if(this.eq(r.dNegInf)&&t.eq(r.dNegInf))return new r(r.dInf);if(!Number.isFinite(this.layer))return new r(this);if(!Number.isFinite(t.layer))return new r(t);if(this.sign===0||t.sign===0)return c(0,0,0);if(this.layer===t.layer&&this.mag===-t.mag)return c(this.sign*t.sign,0,1);var i,a;if(this.layer>t.layer||this.layer==t.layer&&Math.abs(this.mag)>Math.abs(t.mag)?(i=new r(this),a=new r(t)):(i=new r(t),a=new r(this)),i.layer===0&&a.layer===0)return r.fromNumber(i.sign*a.sign*i.mag*a.mag);if(i.layer>=3||i.layer-a.layer>=2)return m(i.sign*a.sign,i.layer,i.mag);if(i.layer===1&&a.layer===0)return m(i.sign*a.sign,1,i.mag+Math.log10(a.mag));if(i.layer===1&&a.layer===1)return m(i.sign*a.sign,1,i.mag+a.mag);if(i.layer===2&&a.layer===1){var l=m(Math.sign(i.mag),i.layer-1,Math.abs(i.mag)).add(m(Math.sign(a.mag),a.layer-1,Math.abs(a.mag)));return m(i.sign*a.sign,l.layer+1,l.sign*l.mag)}if(i.layer===2&&a.layer===2){var f=m(Math.sign(i.mag),i.layer-1,Math.abs(i.mag)).add(m(Math.sign(a.mag),a.layer-1,Math.abs(a.mag)));return m(i.sign*a.sign,f.layer+1,f.sign*f.mag)}throw Error(\"Bad arguments to mul: \"+this+\", \"+e)}},{key:\"multiply\",value:function(e){return this.mul(e)}},{key:\"times\",value:function(e){return this.mul(e)}},{key:\"div\",value:function(e){var t=s(e);return this.mul(t.recip())}},{key:\"divide\",value:function(e){return this.div(e)}},{key:\"divideBy\",value:function(e){return this.div(e)}},{key:\"dividedBy\",value:function(e){return this.div(e)}},{key:\"recip\",value:function(){return this.mag===0?new r(r.dNaN):this.mag===Number.POSITIVE_INFINITY?c(0,0,0):this.layer===0?m(this.sign,0,1/this.mag):m(this.sign,this.layer,-this.mag)}},{key:\"reciprocal\",value:function(){return this.recip()}},{key:\"reciprocate\",value:function(){return this.recip()}},{key:\"mod\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i=s(e),a=i.abs();if(this.eq(r.dZero)||a.eq(r.dZero))return c(0,0,0);if(t){var l=this.abs().mod(a);return this.sign==-1!=(i.sign==-1)&&(l=i.abs().sub(l)),l.mul(i.sign)}var f=this.toNumber(),g=a.toNumber();return isFinite(f)&&isFinite(g)&&f!=0&&g!=0?new r(f%g):this.sub(a).eq(this)?c(0,0,0):a.sub(this).eq(a)?new r(this):this.sign==-1?this.abs().mod(a).neg():this.sub(this.div(a).floor().mul(a))}},{key:\"modulo\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return this.mod(e,t)}},{key:\"modular\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return this.mod(e,t)}},{key:\"cmp\",value:function(e){var t=s(e);return this.sign>t.sign?1:this.sign<t.sign?-1:this.sign*this.cmpabs(e)}},{key:\"cmpabs\",value:function(e){var t=s(e),i=this.mag>0?this.layer:-this.layer,a=t.mag>0?t.layer:-t.layer;return i>a?1:i<a?-1:this.mag>t.mag?1:this.mag<t.mag?-1:0}},{key:\"compare\",value:function(e){return this.cmp(e)}},{key:\"isNan\",value:function(){return isNaN(this.sign)||isNaN(this.layer)||isNaN(this.mag)}},{key:\"isFinite\",value:function(n){function e(){return n.apply(this,arguments)}return e.toString=function(){return n.toString()},e}(function(){return isFinite(this.sign)&&isFinite(this.layer)&&isFinite(this.mag)})},{key:\"eq\",value:function(e){var t=s(e);return this.sign===t.sign&&this.layer===t.layer&&this.mag===t.mag}},{key:\"equals\",value:function(e){return this.eq(e)}},{key:\"neq\",value:function(e){return!this.eq(e)}},{key:\"notEquals\",value:function(e){return this.neq(e)}},{key:\"lt\",value:function(e){return this.cmp(e)===-1}},{key:\"lte\",value:function(e){return!this.gt(e)}},{key:\"gt\",value:function(e){return this.cmp(e)===1}},{key:\"gte\",value:function(e){return!this.lt(e)}},{key:\"max\",value:function(e){var t=s(e);return this.lt(t)?new r(t):new r(this)}},{key:\"min\",value:function(e){var t=s(e);return this.gt(t)?new r(t):new r(this)}},{key:\"maxabs\",value:function(e){var t=s(e);return this.cmpabs(t)<0?new r(t):new r(this)}},{key:\"minabs\",value:function(e){var t=s(e);return this.cmpabs(t)>0?new r(t):new r(this)}},{key:\"clamp\",value:function(e,t){return this.max(e).min(t)}},{key:\"clampMin\",value:function(e){return this.max(e)}},{key:\"clampMax\",value:function(e){return this.min(e)}},{key:\"cmp_tolerance\",value:function(e,t){var i=s(e);return this.eq_tolerance(i,t)?0:this.cmp(i)}},{key:\"compare_tolerance\",value:function(e,t){return this.cmp_tolerance(e,t)}},{key:\"eq_tolerance\",value:function(e,t){var i=s(e);if(t==null&&(t=1e-7),this.sign!==i.sign||Math.abs(this.layer-i.layer)>1)return!1;var a=this.mag,l=i.mag;return this.layer>i.layer&&(l=ie(l)),this.layer<i.layer&&(a=ie(a)),Math.abs(a-l)<=t*Math.max(Math.abs(a),Math.abs(l))}},{key:\"equals_tolerance\",value:function(e,t){return this.eq_tolerance(e,t)}},{key:\"neq_tolerance\",value:function(e,t){return!this.eq_tolerance(e,t)}},{key:\"notEquals_tolerance\",value:function(e,t){return this.neq_tolerance(e,t)}},{key:\"lt_tolerance\",value:function(e,t){var i=s(e);return!this.eq_tolerance(i,t)&&this.lt(i)}},{key:\"lte_tolerance\",value:function(e,t){var i=s(e);return this.eq_tolerance(i,t)||this.lt(i)}},{key:\"gt_tolerance\",value:function(e,t){var i=s(e);return!this.eq_tolerance(i,t)&&this.gt(i)}},{key:\"gte_tolerance\",value:function(e,t){var i=s(e);return this.eq_tolerance(i,t)||this.gt(i)}},{key:\"pLog10\",value:function(){return this.lt(r.dZero)?c(0,0,0):this.log10()}},{key:\"absLog10\",value:function(){return this.sign===0?new r(r.dNaN):this.layer>0?m(Math.sign(this.mag),this.layer-1,Math.abs(this.mag)):m(1,0,Math.log10(this.mag))}},{key:\"log10\",value:function(){return this.sign<=0?new r(r.dNaN):this.layer>0?m(Math.sign(this.mag),this.layer-1,Math.abs(this.mag)):m(this.sign,0,Math.log10(this.mag))}},{key:\"log\",value:function(e){return e=s(e),this.sign<=0?new r(r.dNaN):e.sign<=0?new r(r.dNaN):e.sign===1&&e.layer===0&&e.mag===1?new r(r.dNaN):this.layer===0&&e.layer===0?m(this.sign,0,Math.log(this.mag)/Math.log(e.mag)):r.div(this.log10(),e.log10())}},{key:\"log2\",value:function(){return this.sign<=0?new r(r.dNaN):this.layer===0?m(this.sign,0,Math.log2(this.mag)):this.layer===1?m(Math.sign(this.mag),0,Math.abs(this.mag)*3.321928094887362):this.layer===2?m(Math.sign(this.mag),1,Math.abs(this.mag)+.5213902276543247):m(Math.sign(this.mag),this.layer-1,Math.abs(this.mag))}},{key:\"ln\",value:function(){return this.sign<=0?new r(r.dNaN):this.layer===0?m(this.sign,0,Math.log(this.mag)):this.layer===1?m(Math.sign(this.mag),0,Math.abs(this.mag)*2.302585092994046):this.layer===2?m(Math.sign(this.mag),1,Math.abs(this.mag)+.36221568869946325):m(Math.sign(this.mag),this.layer-1,Math.abs(this.mag))}},{key:\"logarithm\",value:function(e){return this.log(e)}},{key:\"pow\",value:function(e){var t=s(e),i=new r(this),a=new r(t);if(i.sign===0)return a.eq(0)?c(1,0,1):i;if(i.sign===1&&i.layer===0&&i.mag===1)return i;if(a.sign===0)return c(1,0,1);if(a.sign===1&&a.layer===0&&a.mag===1)return i;var l=i.absLog10().mul(a).pow10();return this.sign===-1?Math.abs(a.toNumber()%2)%2===1?l.neg():Math.abs(a.toNumber()%2)%2===0?l:new r(r.dNaN):l}},{key:\"pow10\",value:function(){if(this.eq(r.dInf))return new r(r.dInf);if(this.eq(r.dNegInf))return c(0,0,0);if(!Number.isFinite(this.layer)||!Number.isFinite(this.mag))return new r(r.dNaN);var e=new r(this);if(e.layer===0){var t=Math.pow(10,e.sign*e.mag);if(Number.isFinite(t)&&Math.abs(t)>=.1)return m(1,0,t);if(e.sign===0)return c(1,0,1);e=c(e.sign,e.layer+1,Math.log10(e.mag))}return e.sign>0&&e.mag>=0?m(e.sign,e.layer+1,e.mag):e.sign<0&&e.mag>=0?m(-e.sign,e.layer+1,-e.mag):c(1,0,1)}},{key:\"pow_base\",value:function(e){return s(e).pow(this)}},{key:\"root\",value:function(e){var t=s(e);return this.lt(0)&&t.mod(2,!0).eq(1)?this.neg().root(t).neg():this.pow(t.recip())}},{key:\"factorial\",value:function(){return this.mag<0?this.add(1).gamma():this.layer===0?this.add(1).gamma():this.layer===1?r.exp(r.mul(this,r.ln(this).sub(1))):r.exp(this)}},{key:\"gamma\",value:function(){if(this.mag<0)return this.recip();if(this.layer===0){if(this.lt(c(1,0,24)))return r.fromNumber(ke(this.sign*this.mag));var e=this.mag-1,t=.9189385332046727;t=t+(e+.5)*Math.log(e),t=t-e;var i=e*e,a=e,l=12*a,f=1/l,g=t+f;if(g===t||(t=g,a=a*i,l=360*a,f=1/l,g=t-f,g===t))return r.exp(t);t=g,a=a*i,l=1260*a;var h=1/l;return t=t+h,a=a*i,l=1680*a,h=1/l,t=t-h,r.exp(t)}else return this.layer===1?r.exp(r.mul(this,r.ln(this).sub(1))):r.exp(this)}},{key:\"lngamma\",value:function(){return this.gamma().ln()}},{key:\"exp\",value:function(){return this.mag<0?c(1,0,1):this.layer===0&&this.mag<=709.7?r.fromNumber(Math.exp(this.sign*this.mag)):this.layer===0?m(1,1,this.sign*Math.log10(Math.E)*this.mag):this.layer===1?m(1,2,this.sign*(Math.log10(.4342944819032518)+this.mag)):m(1,this.layer+1,this.sign*this.mag)}},{key:\"sqr\",value:function(){return this.pow(2)}},{key:\"sqrt\",value:function(){if(this.layer===0)return r.fromNumber(Math.sqrt(this.sign*this.mag));if(this.layer===1)return m(1,2,Math.log10(this.mag)-.3010299956639812);var e=r.div(c(this.sign,this.layer-1,this.mag),c(1,0,2));return e.layer+=1,e.normalize(),e}},{key:\"cube\",value:function(){return this.pow(3)}},{key:\"cbrt\",value:function(){return this.lt(0)?this.neg().pow(1/3).neg():this.pow(1/3)}},{key:\"tetrate\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c(1,0,1),i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(e===1)return r.pow(this,t);if(e===0)return new r(t);if(this.eq(r.dOne))return c(1,0,1);if(this.eq(-1))return r.pow(this,t);if(e===Number.POSITIVE_INFINITY){var a=this.toNumber();if(a<=1.444667861009766&&a>=.06598803584531254){var l=r.ln(this).neg(),f=l.lambertw().div(l);if(a<1)return f;var g=l.lambertw(!1).div(l);return a>1.444667861009099&&(f=g=r.fromNumber(Math.E)),t=s(t),t.eq(g)?g:t.lt(g)?f:new r(r.dInf)}else return a>1.444667861009766?new r(r.dInf):new r(r.dNaN)}if(this.eq(r.dZero)){var h=Math.abs((e+1)%2);return h>1&&(h=2-h),r.fromNumber(h)}if(e<0)return r.iteratedlog(t,this,-e,i);t=new r(t);var v=e;e=Math.trunc(e);var u=v-e;if(this.gt(r.dZero)&&(this.lt(1)||this.lte(1.444667861009766)&&t.lte(r.ln(this).neg().lambertw(!1).div(r.ln(this).neg())))&&(v>1e4||!i)){var M=Math.min(1e4,e);t.eq(r.dOne)?t=this.pow(u):this.lt(1)?t=t.pow(1-u).mul(this.pow(t).pow(u)):t=t.layeradd(u,this);for(var x=0;x<M;++x){var w=t;if(t=this.pow(t),w.eq(t))return t}return v>1e4&&Math.ceil(v)%2==1?this.pow(t):t}u!==0&&(t.eq(r.dOne)?this.gt(10)||i?t=this.pow(u):(t=r.fromNumber(r.tetrate_critical(this.toNumber(),u)),this.lt(2)&&(t=t.sub(1).mul(this.minus(1)).plus(1))):this.eq(10)?t=t.layeradd10(u,i):this.lt(1)?t=t.pow(1-u).mul(this.pow(t).pow(u)):t=t.layeradd(u,this,i));for(var o=0;o<e;++o){if(t=this.pow(t),!isFinite(t.layer)||!isFinite(t.mag))return t.normalize();if(t.layer-this.layer>3)return c(t.sign,t.layer+(e-o-1),t.mag);if(o>1e4)return t}return t}},{key:\"iteratedexp\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c(1,0,1),i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return this.tetrate(e,t,i)}},{key:\"iteratedlog\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:10,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(t<0)return r.tetrate(e,-t,this,i);e=s(e);var a=r.fromDecimal(this),l=t;t=Math.trunc(t);var f=l-t;if(a.layer-e.layer>3){var g=Math.min(t,a.layer-e.layer-3);t-=g,a.layer-=g}for(var h=0;h<t;++h){if(a=a.log(e),!isFinite(a.layer)||!isFinite(a.mag))return a.normalize();if(h>1e4)return a}return f>0&&f<1&&(e.eq(10)?a=a.layeradd10(-f,i):a=a.layeradd(-f,e,i)),a}},{key:\"slog\",value:function(){for(var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:10,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:100,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,a=.001,l=!1,f=!1,g=this.slog_internal(e,i).toNumber(),h=1;h<t;++h){var v=new r(e).tetrate(g,r.dOne,i),u=v.gt(this);if(h>1&&f!=u&&(l=!0),f=u,l?a/=2:a*=2,a=Math.abs(a)*(u?-1:1),g+=a,a===0)break}return r.fromNumber(g)}},{key:\"slog_internal\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:10,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(e=s(e),e.lte(r.dZero))return new r(r.dNaN);if(e.eq(r.dOne))return new r(r.dNaN);if(e.lt(r.dOne))return this.eq(r.dOne)?c(0,0,0):this.eq(r.dZero)?c(-1,0,1):new r(r.dNaN);if(this.mag<0||this.eq(r.dZero))return c(-1,0,1);if(e.lt(1.444667861009766)){var i=r.ln(e).neg(),a=i.lambertw().div(i);if(this.eq(a))return new r(r.dInf);if(this.gt(a))return new r(r.dNaN)}var l=0,f=r.fromDecimal(this);if(f.layer-e.layer>3){var g=f.layer-e.layer-3;l+=g,f.layer-=g}for(var h=0;h<100;++h)if(f.lt(r.dZero))f=r.pow(e,f),l-=1;else{if(f.lte(r.dOne))return t?r.fromNumber(l+f.toNumber()-1):r.fromNumber(l+r.slog_critical(e.toNumber(),f.toNumber()));l+=1,f=r.log(f,e)}return r.fromNumber(l)}},{key:\"layeradd10\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;e=r.fromValue_noAlloc(e).toNumber();var i=r.fromDecimal(this);if(e>=1){i.mag<0&&i.layer>0?(i.sign=0,i.mag=0,i.layer=0):i.sign===-1&&i.layer==0&&(i.sign=1,i.mag=-i.mag);var a=Math.trunc(e);e-=a,i.layer+=a}if(e<=-1){var l=Math.trunc(e);if(e-=l,i.layer+=l,i.layer<0)for(var f=0;f<100;++f){if(i.layer++,i.mag=Math.log10(i.mag),!isFinite(i.mag))return i.sign===0&&(i.sign=1),i.layer<0&&(i.layer=0),i.normalize();if(i.layer>=0)break}}for(;i.layer<0;)i.layer++,i.mag=Math.log10(i.mag);return i.sign===0&&(i.sign=1,i.mag===0&&i.layer>=1&&(i.layer-=1,i.mag=1)),i.normalize(),e!==0?i.layeradd(e,10,t):i}},{key:\"layeradd\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,a=s(t);if(a.gt(1)&&a.lte(1.444667861009766)){var l=r.excess_slog(this,t,i),f=l[0].toNumber(),g=l[1],h=f+e,v=r.ln(t).neg(),u=v.lambertw().div(v),M=v.lambertw(!1).div(v),x=r.dOne;g==1?x=u.mul(M).sqrt():g==2&&(x=M.mul(2));var w=a.pow(x),o=Math.floor(h),F=h-o,A=x.pow(1-F).mul(w.pow(F));return r.tetrate(a,o,A,i)}var d=this.slog(t,100,i).toNumber(),S=d+e;return S>=0?r.tetrate(t,S,r.dOne,i):Number.isFinite(S)?S>=-1?r.log(r.tetrate(t,S+1,r.dOne,i),t):r.log(r.log(r.tetrate(t,S+2,r.dOne,i),t),t):new r(r.dNaN)}},{key:\"lambertw\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return this.lt(-.3678794411710499)?new r(r.dNaN):e?this.abs().lt(\"1e-300\")?new r(this):this.mag<0?r.fromNumber(ae(this.toNumber())):this.layer===0?r.fromNumber(ae(this.sign*this.mag)):this.lt(\"eee15\")?he(this):this.ln():this.sign===1?new r(r.dNaN):this.layer===0?r.fromNumber(ae(this.sign*this.mag,1e-10,!1)):this.layer==1?he(this,1e-10,!1):this.neg().recip().lambertw().neg()}},{key:\"ssqrt\",value:function(){return this.linear_sroot(2)}},{key:\"linear_sroot\",value:function(e){if(e==1)return this;if(this.eq(r.dInf))return new r(r.dInf);if(!this.isFinite())return new r(r.dNaN);if(e>0&&e<1)return this.root(e);if(e>-2&&e<-1)return r.fromNumber(e).add(2).pow(this.recip());if(e<=0)return new r(r.dNaN);if(e==Number.POSITIVE_INFINITY){var t=this.toNumber();return t<Math.E&&t>Me?this.pow(this.recip()):new r(r.dNaN)}if(this.eq(1))return c(1,0,1);if(this.lt(0))return new r(r.dNaN);if(this.lte(\"1ee-16\"))return e%2==1?new r(this):new r(r.dNaN);if(this.gt(1)){var i=r.dTen;this.gte(r.tetrate(10,e,1,!0))&&(i=this.iteratedlog(10,e-1,!0)),e<=1&&(i=this.root(e));for(var a=r.dZero,l=i.layer,f=i.iteratedlog(10,l,!0),g=f,h=f.div(2),v=!0;v;)h=a.add(f).div(2),r.iteratedexp(10,l,h,!0).tetrate(e,1,!0).gt(this)?f=h:a=h,h.eq(g)?v=!1:g=h;return r.iteratedexp(10,l,h,!0)}else{for(var u=1,M=m(1,10,1),x=m(1,10,1),w=m(1,10,1),o=m(1,1,-16),F=r.dZero,A=m(1,10,1),d=o.pow10().recip(),S=r.dZero,p=d,q=d,I=Math.ceil(e)%2==0,N=0,y=m(1,10,1),V=!1,C=r.dZero,D=!1;u<4;){if(u==2){if(I)break;w=m(1,10,1),o=M,u=3,A=m(1,10,1),y=m(1,10,1)}for(V=!1;o.neq(w);){if(C=o,o.pow10().recip().tetrate(e,1,!0).eq(1)&&o.pow10().recip().lt(.4))d=o.pow10().recip(),p=o.pow10().recip(),q=o.pow10().recip(),S=r.dZero,N=-1,u==3&&(y=o);else if(o.pow10().recip().tetrate(e,1,!0).eq(o.pow10().recip())&&!I&&o.pow10().recip().lt(.4))d=o.pow10().recip(),p=o.pow10().recip(),q=o.pow10().recip(),S=r.dZero,N=0;else if(o.pow10().recip().tetrate(e,1,!0).eq(o.pow10().recip().mul(2).tetrate(e,1,!0)))d=o.pow10().recip(),p=r.dZero,q=d.mul(2),S=d,I?N=-1:N=0;else{for(F=o.mul(12e-17),d=o.pow10().recip(),p=o.add(F).pow10().recip(),S=d.sub(p),q=d.add(S);p.tetrate(e,1,!0).eq(d.tetrate(e,1,!0))||q.tetrate(e,1,!0).eq(d.tetrate(e,1,!0))||p.gte(d)||q.lte(d);)F=F.mul(2),p=o.add(F).pow10().recip(),S=d.sub(p),q=d.add(S);if((u==1&&q.tetrate(e,1,!0).gt(d.tetrate(e,1,!0))&&p.tetrate(e,1,!0).gt(d.tetrate(e,1,!0))||u==3&&q.tetrate(e,1,!0).lt(d.tetrate(e,1,!0))&&p.tetrate(e,1,!0).lt(d.tetrate(e,1,!0)))&&(y=o),q.tetrate(e,1,!0).lt(d.tetrate(e,1,!0)))N=-1;else if(I)N=1;else if(u==3&&o.gt_tolerance(M,1e-8))N=0;else{for(;p.tetrate(e,1,!0).eq_tolerance(d.tetrate(e,1,!0),1e-8)||q.tetrate(e,1,!0).eq_tolerance(d.tetrate(e,1,!0),1e-8)||p.gte(d)||q.lte(d);)F=F.mul(2),p=o.add(F).pow10().recip(),S=d.sub(p),q=d.add(S);q.tetrate(e,1,!0).sub(d.tetrate(e,1,!0)).lt(d.tetrate(e,1,!0).sub(p.tetrate(e,1,!0)))?N=0:N=1}}if(N==-1&&(D=!0),u==1&&N==1||u==3&&N!=0)if(w.eq(m(1,10,1)))o=o.mul(2);else{var Y=!1;if(V&&(N==1&&u==1||N==-1&&u==3)&&(Y=!0),o=o.add(w).div(2),Y)break}else if(w.eq(m(1,10,1)))w=o,o=o.div(2);else{var L=!1;if(V&&(N==1&&u==1||N==-1&&u==3)&&(L=!0),w=w.sub(A),o=o.sub(A),L)break}if(w.sub(o).div(2).abs().gt(A.mul(1.5))&&(V=!0),A=w.sub(o).div(2).abs(),o.gt(\"1e18\")||o.eq(C))break}if(o.gt(\"1e18\")||!D||y==m(1,10,1))break;u==1?M=y:u==3&&(x=y),u++}w=M,o=m(1,1,-18);for(var G=o,E=r.dZero,X=!0;X;)if(w.eq(m(1,10,1))?E=o.mul(2):E=w.add(o).div(2),r.pow(10,E).recip().tetrate(e,1,!0).gt(this)?o=E:w=E,E.eq(G)?X=!1:G=E,o.gt(\"1e18\"))return new r(r.dNaN);if(E.eq_tolerance(M,1e-15)){if(x.eq(m(1,10,1)))return new r(r.dNaN);for(w=m(1,10,1),o=x,G=o,E=r.dZero,X=!0;X;)if(w.eq(m(1,10,1))?E=o.mul(2):E=w.add(o).div(2),r.pow(10,E).recip().tetrate(e,1,!0).gt(this)?o=E:w=E,E.eq(G)?X=!1:G=E,o.gt(\"1e18\"))return new r(r.dNaN);return E.pow10().recip()}else return E.pow10().recip()}}},{key:\"pentate\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c(1,0,1),i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;t=new r(t);var a=e;e=Math.floor(e);var l=a-e,f=r.dZero,g=r.dZero;if(l!==0)if(t.eq(r.dOne))++e,t=r.fromNumber(l);else return this.pentate(t.penta_log(this,void 0,i).plus(a).toNumber(),1,i);if(e>0)for(var h=0;h<e;){if(g=f,f=t,t=this.tetrate(t.toNumber(),r.dOne,i),++h,this.gt(0)&&this.lte(1)&&t.gt(0)&&t.lte(1))return this.tetrate(e-h,t,i);if(t.eq(f)||t.eq(g)&&h%2==e%2||!isFinite(t.layer)||!isFinite(t.mag))return t.normalize();if(h>1e4)return t}else for(var v=0;v<-e;++v){if(f=t,t=t.slog(this,void 0,i),t.eq(f)||!isFinite(t.layer)||!isFinite(t.mag))return t.normalize();if(v>100)return t}return t}},{key:\"penta_log\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:10,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:100,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(e=new r(e),e.lte(1))return new r(r.dNaN);if(this.eq(1))return c(0,0,0);if(this.eq(r.dInf))return new r(r.dInf);var a=new r(1),l=0,f=1;if(this.lt(-1)){if(this.lte(-2))return new r(r.dNaN);var g=e.tetrate(this.toNumber(),1,i);if(this.eq(g))return new r(r.dNegInf);if(this.gt(g))return new r(r.dNaN)}if(this.gt(1)){for(;a.lt(this);)if(l++,a=r.tetrate(e,a.toNumber(),1,i),l>1e3)return new r(r.dNaN)}else for(;a.gt(this);)if(l--,a=r.slog(a,e,i),l>100)return new r(r.dNaN);for(var h=1;h<t;++h){var v=e.pentate(l,r.dOne,i);if(v.eq(this))break;var u=v.gt(this);if(f=Math.abs(f)*(u?-1:1),l+=f,f/=2,f===0)break}return r.fromNumber(l)}},{key:\"linear_penta_root\",value:function(e){return e==1?this:e<0?new r(r.dNaN):this.eq(r.dInf)?new r(r.dInf):this.isFinite()?e>0&&e<1?this.root(e):this.eq(1)?c(1,0,1):this.lt(0)?new r(r.dNaN):this.lt(1)?this.linear_sroot(e):r.increasingInverse(function(t){return r.pentate(t,e,1,!0)})(this):new r(r.dNaN)}},{key:\"sin\",value:function(){return this.mag<0?new r(this):this.layer===0?r.fromNumber(Math.sin(this.sign*this.mag)):c(0,0,0)}},{key:\"cos\",value:function(){return this.mag<0?c(1,0,1):this.layer===0?r.fromNumber(Math.cos(this.sign*this.mag)):c(0,0,0)}},{key:\"tan\",value:function(){return this.mag<0?new r(this):this.layer===0?r.fromNumber(Math.tan(this.sign*this.mag)):c(0,0,0)}},{key:\"asin\",value:function(){return this.mag<0?new r(this):this.layer===0?r.fromNumber(Math.asin(this.sign*this.mag)):new r(r.dNaN)}},{key:\"acos\",value:function(){return this.mag<0?r.fromNumber(Math.acos(this.toNumber())):this.layer===0?r.fromNumber(Math.acos(this.sign*this.mag)):new r(r.dNaN)}},{key:\"atan\",value:function(){return this.mag<0?new r(this):this.layer===0?r.fromNumber(Math.atan(this.sign*this.mag)):r.fromNumber(Math.atan(this.sign*(1/0)))}},{key:\"sinh\",value:function(){return this.exp().sub(this.negate().exp()).div(2)}},{key:\"cosh\",value:function(){return this.exp().add(this.negate().exp()).div(2)}},{key:\"tanh\",value:function(){return this.sinh().div(this.cosh())}},{key:\"asinh\",value:function(){return r.ln(this.add(this.sqr().add(1).sqrt()))}},{key:\"acosh\",value:function(){return r.ln(this.add(this.sqr().sub(1).sqrt()))}},{key:\"atanh\",value:function(){return this.abs().gte(1)?new r(r.dNaN):r.ln(this.add(1).div(r.fromNumber(1).sub(this))).div(2)}},{key:\"ascensionPenalty\",value:function(e){return e===0?new r(this):this.root(r.pow(10,e))}},{key:\"egg\",value:function(){return this.add(9)}},{key:\"lessThanOrEqualTo\",value:function(e){return this.cmp(e)<1}},{key:\"lessThan\",value:function(e){return this.cmp(e)<0}},{key:\"greaterThanOrEqualTo\",value:function(e){return this.cmp(e)>-1}},{key:\"greaterThan\",value:function(e){return this.cmp(e)>0}}],[{key:\"fromComponents\",value:function(e,t,i){return new r().fromComponents(e,t,i)}},{key:\"fromComponents_noNormalize\",value:function(e,t,i){return new r().fromComponents_noNormalize(e,t,i)}},{key:\"fromMantissaExponent\",value:function(e,t){return new r().fromMantissaExponent(e,t)}},{key:\"fromMantissaExponent_noNormalize\",value:function(e,t){return new r().fromMantissaExponent_noNormalize(e,t)}},{key:\"fromDecimal\",value:function(e){return new r().fromDecimal(e)}},{key:\"fromNumber\",value:function(e){return new r().fromNumber(e)}},{key:\"fromString\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return new r().fromString(e,t)}},{key:\"fromValue\",value:function(e){return new r().fromValue(e)}},{key:\"fromValue_noAlloc\",value:function(e){if(e instanceof r)return e;if(typeof e==\"string\"){var t=r.fromStringCache.get(e);return t!==void 0?t:r.fromString(e)}else return typeof e==\"number\"?r.fromNumber(e):c(0,0,0)}},{key:\"abs\",value:function(e){return s(e).abs()}},{key:\"neg\",value:function(e){return s(e).neg()}},{key:\"negate\",value:function(e){return s(e).neg()}},{key:\"negated\",value:function(e){return s(e).neg()}},{key:\"sign\",value:function(e){return s(e).sign}},{key:\"sgn\",value:function(e){return s(e).sign}},{key:\"round\",value:function(e){return s(e).round()}},{key:\"floor\",value:function(e){return s(e).floor()}},{key:\"ceil\",value:function(e){return s(e).ceil()}},{key:\"trunc\",value:function(e){return s(e).trunc()}},{key:\"add\",value:function(e,t){return s(e).add(t)}},{key:\"plus\",value:function(e,t){return s(e).add(t)}},{key:\"sub\",value:function(e,t){return s(e).sub(t)}},{key:\"subtract\",value:function(e,t){return s(e).sub(t)}},{key:\"minus\",value:function(e,t){return s(e).sub(t)}},{key:\"mul\",value:function(e,t){return s(e).mul(t)}},{key:\"multiply\",value:function(e,t){return s(e).mul(t)}},{key:\"times\",value:function(e,t){return s(e).mul(t)}},{key:\"div\",value:function(e,t){return s(e).div(t)}},{key:\"divide\",value:function(e,t){return s(e).div(t)}},{key:\"recip\",value:function(e){return s(e).recip()}},{key:\"reciprocal\",value:function(e){return s(e).recip()}},{key:\"reciprocate\",value:function(e){return s(e).reciprocate()}},{key:\"mod\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return s(e).mod(t,i)}},{key:\"modulo\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return s(e).modulo(t,i)}},{key:\"modular\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return s(e).modular(t,i)}},{key:\"cmp\",value:function(e,t){return s(e).cmp(t)}},{key:\"cmpabs\",value:function(e,t){return s(e).cmpabs(t)}},{key:\"compare\",value:function(e,t){return s(e).cmp(t)}},{key:\"isNaN\",value:function(n){function e(t){return n.apply(this,arguments)}return e.toString=function(){return n.toString()},e}(function(n){return n=s(n),isNaN(n.sign)||isNaN(n.layer)||isNaN(n.mag)})},{key:\"isFinite\",value:function(n){function e(t){return n.apply(this,arguments)}return e.toString=function(){return n.toString()},e}(function(n){return n=s(n),isFinite(n.sign)&&isFinite(n.layer)&&isFinite(n.mag)})},{key:\"eq\",value:function(e,t){return s(e).eq(t)}},{key:\"equals\",value:function(e,t){return s(e).eq(t)}},{key:\"neq\",value:function(e,t){return s(e).neq(t)}},{key:\"notEquals\",value:function(e,t){return s(e).notEquals(t)}},{key:\"lt\",value:function(e,t){return s(e).lt(t)}},{key:\"lte\",value:function(e,t){return s(e).lte(t)}},{key:\"gt\",value:function(e,t){return s(e).gt(t)}},{key:\"gte\",value:function(e,t){return s(e).gte(t)}},{key:\"max\",value:function(e,t){return s(e).max(t)}},{key:\"min\",value:function(e,t){return s(e).min(t)}},{key:\"minabs\",value:function(e,t){return s(e).minabs(t)}},{key:\"maxabs\",value:function(e,t){return s(e).maxabs(t)}},{key:\"clamp\",value:function(e,t,i){return s(e).clamp(t,i)}},{key:\"clampMin\",value:function(e,t){return s(e).clampMin(t)}},{key:\"clampMax\",value:function(e,t){return s(e).clampMax(t)}},{key:\"cmp_tolerance\",value:function(e,t,i){return s(e).cmp_tolerance(t,i)}},{key:\"compare_tolerance\",value:function(e,t,i){return s(e).cmp_tolerance(t,i)}},{key:\"eq_tolerance\",value:function(e,t,i){return s(e).eq_tolerance(t,i)}},{key:\"equals_tolerance\",value:function(e,t,i){return s(e).eq_tolerance(t,i)}},{key:\"neq_tolerance\",value:function(e,t,i){return s(e).neq_tolerance(t,i)}},{key:\"notEquals_tolerance\",value:function(e,t,i){return s(e).notEquals_tolerance(t,i)}},{key:\"lt_tolerance\",value:function(e,t,i){return s(e).lt_tolerance(t,i)}},{key:\"lte_tolerance\",value:function(e,t,i){return s(e).lte_tolerance(t,i)}},{key:\"gt_tolerance\",value:function(e,t,i){return s(e).gt_tolerance(t,i)}},{key:\"gte_tolerance\",value:function(e,t,i){return s(e).gte_tolerance(t,i)}},{key:\"pLog10\",value:function(e){return s(e).pLog10()}},{key:\"absLog10\",value:function(e){return s(e).absLog10()}},{key:\"log10\",value:function(e){return s(e).log10()}},{key:\"log\",value:function(e,t){return s(e).log(t)}},{key:\"log2\",value:function(e){return s(e).log2()}},{key:\"ln\",value:function(e){return s(e).ln()}},{key:\"logarithm\",value:function(e,t){return s(e).logarithm(t)}},{key:\"pow\",value:function(e,t){return s(e).pow(t)}},{key:\"pow10\",value:function(e){return s(e).pow10()}},{key:\"root\",value:function(e,t){return s(e).root(t)}},{key:\"factorial\",value:function(e,t){return s(e).factorial()}},{key:\"gamma\",value:function(e,t){return s(e).gamma()}},{key:\"lngamma\",value:function(e,t){return s(e).lngamma()}},{key:\"exp\",value:function(e){return s(e).exp()}},{key:\"sqr\",value:function(e){return s(e).sqr()}},{key:\"sqrt\",value:function(e){return s(e).sqrt()}},{key:\"cube\",value:function(e){return s(e).cube()}},{key:\"cbrt\",value:function(e){return s(e).cbrt()}},{key:\"tetrate\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:c(1,0,1),a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return s(e).tetrate(t,i,a)}},{key:\"iteratedexp\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:c(1,0,1),a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return s(e).iteratedexp(t,i,a)}},{key:\"iteratedlog\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:10,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return s(e).iteratedlog(t,i,a)}},{key:\"layeradd10\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return s(e).layeradd10(t,i)}},{key:\"layeradd\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:10,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return s(e).layeradd(t,i,a)}},{key:\"slog\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:10,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return s(e).slog(t,100,i)}},{key:\"lambertw\",value:function(e,t){return s(e).lambertw(t)}},{key:\"ssqrt\",value:function(e){return s(e).ssqrt()}},{key:\"linear_sroot\",value:function(e,t){return s(e).linear_sroot(t)}},{key:\"pentate\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:c(1,0,1),a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return s(e).pentate(t,i,a)}},{key:\"penta_log\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:10,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return s(e).penta_log(t,100,i)}},{key:\"linear_penta_root\",value:function(e,t){return s(e).linear_penta_root(t)}},{key:\"sin\",value:function(e){return s(e).sin()}},{key:\"cos\",value:function(e){return s(e).cos()}},{key:\"tan\",value:function(e){return s(e).tan()}},{key:\"asin\",value:function(e){return s(e).asin()}},{key:\"acos\",value:function(e){return s(e).acos()}},{key:\"atan\",value:function(e){return s(e).atan()}},{key:\"sinh\",value:function(e){return s(e).sinh()}},{key:\"cosh\",value:function(e){return s(e).cosh()}},{key:\"tanh\",value:function(e){return s(e).tanh()}},{key:\"asinh\",value:function(e){return s(e).asinh()}},{key:\"acosh\",value:function(e){return s(e).acosh()}},{key:\"atanh\",value:function(e){return s(e).atanh()}},{key:\"affordGeometricSeries\",value:function(e,t,i,a){return this.affordGeometricSeries_core(s(e),s(t),s(i),a)}},{key:\"sumGeometricSeries\",value:function(e,t,i,a){return this.sumGeometricSeries_core(e,s(t),s(i),a)}},{key:\"affordArithmeticSeries\",value:function(e,t,i,a){return this.affordArithmeticSeries_core(s(e),s(t),s(i),s(a))}},{key:\"sumArithmeticSeries\",value:function(e,t,i,a){return this.sumArithmeticSeries_core(s(e),s(t),s(i),s(a))}},{key:\"efficiencyOfPurchase\",value:function(e,t,i){return this.efficiencyOfPurchase_core(s(e),s(t),s(i))}},{key:\"randomDecimalForTesting\",value:function(e){if(Math.random()*20<1)return c(0,0,0);var t=Math.random()>.5?1:-1;if(Math.random()*20<1)return c(t,0,1);var i=Math.floor(Math.random()*(e+1)),a=i===0?Math.random()*616-308:Math.random()*16;Math.random()>.9&&(a=Math.trunc(a));var l=Math.pow(10,a);return Math.random()>.9&&(l=Math.trunc(l)),m(t,i,l)}},{key:\"affordGeometricSeries_core\",value:function(e,t,i,a){var l=t.mul(i.pow(a));return r.floor(e.div(l).mul(i.sub(1)).add(1).log10().div(i.log10()))}},{key:\"sumGeometricSeries_core\",value:function(e,t,i,a){return t.mul(i.pow(a)).mul(r.sub(1,i.pow(e))).div(r.sub(1,i))}},{key:\"affordArithmeticSeries_core\",value:function(e,t,i,a){var l=t.add(a.mul(i)),f=l.sub(i.div(2)),g=f.pow(2);return f.neg().add(g.add(i.mul(e).mul(2)).sqrt()).div(i).floor()}},{key:\"sumArithmeticSeries_core\",value:function(e,t,i,a){var l=t.add(a.mul(i));return e.div(2).mul(l.mul(2).plus(e.sub(1).mul(i)))}},{key:\"efficiencyOfPurchase_core\",value:function(e,t,i){return e.div(t).add(e.div(i))}},{key:\"slog_critical\",value:function(e,t){return e>10?t-1:r.critical_section(e,t,we)}},{key:\"tetrate_critical\",value:function(e,t){return r.critical_section(e,t,be)}},{key:\"critical_section\",value:function(e,t,i){t*=10,t<0&&(t=0),t>10&&(t=10),e<2&&(e=2),e>10&&(e=10);for(var a=0,l=0,f=0;f<_.length;++f)if(_[f]==e){a=i[f][Math.floor(t)],l=i[f][Math.ceil(t)];break}else if(_[f]<e&&_[f+1]>e){var g=(e-_[f])/(_[f+1]-_[f]);a=i[f][Math.floor(t)]*(1-g)+i[f+1][Math.floor(t)]*g,l=i[f][Math.ceil(t)]*(1-g)+i[f+1][Math.ceil(t)]*g;break}var h=t-Math.floor(t);return a<=0||l<=0?a*(1-h)+l*h:Math.pow(e,Math.log(a)/Math.log(e)*(1-h)+Math.log(l)/Math.log(e)*h)}},{key:\"excess_slog\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;e=s(e),t=s(t);var a=t;if(t=t.toNumber(),t==1||t<=0)return[new r(r.dNaN),0];if(t>1.444667861009766)return[e.slog(t,100,i),0];var l=r.ln(t).neg(),f=l.lambertw().div(l),g=r.dInf;if(t>1&&(g=l.lambertw(!1).div(l)),t>1.444667861009099&&(f=g=r.fromNumber(Math.E)),e.lt(f))return[e.slog(t,100,i),0];if(e.eq(f))return[new r(r.dInf),0];if(e.eq(g))return[new r(r.dNegInf),2];if(e.gt(g)){var h=g.mul(2),v=a.pow(h),u=0;if(e.gte(h)&&e.lt(v))u=0;else if(e.gte(v)){var M=v;for(u=1;M.lt(e);)if(M=a.pow(M),u=u+1,M.layer>3){var x=Math.floor(e.layer-M.layer+1);M=a.iteratedexp(x,M,i),u=u+x}M.gt(e)&&(M=M.log(t),u=u-1)}else if(e.lt(h)){var w=h;for(u=0;w.gt(e);)w=w.log(t),u=u-1}for(var o=0,F=0,A=.5,d=h,S=r.dZero;A>1e-16;){if(F=o+A,d=h.pow(1-F).mul(v.pow(F)),S=r.iteratedexp(t,u,d),S.eq(e))return[new r(u+F),2];S.lt(e)&&(o+=A),A/=2}return S.neq_tolerance(e,1e-7)?[new r(r.dNaN),0]:[new r(u+o),2]}if(e.lt(g)&&e.gt(f)){var p=f.mul(g).sqrt(),q=a.pow(p),I=0;if(e.lte(p)&&e.gt(q))I=0;else if(e.lte(q)){var N=q;for(I=1;N.gt(e);)N=a.pow(N),I=I+1;N.lt(e)&&(N=N.log(t),I=I-1)}else if(e.gt(p)){var y=p;for(I=0;y.lt(e);)y=y.log(t),I=I-1}for(var V=0,C=0,D=.5,Y=p,L=r.dZero;D>1e-16;){if(C=V+D,Y=p.pow(1-C).mul(q.pow(C)),L=r.iteratedexp(t,I,Y),L.eq(e))return[new r(I+C),1];L.gt(e)&&(V+=D),D/=2}return L.neq_tolerance(e,1e-7)?[new r(r.dNaN),0]:[new r(I+V),1]}throw new Error(\"Unhandled behavior in excess_slog\")}},{key:\"increasingInverse\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:120,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:r.dLayerMax.neg(),l=arguments.length>4&&arguments[4]!==void 0?arguments[4]:r.dLayerMax,f=arguments.length>5&&arguments[5]!==void 0?arguments[5]:r.dLayerMax.neg(),g=arguments.length>6&&arguments[6]!==void 0?arguments[6]:r.dLayerMax;return function(h){if(h=new r(h),a=new r(a),l=new r(l),f=new r(f),g=new r(g),h.isNan()||l.lt(a)||h.lt(f)||h.gt(g))return new r(r.dNaN);var v=function(b){return new r(b)},u=!0;if(l.lt(0))u=!1;else if(a.gt(0))u=!0;else{var M=e(r.dZero);if(M.eq(h))return c(0,0,0);u=h.gt(M),t&&(u=!u)}var x=u,w;if(u){if(l.lt($))u=!0;else if(a.gt($))u=!1;else{var o=e(new r($));u=h.lt(o),t&&(u=!u)}if(u){w=!0;var F=r.pow(10,T).recip();if(l.lt(F))u=!1;else if(a.gt(F))u=!0;else{var A=e(new r(F));u=h.gt(A),t&&(u=!u)}if(u)v=function(b){return r.pow(10,b).recip()};else{var d=r.tetrate(10,T);if(l.lt(d))u=!1;else if(a.gt(d))u=!0;else{var S=e(new r(d));u=h.gt(S),t&&(u=!u)}u?v=function(b){return r.tetrate(10,new r(b).toNumber()).recip()}:v=function(b){return new r(b).gt(Math.log10(Number.MAX_VALUE))?r.dZero:r.tetrate(10,r.pow(10,b).toNumber()).recip()}}}else{if(w=!1,l.lt(T))u=!0;else if(a.gt(T))u=!1;else{var p=e(new r(T));u=h.lt(p),t&&(u=!u)}if(u)v=function(b){return new r(b)};else{var q=r.pow(10,T);if(l.lt(q))u=!0;else if(a.gt(q))u=!1;else{var I=e(new r(q));u=h.lt(I),t&&(u=!u)}if(u)v=function(b){return r.pow(10,b)};else{var N=r.tetrate(10,T);if(l.lt(N))u=!0;else if(a.gt(N))u=!1;else{var y=e(new r(N));u=h.lt(y),t&&(u=!u)}u?v=function(b){return r.tetrate(10,new r(b).toNumber())}:v=function(b){return new r(b).gt(Math.log10(Number.MAX_VALUE))?r.dInf:r.tetrate(10,r.pow(10,b).toNumber())}}}}}else{if(w=!0,l.lt(-$))u=!1;else if(a.gt(-$))u=!0;else{var V=e(new r(-$));u=h.gt(V),t&&(u=!u)}if(u){var C=r.pow(10,T).recip().neg();if(l.lt(C))u=!0;else if(a.gt(C))u=!1;else{var D=e(new r(C));u=h.lt(D),t&&(u=!u)}if(u)v=function(b){return r.pow(10,b).recip().neg()};else{var Y=r.tetrate(10,T).neg();if(l.lt(Y))u=!0;else if(a.gt(Y))u=!1;else{var L=e(new r(Y));u=h.lt(L),t&&(u=!u)}u?v=function(b){return r.tetrate(10,new r(b).toNumber()).recip().neg()}:v=function(b){return new r(b).gt(Math.log10(Number.MAX_VALUE))?r.dZero:r.tetrate(10,r.pow(10,b).toNumber()).recip().neg()}}}else{if(w=!1,l.lt(-T))u=!1;else if(a.gt(-T))u=!0;else{var G=e(new r(-T));u=h.gt(G),t&&(u=!u)}if(u)v=function(b){return r.neg(b)};else{var E=r.pow(10,T).neg();if(l.lt(E))u=!1;else if(a.gt(E))u=!0;else{var X=e(new r(E));u=h.gt(X),t&&(u=!u)}if(u)v=function(b){return r.pow(10,b).neg()};else{var Q=r.tetrate(10,T).neg();if(l.lt(Q))u=!1;else if(a.gt(Q))u=!0;else{var J=e(new r(Q));u=h.gt(J),t&&(u=!u)}u?v=function(b){return r.tetrate(10,new r(b).toNumber()).neg()}:v=function(b){return new r(b).gt(Math.log10(Number.MAX_VALUE))?r.dNegInf:r.tetrate(10,r.pow(10,b).toNumber()).neg()}}}}}for(var Z=x!=w!=t,re=Z?function(O,b){return r.gt(O,b)}:function(O,b){return r.lt(O,b)},W=.001,H=!1,te=!1,U=1,P=r.dOne,B=0,z=!1,R=1;R<i;++R){z=!1,B=U,P=v(U),P.gt(l)&&(P=l,z=!0),P.lt(a)&&(P=a,z=!0);var ee=e(P);if(ee.eq(h)&&!z)break;var j=re(ee,h);if(R>1&&te!=j&&(H=!0),te=j,H?W/=2:W*=2,j!=Z&&P.eq(l)||j==Z&&P.eq(a))return new r(r.dNaN);if(W=Math.abs(W)*(j?-1:1),U+=W,W===0||B==U)break}return v(U)}}}]),r}();k.dZero=c(0,0,0);k.dOne=c(1,0,1);k.dNegOne=c(-1,0,1);k.dTwo=c(1,0,2);k.dTen=c(1,0,10);k.dNaN=c(Number.NaN,Number.NaN,Number.NaN);k.dInf=c(1,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY);k.dNegInf=c(-1,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY);k.dNumberMax=m(1,0,Number.MAX_VALUE);k.dNumberMin=m(1,0,Number.MIN_VALUE);k.dLayerSafeMax=m(1,Number.MAX_SAFE_INTEGER,T-1);k.dLayerSafeMin=m(1,Number.MAX_SAFE_INTEGER,-(T-1));k.dLayerMax=m(1,Number.MAX_VALUE,T-1);k.dLayerMin=m(1,Number.MAX_VALUE,-(T-1));k.fromStringCache=new me(de);s=k.fromValue_noAlloc;m=k.fromComponents;c=k.fromComponents_noNormalize;k.fromMantissaExponent;k.fromMantissaExponent_noNormalize;export{k as default};\n","// H5 Big Number System - Venus API\n// Provides break_eternity.js functionality to H5 games\n\n// Import break_eternity.js as ES6 module from local file (default export)\nimport Decimal from '../lib/break_eternity.js';\n\nfunction createNumbersAPI() {\n // Create the numbers API\n const numbersAPI = {\n // Type detection helper\n isBigNumber: (value) => {\n if (typeof value === 'string' && value.startsWith('BE:')) return true;\n if (value instanceof Decimal) return true;\n if (typeof value === 'number' && (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER)) return true;\n return false;\n },\n \n // Normalize any input to Decimal (for API responses)\n normalize: (value) => {\n if (value instanceof Decimal) return value;\n if (typeof value === 'string' && value.startsWith('BE:')) {\n return new Decimal(value.slice(3));\n }\n return new Decimal(value);\n },\n \n // Common game formatters\n format: {\n incremental: (value) => {\n const decimal = value instanceof Decimal ? value : new Decimal(value);\n const suffixes = ['', 'K', 'M', 'B', 'T', 'Qa', 'Qi', 'Sx', 'Sp', 'Oc', 'No', 'Dc'];\n \n if (decimal.lt(1000)) return decimal.toFixed(0);\n \n const log = decimal.log10();\n const suffixIndex = Math.floor(log / 3);\n \n if (suffixIndex < suffixes.length) {\n const divisor = Decimal.pow(1000, suffixIndex);\n const value = decimal.div(divisor);\n return `${value.toFixed(2)}${suffixes[suffixIndex]}`;\n }\n \n return decimal.toExponential(2);\n }\n },\n \n // NEW: Calculate geometric series cost with full Decimal precision\n calculateGeometricSeriesCost: (baseCost, multiplier, currentQuantity, purchaseAmount) => {\n try {\n const base = new Decimal(baseCost);\n const r = new Decimal(multiplier);\n const q = new Decimal(currentQuantity);\n const n = new Decimal(purchaseAmount);\n\n if (r.eq(1)) {\n // Linear progression: baseCost * n\n return base.mul(n);\n }\n\n // Geometric series: a * (r^n - 1) / (r - 1)\n // where a = baseCost * r^currentQuantity\n const a = base.mul(r.pow(q));\n const numerator = a.mul(r.pow(n).sub(1));\n const denominator = r.sub(1);\n \n return numerator.div(denominator);\n } catch (error) {\n console.error('[VenusAPI] Decimal calculation failed, falling back to regular math:', error);\n // Fallback to regular JavaScript math\n const base = Number(baseCost);\n const r = Number(multiplier);\n if (r === 1) return base * purchaseAmount;\n const a = base * Math.pow(r, currentQuantity);\n return (a * (Math.pow(r, purchaseAmount) - 1)) / (r - 1);\n }\n },\n\n // NEW: Find maximum affordable amount using Decimal precision\n calculateMaxAffordableDecimal: (availableCash, baseCost, multiplier, currentQuantity) => {\n try {\n const cash = new Decimal(availableCash);\n \n // Quick check if even one is affordable\n const costOne = numbersAPI.calculateGeometricSeriesCost(baseCost, multiplier, currentQuantity, 1);\n if (cash.lt(costOne)) return 0;\n\n // Binary search with Decimal precision\n let low = 1;\n let high = 1;\n\n // Find upper bound (exponential search)\n while (high < 1000000) { // Safety limit\n const cost = numbersAPI.calculateGeometricSeriesCost(baseCost, multiplier, currentQuantity, high);\n if (cost.gt(cash)) break;\n low = high;\n high *= 2;\n }\n\n // Binary search for exact maximum\n while (low < high) {\n const mid = Math.floor((low + high + 1) / 2);\n const cost = numbersAPI.calculateGeometricSeriesCost(baseCost, multiplier, currentQuantity, mid);\n \n if (cost.lte(cash)) {\n low = mid;\n } else {\n high = mid - 1;\n }\n }\n\n return low;\n } catch (error) {\n console.error('[VenusAPI] Decimal max affordable calculation failed:', error);\n // Fallback to simple division\n return Math.floor(Number(availableCash) / Number(baseCost));\n }\n },\n\n // NEW: Format Decimal value for currency display\n formatDecimalCurrency: (decimalValue) => {\n try {\n if (numbersAPI.isBigNumber(decimalValue)) {\n return `$${numbersAPI.format.incremental(decimalValue)}`;\n }\n // Fallback for regular numbers\n return `$${numbersAPI.format.incremental(decimalValue)}`;\n } catch (error) {\n console.error('[VenusAPI] Decimal formatting failed:', error);\n return `$${Number(decimalValue).toLocaleString()}`;\n }\n }\n };\n\n // Initialized with break_eternity.js\n \n return numbersAPI;\n}\n\n// Export initialization function for venus-api/index.js\nexport async function initializeNumbers(venusApiInstance) {\n // Initializing numbers system...\n \n // Import createProxiedObject and createProxiedMethod from core\n const { createProxiedObject, createProxiedMethod } = await import('./core.js');\n \n // Create the numbers API (Decimal is already imported as ES6 module)\n const numbersAPI = createNumbersAPI();\n \n // Add numbers API to VenusAPI instance\n venusApiInstance.numbers = createProxiedObject.call(\n venusApiInstance,\n 'numbers',\n {\n isBigNumber: numbersAPI.isBigNumber,\n normalize: numbersAPI.normalize,\n format: {\n incremental: numbersAPI.format.incremental\n },\n // NEW: Expose geometric series calculation methods\n calculateGeometricSeriesCost: numbersAPI.calculateGeometricSeriesCost,\n calculateMaxAffordableDecimal: numbersAPI.calculateMaxAffordableDecimal,\n formatDecimalCurrency: numbersAPI.formatDecimalCurrency,\n // Expose Decimal class for direct use\n Decimal: Decimal\n }\n );\n \n // Numbers system initialized with break_eternity.js\n}\n\n// Export Decimal for direct use in games\nexport { Decimal };","import {\n OpenCommentsResult,\n PostApi,\n PostInfo,\n ShareContext,\n SharePostResult,\n ToggleFollowResult,\n ToggleLikeResult,\n} from './PostApi'\nimport { createMockDelay, MOCK_DELAYS } from '../venus-api/systems/core'\nimport { VenusAPI } from '../venus-api/types'\n\nexport class MockPostApi implements PostApi {\n private readonly venusApi: VenusAPI\n\n constructor(venusApi: VenusAPI) {\n this.venusApi = venusApi\n }\n\n async getPostInfo(): Promise<PostInfo> {\n const venusApi = this.venusApi\n\n await createMockDelay(MOCK_DELAYS.short)\n\n return venusApi._mock.currentPostInteractions\n }\n\n async openCommentsAsync(): Promise<OpenCommentsResult> {\n // console.log('[Venus Mock] Opening comments with options:', options);\n await createMockDelay(MOCK_DELAYS.short)\n\n return {\n opened: true,\n commentsCount: 0,\n }\n }\n\n async sharePostAsync(context: ShareContext): Promise<SharePostResult> {\n console.log('[Venus Mock] Sharing post with additionalInfo:', context)\n await createMockDelay(MOCK_DELAYS.short)\n return {\n shared: true,\n platform: 'mock',\n }\n }\n\n async toggleFollowAsync(): Promise<ToggleFollowResult> {\n const venusApi = this.venusApi\n\n console.log('[Venus Mock] *Toggling follow status')\n await createMockDelay(MOCK_DELAYS.short)\n\n // Toggle following state\n venusApi._mock.currentPostInteractions.isFollowing =\n !venusApi._mock.currentPostInteractions.isFollowing\n\n const isFollowing = venusApi._mock.currentPostInteractions.isFollowing\n\n // Return direct data, not wrapped in success object\n return {\n isFollowing: isFollowing,\n action: isFollowing ? 'followed' : 'unfollowed',\n }\n }\n\n async toggleLikeAsync(): Promise<ToggleLikeResult> {\n const venusApi = this.venusApi\n\n await createMockDelay(MOCK_DELAYS.short)\n\n // Toggle like state and update count\n venusApi._mock.currentPostInteractions.isLiked =\n !venusApi._mock.currentPostInteractions.isLiked\n\n const isLiked = venusApi._mock.currentPostInteractions.isLiked\n\n if (isLiked) {\n venusApi._mock.currentPostInteractions.likesCount++\n } else {\n venusApi._mock.currentPostInteractions.likesCount = Math.max(\n 0,\n venusApi._mock.currentPostInteractions.likesCount - 1,\n )\n }\n\n // Return direct data, not wrapped in success object\n return {\n isLiked: isLiked,\n likesCount: venusApi._mock.currentPostInteractions.likesCount,\n action: isLiked ? 'liked' : 'unliked',\n }\n }\n}\n","import {\n OpenCommentsResult,\n PostApi,\n PostInfo,\n ShareContext,\n SharePostResult,\n ToggleFollowResult,\n ToggleLikeResult,\n} from './PostApi'\nimport { RpcClient } from '../rpc'\nimport { VenusMessageId } from '../VenusMessageId'\n\nexport class RpcPostApi implements PostApi {\n private readonly rpcClient: RpcClient\n\n constructor(rpcClient: RpcClient) {\n this.rpcClient = rpcClient\n }\n\n getPostInfo(): Promise<PostInfo> {\n return this.rpcClient.call(VenusMessageId.GET_POST_INTERACTIONS, {})\n }\n\n openCommentsAsync(): Promise<OpenCommentsResult> {\n return this.rpcClient.call(VenusMessageId.OPEN_COMMENTS, {})\n }\n\n sharePostAsync(context: ShareContext): Promise<SharePostResult> {\n return this.rpcClient.call(VenusMessageId.SHARE_POST, {\n shareContext: context,\n })\n }\n\n toggleFollowAsync(): Promise<ToggleFollowResult> {\n return this.rpcClient.call<ToggleFollowResult>(\n VenusMessageId.TOGGLE_FOLLOW,\n {},\n )\n }\n\n toggleLikeAsync(): Promise<ToggleLikeResult> {\n return this.rpcClient.call<ToggleLikeResult>(VenusMessageId.TOGGLE_LIKE, {})\n }\n}\n","import { VenusAPI } from '../venus-api/types'\nimport { Host } from '../Host'\n\nexport * from './PostApi'\nexport * from './MockPostApi'\nexport * from './RpcPostApi'\n\nexport function initializePost(venusApi: VenusAPI, host: Host) {\n venusApi.getPostInteractionsAsync = () => {\n return host.post.getPostInfo()\n }\n\n venusApi.toggleFollowAsync = () => {\n return host.post.toggleFollowAsync()\n }\n\n venusApi.toggleLikeAsync = () => {\n return host.post.toggleLikeAsync()\n }\n\n venusApi.sharePostAsync = async (options) => {\n await host.post.sharePostAsync(options)\n }\n\n venusApi.openCommentsAsync = async () => {\n await host.post.openCommentsAsync()\n }\n}\n","import { RoomsApi } from './RoomsApi'\n\nexport class MockRoomsApi implements RoomsApi {\n join(roomId: string): Promise<any> {\n throw new Error('Method not implemented.')\n }\n // Mock room storage to simulate real-time rooms in development\n mockRooms = new Map()\n mockMessages = new Map() // roomId -> messages[]\n mockRoomMoves = new Map() // roomId -> moves[]\n mockSubscriptions = new Map() // instanceId -> subscriptions\n\n createRoom(options: any): Promise<any> {\n return Promise.resolve(undefined)\n }\n\n generateRoomId() {\n return 'room_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\n }\n\n // Helper to generate message IDs\n generateMessageId() {\n return 'msg_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\n }\n\n // Helper to generate room codes\n generateRoomCode() {\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'\n let code = ''\n for (let i = 0; i < 6; i++) {\n code += characters.charAt(Math.floor(Math.random() * characters.length))\n }\n return code\n }\n}\n","import { AnalyticsApi, MockAnalyticsApi } from './analytics'\nimport { Host } from './Host.ts'\nimport { AdsApi, MockAdsApi } from './ads'\nimport { createMockStorageApi, StorageApi } from './storage'\nimport { Avatar3dApi, MockAvatarApi } from './avatar3d'\nimport { VenusAPI } from './venus-api/types.ts'\nimport { MockNavigationApi, NavigationApi } from './navigation'\nimport { MockNotificationsApi, NotificationsApi } from './notifications'\nimport {\n ActionSheetItem,\n MockPopupsApi,\n PopupsApi,\n ShowActionSheetOptions,\n} from './popups'\nimport { MockProfileApi, ProfileApi } from './profile'\nimport { CdnApi, MockCdnApi } from './cdn'\nimport { MockTimeApi, TimeApi } from './time'\nimport { MockPostApi, PostApi } from './post'\nimport { AiApi, MockAiApi } from './ai'\nimport { HapticsApi, MockHapticsApi } from './haptics'\nimport { FeaturesApi, MockFeaturesApi } from './features'\nimport { LifecycleApi, MockLifecycleApi } from './lifecycles'\nimport { MockSimulationApi, SimulationApi } from './simulation'\nimport { RoomsApi } from './rooms'\nimport { MockRoomsApi } from './rooms/MockRoomsApi'\nimport { LoggingApi, MockLoggingApi } from './logging'\nimport { IapApi, MockIapApi } from './iap'\nimport { VenusMessageId } from './VenusMessageId'\nimport { MockOverlay } from './MockOverlay'\n\nexport class MockHost implements Host {\n readonly ads: AdsApi\n readonly analytics: AnalyticsApi\n readonly deviceCache: StorageApi\n readonly appStorage: StorageApi\n readonly globalStorage: StorageApi\n readonly avatar3d: Avatar3dApi\n readonly navigation: NavigationApi\n readonly notifications: NotificationsApi\n readonly popups: PopupsApi\n readonly profile: ProfileApi\n readonly cdn: CdnApi\n readonly time: TimeApi\n readonly post: PostApi\n readonly ai: AiApi\n readonly haptics: HapticsApi\n readonly features: FeaturesApi\n readonly lifecycle: LifecycleApi\n readonly simulation: SimulationApi\n readonly rooms: RoomsApi\n readonly logging: LoggingApi\n readonly iap: IapApi\n\n get isInitialized() {\n return this._isInitialized\n }\n\n private readonly venusApi: VenusAPI\n private _isInitialized: boolean = false\n private readonly _overlay: MockOverlay\n\n private readonly _mockLifecyclesApi: MockLifecycleApi\n private readonly _mockAdsApi: MockAdsApi\n\n constructor(venusApi: VenusAPI) {\n this.venusApi = venusApi\n this._overlay = this.createOverlay()\n this._mockAdsApi = new MockAdsApi(this._overlay)\n this._mockLifecyclesApi = new MockLifecycleApi()\n\n this.ads = this._mockAdsApi\n this.analytics = new MockAnalyticsApi()\n const appUrl = typeof window !== 'undefined' ? window.location.href : ''\n this.deviceCache = createMockStorageApi('deviceCache', appUrl)\n this.appStorage = createMockStorageApi('appStorage', appUrl)\n this.globalStorage = createMockStorageApi('globalStorage')\n this.avatar3d = new MockAvatarApi(venusApi)\n this.navigation = new MockNavigationApi(venusApi)\n this.notifications = new MockNotificationsApi(venusApi)\n this.popups = new MockPopupsApi(this._overlay)\n this.profile = new MockProfileApi()\n this.cdn = new MockCdnApi()\n this.time = new MockTimeApi(venusApi)\n this.post = new MockPostApi(venusApi)\n this.ai = new MockAiApi()\n this.haptics = new MockHapticsApi(venusApi)\n this.features = new MockFeaturesApi()\n this.lifecycle = this._mockLifecyclesApi\n this.simulation = new MockSimulationApi()\n this.rooms = new MockRoomsApi()\n this.logging = new MockLoggingApi()\n this.iap = new MockIapApi()\n\n venusApi.isMock = () => true\n }\n initialize(): Promise<void> {\n this._isInitialized = true\n return Promise.resolve()\n }\n\n private updateUiControls() {\n const controls = {\n closeButton: { x: 16, y: 16, width: 32, height: 32 },\n menuButton: {\n x: window.innerWidth - 48,\n y: 16,\n width: 32,\n height: 32,\n },\n feedHeader: { x: 0, y: 0, width: window.innerWidth, height: 56 },\n playButton: {\n x: 0,\n y: window.innerHeight - 60,\n width: window.innerWidth,\n height: 60,\n },\n }\n return controls\n }\n\n private createOverlay(): MockOverlay {\n const venusApi = this.venusApi\n venusApi.config.ui.controls = this.updateUiControls()\n\n // Create overlay container\n const overlayContainer = document.createElement('div')\n overlayContainer.id = 'venus-mock-overlay'\n overlayContainer.style.cssText = `\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 10000;\n `\n document.body.appendChild(overlayContainer)\n\n // Get UI controls from VenusAPI if available\n const uiControls = venusApi.config.ui.controls\n\n // Create play button with dynamic width\n const dynamicPlayButton = {\n x: 0,\n y: window.innerHeight - 60,\n width: window.innerWidth,\n height: 60,\n }\n\n const playButton = this.createOverlayButton(\n 'play',\n 'Play',\n dynamicPlayButton,\n () => {\n this.triggerLifecycleEvent(VenusMessageId.PLAY)\n // Hide play button after clicked\n this.setOverlayElementVisibility('play', false)\n // Hide visibility button after play is clicked\n this.setOverlayElementVisibility('visibility', false)\n },\n 'linear-gradient(90deg, #3b82f6, #1d4ed8)', // Blue gradient instead of pink/blue\n '#FFFFFF',\n )\n overlayContainer.appendChild(playButton)\n\n // Create visibility toggle button above play button (since play spans full width)\n const visibilityButtonSize = 40\n const visibilityButtonMargin = 10\n\n const showHideToggle = this.createOverlayButton(\n 'visibility',\n '👁️',\n {\n x: window.innerWidth - visibilityButtonSize - 20, // Right side with margin\n y:\n window.innerHeight -\n 60 -\n visibilityButtonSize -\n visibilityButtonMargin, // Above play button\n width: visibilityButtonSize,\n height: visibilityButtonSize,\n },\n () => {\n // Toggle visibility state\n if (this._overlay.appVisibilityState === 'visible') {\n this._overlay.appVisibilityState = 'hidden'\n // Update button icon\n if (this._overlay.elements.visibility) {\n this._overlay.elements.visibility.innerHTML = '🚫'\n this._overlay.elements.visibility.title =\n 'App is hidden (click to show)'\n }\n // Trigger onHide event\n this.triggerLifecycleEvent(VenusMessageId.HIDDEN)\n } else {\n this._overlay.appVisibilityState = 'visible'\n // Update button icon\n if (this._overlay.elements.visibility) {\n this._overlay.elements.visibility.innerHTML = '👁️'\n this._overlay.elements.visibility.title =\n 'App is visible (click to hide)'\n }\n // Trigger onShow event with mock context\n this.triggerLifecycleEvent(VenusMessageId.SHOWN)\n }\n },\n 'rgba(59, 130, 246, 0.7)', // Blue background\n '#FFFFFF',\n )\n showHideToggle.title = 'App is visible (click to hide)'\n overlayContainer.appendChild(showHideToggle)\n\n // Create close button\n const closeButton = this.createOverlayButton(\n 'close',\n '✕',\n uiControls.closeButton,\n () => {\n this.triggerLifecycleEvent(VenusMessageId.QUIT)\n },\n 'rgba(59, 130, 246, 0.7)', // Blue background instead of black\n '#FFFFFF',\n )\n overlayContainer.appendChild(closeButton)\n\n // Setup ad overlay container\n const adOverlay = this.setupAdOverlay()\n\n // Setup action sheet overlay container\n const actionSheet = this.setupActionSheetOverlay()\n\n // Show overlay\n // showMockOverlay(true);\n\n // Handle window resize\n window.addEventListener('resize', () => {\n this.updateOverlayLayout()\n })\n\n return {\n container: overlayContainer,\n elements: {\n play: playButton,\n visibility: showHideToggle,\n close: closeButton,\n },\n appVisibilityState: 'visible',\n actionSheetOverlay: actionSheet,\n adOverlay: adOverlay,\n showAdOverlay: () => {\n return this.showAdOverlay('REWARDED VIDEO AD')\n },\n showActionSheet: (items, options) => {\n return this.showActionSheetOverlay(items, options)\n },\n }\n }\n\n private async showAdOverlay(type: any): Promise<boolean> {\n return new Promise((resolve, reject) => {\n const overlay = this._overlay\n const adOverlay = overlay.adOverlay\n\n // Clear any existing content\n overlay.adOverlay.innerHTML = ''\n\n // Add ad type heading\n const heading = document.createElement('h1')\n heading.style.cssText = `\n font-size: 24px;\n margin-bottom: 20px;\n text-align: center;\n `\n heading.innerText =\n type === 'interstitial' ? 'INTERSTITIAL AD' : 'REWARDED VIDEO AD'\n overlay.adOverlay.appendChild(heading)\n\n // Add mock ad content\n const content = document.createElement('div')\n content.style.cssText = `\n width: 300px;\n height: 250px;\n background-color: #1e40af;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 20px;\n border-radius: 8px;\n `\n content.innerText = 'Mock Ad Content'\n adOverlay.appendChild(content)\n\n // Add timer text\n const timer = document.createElement('p')\n timer.style.cssText = `\n margin-bottom: 20px;\n font-size: 16px;\n `\n timer.innerText = 'Normally ads would have a timer...'\n adOverlay.appendChild(timer)\n\n // Add OK button\n const okButton = document.createElement('button')\n okButton.style.cssText = `\n padding: 10px 40px;\n background-color: #2563eb;\n color: white;\n border: none;\n border-radius: 4px;\n font-size: 16px;\n cursor: pointer;\n `\n okButton.innerText = 'Close Ad'\n adOverlay.appendChild(okButton)\n\n // Show the overlay\n adOverlay.style.display = 'flex'\n\n okButton.onclick = () => {\n this.hideAdOverlay()\n resolve(true)\n }\n })\n }\n\n private hideAdOverlay() {\n const overlay = this._overlay\n if (overlay.adOverlay) {\n overlay.adOverlay.style.display = 'none'\n }\n }\n\n private setupActionSheetOverlay() {\n const actionSheetOverlay = document.createElement('div')\n actionSheetOverlay.id = 'venus-action-sheet-overlay'\n actionSheetOverlay.style.cssText = `\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10600;\n font-family: sans-serif;\n display: none;\n `\n document.body.appendChild(actionSheetOverlay)\n return actionSheetOverlay\n }\n\n private createOverlayButton(\n id: string,\n text: string,\n position: { x: number; y: number; width: number; height: number },\n onClick: () => void,\n background: string,\n color: string,\n ) {\n const button = document.createElement('button')\n button.id = `venus-mock-${id}-button`\n button.innerText = text\n button.style.cssText = `\n position: absolute;\n left: ${position.x}px;\n top: ${position.y}px;\n width: ${position.width}px;\n min-width: ${position.width}px;\n height: ${position.height}px;\n background: ${background};\n color: ${color};\n border: none;\n border-radius: 8px;\n font-family: sans-serif;\n font-weight: bold;\n font-size: ${Math.min(position.width, position.height) / 3}px;\n cursor: pointer;\n pointer-events: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.9;\n transition: opacity 0.2s;\n `\n button.addEventListener('click', onClick)\n button.addEventListener('mouseover', () => {\n button.style.opacity = '1'\n })\n button.addEventListener('mouseout', () => {\n button.style.opacity = '0.9'\n })\n\n return button\n }\n\n private updateOverlayLayout() {\n //this.log('Updating mock overlay')\n const venusApi = this.venusApi\n const overlay = this._overlay\n\n venusApi.config.ui.controls = this.updateUiControls()\n\n // Get updated UI controls from VenusAPI\n const uiControls = venusApi.config.ui.controls\n //this.log('Controls: ', venusApi.config.ui.controls)\n\n // Update button positions\n const playBtn = overlay.elements.play\n const playPos = uiControls.playButton\n // Use dynamic width for play button\n playBtn.style.left = `${playPos.x}px`\n playBtn.style.top = `${playPos.y}px`\n playBtn.style.width = `${playPos.width}px`\n playBtn.style.minWidth = `${playPos.width}px`\n playBtn.style.height = `${playPos.height}px`\n\n const menuBtn = overlay.elements.menu\n const menuPos = uiControls.menuButton\n menuBtn.style.left = `${menuPos.x}px`\n menuBtn.style.top = `${menuPos.y}px`\n menuBtn.style.width = `${menuPos.width}px`\n menuBtn.style.minWidth = `${menuPos.width}px`\n menuBtn.style.height = `${menuPos.height}px`\n\n // Update visibility button position above play button\n const visibilityBtn = overlay.elements.visibility\n const visibilityButtonSize = 40\n const visibilityButtonMargin = 10\n\n // Position above the dynamic play button on the right side\n visibilityBtn.style.left = `${window.innerWidth - visibilityButtonSize - 20}px`\n visibilityBtn.style.top = `${window.innerHeight - 60 - visibilityButtonSize - visibilityButtonMargin}px`\n visibilityBtn.style.minWidth = `${visibilityButtonSize}px`\n }\n\n private triggerLifecycleEvent(name: string) {\n console.log('Trigger Lifecycle Event: ', name)\n\n if (name == VenusMessageId.PLAY) {\n this._mockLifecyclesApi.triggerOnPlayCallbacks({\n hudInsets: { top: 60, right: 0, bottom: 0, left: 0 },\n // shareData: {\n // title: 'Mock Share Title',\n // description: 'Mock share description for testing',\n // },\n format: 'post',\n // stackData: null,\n })\n } else if (name == VenusMessageId.PAUSE) {\n this._mockLifecyclesApi.triggerOnPauseCallbacks()\n } else if (name == VenusMessageId.RESUME) {\n this._mockLifecyclesApi.triggerOnResumeCallbacks()\n } else if (name == VenusMessageId.QUIT) {\n this._mockLifecyclesApi.triggerOnQuitCallbacks()\n setTimeout(() => {\n this.setOverlayElementVisibility('play', true)\n this.setOverlayElementVisibility('visibility', true)\n }, 100) // Small delay to ensure handler completes first\n } else if (name == VenusMessageId.SHOWN) {\n this._mockLifecyclesApi.triggerOnShowCallbacks({\n hudInsets: { top: 60, bottom: 120, left: 0, right: 0 },\n })\n } else if (name == VenusMessageId.HIDDEN) {\n this._mockLifecyclesApi.triggerOnHideCallbacks()\n }\n }\n\n private setOverlayElementVisibility(id: string, visible: boolean) {\n const overlay = this._overlay\n if (overlay.elements[id]) {\n overlay.elements[id].style.display = visible ? 'flex' : 'none'\n }\n }\n\n private setupAdOverlay() {\n const adOverlay = document.createElement('div')\n adOverlay.id = 'venus-ad-overlay'\n adOverlay.style.cssText = `\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(37, 99, 235, 0.9);\n color: white;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n z-index: 10500;\n font-family: sans-serif;\n display: none;\n `\n document.body.appendChild(adOverlay)\n return adOverlay\n }\n\n private log(msg: string, ...args: any[]) {\n console.log(`[Venus Mock] ${msg}`, ...args)\n }\n\n private showActionSheetOverlay(\n items: ActionSheetItem[],\n options?: ShowActionSheetOptions,\n ): Promise<string | number | null> {\n this.log('Showing ActionSheetOverlay...')\n\n return new Promise((resolve, reject) => {\n const overlay = this._overlay\n // Clear any existing content and event listeners\n overlay.actionSheetOverlay.innerHTML = ''\n overlay.actionSheetOverlay.style.display = 'flex'\n\n // Create action sheet container\n const actionSheet = document.createElement('div')\n actionSheet.className = 'venus-action-sheet'\n actionSheet.style.cssText = `\n background-color: white;\n border-radius: 8px;\n width: 80%;\n max-width: 400px;\n max-height: 80%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n color: black;\n `\n\n // Add title if provided\n if (options?.title) {\n const titleContainer = document.createElement('div')\n titleContainer.style.cssText = `\n padding: 16px;\n border-bottom: 1px solid #eaeaea;\n font-weight: bold;\n font-size: 18px;\n text-align: center;\n color: black;\n `\n titleContainer.innerText = options.title\n actionSheet.appendChild(titleContainer)\n }\n\n // Add message if provided\n if (options?.message) {\n const messageContainer = document.createElement('div')\n messageContainer.style.cssText = `\n padding: 8px 16px;\n color: #666;\n font-size: 14px;\n text-align: center;\n `\n messageContainer.innerText = options.message\n actionSheet.appendChild(messageContainer)\n }\n\n // Add options\n const optionsContainer = document.createElement('div')\n optionsContainer.style.cssText = `\n overflow-y: auto;\n max-height: 300px;\n `\n\n items.forEach((item, index) => {\n const optionItem = document.createElement('div')\n optionItem.style.cssText = `\n padding: 12px 16px;\n border-bottom: 1px solid #eaeaea;\n cursor: pointer;\n display: flex;\n align-items: center;\n transition: background-color 0.2s;\n color: black;\n `\n\n // Add hover effect\n optionItem.addEventListener('mouseover', () => {\n optionItem.style.backgroundColor = '#f5f5f5'\n })\n\n optionItem.addEventListener('mouseout', () => {\n optionItem.style.backgroundColor = 'white'\n })\n\n // Add icon if provided\n if (item.icon) {\n const iconSpan = document.createElement('span')\n iconSpan.style.cssText = `\n margin-right: 12px;\n font-size: 16px;\n `\n iconSpan.innerText = item.icon\n optionItem.appendChild(iconSpan)\n }\n\n // Add label\n const labelSpan = document.createElement('span')\n labelSpan.style.cssText = `\n color: black;\n `\n labelSpan.innerText = item.label\n optionItem.appendChild(labelSpan)\n\n // Handle click\n optionItem.addEventListener('click', () => {\n this.hideActionSheetOverlay()\n const optionId = item.id !== undefined ? item.id : index\n resolve(optionId)\n })\n\n optionsContainer.appendChild(optionItem)\n })\n\n actionSheet.appendChild(optionsContainer)\n\n // Add cancel button only if cancel is not disabled\n if (!options?.disableCancel) {\n const cancelButton = document.createElement('div')\n cancelButton.style.cssText = `\n padding: 14px 16px;\n text-align: center;\n font-weight: bold;\n cursor: pointer;\n color: #3b82f6;\n border-top: 1px solid #eaeaea;\n `\n cancelButton.innerText = options?.cancelButtonText || 'Cancel'\n cancelButton.addEventListener('click', () => {\n this.hideActionSheetOverlay()\n resolve(null)\n })\n\n actionSheet.appendChild(cancelButton)\n }\n\n // Add close button (X) in the top-right corner only if cancel is not disabled\n if (!options?.disableCancel) {\n const closeButton = document.createElement('div')\n closeButton.style.cssText = `\n position: absolute;\n top: 8px;\n right: 8px;\n width: 24px;\n height: 24px;\n border-radius: 12px;\n background-color: rgba(0,0,0,0.1);\n color: #666;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n font-size: 14px;\n `\n closeButton.innerText = '✕'\n closeButton.addEventListener('click', () => {\n this.hideActionSheetOverlay()\n resolve(null)\n })\n\n actionSheet.appendChild(closeButton)\n overlay.actionSheetOverlay.appendChild(actionSheet)\n }\n })\n }\n\n hideActionSheetOverlay() {\n const overlay = this._overlay\n if (overlay.actionSheetOverlay) {\n overlay.actionSheetOverlay.style.display = 'none'\n }\n }\n}\n","import {\n OnNotificationCallback,\n OnRequestCallback,\n OnResponseCallback,\n RpcNotification,\n RpcRequest,\n RpcResponse,\n RpcTransport,\n Subscription,\n} from './rpc'\nimport { VenusMessageId } from './VenusMessageId'\n\nexport interface VenusMessage {\n type: string\n direction: string\n data?: {\n requestId?: string\n success?: boolean\n\n //NOTE(Zee): Some things send 'value' others send 'data'\n value?: any\n data?: any\n\n error?: string\n\n script?: string\n }\n instanceId: string\n timestamp: number\n}\n\ndeclare global {\n interface Window {\n _venusInitState?: {\n poolId: string\n apiInjected: boolean\n gameInitialized: boolean\n }\n ReactNativeWebView?: {\n postMessage(message: string): void\n }\n venus: {\n _config: {\n locale: string\n instanceId: string\n context?: any\n profile?: {\n id?: string\n username?: string\n }\n environment: {\n browserInfo?: {\n language: string\n }\n }\n _handlers: Record<string, any>\n }\n _fetchFromCdn: (url: string) => Promise<string>\n _roomSubscriptions: any\n }\n }\n}\n\nexport type OnVenusMessageCallback = (message: VenusMessage) => void\n\nexport class VenusTransport implements RpcTransport {\n private readonly messageHandler: (event: MessageEvent) => void\n\n private readonly onNotificationCallbacks: OnNotificationCallback[] = []\n private readonly onNotificationCallbacksToRemove: OnNotificationCallback[] =\n []\n\n private readonly onVenusMessageCallbacks: OnVenusMessageCallback[] = []\n private readonly onResponseCallbacks: OnResponseCallback[] = []\n private readonly onResponseCallbacksToRemove: OnResponseCallback[] = []\n\n private _instanceId: string | null = null\n private isStarted: boolean = false\n private isProcessingMessage: boolean = false\n\n constructor() {\n this.messageHandler = async (event) => {\n this.isProcessingMessage = true\n\n let message: VenusMessage\n if (typeof event.data === 'string') {\n //this.log(`Message is a string. Parsing...`)\n message = JSON.parse(event.data)\n } else {\n message = event.data as VenusMessage\n }\n\n if (!message) {\n this.logInfo('No message found. Ignoring message...')\n return\n }\n\n this.logInfo(`message received:\\n${JSON.stringify(message, null, 2)}`)\n\n this.notifyVenusMessageReceived(message)\n\n if (\n message.type === VenusMessageId.PLAY ||\n message.type === VenusMessageId.PAUSE ||\n message.type === VenusMessageId.RESUME ||\n message.type === VenusMessageId.SHOWN ||\n message.type === VenusMessageId.HIDDEN ||\n message.type === VenusMessageId.CLEANUP ||\n message.type === VenusMessageId.QUIT\n ) {\n const notification: RpcNotification = {\n type: 'rpc-notification',\n id: message.type,\n payload: message.data,\n }\n this.handleNotification(notification)\n\n // NOTE(Zee): This early return is dangerous here. we have to make sure isProcessingMessage is set to false!\n this.isProcessingMessage = false\n return\n }\n\n const messageData = message.data\n if (!messageData) {\n this.logWarn('No data found. Ignoring message...')\n this.isProcessingMessage = false\n return\n }\n\n const requestId = messageData.requestId\n if (!requestId) {\n this.logWarn('No requestId. Ignoring message...')\n this.isProcessingMessage = false\n return\n }\n\n if (message.type !== VenusMessageId.H5_RESPONSE) {\n this.logWarn(`Ignoring unknown message type: ${message.type}`)\n this.isProcessingMessage = false\n return\n }\n\n const success = messageData.success\n let error = undefined\n if (!success) {\n error = {\n message: messageData.error || 'Unknown error',\n }\n }\n\n // Result can be either inside value or data\n let result = messageData.value\n if (result === undefined) {\n result = messageData.data\n }\n\n const response: RpcResponse = {\n type: 'rpc-response',\n id: requestId,\n result: result,\n method: message.type,\n error: error,\n }\n\n await this.handleResponse(response)\n this.isProcessingMessage = false\n }\n }\n onNotification(callback: OnNotificationCallback): Subscription {\n this.onNotificationCallbacks.push(callback)\n return {\n unsubscribe: () => {\n if (this.isProcessingMessage) {\n this.onNotificationCallbacks.push(callback)\n } else {\n this.removeOnNotificationCallback(callback)\n }\n },\n }\n }\n\n onRequest(callback: OnRequestCallback): Subscription {\n throw new Error('Method not implemented.')\n }\n\n onResponse(callback: OnResponseCallback): Subscription {\n this.onResponseCallbacks.push(callback)\n return {\n unsubscribe: () => {\n if (this.isProcessingMessage) {\n this.onResponseCallbacksToRemove.push(callback)\n } else {\n this.removeOnResponseCallback(callback)\n }\n },\n }\n }\n\n public get instanceId(): string | null {\n return this._instanceId\n }\n\n public set instanceId(instanceId: string) {\n this._instanceId = instanceId\n }\n\n sendRequest(request: RpcRequest): void {\n const instanceId = this.instanceId || 'unknown'\n const method = request.method\n const message: VenusMessage = {\n type: method,\n direction: 'H5_TO_APP',\n data: {\n ...request.args,\n requestId: request.id,\n },\n instanceId: instanceId,\n timestamp: Date.now(),\n }\n this.sendVenusMessage(message)\n }\n\n sendVenusMessage(message: VenusMessage): void {\n const messageAsString = JSON.stringify(message, null, 2)\n this.logInfo(`Sending message:\\n${messageAsString}`)\n const reactNativeWebView = window.ReactNativeWebView\n if (reactNativeWebView) {\n reactNativeWebView.postMessage(messageAsString)\n } else {\n window.parent.postMessage(messageAsString, '*')\n }\n }\n\n sendResponse(response: RpcResponse): void {\n throw new Error('Method not implemented.')\n }\n\n start() {\n if (this.isStarted) {\n return\n }\n this.isStarted = true\n window.addEventListener('message', this.messageHandler, true)\n this.logInfo(`Started`)\n }\n\n stop() {\n if (!this.isStarted) {\n return\n }\n this.isStarted = false\n window.removeEventListener('message', this.messageHandler)\n this.logInfo(`Stopped`)\n }\n\n private handleNotification(notification: RpcNotification): void {\n this.logInfo('Notification received: ', notification.id)\n for (const callback of this.onNotificationCallbacks) {\n callback(notification)\n }\n\n for (const callback of this.onNotificationCallbacksToRemove) {\n this.removeOnNotificationCallback(callback)\n }\n this.onNotificationCallbacksToRemove.length = 0\n }\n\n private async handleResponse(response: RpcResponse): Promise<void> {\n for (const callback of this.onResponseCallbacks) {\n const consumed = await callback(response)\n if (consumed) {\n break\n }\n }\n\n for (const callback of this.onResponseCallbacksToRemove) {\n this.removeOnResponseCallback(callback)\n }\n this.onResponseCallbacksToRemove.length = 0\n }\n\n private removeOnResponseCallback(callback: OnResponseCallback): void {\n this.onResponseCallbacks.splice(\n this.onResponseCallbacks.indexOf(callback),\n 1,\n )\n }\n\n private removeOnNotificationCallback(callback: OnNotificationCallback): void {\n this.onNotificationCallbacks.splice(\n this.onNotificationCallbacks.indexOf(callback),\n 1,\n )\n }\n\n private logInfo(message: string, ...params: any[]) {\n console.log(`[Venus Transport] ${message}`, ...params)\n }\n\n private logWarn(message: string, ...params: any[]) {\n console.warn(`[Venus Transport] ${message}`, ...params)\n }\n\n onVenusMessage(callback: OnVenusMessageCallback): Subscription {\n this.onVenusMessageCallbacks.push(callback)\n return {\n unsubscribe: () => {\n this.onVenusMessageCallbacks.splice(\n this.onVenusMessageCallbacks.indexOf(callback),\n 1,\n )\n },\n }\n }\n\n private notifyVenusMessageReceived(message: VenusMessage) {\n for (const callback of this.onVenusMessageCallbacks) {\n callback(message)\n }\n }\n}\n","import {\n NotificationsApi,\n ScheduleLocalNotification,\n ScheduleLocalNotificationOptions,\n} from './NotificationsApi'\nimport { RpcClient } from '../rpc'\nimport { VenusMessageId } from '../VenusMessageId'\n\nexport class RpcNotificationsApi implements NotificationsApi {\n private readonly rpcClient: RpcClient\n\n constructor(rpcClient: RpcClient) {\n this.rpcClient = rpcClient\n }\n\n async scheduleLocalNotification(\n title: string,\n body: string,\n options?: ScheduleLocalNotificationOptions,\n ): Promise<string | null> {\n const request: ScheduleLocalNotificationRequest = {\n title: title,\n body: body,\n data: options?.payload,\n key: options?.groupId,\n priority: options?.priority || 1,\n }\n const response =\n await this.rpcClient.call<ScheduleLocalNotificationResponse>(\n VenusMessageId.SCHEDULE_LOCAL_NOTIFICATION,\n request,\n )\n\n if (response.scheduled) {\n return response.id\n }\n return null\n }\n\n async cancelLocalNotification(id: string): Promise<boolean> {\n const result = await this.rpcClient.call<CancelLocalNotificationResult>(\n VenusMessageId.CANCEL_LOCAL_NOTIFICATION,\n {\n id: id,\n },\n )\n return result.canceled\n }\n\n async getAllScheduledLocalNotifications(): Promise<\n ScheduleLocalNotification[]\n > {\n const response =\n await this.rpcClient.call<GetAllLocalNotificationsResponse>(\n VenusMessageId.GET_ALL_SCHEDULED_LOCAL_NOTIFICATIONS,\n {},\n )\n\n const notifications: ScheduleLocalNotification[] =\n response.notifications.map((notif) => {\n return {\n id: notif.identifier,\n title: notif.content.title,\n body: notif.content.body,\n payload: notif.content.data,\n }\n })\n\n return notifications\n }\n\n async isLocalNotificationsEnabled(): Promise<boolean> {\n const response =\n await this.rpcClient.call<IsLocalNotificationsEnabledResponse>(\n VenusMessageId.IS_LOCAL_NOTIFICATIONS_ENABLED,\n {},\n )\n return response.enabled\n }\n\n async setLocalNotificationsEnabled(enabled: boolean): Promise<boolean> {\n const response =\n await this.rpcClient.call<SetLocalNotificationsEnabledResponse>(\n VenusMessageId.SET_LOCAL_NOTIFICATIONS_ENABLED,\n {\n enabled: enabled,\n },\n )\n return response.enabled\n }\n}\n\ninterface CancelLocalNotificationResult {\n id: string\n canceled: boolean\n}\n\ninterface ScheduleLocalNotificationRequest {\n title: string\n body: string\n priority: number\n key?: string // Optional key for grouping related notifications\n data?: Record<string, any>\n}\n\ninterface ScheduleLocalNotificationResponse {\n id: string\n scheduled: boolean\n}\n\ninterface IsLocalNotificationsEnabledResponse {\n enabled: boolean\n}\n\ninterface SetLocalNotificationsEnabledResponse {\n enabled: boolean\n}\n\ninterface GetAllLocalNotificationsResponse {\n notifications: NotificationRequest[]\n count: number\n}\n\ninterface NotificationRequest {\n identifier: string\n content: NotificationContent\n}\n\nexport type NotificationContent = {\n title: string | null\n subtitle: string | null\n body: string | null\n data?: Record<string, any>\n}\n","export class VenusRoom {\n public readonly id: string\n public name: string\n public players: any[]\n public maxPlayers: number\n public gameType: string\n public appId: string\n public type: any\n public createdBy: string\n public createdAt: number\n public updatedAt: number\n public isPrivate: boolean\n public currentPlayers: string[]\n public status: any\n public customMetadata: Record<string, any>\n public admins: string[]\n public roomCode: string\n public description: string\n public data: Record<string, any>\n public version: string\n\n private _subscriptions = new Map()\n\n constructor(roomData: any) {\n this.id = roomData.id\n this.name = roomData.name\n this.players = roomData.currentPlayers || []\n this.maxPlayers = roomData.maxPlayers\n this.gameType = roomData.gameType\n\n this.appId = roomData.appId\n this.type = roomData.type\n this.createdBy = roomData.createdBy\n this.createdAt = roomData.createdAt\n this.updatedAt = roomData.updatedAt\n this.isPrivate = roomData.isPrivate\n this.currentPlayers = roomData.currentPlayers || []\n this.status = roomData.status\n this.customMetadata = roomData.customMetadata || {}\n this.admins = roomData.admins || []\n this.roomCode = roomData.roomCode\n this.description = roomData.description\n this.data = roomData.data || {}\n this.version = roomData.version\n\n console.log(`VenusRoom: Created room object for ${this.id}`, {\n hasCustomMetadata: !!this.customMetadata,\n hasGameState: !!this.customMetadata?.rules?.gameState,\n gamePhase: this.customMetadata?.rules?.gameState?.phase,\n currentPlayer: this.customMetadata?.rules?.gameState?.currentPlayer,\n })\n }\n\n private updateFromRoomData(newRoomData: any) {\n if (newRoomData.id === this.id) {\n // Update all room properties with fresh data\n this.name = newRoomData.name || this.name\n this.players = newRoomData.currentPlayers || this.players\n this.maxPlayers = newRoomData.maxPlayers || this.maxPlayers\n this.gameType = newRoomData.gameType || this.gameType\n this.currentPlayers = newRoomData.currentPlayers || this.currentPlayers\n this.customMetadata = newRoomData.customMetadata || this.customMetadata\n this.data = newRoomData.data || this.data\n this.status = newRoomData.status || this.status\n this.updatedAt = newRoomData.updatedAt || this.updatedAt\n\n console.log(`VenusRoom: Updated room object ${this.id} with fresh data`, {\n hasCustomMetadata: !!this.customMetadata,\n hasGameState: !!this.customMetadata?.rules?.gameState,\n gamePhase: this.customMetadata?.rules?.gameState?.phase,\n currentPlayer: this.customMetadata?.rules?.gameState?.currentPlayer,\n })\n }\n }\n\n // NEW: Generic message handler for room-manager.js integration\n private onMessage(callback: any) {\n const subscriptionId =\n 'messages_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\n\n // Set up subscriptions to all event types that this room might receive\n if (!window.venus._roomSubscriptions.allEvents) {\n window.venus._roomSubscriptions.allEvents = {}\n }\n if (!window.venus._roomSubscriptions.allEvents[this.id]) {\n window.venus._roomSubscriptions.allEvents[this.id] = []\n }\n\n window.venus._roomSubscriptions.allEvents[this.id].push(callback)\n\n this._subscriptions.set(subscriptionId, {\n type: 'allEvents',\n callback: callback,\n })\n\n return {\n unsubscribe: () => {\n const callbacks =\n window.venus._roomSubscriptions.allEvents[this.id] || []\n const index = callbacks.indexOf(callback)\n if (index > -1) callbacks.splice(index, 1)\n this._subscriptions.delete(subscriptionId)\n },\n }\n }\n}\n","import { RoomsApi } from './RoomsApi'\nimport { RpcClient } from '../rpc'\nimport { VenusMessageId } from '../VenusMessageId'\nimport { VenusRoom } from './VenusRoom'\n\nexport class RpcRoomsApi implements RoomsApi {\n private readonly rpcClient: RpcClient\n\n constructor(rpcClient: RpcClient) {\n this.rpcClient = rpcClient\n }\n join(roomId: string): Promise<any> {\n throw new Error('Method not implemented.')\n }\n\n async createRoom(options: any): Promise<any> {\n const response = await this.rpcClient.call<any>(\n VenusMessageId.H5_ROOM_CREATE,\n {\n options: options,\n },\n )\n if (response.success === false) {\n throw new Error(response.error || 'Failed to create room')\n }\n\n // The response IS the room data when coming from the real API\n const roomData = response.roomData || response\n const room = new VenusRoom(roomData)\n // 🔧 FIX: Register room object for subscription updates\n //window.venus._roomObjects[room.id] = room\n return room\n }\n\n async joinOrCreateRoom(options: any) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_JOIN_OR_CREATE,\n {\n options: options,\n },\n )\n if (response.success === false) {\n throw new Error(response.error || 'Failed to join or create room')\n }\n\n const data = response.value || response\n const room = new VenusRoom(data.roomData)\n // 🔧 FIX: Register room object for subscription updates\n // window.venus._roomObjects[room.id] = room\n\n return {\n action: data.action,\n room: room,\n playersJoined: data.playersJoined,\n }\n }\n\n async listPublicRooms(gameType: any, limit = 20) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_LIST_PUBLIC,\n {\n gameType: gameType,\n limit: limit,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to list public rooms')\n }\n\n // Return array of room data (not room objects since user hasn't joined)\n return response.rooms || []\n }\n\n async searchRooms(searchQuery: any, gameType: any, limit = 20) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_SEARCH,\n {\n searchQuery: searchQuery,\n gameType: gameType,\n limit: limit,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to search rooms')\n }\n\n return response.rooms || []\n }\n\n async joinRoomByCode(roomCode: string) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_JOIN_BY_CODE,\n {\n roomCode: roomCode,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to join room by code')\n }\n\n // The response IS the room data when coming from the real API\n const roomData = response.roomData || response\n const room = new VenusRoom(roomData)\n // 🔧 FIX: Register room object for subscription updates\n // window.venus._roomObjects[room.id] = room\n return room\n }\n\n // Get user's rooms with optional filtering\n async getUserRooms(appId: string, includeArchived = false) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_GET_USER_ROOMS,\n {\n appId: appId,\n includePersonal: includeArchived,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to get user rooms')\n }\n\n // Convert raw room data to VenusRoom objects and filter out corrupted entries\n const rawRooms = response.rooms || []\n const venusRooms = []\n\n for (const roomData of rawRooms) {\n // Skip rooms with missing canonical ID\n if (!roomData.id) {\n console.warn('getUserRooms: Skipping room with missing ID:', roomData)\n continue\n }\n\n try {\n const venusRoom = new VenusRoom(roomData)\n // 🔧 FIX: Register room object for subscription updates\n //window.venus._roomObjects[venusRoom.id] = venusRoom\n venusRooms.push(venusRoom)\n } catch (error) {\n console.warn(\n 'getUserRooms: Failed to create VenusRoom object:',\n error,\n roomData,\n )\n // Continue processing other rooms\n }\n }\n\n return venusRooms\n }\n\n // Convenience method for common use case\n quickMatch(gameType: any) {\n return this.joinOrCreateRoom({\n matchCriteria: {\n gameType: gameType,\n isPrivate: false,\n hasSpace: true,\n },\n createOptions: {\n name: gameType + ' Game',\n gameType: gameType,\n isPrivate: false,\n maxPlayers: 4, // sensible default\n },\n })\n }\n\n isRoomSystemEnabled = function () {\n return true\n }\n\n // Enhanced room creation with game rules\n async createGameRoom(options: any) {\n const enhancedOptions = {\n ...options,\n customMetadata: {\n ...options.customMetadata,\n rules: {\n ruleEngine: options.ruleEngine || 'basic',\n validateMessages: options.validateMessages || false,\n randomizePlayerOrder: options.randomizePlayerOrder || false,\n clientValidation: options.clientValidation || false,\n allowedMessageTypes: options.allowedMessageTypes || {},\n gameState: {\n phase: 'waiting',\n currentPlayer: null,\n turnOrder: [],\n playerStates: {},\n ...options.initialGameState,\n },\n ...options.rules,\n },\n },\n }\n\n return this.createRoom(enhancedOptions)\n }\n\n // Convenience method for subscribing to all game events\n subscribeToGameEvents(roomId: string, callback: any) {\n if (!window.venus._roomSubscriptions.gameEvents[roomId]) {\n window.venus._roomSubscriptions.gameEvents[roomId] = []\n }\n window.venus._roomSubscriptions.gameEvents[roomId].push(callback)\n\n return {\n unsubscribe: () => {\n const callbacks =\n window.venus._roomSubscriptions.gameEvents[roomId] || []\n const index = callbacks.indexOf(callback)\n if (index > -1) callbacks.splice(index, 1)\n },\n }\n }\n\n async updateData(room: VenusRoom, updates: any, merge = true) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_UPDATE_DATA,\n {\n roomId: room.id,\n updates: updates,\n merge: merge,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to update room data')\n }\n return response.data\n }\n\n async getData(room: VenusRoom) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_GET_DATA,\n {\n roomId: room.id,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to get room data')\n }\n return response.data\n }\n\n async sendMessage(venusRoom: VenusRoom, messageData: any) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_SEND_MESSAGE,\n {\n roomId: venusRoom.id,\n message: messageData,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to send message')\n }\n return response.messageId\n }\n\n async leave(room: VenusRoom) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_LEAVE,\n {\n roomId: room.id,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to leave room')\n }\n\n // Clean up all subscriptions\n // this._subscriptions.forEach((sub) => {\n // if (sub.unsubscribe) sub.unsubscribe()\n // })\n // this._subscriptions.clear()\n //\n // // 🔧 FIX: Remove room object from global registry when leaving\n // if (window.venus._roomObjects[this.id]) {\n // delete window.venus._roomObjects[this.id]\n // console.log(\n // `[Venus Rooms] 🧹 Removed room object ${this.id} from global registry`,\n // )\n // }\n\n return response\n }\n\n async startGame(room: VenusRoom, gameConfig = {}, turnOrder = null) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_START_GAME,\n {\n roomId: room.id,\n gameConfig: gameConfig,\n turnOrder: turnOrder,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to start game')\n }\n return response.data\n }\n\n async proposeMove(room: VenusRoom, proposalPayload: any) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_PROPOSE_MOVE,\n {\n roomId: room.id,\n gameSpecificState: proposalPayload.gameSpecificState,\n moveType: proposalPayload.moveType,\n clientContext: proposalPayload.clientContext,\n clientProposalId: proposalPayload.clientProposalId,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to propose move')\n }\n return response.data\n }\n\n async validateMove(\n room: VenusRoom,\n moveId: string,\n isValid: boolean,\n reason = null,\n validatorId = null,\n ) {\n console.log(`[Venus Rooms] Validating move ${moveId}: ${isValid}`)\n // TODO: Implement actual validation logic when peer validation is added\n // For now, just return success to maintain compatibility\n return { success: true, moveId, isValid, reason }\n }\n\n async roomSubscribeToGameEvents(room: VenusRoom, callback: any) {\n const subscriptionId =\n 'game_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\n\n // TODO: Fix this madness\n if (!window.venus._roomSubscriptions.gameEvents[room.id]) {\n window.venus._roomSubscriptions.gameEvents[room.id] = []\n }\n window.venus._roomSubscriptions.gameEvents[room.id].push(callback)\n\n // this._subscriptions.set(subscriptionId, {\n // type: 'gameEvents',\n // callback: callback\n // });\n //\n // return {\n // unsubscribe: () => {\n // const callbacks = window.venus._roomSubscriptions.gameEvents[this.id] || [];\n // const index = callbacks.indexOf(callback);\n // if (index > -1) callbacks.splice(index, 1);\n // this._subscriptions.delete(subscriptionId);\n // }\n // };\n }\n\n subscribe(room: VenusRoom, options: any = {}) {\n const subscriptionIds: any[] = []\n const roomId = room.id\n\n // Set up data subscription if requested\n if (options.onData) {\n const dataSubId =\n 'data_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\n\n if (!window.venus._roomSubscriptions.data[roomId]) {\n window.venus._roomSubscriptions.data[roomId] = []\n }\n window.venus._roomSubscriptions.data[roomId].push(options.onData)\n subscriptionIds.push({\n type: 'data',\n id: dataSubId,\n callback: options.onData,\n })\n }\n\n // Set up messages subscription if requested\n if (options.onMessages) {\n const msgSubId =\n 'messages_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\n\n if (!window.venus._roomSubscriptions.messages[roomId]) {\n window.venus._roomSubscriptions.messages[roomId] = []\n }\n window.venus._roomSubscriptions.messages[roomId].push(options.onMessages)\n subscriptionIds.push({\n type: 'messages',\n id: msgSubId,\n callback: options.onMessages,\n })\n }\n\n // Set up game events subscription if requested\n if (options.onMoves || options.onGameEvents) {\n const handler = options.onMoves || options.onGameEvents\n const gameSubId =\n 'game_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\n\n if (!window.venus._roomSubscriptions.gameEvents[roomId]) {\n window.venus._roomSubscriptions.gameEvents[roomId] = []\n }\n window.venus._roomSubscriptions.gameEvents[roomId].push(handler)\n subscriptionIds.push({\n type: 'gameEvents',\n id: gameSubId,\n callback: handler,\n })\n }\n\n // Start the actual Firebase subscription if this is the first subscription\n const needsSubscription =\n subscriptionIds.length > 0 &&\n (!window.venus._roomSubscriptions.data[roomId] ||\n window.venus._roomSubscriptions.data[roomId].length <= 1) &&\n (!window.venus._roomSubscriptions.messages[roomId] ||\n window.venus._roomSubscriptions.messages[roomId].length <= 1) &&\n (!window.venus._roomSubscriptions.gameEvents[roomId] ||\n window.venus._roomSubscriptions.gameEvents[roomId].length <= 1)\n\n if (needsSubscription) {\n this.rpcClient\n .call(VenusMessageId.H5_ROOM_SUBSCRIBE, {\n roomId: roomId,\n subscribeToData: !!options.onData,\n subscribeToMessages: !!options.onMessages,\n subscribeToProposedMoves: !!(options.onMoves || options.onGameEvents),\n })\n .catch((error) => {\n console.error('Failed to set up room subscription:', error)\n })\n }\n\n // Return composite unsubscribe function (idempotent)\n let called = false\n return () => {\n if (called) return\n called = true\n\n // Remove all callbacks\n subscriptionIds.forEach((sub: { type: string; callback: any }) => {\n const callbacks =\n window.venus._roomSubscriptions[sub.type][roomId] || []\n const index = callbacks.indexOf(sub.callback)\n if (index > -1) callbacks.splice(index, 1)\n })\n\n // Check if we should unsubscribe from Firebase\n const hasNoCallbacks =\n (!window.venus._roomSubscriptions.data[roomId] ||\n window.venus._roomSubscriptions.data[roomId].length === 0) &&\n (!window.venus._roomSubscriptions.messages[roomId] ||\n window.venus._roomSubscriptions.messages[roomId].length === 0) &&\n (!window.venus._roomSubscriptions.gameEvents[roomId] ||\n window.venus._roomSubscriptions.gameEvents[roomId].length === 0)\n\n if (hasNoCallbacks) {\n this.rpcClient\n .call(VenusMessageId.H5_ROOM_UNSUBSCRIBE, {\n roomId: roomId,\n })\n .catch((error) => {\n console.error('Failed to clean up room subscription:', error)\n })\n }\n }\n }\n}\n","import { Host } from './Host.ts'\nimport { RpcClient } from './rpc'\nimport { VenusMessage, VenusTransport } from './VenusTransport.ts'\nimport { AnalyticsApi, RpcAnalyticsApi } from './analytics'\nimport { AdsApi, RpcAdsApi } from './ads'\nimport { RpcStorageApi, StorageApi } from './storage'\nimport { VenusMessageId } from './VenusMessageId.ts'\nimport { Avatar3dApi, RpcAvatarApi } from './avatar3d'\nimport { VenusAPI } from './venus-api/types.ts'\nimport { NavigationApi, RpcNavigationApi } from './navigation'\nimport { NotificationsApi } from './notifications'\nimport { RpcNotificationsApi } from './notifications/RpcNotificationsApi'\nimport { PopupsApi, RpcPopupsApi } from './popups'\nimport { HostProfileApi, ProfileApi } from './profile'\nimport { CdnApi, HostCdnApi } from './cdn'\nimport { HostTimeApi, TimeApi } from './time'\nimport { PostApi, RpcPostApi } from './post'\nimport { AiApi, RpcAiApi } from './ai'\nimport { HapticsApi, RpcHapticsApi } from './haptics'\nimport { FeaturesApi, RpcFeaturesApi } from './features'\nimport { LifecycleApi, RpcLifecycleApi } from './lifecycles'\nimport { RpcSimulationApi, SimulationApi } from './simulation'\nimport { RoomsApi } from './rooms'\nimport { RpcRoomsApi } from './rooms/RpcRoomsApi'\nimport { LoggingApi, RpcLoggingApi } from './logging'\nimport { IapApi, RpcIapApi } from './iap'\nimport venusApi from './venus-api/index'\nimport VenusApi from './venus-api/index'\n\nconst getCdnBaseUrl = (): string => {\n return (\n process.env.EXPO_PUBLIC_H5_CDN_URL_PRODUCTION ||\n 'https://venus-static-01293ak.web.app/'\n )\n}\n\nexport class RemoteHost implements Host {\n readonly ads: AdsApi\n readonly analytics: AnalyticsApi\n readonly deviceCache: StorageApi\n readonly appStorage: StorageApi\n readonly globalStorage: StorageApi\n readonly avatar3d: Avatar3dApi\n readonly navigation: NavigationApi\n readonly notifications: NotificationsApi\n readonly popups: PopupsApi\n readonly profile: ProfileApi\n readonly cdn: CdnApi\n readonly time: TimeApi\n readonly post: PostApi\n readonly ai: AiApi\n readonly haptics: HapticsApi\n readonly features: FeaturesApi\n readonly lifecycle: LifecycleApi\n readonly simulation: SimulationApi\n readonly rooms: RoomsApi\n readonly logging: LoggingApi\n readonly iap: IapApi\n\n get isInitialized() {\n return this._isInitialized\n }\n\n private readonly venusApi: VenusAPI\n private readonly rpcClient: RpcClient\n private _isInitialized: boolean = false\n\n constructor(venusApi: VenusAPI) {\n this.venusApi = venusApi\n const rpcClient = new RpcClient()\n this.rpcClient = rpcClient\n\n this.ads = new RpcAdsApi(rpcClient)\n this.analytics = new RpcAnalyticsApi(rpcClient)\n this.deviceCache = new RpcStorageApi(rpcClient, {\n clear: VenusMessageId.DEVICE_CACHE_CLEAR,\n getItem: VenusMessageId.DEVICE_CACHE_GET_ITEM,\n getKey: VenusMessageId.DEVICE_CACHE_KEY,\n length: VenusMessageId.DEVICE_CACHE_LENGTH,\n removeItem: VenusMessageId.DEVICE_CACHE_REMOVE_ITEM,\n setItem: VenusMessageId.DEVICE_CACHE_SET_ITEM,\n })\n this.appStorage = new RpcStorageApi(rpcClient, {\n clear: VenusMessageId.APP_STORAGE_CLEAR,\n getItem: VenusMessageId.APP_STORAGE_GET_ITEM,\n getKey: VenusMessageId.APP_STORAGE_KEY,\n length: VenusMessageId.APP_STORAGE_LENGTH,\n removeItem: VenusMessageId.APP_STORAGE_REMOVE_ITEM,\n setItem: VenusMessageId.APP_STORAGE_SET_ITEM,\n getAllItems: VenusMessageId.APP_STORAGE_GET_ALL_ITEMS,\n setMultipleItems: VenusMessageId.APP_STORAGE_SET_ITEM,\n removeMultipleItems: VenusMessageId.APP_STORAGE_REMOVE_ITEM,\n })\n this.globalStorage = new RpcStorageApi(rpcClient, {\n clear: VenusMessageId.GLOBAL_STORAGE_CLEAR,\n getItem: VenusMessageId.GLOBAL_STORAGE_GET_ITEM,\n getKey: VenusMessageId.GLOBAL_STORAGE_KEY,\n length: VenusMessageId.GLOBAL_STORAGE_LENGTH,\n removeItem: VenusMessageId.GLOBAL_STORAGE_REMOVE_ITEM,\n setItem: VenusMessageId.GLOBAL_STORAGE_SET_ITEM,\n getAllItems: VenusMessageId.GLOBAL_STORAGE_GET_ALL_ITEMS,\n setMultipleItems: VenusMessageId.GLOBAL_STORAGE_SET_MULTIPLE_ITEMS,\n removeMultipleItems: VenusMessageId.GLOBAL_STORAGE_REMOVE_MULTIPLE_ITEMS,\n })\n\n this.avatar3d = new RpcAvatarApi(rpcClient, venusApi)\n this.navigation = new RpcNavigationApi(rpcClient, venusApi)\n this.notifications = new RpcNotificationsApi(rpcClient)\n this.popups = new RpcPopupsApi(rpcClient)\n this.profile = new HostProfileApi()\n this.cdn = new HostCdnApi(getCdnBaseUrl())\n this.time = new HostTimeApi(rpcClient)\n this.post = new RpcPostApi(rpcClient)\n this.ai = new RpcAiApi(rpcClient)\n this.haptics = new RpcHapticsApi(rpcClient)\n this.features = new RpcFeaturesApi(rpcClient)\n this.lifecycle = new RpcLifecycleApi(rpcClient)\n this.simulation = new RpcSimulationApi(rpcClient)\n this.rooms = new RpcRoomsApi(rpcClient)\n this.logging = new RpcLoggingApi(this, rpcClient)\n this.iap = new RpcIapApi(rpcClient)\n\n venusApi.isMock = () => false\n\n console.log('[Venus SDK] Remote host created')\n }\n async initialize(): Promise<void> {\n this.log('Initializing Remote Host...')\n\n const transport = new VenusTransport()\n transport.start()\n this.rpcClient.start(transport)\n\n try {\n this.log('Trying to initialize using NEW method...')\n transport.instanceId = await this.initNew()\n } catch (error) {\n this.log(`Failed to initialize using NEW method: ${error}`)\n this.log(`Trying to initialize using OLD method...`)\n transport.instanceId = await this.initOld(transport)\n }\n this.log(`Remote Host Initialized with id: ${transport.instanceId}`)\n this._isInitialized = true\n this.venusApi._bootstrap.apiInjected = true\n this.venusApi._bootstrap.venus = window.venus\n\n await this.rpcClient.call(VenusMessageId.READY, {})\n }\n\n private registerIFrame(transport: VenusTransport): Promise<string> {\n return new Promise((resolve, reject) => {\n this.log('Registering IFrame...')\n\n const location = window.location\n const pathName = location.pathname\n const tokens = pathName.split('/')\n const appId = tokens[2]\n\n console.log('[Venus SDK] App ID ', appId)\n\n // Sending iframe registration message...\n const registrationMessage: VenusMessage = {\n type: 'H5_IFRAME_REGISTER',\n instanceId: appId,\n direction: 'H5_TO_APP',\n timestamp: Date.now(),\n }\n\n const subscription = transport.onVenusMessage((message: VenusMessage) => {\n if (message.type == 'INJECT_VENUS_API_SCRIPT') {\n const scriptContent = message.data?.script\n if (!scriptContent) {\n throw new Error('Failed to inject venus api, no script found.')\n }\n const script = document.createElement('script')\n script.type = 'text/javascript'\n script.textContent = scriptContent\n document.head.appendChild(script)\n\n setTimeout(() => {\n if (window.venus) {\n subscription.unsubscribe()\n resolve(window.venus?._config?.instanceId)\n }\n }, 100)\n }\n })\n transport.sendVenusMessage(registrationMessage)\n\n setTimeout(() => {\n subscription.unsubscribe()\n reject()\n }, 1000)\n })\n }\n\n private async initNew() {\n const response = await this.rpcClient.call<InitResponse>(\n VenusMessageId.INIT_SDK,\n {},\n 1000,\n )\n return response.instanceId\n }\n\n private async initOld(transport: VenusTransport): Promise<string> {\n const isInIframe = window.self !== window.top\n const hasReactNativeWebView =\n typeof window.ReactNativeWebView !== 'undefined'\n\n if (hasReactNativeWebView) {\n return this.useInjectedId()\n } else if (isInIframe) {\n return await this.registerIFrame(transport)\n } else {\n throw new Error('Failed to initialize. Unknown Error')\n }\n }\n\n private useInjectedId() {\n const instanceId =\n window.venus?._config?.instanceId || window._venusInitState?.poolId\n this.log(`On mobile, using injected instanceId: ${instanceId}`)\n if (!instanceId) {\n throw new Error('Expected injected instanceId on mobile')\n }\n return instanceId\n }\n\n private log(message: string) {\n console.log(`[Venus SDK] [Remote Host] ${message}`)\n }\n}\n\ninterface InitResponse {\n instanceId: string\n}\n","import { MockHost } from './MockHost.ts'\nimport { RemoteHost } from './RemoteHost.ts'\nimport { AnalyticsApi } from './analytics'\nimport { AdsApi } from './ads'\nimport { StorageApi } from './storage/StorageApi.ts'\nimport { Avatar3dApi } from './avatar3d'\nimport { VenusAPI } from './venus-api/types.ts'\nimport { NavigationApi } from './navigation'\nimport { NotificationsApi } from './notifications'\nimport { PopupsApi } from './popups'\nimport { ProfileApi } from './profile'\nimport { CdnApi } from './cdn/CdnApi'\nimport { TimeApi } from './time'\nimport { PostApi } from './post'\nimport { AiApi } from './ai'\nimport { HapticsApi } from './haptics'\nimport { FeaturesApi } from './features'\nimport { LifecycleApi } from './lifecycles'\nimport { SimulationApi } from './simulation'\nimport { RoomsApi } from './rooms'\nimport { LoggingApi } from './logging'\nimport { IapApi } from './iap'\n\nexport interface Host {\n readonly ads: AdsApi\n readonly analytics: AnalyticsApi\n readonly deviceCache: StorageApi\n readonly appStorage: StorageApi\n readonly globalStorage: StorageApi\n readonly avatar3d: Avatar3dApi\n readonly navigation: NavigationApi\n readonly notifications: NotificationsApi\n readonly popups: PopupsApi\n readonly profile: ProfileApi\n readonly cdn: CdnApi\n readonly time: TimeApi\n readonly post: PostApi\n readonly ai: AiApi\n readonly haptics: HapticsApi\n readonly features: FeaturesApi\n readonly lifecycle: LifecycleApi\n readonly simulation: SimulationApi\n readonly rooms: RoomsApi\n readonly logging: LoggingApi\n\n readonly isInitialized: boolean\n\n initialize(): Promise<void>\n readonly iap: IapApi\n}\n\nexport function createHost(venusApi: VenusAPI, isMock: boolean): Host {\n if (isMock) {\n console.log('[Venus SDK] Creating Local Host')\n return new MockHost(venusApi)\n } else {\n console.log('[Venus SDK] Creating Remote Host')\n return new RemoteHost(venusApi)\n }\n}\n","import { initializeStorage } from '../storage/'\nimport { initializeAds } from '../ads'\nimport { initializeTheme } from './systems/theme.js'\nimport { initializePopups } from '../popups'\nimport { initializeLocalNotifications } from '../notifications'\nimport { initializeTime } from '../time'\nimport { initializeAvatar3d } from '../avatar3d'\nimport { initializeStackNavigation } from '../navigation'\nimport { initializeAi } from '../ai'\nimport { initializeRooms } from './systems/rooms.js'\nimport { initializeAssetLoader } from './systems/asset-loader.js'\nimport { initializeNumbers } from './systems/numbers.js'\nimport { createProxiedMethod, createProxiedObject } from './systems/core.js'\nimport { initializeAnalytics } from '../analytics'\nimport { initializeIap } from '../iap'\nimport { createHost } from '../Host'\nimport { SDK_VERSION } from '../version'\nimport { initializeProfile } from '../profile/'\nimport { initializeCdn } from '../cdn'\nimport { initializePost } from '../post'\nimport { initializeHaptics } from '../haptics'\nimport { initializeFeaturesApi } from '../features'\nimport { initializeLifecycleApi } from '../lifecycles'\nimport { initializeSimulation } from '../simulation'\nimport { initializeLoggingApi } from '../logging'\n\n// HapticStyle enum for type safety\nconst HapticStyle = {\n LIGHT: 'light',\n MEDIUM: 'medium',\n HEAVY: 'heavy',\n SUCCESS: 'success',\n WARNING: 'warning',\n ERROR: 'error',\n}\n\nclass VenusAPI {\n constructor() {\n console.log(`[Venus SDK] SDK Version: ${SDK_VERSION}`)\n // Shared configuration\n this._shared = {\n initialized: false,\n initPromise: null,\n }\n\n // Bootstrap-specific properties\n this._bootstrap = {\n apiInjected: false,\n apiInjectionTimeout: null,\n venus: null,\n isInsideHostedEnvironment: false,\n _localHandlers: {}, // Store local handlers here\n _pendingMessages: [], // Buffer messages until handlers are registered\n }\n\n // Generate deterministic instance ID based on current URL\n const deterministicInstanceId = this._generateDeterministicInstanceId()\n\n // Mock data structure matching real config format\n this._mock = {\n // Essential config (matching H5ConfigProperties)\n appId: 'mock-app',\n mode: 'preview',\n instanceId: deterministicInstanceId, // Use deterministic ID instead of random\n appUrl: 'mock-app/index.html',\n safeAreaInsets: {\n top: 10,\n right: 0,\n bottom: 10,\n left: 0,\n },\n uiControls: {\n closeButton: { x: 16, y: 16, width: 32, height: 32 },\n menuButton: { x: window.innerWidth - 48, y: 16, width: 32, height: 32 },\n feedHeader: { x: 0, y: 0, width: window.innerWidth, height: 66 },\n playButton: {\n x: 0,\n y: window.innerHeight - 60,\n width: window.innerWidth,\n height: 60,\n },\n },\n // Complete theme structure (matching createH5Theme output)\n theme: {\n background: {\n default: '#131419',\n muted: '#1b1d25',\n dark: '#0d0e11',\n },\n text: {\n primary: '#ffffff',\n muted: '#808080',\n inverted: '#000000',\n },\n theme: {\n primary: '#f6c833',\n secondary: '#6366f1',\n background: '#131419',\n border: '#262626',\n card: '#1b1d25',\n 'card-glass': 'rgba(27, 29, 37, 0.8)',\n },\n typography: {\n fontFamily: {\n base: 'Plus Jakarta Sans, Roboto, sans-serif',\n heading: 'Plus Jakarta Sans, Roboto, sans-serif',\n mono: 'monospace',\n },\n fontSize: {\n '2xs': '10px',\n xs: '12px',\n sm: '14px',\n md: '16px',\n lg: '18px',\n xl: '20px',\n '2xl': '24px',\n '3xl': '30px',\n '4xl': '36px',\n '5xl': '48px',\n '6xl': '60px',\n },\n fontWeight: {\n thin: '100',\n extralight: '200',\n light: '300',\n regular: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n extrablack: '950',\n },\n lineHeight: {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n },\n },\n },\n // Static locale data at top level\n locale: 'en-US',\n languageCode: 'en',\n // Static profile data (renamed from currentProfile)\n profile: {\n id: 'mock-profile-123',\n username: 'MockProfile',\n avatarUrl: 'https://i.pravatar.cc/150?u=mock',\n },\n // Complete environment info (matching buildStaticConfig)\n environment: {\n isDevelopment: true,\n platform: 'web',\n platformVersion: 'mock-1.0',\n browserInfo: {\n browser: 'MockBrowser',\n userAgent: navigator.userAgent,\n isMobile: /Mobi|Android/i.test(navigator.userAgent),\n isTablet: /iPad|Tablet|Pad/i.test(navigator.userAgent),\n language: navigator.language || 'en-US',\n },\n },\n // Complete device info (matching buildStaticConfig)\n device: {\n screenSize: { width: window.innerWidth, height: window.innerHeight },\n viewportSize: {\n width: window.innerWidth - 20, // account for safe area\n height: window.innerHeight - 20,\n },\n orientation:\n window.innerWidth > window.innerHeight ? 'landscape' : 'portrait',\n pixelRatio: window.devicePixelRatio || 1,\n fontScale: 1,\n deviceType: window.innerWidth > 768 ? 'tablet' : 'phone',\n platform: 'web',\n isWeb: true,\n isMobile: /Mobi|Android/i.test(navigator.userAgent),\n hapticsEnabled: false, // Mock environment doesn't support haptics\n haptics: {\n supported: false,\n enabled: false,\n },\n },\n // Context structure (matching buildStaticConfig)\n context: {\n postData: undefined,\n stack: {\n isInStack: false,\n stackPosition: 0,\n parentInstanceId: undefined,\n },\n },\n\n // Internal state (existing handlers and interaction data)\n handlers: {\n onPlay: null,\n onPause: null,\n onResume: null,\n onQuit: null,\n onHide: null,\n onShow: null,\n },\n currentPostInteractions: {\n isLiked: false,\n isFollowing: false,\n likesCount: 42,\n commentsCount: 7,\n },\n\n // Platform overrides for testing different environments\n platformOverrides: {\n isMobile: true,\n isWeb: false,\n },\n }\n\n // Detect if we're inside a hosted environment (iframe or WebView)\n this._detectHostedEnvironment()\n\n // Add config object with structured access\n this.config = createProxiedObject.call(this, 'config', {\n locale: 'en-US',\n languageCode: 'en',\n profile: {\n id: 'mock-user-123',\n username: 'Test User',\n avatarUrl: null,\n },\n environment: {\n isDevelopment: true,\n platform:\n typeof navigator !== 'undefined' ? navigator.platform : 'unknown',\n platformVersion: 'unknown',\n browserInfo: {\n browser: 'unknown',\n userAgent:\n typeof navigator !== 'undefined' ? navigator.userAgent : 'unknown',\n isMobile: true,\n isTablet: false,\n language:\n typeof navigator !== 'undefined' ? navigator.language : 'en-US',\n },\n },\n ui: {\n controls: {\n closeButton: { x: 16, y: 16, width: 32, height: 32 },\n menuButton: {\n x: typeof window !== 'undefined' ? window.innerWidth - 48 : 352,\n y: 16,\n width: 32,\n height: 32,\n },\n feedHeader: {\n x: 0,\n y: 0,\n width: typeof window !== 'undefined' ? window.innerWidth : 400,\n height: 66,\n },\n playButton: {\n x: 0,\n y: typeof window !== 'undefined' ? window.innerHeight - 60 : 740,\n width: typeof window !== 'undefined' ? window.innerWidth : 400,\n height: 60,\n },\n },\n safeArea: { top: 44, left: 0, right: 0, bottom: 34 },\n hudInsets: {\n preview: { top: 60, left: 0, right: 0, bottom: 40 },\n fullscreen: { top: 44, left: 0, right: 0, bottom: 34 },\n },\n },\n device: {\n screenSize: {\n width: typeof window !== 'undefined' ? window.screen?.width || 0 : 0,\n height:\n typeof window !== 'undefined' ? window.screen?.height || 0 : 0,\n },\n viewportSize: {\n width: typeof window !== 'undefined' ? window.innerWidth : 0,\n height: typeof window !== 'undefined' ? window.innerHeight : 0,\n },\n orientation: 'portrait',\n pixelRatio:\n typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1,\n fontScale: 1,\n deviceType: 'phone',\n hapticsEnabled: false,\n haptics: { supported: false, enabled: false },\n },\n theme: {\n background: { default: '#131419', muted: '#1b1d25', dark: '#0d0e11' },\n text: { primary: '#ffffff', muted: '#808080', inverted: '#000000' },\n theme: {\n primary: '#f6c833',\n secondary: '#6366f1',\n background: '#131419',\n border: '#262626',\n card: '#1b1d25',\n 'card-glass': 'rgba(27, 29, 37, 0.8)',\n },\n typography: {\n fontFamily: {\n base: 'Plus Jakarta Sans, Roboto, sans-serif',\n heading: 'Plus Jakarta Sans, Roboto, sans-serif',\n mono: 'monospace',\n },\n fontSize: {\n '2xs': '10px',\n xs: '12px',\n sm: '14px',\n md: '16px',\n lg: '18px',\n xl: '20px',\n '2xl': '24px',\n '3xl': '30px',\n '4xl': '36px',\n '5xl': '48px',\n '6xl': '60px',\n },\n fontWeight: {\n thin: '100',\n extralight: '200',\n light: '300',\n regular: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n extrablack: '950',\n },\n lineHeight: {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n },\n },\n },\n })\n\n const isInsideHostedEnv = this._bootstrap.isInsideHostedEnvironment\n const host = createHost(this, !isInsideHostedEnv)\n this.host = host\n\n // Initialize storage functionality (renamed from localStorage)\n initializeStorage(this, host)\n\n // Initialize ads functionality\n initializeAds(this, host)\n\n // Initialize theme functionality\n initializeTheme(this)\n\n // Initialize UI functionality\n initializePopups(this, host)\n\n // initialize analytics functionality\n initializeAnalytics(this, host)\n\n // Initialize IAP functionality\n initializeIap(this, host)\n\n // Initialize local notifications functionality\n initializeLocalNotifications(this, host)\n\n // Initialize time functionality\n initializeTime(this, host)\n\n // Initialize lifecycle functionality\n initializeLifecycleApi(this, host)\n\n // Haptic feedback\n initializeHaptics(this, host)\n\n // Initialize runtime assets functionality\n initializeCdn(this, host)\n\n initializeFeaturesApi(this, host)\n\n initializeLoggingApi(this, host)\n\n // ✅ FEATURE FLAG: Only initialize avatar3d functionality if not disabled\n const isAvatar3dDisabled =\n typeof window !== 'undefined' &&\n window.location.search.includes('EXPO_PUBLIC_DISABLE_3D_AVATARS=true')\n\n initializeProfile(this, host)\n\n if (!isAvatar3dDisabled) {\n // Initialize avatar3d functionality\n initializeAvatar3d(this, host)\n }\n\n // Initialize stack navigation functionality\n initializeStackNavigation(this, host)\n\n // Post interactions\n initializePost(this, host)\n\n // 🦊 INITIALIZE NEW AI SYSTEM\n initializeAi(this, host)\n\n // Initialize rooms functionality (will get mock data later from initializeAsync)\n initializeRooms(this)\n\n // Initialize simulation functionality (unified crafting, slots, actors)\n initializeSimulation(this, host)\n\n // Initialize asset loader functionality\n initializeAssetLoader(this, createProxiedMethod)\n }\n\n // Generate deterministic instance ID based on current page URL\n _generateDeterministicInstanceId() {\n try {\n // Get current URL and normalize it like H5IdUtils does\n let url = window.location.href || ''\n\n // Normalize URL to match H5IdUtils.normalizeAppUrl logic:\n // 1. Remove protocol, domain, port\n let normalizedUrl = url.replace(/^https?:\\/\\/[^\\/]+/, '')\n\n // 2. Remove query parameters and hash fragments\n normalizedUrl = normalizedUrl.split('?')[0].split('#')[0].trim()\n\n // 3. Ensure it starts with /H5/ for consistency\n if (\n !normalizedUrl.startsWith('/H5/') &&\n !normalizedUrl.startsWith('H5/')\n ) {\n // If it's just the app name, assume it's in /H5/\n if (!normalizedUrl.includes('/')) {\n normalizedUrl = `/H5/${normalizedUrl}/index.html`\n } else if (!normalizedUrl.startsWith('/')) {\n normalizedUrl = `/${normalizedUrl}`\n }\n }\n\n // Normalized URL for deterministic hashing\n\n // Create hash from normalized URL (same logic as H5IdUtils)\n let hash = 0\n for (let i = 0; i < normalizedUrl.length; i++) {\n const char = normalizedUrl.charCodeAt(i)\n hash = (hash << 5) - hash + char\n hash = hash & hash // Convert to 32-bit integer\n }\n\n // Convert to positive base36 and ensure 8 characters (same as H5IdUtils)\n const hashB36 = Math.abs(hash).toString(36)\n const paddedHash = hashB36.substring(0, 8).padEnd(8, '0')\n\n const deterministicId = `app-${paddedHash}`\n\n // Generated deterministic instance ID\n\n return deterministicId\n } catch (error) {\n console.error(\n '[Venus Bootstrap] Error generating deterministic ID, falling back to random:',\n error,\n )\n // Fallback to improved random ID if deterministic generation fails\n return 'app-' + Math.random().toString(36).substr(2, 8)\n }\n }\n\n //---------------------------------------\n // BOOTSTRAP METHODS\n //---------------------------------------\n\n _detectHostedEnvironment() {\n // Detecting hosted environment...\n console.log('[Venus SDK] Detecting host environment...')\n\n // Check if we're inside an iframe or WebView\n const isInIframe = window.self !== window.top\n const hasReactNativeWebView =\n typeof window.ReactNativeWebView !== 'undefined'\n\n this._bootstrap.isInsideHostedEnvironment =\n isInIframe || hasReactNativeWebView\n\n console.log(\n `[Venus SDK] isInIframe: ${isInIframe}, hasReactNativeWebView: ${hasReactNativeWebView}`,\n )\n }\n\n isMobile() {\n return typeof window.ReactNativeWebView !== 'undefined'\n }\n\n _initializeMockMode() {\n // Add any mock mode specific initialization here\n // console.log('[Venus Mock] Initializing mock mode');\n\n // Apply locale override if it was set during initialization\n if (this._mock.localeOverride) {\n // console.log('[Venus Mock] Applying locale override:', this._mock.localeOverride);\n this.config.locale = this._mock.localeOverride\n this.config.languageCode = this._mock.localeOverride.split('-')[0] // Extract language from locale\n // console.log('[Venus Mock] Updated locale:', this.config.locale, 'languageCode:', this.config.languageCode);\n }\n\n // Initialize rooms with mock data if provided\n if (this._mock.roomsData) {\n // console.log('[Venus Mock] Reinitializing rooms with mock data');\n initializeRooms(this, this._mock.roomsData)\n }\n }\n\n //---------------------------------------\n // PUBLIC API METHODS\n //---------------------------------------\n\n async initializeAsync(options = {}) {\n // If already initialized successfully, resolve immediately.\n if (this._shared.initialized) {\n // console.log('[Venus Bootstrap] initializeAsync called but already initialized. Resolving true.');\n return Promise.resolve(true)\n }\n\n if (this._shared.initPromise) {\n return this._shared.initPromise\n }\n\n this._shared.initPromise = new Promise(async (resolve) => {\n try {\n // Log unsupported parameters\n if (options) {\n const supportedRootParams = [\n 'hardDisableMock',\n 'mock',\n 'helpText',\n 'forceRemoteCdn',\n ]\n const supportedMockParams = [\n 'initDelay',\n 'isMobile',\n 'isWeb',\n 'locale',\n 'rooms',\n 'craftingConfig',\n 'onShowContext',\n 'onHideContext',\n ]\n\n // Check root level params\n Object.keys(options).forEach((param) => {\n if (!supportedRootParams.includes(param)) {\n this.log(`Unsupported parameter: ${param}`)\n }\n })\n\n // 🔧 CONSOLIDATED: Support legacy mockData for backward compatibility\n if (options.mockData && typeof options.mockData === 'object') {\n console.warn(\n '[Venus Mock] mockData is deprecated, use options.mock instead',\n )\n // Merge mockData into mock for backward compatibility\n options.mock = { ...options.mock, ...options.mockData }\n }\n\n // Check mock params if present\n if (options.mock && typeof options.mock === 'object') {\n Object.keys(options.mock).forEach((param) => {\n if (!supportedMockParams.includes(param)) {\n this.log(`Unsupported mock parameter: ${param}`)\n }\n })\n }\n\n // Store helpText in mock configuration if provided\n if (options.helpText && typeof options.helpText === 'string') {\n this._mock.helpText = options.helpText\n // console.log('[Venus Mock] Stored help text for later retrieval');\n }\n\n // Store forceRemoteCdn option if provided\n if (typeof options.forceRemoteCdn === 'boolean') {\n this._mock.forceRemoteCdn = options.forceRemoteCdn\n console.log(\n '[Venus Mock] Force remote CDN mode:',\n options.forceRemoteCdn,\n )\n }\n }\n\n await this.host.initialize()\n\n // If we're in a hosted environment, wait for Venus API to be injected\n if (this._bootstrap.isInsideHostedEnvironment) {\n this._shared.initialized = true\n resolve(true)\n return\n }\n\n // We're either in standalone mode or API injection failed\n // console.log('[Venus Bootstrap] Using mock implementation at', new Date().toISOString());\n\n // Get mock delay if specified\n const mockDelay = options.mock?.initDelay ?? 100\n this.log(`Using mock initialization delay: ${mockDelay}ms`)\n\n setTimeout(async () => {\n this._shared.initialized = true\n\n // Initialize mock mode\n this._initializeMockMode()\n\n resolve(true)\n }, mockDelay)\n } catch (err) {\n console.warn(\n '[Venus Bootstrap] Initialization error, falling back to mock mode',\n err,\n )\n\n // If hardDisableMock is true, don't fall back to mock\n if (options.hardDisableMock) {\n console.warn(\n '[Venus Bootstrap] hardDisableMock is true, not using mock.',\n )\n resolve(false)\n return\n }\n\n // Initialize mock mode\n this._initializeMockMode()\n\n setTimeout(async () => {\n this._shared.initialized = true\n\n resolve(true)\n }, 100)\n }\n })\n\n return this._shared.initPromise\n }\n}\n\n// Create singleton instance\nconst instance = new VenusAPI()\n\n// Export for module usage\nexport default instance\n\n// Also attach to window for non-module environments\nwindow.VenusAPI = instance\n\n// Export HapticStyle enum for H5 apps to use\ninstance.HapticStyle = HapticStyle\n\n// Add isAvailable utility method for H5 games\ninstance.isAvailable = function () {\n try {\n return !!(typeof window !== 'undefined' && window.VenusAPI) || !!this\n } catch {\n return false\n }\n}\n\n// Initialize core systems that should always be available\n;(async () => {\n try {\n // Initialize numbers system for exponential games\n await initializeNumbers(instance)\n console.log('[Venus SDK] Numbers system initialized')\n } catch (error) {\n console.error('[Venus SDK] Failed to initialize numbers system:', error)\n }\n})()\n"]}
1
+ {"version":3,"sources":["../../src/venus-api/systems/theme.js","../../src/venus-api/systems/rooms.js","../../src/venus-api/systems/asset-loader.js","../../src/venus-api/lib/break_eternity.js","../../src/venus-api/systems/numbers.js","../../src/post/MockPostApi.ts","../../src/post/RpcPostApi.ts","../../src/post/index.ts","../../src/rooms/MockRoomsApi.ts","../../src/MockHost.ts","../../src/VenusTransport.ts","../../src/notifications/RpcNotificationsApi.ts","../../src/rooms/VenusRoom.ts","../../src/rooms/RpcRoomsApi.ts","../../src/RemoteHost.ts","../../src/Host.ts","../../src/venus-api/index.js"],"names":["r","createProxiedMethod","value","createProxiedObject","VenusAPI"],"mappings":"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","file":"index.mjs","sourcesContent":["import { createProxiedMethod } from './core.js';\r\n\r\n// Default typography settings that match our application\r\nconst DEFAULT_TYPOGRAPHY = {\r\n fontFamily: {\r\n base: 'Plus Jakarta Sans, Roboto, sans-serif',\r\n heading: 'Plus Jakarta Sans, Roboto, sans-serif',\r\n mono: 'monospace',\r\n },\r\n fontSize: {\r\n '2xs': '10px',\r\n xs: '12px',\r\n sm: '14px',\r\n md: '16px',\r\n lg: '18px',\r\n xl: '20px',\r\n '2xl': '24px',\r\n '3xl': '30px',\r\n '4xl': '36px',\r\n '5xl': '48px',\r\n '6xl': '60px',\r\n },\r\n fontWeight: {\r\n thin: '100',\r\n extralight: '200',\r\n light: '300',\r\n regular: '400',\r\n medium: '500',\r\n semibold: '600',\r\n bold: '700',\r\n extrabold: '800',\r\n black: '900',\r\n extrablack: '950',\r\n },\r\n lineHeight: {\r\n none: '1',\r\n tight: '1.25',\r\n snug: '1.375',\r\n normal: '1.5',\r\n relaxed: '1.625',\r\n loose: '2',\r\n },\r\n};\r\n\r\n// Default theme that matches H5ApiCore.ts DEFAULT_THEME\r\nconst DEFAULT_THEME = {\r\n background: {\r\n default: '#131419', // Dark background\r\n muted: '#1b1d25', // Mid-dark background\r\n dark: '#0d0e11', // Darker background\r\n },\r\n text: {\r\n primary: '#ffffff', // White\r\n muted: '#808080', // Gray\r\n inverted: '#000000', // Black\r\n },\r\n theme: {\r\n primary: '#f6c833', // Different yellow for testing (slightly lighter)\r\n secondary: '#6366f1', // Different secondary for testing (purple)\r\n background: '#131419', // Dark background\r\n border: '#262626', // Dark border\r\n card: '#1b1d25', // Dark card\r\n 'card-glass': 'rgba(27, 29, 37, 0.8)', // Translucent dark card\r\n },\r\n typography: DEFAULT_TYPOGRAPHY,\r\n};\r\n\r\n// Initialize theme functionality on a VenusAPI instance\r\nexport function initializeTheme(venusApiInstance) {\r\n // Add theme constants to the mock data\r\n if (!venusApiInstance._mock.theme) {\r\n venusApiInstance._mock.theme = DEFAULT_THEME;\r\n }\r\n\r\n // Add typography to mock data if not present\r\n if (!venusApiInstance._mock.typography) {\r\n venusApiInstance._mock.typography = DEFAULT_TYPOGRAPHY;\r\n }\r\n\r\n // Add safe area mock data\r\n if (!venusApiInstance._mock.safeArea) {\r\n venusApiInstance._mock.safeArea = { top: 0, bottom: 0, left: 0, right: 0 };\r\n }\r\n\r\n // NOTE: HUD insets are now provided dynamically via onShow/onPlay context\r\n // and should not be accessed from config\r\n\r\n // Apply theme colors from the Venus API to CSS variables\r\n venusApiInstance.applyVenusThemeToCSS = function(theme) {\r\n if (!theme) return;\r\n\r\n const root = document.documentElement;\r\n\r\n // Apply background colors\r\n if (theme.background) {\r\n if (theme.background.default)\r\n root.style.setProperty('--color-background', theme.background.default);\r\n if (theme.background.muted)\r\n root.style.setProperty(\r\n '--color-background-muted',\r\n theme.background.muted,\r\n );\r\n if (theme.background.dark)\r\n root.style.setProperty(\r\n '--color-background-dark',\r\n theme.background.dark,\r\n );\r\n }\r\n\r\n // Apply text colors\r\n if (theme.text) {\r\n if (theme.text.primary)\r\n root.style.setProperty('--color-text-primary', theme.text.primary);\r\n if (theme.text.muted)\r\n root.style.setProperty('--color-text-muted', theme.text.muted);\r\n }\r\n\r\n // Apply theme colors\r\n if (theme.theme) {\r\n if (theme.theme.primary)\r\n root.style.setProperty('--color-primary', theme.theme.primary);\r\n if (theme.theme.secondary)\r\n root.style.setProperty('--color-secondary', theme.theme.secondary);\r\n if (theme.theme.border)\r\n root.style.setProperty('--color-border', theme.theme.border);\r\n }\r\n\r\n // Apply typography if available\r\n if (theme.typography && theme.typography.fontFamily) {\r\n if (theme.typography.fontFamily.base) {\r\n root.style.setProperty(\r\n '--font-family',\r\n theme.typography.fontFamily.base,\r\n );\r\n }\r\n }\r\n\r\n // Apply the background color to body immediately\r\n document.body.style.backgroundColor = root.style.getPropertyValue(\r\n '--color-background-dark',\r\n );\r\n };\r\n\r\n // Apply theme method\r\n venusApiInstance.applyTheme = createProxiedMethod('applyTheme', function() {\r\n // Get theme from Venus API if available\r\n let apiTheme = null;\r\n apiTheme = this.config.theme;\r\n\r\n // Apply theme to the game\r\n if (apiTheme) {\r\n // Apply theme colors to CSS variables\r\n this.applyVenusThemeToCSS(apiTheme);\r\n\r\n // Set up colors for the game rendering\r\n this.colors = {\r\n primary: apiTheme.theme?.primary || '#FF2877',\r\n secondary: apiTheme.theme?.secondary || '#4755FF',\r\n dark: apiTheme.background?.dark || '#0D0E11',\r\n darkLight: apiTheme.background?.muted || '#1B1D25',\r\n darkLighter: apiTheme.background?.default || '#23252F',\r\n textPrimary: apiTheme.text?.primary || '#FFFFFF',\r\n textMuted: apiTheme.text?.muted || '#808080',\r\n border: apiTheme.theme?.border || '#262626',\r\n };\r\n } else {\r\n // Fallback colors\r\n this.colors = {\r\n primary: '#FF2877',\r\n secondary: '#4755FF',\r\n dark: '#0D0E11',\r\n darkLight: '#1B1D25',\r\n darkLighter: '#23252F',\r\n textPrimary: '#FFFFFF',\r\n textMuted: '#808080',\r\n border: '#262626',\r\n };\r\n }\r\n\r\n this.log('Theme applied successfully');\r\n });\r\n\r\n // Apply safe area method\r\n venusApiInstance.applySafeArea = createProxiedMethod('applySafeArea', function() {\r\n try {\r\n // Apply safe area insets if available\r\n const safeArea = this.config.ui.safeArea;\r\n\r\n if (safeArea) {\r\n this.log('Applying safe area insets: ' + JSON.stringify(safeArea));\r\n\r\n // You could apply safe area insets to your game container or canvas here\r\n // For example, adjusting the position of UI elements\r\n if (this.tapToStartScreen) {\r\n this.tapToStartScreen.style.marginTop = `${safeArea.top}px`;\r\n this.tapToStartScreen.style.marginBottom = `${safeArea.bottom}px`;\r\n }\r\n\r\n if (this.gameOverScreen) {\r\n this.gameOverScreen.style.marginTop = `${safeArea.top}px`;\r\n this.gameOverScreen.style.marginBottom = `${safeArea.bottom}px`;\r\n }\r\n\r\n // Apply safe area to max score container\r\n if (this.maxScoreContainer) {\r\n this.maxScoreContainer.style.marginTop = `${safeArea.top}px`;\r\n this.maxScoreContainer.style.marginRight = `${safeArea.right}px`;\r\n }\r\n }\r\n } catch (error) {\r\n this.error('Error applying safe area: ' + error.message);\r\n console.error('Error applying safe area:', error);\r\n }\r\n });\r\n\r\n // Export theme constants for use by other modules\r\n venusApiInstance.DEFAULT_THEME = DEFAULT_THEME;\r\n venusApiInstance.DEFAULT_TYPOGRAPHY = DEFAULT_TYPOGRAPHY;\r\n} ","// Mock room storage to simulate real-time rooms in development\r\nconst mockRooms = new Map();\r\nconst mockMessages = new Map(); // roomId -> messages[]\r\nconst mockRoomMoves = new Map(); // roomId -> moves[] \r\nconst mockSubscriptions = new Map(); // instanceId -> subscriptions\r\n\r\n// Helper to generate room IDs\r\nfunction generateRoomId() {\r\n return 'room_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\r\n}\r\n\r\n// Helper to generate message IDs\r\nfunction generateMessageId() {\r\n return 'msg_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\r\n}\r\n\r\n// Helper to generate room codes\r\nfunction generateRoomCode() {\r\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\r\n let code = '';\r\n for (let i = 0; i < 6; i++) {\r\n code += characters.charAt(Math.floor(Math.random() * characters.length));\r\n }\r\n return code;\r\n}\r\n\r\n// Helper to simulate real-time events\r\nfunction broadcastEvent(roomId, eventType, eventData) {\r\n console.log(`[Venus Mock Rooms] Broadcasting ${eventType} for room ${roomId}:`, eventData);\r\n \r\n // Find all subscriptions for this room and trigger callbacks\r\n for (const [instanceId, subscriptions] of mockSubscriptions.entries()) {\r\n const roomSubscriptions = subscriptions.get(roomId);\r\n if (roomSubscriptions) {\r\n // Simulate real-time event delivery after a short delay\r\n setTimeout(() => {\r\n if (roomSubscriptions.onRoomDataUpdated && eventType === 'room_data_updated') {\r\n roomSubscriptions.onRoomDataUpdated(eventData);\r\n }\r\n if (roomSubscriptions.onMessageReceived && eventType === 'message_received') {\r\n roomSubscriptions.onMessageReceived(eventData);\r\n }\r\n if (roomSubscriptions.onPlayerJoined && eventType === 'player_joined') {\r\n roomSubscriptions.onPlayerJoined(eventData);\r\n }\r\n if (roomSubscriptions.onPlayerLeft && eventType === 'player_left') {\r\n roomSubscriptions.onPlayerLeft(eventData);\r\n }\r\n if (roomSubscriptions.onGameStarted && eventType === 'game_started') {\r\n roomSubscriptions.onGameStarted(eventData);\r\n }\r\n if (roomSubscriptions.onTurnChanged && eventType === 'turn_changed') {\r\n roomSubscriptions.onTurnChanged(eventData);\r\n }\r\n if (roomSubscriptions.onOptimisticGameStateUpdated && eventType === 'app:h5:optimisticGameStateUpdated') {\r\n roomSubscriptions.onOptimisticGameStateUpdated(eventData);\r\n }\r\n if (roomSubscriptions.onProposedMoveValidationUpdated && eventType === 'app:h5:proposedMoveValidationUpdated') {\r\n roomSubscriptions.onProposedMoveValidationUpdated(eventData);\r\n }\r\n }, 50); // 50ms delay to simulate network latency\r\n }\r\n }\r\n}\r\n\r\n// Import DRY utilities from core.js\r\nimport { createProxiedMethod, createProxiedObject } from './core.js';\r\n\r\n// Mock VenusRoom class that mimics the injected API VenusRoom\r\nclass MockVenusRoom {\r\n constructor(roomData) {\r\n // Use server's canonical ID field\r\n this.id = roomData.id;\r\n this.roomId = roomData.id; // Legacy alias for chess app\r\n this.name = roomData.name;\r\n this.players = roomData.currentPlayers || [];\r\n this.maxPlayers = roomData.maxPlayers;\r\n this.gameType = roomData.gameType;\r\n this._subscriptions = new Map();\r\n \r\n // Preserve complete server room data including game state\r\n this.appId = roomData.appId;\r\n this.type = roomData.type;\r\n this.createdBy = roomData.createdBy;\r\n this.createdAt = roomData.createdAt;\r\n this.updatedAt = roomData.updatedAt;\r\n this.isPrivate = roomData.isPrivate;\r\n this.currentPlayers = roomData.currentPlayers || [];\r\n this.status = roomData.status;\r\n this.customMetadata = roomData.customMetadata || {};\r\n this.admins = roomData.admins || [];\r\n this.roomCode = roomData.roomCode;\r\n this.description = roomData.description;\r\n this.data = roomData.data || {};\r\n this.version = roomData.version;\r\n \r\n console.log(`[Venus Mock VenusRoom] Created room object for ${this.id}`, {\r\n hasCustomMetadata: !!this.customMetadata,\r\n hasGameState: !!this.customMetadata?.rules?.gameState,\r\n gamePhase: this.customMetadata?.rules?.gameState?.phase,\r\n currentPlayer: this.customMetadata?.rules?.gameState?.currentPlayer\r\n });\r\n }\r\n\r\n // Update room data\r\n async updateData(updates, merge = true) {\r\n return roomsMock.updateRoomData(this.roomId, updates, merge);\r\n }\r\n\r\n // Get room data\r\n async getData() {\r\n return roomsMock.getRoomData(this.roomId);\r\n }\r\n\r\n // Send message\r\n async sendMessage(messageData) {\r\n return roomsMock.sendMessage(this.roomId, messageData);\r\n }\r\n\r\n // Subscribe to room data changes\r\n subscribeToData(callback) {\r\n return roomsMock.subscribeToRoom(this.roomId, {\r\n onRoomDataUpdated: callback\r\n });\r\n }\r\n\r\n // Subscribe to messages\r\n subscribeToMessages(callback) {\r\n return roomsMock.subscribeToRoom(this.roomId, {\r\n onMessageReceived: callback\r\n });\r\n }\r\n\r\n // Leave room\r\n async leave() {\r\n // Clean up all subscriptions\r\n this._subscriptions.forEach(sub => {\r\n if (sub.unsubscribe) sub.unsubscribe();\r\n });\r\n this._subscriptions.clear();\r\n \r\n return { success: true };\r\n }\r\n\r\n // Start game\r\n async startGame(gameConfig = {}, turnOrder = null) {\r\n return roomsMock.startGame(this.roomId, gameConfig);\r\n }\r\n\r\n // End game\r\n async endGame(winner = null, reason = null, gameResults = {}) {\r\n return roomsMock.endGame(this.roomId, winner, reason, gameResults);\r\n }\r\n\r\n // Propose move (for client-proposed state architecture)\r\n async proposeMove(proposalPayload) {\r\n return roomsMock.proposeMove(this.roomId, proposalPayload);\r\n }\r\n\r\n // Validate move\r\n async validateMove(moveId, isValid, reason = null, validatorId = null) {\r\n console.log(`[Venus Mock VenusRoom] Validating move ${moveId}: ${isValid}`);\r\n // For mock, just return success\r\n return { success: true, moveId, isValid, reason };\r\n }\r\n\r\n // Subscribe to game events\r\n subscribeToGameEvents(callback) {\r\n return roomsMock.subscribeToRoom(this.roomId, {\r\n onOptimisticGameStateUpdated: callback,\r\n onProposedMoveValidationUpdated: callback\r\n });\r\n }\r\n\r\n // Generic message handler for room-manager.js integration\r\n onMessage(callback) {\r\n // Subscribe to all events for this room\r\n return roomsMock.subscribeToRoom(this.roomId, {\r\n onRoomDataUpdated: callback,\r\n onMessageReceived: callback,\r\n onGameStarted: callback,\r\n onTurnChanged: callback,\r\n onOptimisticGameStateUpdated: callback,\r\n onProposedMoveValidationUpdated: callback\r\n });\r\n }\r\n\r\n // Unified subscription helper\r\n subscribe(options = {}) {\r\n const unsubFns = [];\r\n \r\n if (options.onData) {\r\n const sub = this.subscribeToData(options.onData);\r\n unsubFns.push(() => sub.unsubscribe());\r\n }\r\n \r\n if (options.onMessages) {\r\n const sub = this.subscribeToMessages(options.onMessages);\r\n unsubFns.push(() => sub.unsubscribe());\r\n }\r\n \r\n if (options.onMoves || options.onGameEvents) {\r\n const handler = options.onMoves || options.onGameEvents;\r\n const sub = this.subscribeToGameEvents(handler);\r\n unsubFns.push(() => sub.unsubscribe());\r\n }\r\n\r\n // Return composite unsubscribe\r\n let called = false;\r\n return () => {\r\n if (called) return;\r\n called = true;\r\n unsubFns.forEach(fn => {\r\n try { fn(); } catch (e) { console.error('Mock room subscribe teardown error', e); }\r\n });\r\n };\r\n }\r\n}\r\n\r\n// Mock room implementation\r\nconst roomsMock = {\r\n createRoom(options = {}) {\r\n try {\r\n console.log(`[Venus Mock Rooms] Creating room with options:`, options);\r\n \r\n const roomId = generateRoomId();\r\n const creatorId = options.userId || 'mock-user-creator'; // Simulate a creator ID\r\n const creatorDisplayName = options.userDisplayName || `Creator ${creatorId.slice(-4)}`;\r\n\r\n const initialGameState = {\r\n phase: 'waiting',\r\n currentPlayer: creatorId, // Creator might be the first player by default\r\n turnOrder: [creatorId],\r\n playerStates: {\r\n [creatorId]: {\r\n displayName: creatorDisplayName,\r\n status: 'active',\r\n role: 'admin', // Creator is admin\r\n joinedAt: new Date(),\r\n }\r\n },\r\n gameStartedAt: null,\r\n turnCount: 0,\r\n // other game-specific state can be added by the H5 app via customMetadata or startGame\r\n };\r\n\r\n const room = {\r\n id: roomId,\r\n appId: options.appId || 'mock-app',\r\n name: options.name || 'Mock Room',\r\n type: 'shared',\r\n createdBy: creatorId,\r\n createdAt: new Date(),\r\n updatedAt: new Date(),\r\n isPrivate: options.isPrivate || false,\r\n maxPlayers: options.maxPlayers || 4,\r\n currentPlayers: [creatorId],\r\n status: 'active',\r\n customMetadata: {\r\n ...(options.customMetadata || {}),\r\n rules: {\r\n ...(options.customMetadata?.rules || {}),\r\n // Default generic rules, can be overridden by H5 app's options\r\n ruleEngine: options.customMetadata?.rules?.ruleEngine || 'generic-v1',\r\n turnBased: options.customMetadata?.rules?.turnBased ?? true,\r\n minPlayers: options.customMetadata?.rules?.minPlayers || 1,\r\n maxPlayers: options.maxPlayers || 4,\r\n gameState: initialGameState,\r\n },\r\n },\r\n admins: [creatorId],\r\n roomCode: options.roomCode || (options.isPrivate ? generateRoomCode() : null),\r\n description: options.description,\r\n gameType: options.gameType,\r\n data: {}, // General purpose data, game state is in customMetadata.rules.gameState\r\n version: 1,\r\n };\r\n\r\n mockRooms.set(roomId, room);\r\n mockMessages.set(roomId, []);\r\n mockRoomMoves.set(roomId, []); // Initialize moves list for the room\r\n\r\n console.log(`[Venus Mock Rooms] Created room ${roomId} with initial state:`, room);\r\n \r\n // Return MockVenusRoom instance\r\n return Promise.resolve(new MockVenusRoom(room));\r\n } catch (error) {\r\n console.error(`[Venus Mock Rooms] Error creating room:`, error);\r\n return Promise.reject({ success: false, error: error.message || 'Failed to create room' });\r\n }\r\n },\r\n\r\n joinRoom(roomId, playerMetadata = {}) {\r\n try {\r\n console.log(`[Venus Mock Rooms] Joining room ${roomId}`);\r\n \r\n const room = mockRooms.get(roomId);\r\n if (!room) {\r\n return Promise.reject({ success: false, error: 'Room not found' });\r\n }\r\n\r\n const joiningPlayerId = playerMetadata.userId || 'mock-user-' + Math.random().toString(36).substr(2, 5);\r\n const joiningPlayerDisplayName = playerMetadata.displayName || `Player ${joiningPlayerId.slice(-4)}`;\r\n\r\n if (room.currentPlayers.includes(joiningPlayerId)) {\r\n console.log(`[Venus Mock Rooms] Player ${joiningPlayerId} already in room ${roomId}. Updating display name if needed.`);\r\n // Ensure playerState has display name\r\n if (room.customMetadata.rules.gameState.playerStates[joiningPlayerId]) {\r\n room.customMetadata.rules.gameState.playerStates[joiningPlayerId].displayName = joiningPlayerDisplayName;\r\n room.customMetadata.rules.gameState.playerStates[joiningPlayerId].status = 'active';\r\n } else {\r\n // This case should ideally not happen if player is in currentPlayers\r\n room.customMetadata.rules.gameState.playerStates[joiningPlayerId] = {\r\n displayName: joiningPlayerDisplayName,\r\n status: 'active',\r\n role: 'player',\r\n joinedAt: new Date(),\r\n };\r\n }\r\n room.updatedAt = new Date();\r\n room.version++;\r\n broadcastEvent(roomId, 'room_data_updated', { roomId: roomId, roomData: room, timestamp: Date.now() });\r\n return Promise.resolve(new MockVenusRoom(room)); // Return MockVenusRoom instance\r\n }\r\n\r\n if (room.currentPlayers.length >= room.maxPlayers) {\r\n return Promise.reject({ success: false, error: 'Room is full' });\r\n }\r\n \r\n room.currentPlayers.push(joiningPlayerId);\r\n room.customMetadata.rules.gameState.playerStates[joiningPlayerId] = {\r\n displayName: joiningPlayerDisplayName,\r\n status: 'active',\r\n role: 'player',\r\n joinedAt: new Date(),\r\n };\r\n // If turnOrder exists and game is waiting, add player to turnOrder\r\n if (room.customMetadata.rules.gameState.phase === 'waiting' && room.customMetadata.rules.gameState.turnOrder) {\r\n if (!room.customMetadata.rules.gameState.turnOrder.includes(joiningPlayerId)) {\r\n room.customMetadata.rules.gameState.turnOrder.push(joiningPlayerId);\r\n }\r\n }\r\n\r\n room.updatedAt = new Date();\r\n room.version++;\r\n\r\n broadcastEvent(roomId, 'player_joined', { roomId: roomId, player: { id: joiningPlayerId, displayName: joiningPlayerDisplayName } });\r\n broadcastEvent(roomId, 'room_data_updated', { roomId: roomId, roomData: room, timestamp: Date.now() });\r\n\r\n console.log(`[Venus Mock Rooms] Player ${joiningPlayerId} joined room ${roomId}. Current state:`, room);\r\n return Promise.resolve(new MockVenusRoom(room)); // Return MockVenusRoom instance\r\n } catch (error) {\r\n console.error(`[Venus Mock Rooms] Error joining room:`, error);\r\n return Promise.reject({ success: false, error: error.message || 'Failed to join room' });\r\n }\r\n },\r\n\r\n updateRoomData(roomId, updates, merge = true) {\r\n try {\r\n console.log(`[Venus Mock Rooms] Updating room ${roomId} data:`, updates);\r\n \r\n const room = mockRooms.get(roomId);\r\n if (!room) {\r\n throw new Error('Room not found');\r\n }\r\n\r\n if (merge) {\r\n room.data = { ...room.data, ...updates };\r\n } else {\r\n room.data = updates;\r\n }\r\n room.updatedAt = new Date();\r\n room.version++;\r\n\r\n // Broadcast room data updated event\r\n broadcastEvent(roomId, 'room_data_updated', {\r\n roomId: roomId,\r\n roomData: room,\r\n timestamp: Date.now()\r\n });\r\n\r\n return Promise.resolve({\r\n success: true,\r\n });\r\n } catch (error) {\r\n console.error(`[Venus Mock Rooms] Error updating room data:`, error);\r\n return Promise.reject(new Error(error.message || 'Failed to update room data'));\r\n }\r\n },\r\n\r\n getRoomData(roomId) {\r\n try {\r\n console.log(`[Venus Mock Rooms] Getting room ${roomId} data`);\r\n \r\n const room = mockRooms.get(roomId);\r\n if (!room) {\r\n throw new Error('Room not found');\r\n }\r\n\r\n return Promise.resolve({\r\n success: true,\r\n data: room.data || {},\r\n });\r\n } catch (error) {\r\n console.error(`[Venus Mock Rooms] Error getting room data:`, error);\r\n return Promise.reject(new Error(error.message || 'Failed to get room data'));\r\n }\r\n },\r\n\r\n sendMessage(roomId, message) {\r\n try {\r\n const room = mockRooms.get(roomId);\r\n if (!room) {\r\n return Promise.reject({ success: false, error: 'Room not found' });\r\n }\r\n\r\n if (message.type === 'chat') {\r\n console.log(`[Venus Mock Rooms] Sending CHAT message to room ${roomId}:`, message);\r\n const messageId = generateMessageId();\r\n const messageData = {\r\n id: messageId,\r\n roomId: roomId,\r\n senderId: message.senderId || 'mock-user-chatter', // H5 app should provide senderId\r\n content: message.content || '',\r\n type: 'chat',\r\n metadata: message.metadata || {},\r\n timestamp: new Date(),\r\n };\r\n const messages = mockMessages.get(roomId) || [];\r\n messages.push(messageData);\r\n mockMessages.set(roomId, messages);\r\n broadcastEvent(roomId, 'message_received', { roomId: roomId, message: messageData });\r\n return Promise.resolve({ success: true, messageId: messageId });\r\n } else {\r\n // All non-chat messages are now treated as game moves/actions\r\n console.log(`[Venus Mock Rooms] Sending GAME ACTION/MOVE to room ${roomId} via moves subcollection:`, message);\r\n \r\n const playerId = message.playerId || message.metadata?.playerId || 'mock-player-action'; // H5 must provide this\r\n if (!playerId) {\r\n return Promise.reject({ success: false, error: 'playerId is required for game actions.'});\r\n }\r\n\r\n const move = {\r\n playerId: playerId,\r\n moveData: message.moveData || message.content || message.metadata || { type: message.type }, // Ensure type is captured\r\n clientValidationHash: message.clientValidationHash,\r\n timestamp: new Date(), // client-side timestamp for the move proposal\r\n status: 'pending_mock_processing',\r\n };\r\n const roomMoves = mockRoomMoves.get(roomId) || [];\r\n roomMoves.push(move);\r\n mockRoomMoves.set(roomId, roomMoves);\r\n\r\n // Simulate server processing this move\r\n this._processMockMove(roomId, move, room); // Use the new helper\r\n\r\n return Promise.resolve({ success: true, moveId: 'mock-move-' + Date.now() }); \r\n }\r\n } catch (error) {\r\n console.error(`[Venus Mock Rooms] Error sending message/move:`, error);\r\n return Promise.reject({ success: false, error: error.message || 'Failed to send message/move' });\r\n }\r\n },\r\n\r\n subscribeToRoom(roomId, options = {}) {\r\n try {\r\n console.log(`[Venus Mock Rooms] Subscribing to room ${roomId}:`, options);\r\n \r\n const room = mockRooms.get(roomId);\r\n if (!room) {\r\n throw new Error('Room not found');\r\n }\r\n\r\n // Store subscription for mock event broadcasting\r\n const instanceId = 'mock-instance-' + Date.now();\r\n if (!mockSubscriptions.has(instanceId)) {\r\n mockSubscriptions.set(instanceId, new Map());\r\n }\r\n \r\n const subscriptions = mockSubscriptions.get(instanceId);\r\n subscriptions.set(roomId, {\r\n onRoomDataUpdated: options.onRoomDataUpdated,\r\n onMessageReceived: options.onMessageReceived,\r\n onPlayerJoined: options.onPlayerJoined,\r\n onPlayerLeft: options.onPlayerLeft,\r\n onGameStarted: options.onGameStarted,\r\n onTurnChanged: options.onTurnChanged,\r\n });\r\n\r\n return Promise.resolve({\r\n success: true,\r\n unsubscribe: () => {\r\n subscriptions.delete(roomId);\r\n console.log(`[Venus Mock Rooms] Unsubscribed from room ${roomId}`);\r\n }\r\n });\r\n } catch (error) {\r\n console.error(`[Venus Mock Rooms] Error subscribing to room:`, error);\r\n return Promise.reject(new Error(error.message || 'Failed to subscribe to room'));\r\n }\r\n },\r\n\r\n listPublicRooms(gameType, limit = 20) {\r\n try {\r\n console.log(`[Venus Mock Rooms] Listing public rooms:`, { gameType, limit });\r\n \r\n let rooms = Array.from(mockRooms.values()).filter(room => \r\n !room.isPrivate && \r\n room.status === 'active' &&\r\n (!gameType || room.gameType === gameType)\r\n );\r\n \r\n rooms = rooms.slice(0, limit);\r\n\r\n return Promise.resolve({\r\n success: true,\r\n rooms: rooms,\r\n });\r\n } catch (error) {\r\n console.error(`[Venus Mock Rooms] Error listing public rooms:`, error);\r\n return Promise.reject(new Error(error.message || 'Failed to list public rooms'));\r\n }\r\n },\r\n\r\n searchRooms(searchQuery, gameType, limit = 20) {\r\n try {\r\n console.log(`[Venus Mock Rooms] Searching rooms:`, { searchQuery, gameType, limit });\r\n \r\n let rooms = Array.from(mockRooms.values()).filter(room => \r\n !room.isPrivate && \r\n room.status === 'active' &&\r\n (!gameType || room.gameType === gameType) &&\r\n (!searchQuery || \r\n room.name.toLowerCase().includes(searchQuery.toLowerCase()) ||\r\n room.description?.toLowerCase().includes(searchQuery.toLowerCase()))\r\n );\r\n \r\n rooms = rooms.slice(0, limit);\r\n\r\n return Promise.resolve({\r\n success: true,\r\n rooms: rooms,\r\n });\r\n } catch (error) {\r\n console.error(`[Venus Mock Rooms] Error searching rooms:`, error);\r\n return Promise.reject({ success: false, error: error.message || 'Failed to search rooms' });\r\n }\r\n },\r\n\r\n // Smart matchmaking - join existing room or create new one\r\n joinOrCreateRoom(options = {}) {\r\n try {\r\n console.log(`[Venus Mock Rooms] Smart matchmaking with options:`, options);\r\n \r\n const { matchCriteria = {}, createOptions = {} } = options;\r\n \r\n // Try to find matching room first\r\n let matchingRoom = null;\r\n for (const room of mockRooms.values()) {\r\n // Check if room matches criteria\r\n const matchesGameType = !matchCriteria.gameType || room.gameType === matchCriteria.gameType;\r\n const matchesPrivacy = !matchCriteria.hasOwnProperty('isPrivate') || room.isPrivate === matchCriteria.isPrivate;\r\n const hasSpace = !matchCriteria.hasSpace || room.currentPlayers.length < room.maxPlayers;\r\n const isActive = room.status === 'active';\r\n const isWaiting = room.customMetadata?.rules?.gameState?.phase === 'waiting';\r\n \r\n if (matchesGameType && matchesPrivacy && hasSpace && isActive && isWaiting) {\r\n matchingRoom = room;\r\n console.log(`[Venus Mock Rooms] Found matching room: ${room.id}`);\r\n break;\r\n }\r\n }\r\n \r\n if (matchingRoom) {\r\n // Join existing room\r\n console.log(`[Venus Mock Rooms] Joining existing room: ${matchingRoom.id}`);\r\n \r\n const joiningPlayerId = createOptions.userId || options.userId || 'mock-user-joiner';\r\n const joiningPlayerDisplayName = createOptions.userDisplayName || options.userDisplayName || `Player ${joiningPlayerId.slice(-4)}`;\r\n \r\n // Check if already in room\r\n if (matchingRoom.currentPlayers.includes(joiningPlayerId)) {\r\n return Promise.resolve({\r\n action: 'joined',\r\n room: new MockVenusRoom(matchingRoom),\r\n playersJoined: 0\r\n });\r\n }\r\n \r\n // Add player to room\r\n matchingRoom.currentPlayers.push(joiningPlayerId);\r\n matchingRoom.customMetadata.rules.gameState.playerStates[joiningPlayerId] = {\r\n displayName: joiningPlayerDisplayName,\r\n status: 'active',\r\n role: 'player',\r\n joinedAt: new Date(),\r\n };\r\n \r\n // Add to turn order if game is waiting\r\n if (matchingRoom.customMetadata.rules.gameState.phase === 'waiting' && \r\n matchingRoom.customMetadata.rules.gameState.turnOrder) {\r\n if (!matchingRoom.customMetadata.rules.gameState.turnOrder.includes(joiningPlayerId)) {\r\n matchingRoom.customMetadata.rules.gameState.turnOrder.push(joiningPlayerId);\r\n }\r\n }\r\n \r\n matchingRoom.updatedAt = new Date();\r\n matchingRoom.version++;\r\n \r\n // Auto-start game if room is full\r\n if (matchingRoom.currentPlayers.length >= matchingRoom.maxPlayers) {\r\n console.log(`[Venus Mock Rooms] Room ${matchingRoom.id} is full, auto-starting game`);\r\n const gameState = matchingRoom.customMetadata.rules.gameState;\r\n gameState.phase = 'playing';\r\n gameState.gameStartedAt = new Date();\r\n \r\n // Set up turn order and assign chess colors\r\n let turnOrder = [...matchingRoom.currentPlayers];\r\n if (matchingRoom.customMetadata.rules.randomizePlayerOrder) {\r\n for (let i = turnOrder.length - 1; i > 0; i--) {\r\n const j = Math.floor(Math.random() * (i + 1));\r\n [turnOrder[i], turnOrder[j]] = [turnOrder[j], turnOrder[i]];\r\n }\r\n }\r\n gameState.turnOrder = turnOrder;\r\n gameState.currentPlayer = turnOrder[0] || null;\r\n \r\n // Assign chess colors\r\n if (matchingRoom.gameType === 'chess' && turnOrder.length >= 2) {\r\n gameState.playerStates[turnOrder[0]].gameRole = 'white';\r\n gameState.playerStates[turnOrder[1]].gameRole = 'black';\r\n }\r\n \r\n broadcastEvent(matchingRoom.id, 'game_started', { \r\n roomId: matchingRoom.id, \r\n gameState: gameState, \r\n turnOrder: gameState.turnOrder, \r\n currentPlayer: gameState.currentPlayer \r\n });\r\n }\r\n \r\n broadcastEvent(matchingRoom.id, 'player_joined', { \r\n roomId: matchingRoom.id, \r\n player: { id: joiningPlayerId, displayName: joiningPlayerDisplayName } \r\n });\r\n broadcastEvent(matchingRoom.id, 'room_data_updated', { \r\n roomId: matchingRoom.id, \r\n roomData: matchingRoom, \r\n timestamp: Date.now() \r\n });\r\n \r\n return Promise.resolve({\r\n action: 'joined',\r\n room: new MockVenusRoom(matchingRoom),\r\n playersJoined: 1\r\n });\r\n \r\n } else {\r\n // Create new room\r\n console.log(`[Venus Mock Rooms] No matching room found, creating new room`);\r\n \r\n const roomCreationOptions = {\r\n ...createOptions,\r\n userId: createOptions.userId || options.userId || 'mock-user-creator',\r\n userDisplayName: createOptions.userDisplayName || options.userDisplayName || 'Creator',\r\n };\r\n \r\n const createResult = this.createRoom(roomCreationOptions);\r\n \r\n return createResult.then(room => ({\r\n action: 'created',\r\n room: room, // createRoom already returns MockVenusRoom instance\r\n playersJoined: 1\r\n }));\r\n }\r\n \r\n } catch (error) {\r\n console.error(`[Venus Mock Rooms] Error in joinOrCreateRoom:`, error);\r\n return Promise.reject({ success: false, error: error.message || 'Failed to join or create room' });\r\n }\r\n },\r\n\r\n joinRoomByCode(roomCode, playerMetadata = {}) {\r\n try {\r\n console.log(`[Venus Mock Rooms] Joining room by code ${roomCode}`);\r\n \r\n // Find room by code\r\n let foundRoom = null;\r\n for (const [roomId, room] of mockRooms.entries()) {\r\n if (room.roomCode === roomCode && room.status === 'active') {\r\n foundRoom = room;\r\n break;\r\n }\r\n }\r\n \r\n if (!foundRoom) {\r\n return Promise.reject({ success: false, error: `Room not found with code: ${roomCode}` });\r\n }\r\n \r\n // Use existing joinRoom method\r\n return this.joinRoom(foundRoom.id, playerMetadata);\r\n } catch (error) {\r\n console.error(`[Venus Mock Rooms] Error joining room by code:`, error);\r\n return Promise.reject({ success: false, error: error.message || 'Failed to join room by code' });\r\n }\r\n },\r\n\r\n // Stage 2: Enhanced game features\r\n startGame(roomId, gameConfig = {}, requestingUserId = 'mock-admin-user') {\r\n try {\r\n console.log(`[Venus Mock Rooms] Starting game in room ${roomId} by ${requestingUserId}`);\r\n const room = mockRooms.get(roomId);\r\n if (!room) {\r\n return Promise.reject({ success: false, error: 'Room not found' });\r\n }\r\n\r\n // Basic validation (mocking server-side checks)\r\n if (!room.admins.includes(requestingUserId) && room.createdBy !== requestingUserId) {\r\n return Promise.reject({ success: false, error: 'Only admin or creator can start game' });\r\n }\r\n if (room.customMetadata.rules.gameState.phase === 'playing') {\r\n return Promise.reject({ success: false, error: 'Game already in progress' });\r\n }\r\n const minPlayers = room.customMetadata.rules.minPlayers || 1;\r\n if (room.currentPlayers.length < minPlayers) {\r\n return Promise.reject({ success: false, error: `Not enough players. Needs ${minPlayers}` });\r\n }\r\n\r\n // Update game state for start\r\n const gameState = room.customMetadata.rules.gameState;\r\n gameState.phase = 'playing';\r\n gameState.gameStartedAt = new Date();\r\n\r\n // Ensure turn order and current player\r\n let turnOrder = [...room.currentPlayers]; // Default to current players array\r\n if (room.customMetadata.rules.randomizePlayerOrder) {\r\n for (let i = turnOrder.length - 1; i > 0; i--) {\r\n const j = Math.floor(Math.random() * (i + 1));\r\n [turnOrder[i], turnOrder[j]] = [turnOrder[j], turnOrder[i]];\r\n }\r\n }\r\n gameState.turnOrder = turnOrder;\r\n gameState.currentPlayer = turnOrder[0] || null;\r\n\r\n // Ensure all players in turnOrder have displayNames in playerStates\r\n turnOrder.forEach(playerId => {\r\n if (!gameState.playerStates[playerId]) {\r\n gameState.playerStates[playerId] = { displayName: `Player ${playerId.slice(-4)}`, status: 'active', role: 'player' };\r\n } else {\r\n gameState.playerStates[playerId].status = 'active'; // Ensure active\r\n if (!gameState.playerStates[playerId].displayName) {\r\n gameState.playerStates[playerId].displayName = `Player ${playerId.slice(-4)}`;\r\n }\r\n }\r\n });\r\n \r\n room.updatedAt = new Date();\r\n room.version++;\r\n\r\n console.log(`[Venus Mock Rooms] Game started in room ${roomId}. New state:`, room);\r\n broadcastEvent(roomId, 'game_started', { roomId: roomId, gameState: gameState, turnOrder: gameState.turnOrder, currentPlayer: gameState.currentPlayer });\r\n broadcastEvent(roomId, 'room_data_updated', { roomId: roomId, roomData: room, timestamp: Date.now() });\r\n \r\n // Simulate server returning the updated room object\r\n return Promise.resolve({ success: true, ...room }); \r\n } catch (error) {\r\n console.error(`[Venus Mock Rooms] Error starting game:`, error);\r\n return Promise.reject({ success: false, error: error.message || 'Failed to start game' });\r\n }\r\n },\r\n\r\n endGame(roomId, winner = null, reason = null, gameResults = {}) {\r\n try {\r\n console.log(`[Venus Mock Rooms] Player requesting to end game in room ${roomId}`);\r\n const room = mockRooms.get(roomId);\r\n if (!room) return Promise.reject({ success: false, error: 'Room not found' });\r\n\r\n const playerId = gameResults.endedBy || 'mock-player-ender'; // H5 should provide who is ending\r\n\r\n const move = {\r\n playerId: playerId,\r\n moveData: {\r\n type: 'end_game',\r\n winner,\r\n reason,\r\n gameResults,\r\n },\r\n timestamp: new Date(),\r\n status: 'pending_mock_processing',\r\n };\r\n const roomMoves = mockRoomMoves.get(roomId) || [];\r\n roomMoves.push(move);\r\n mockRoomMoves.set(roomId, roomMoves);\r\n\r\n // Simulate server processing this move\r\n this._processMockMove(roomId, move, room);\r\n \r\n return Promise.resolve({ success: true, moveId: 'mock-move-' + Date.now() });\r\n } catch (error) {\r\n console.error(`[Venus Mock Rooms] Error ending game:`, error);\r\n return Promise.reject({ success: false, error: error.message || 'Failed to end game' });\r\n }\r\n },\r\n\r\n // NEW: Propose move (client-proposed state architecture)\r\n proposeMove(roomId, proposalPayload, proposerId = 'mock-proposer') {\r\n try {\r\n console.log(`[Venus Mock Rooms] Player ${proposerId} proposing move in room ${roomId}:`, proposalPayload);\r\n const room = mockRooms.get(roomId);\r\n if (!room) return Promise.reject({ success: false, error: 'Room not found' });\r\n\r\n const proposedMoveId = `prop_move_${Date.now()}_${Math.random().toString(36).substr(2, 5)}`;\r\n \r\n // Create proposed move document (mock version)\r\n const proposedMove = {\r\n id: proposedMoveId,\r\n proposerProfileId: proposerId,\r\n timestamp: new Date(),\r\n gameSpecificState: proposalPayload.gameSpecificState,\r\n moveType: proposalPayload.moveType,\r\n clientContext: proposalPayload.clientContext,\r\n clientProposalId: proposalPayload.clientProposalId,\r\n serverGenericValidationStatus: 'pending',\r\n serverCustomValidationStatus: 'pending',\r\n clientConsensusStatus: 'pending',\r\n ...(proposalPayload.resignedBy && { resignedBy: proposalPayload.resignedBy }),\r\n ...(proposalPayload.winner && { winner: proposalPayload.winner }),\r\n };\r\n\r\n // Store in mock proposed moves\r\n if (!mockRoomMoves.has(roomId + '_proposed')) {\r\n mockRoomMoves.set(roomId + '_proposed', []);\r\n }\r\n mockRoomMoves.get(roomId + '_proposed').push(proposedMove);\r\n\r\n // Update room with optimistic state\r\n if (proposalPayload.gameSpecificState) {\r\n room.optimisticGameState = proposalPayload.gameSpecificState;\r\n room.lastProposedMoveId = proposedMoveId;\r\n room.lastProposedMoveBy = proposerId;\r\n room.lastProposedMoveAt = new Date();\r\n room.updatedAt = new Date();\r\n room.version++;\r\n }\r\n\r\n // Simulate server processing after short delay\r\n setTimeout(() => {\r\n this._processMockProposedMove(roomId, proposedMoveId, proposedMove, room);\r\n }, 100);\r\n\r\n // Broadcast optimistic update immediately\r\n broadcastEvent(roomId, 'room_data_updated', {\r\n roomId: roomId,\r\n roomData: room,\r\n timestamp: Date.now()\r\n });\r\n\r\n // Also broadcast optimistic game state update\r\n if (proposalPayload.gameSpecificState) {\r\n broadcastEvent(roomId, 'app:h5:optimisticGameStateUpdated', {\r\n roomId: roomId,\r\n optimisticGameState: proposalPayload.gameSpecificState\r\n });\r\n }\r\n\r\n return Promise.resolve({ \r\n success: true, \r\n proposedMoveId: proposedMoveId,\r\n optimisticGameState: proposalPayload.gameSpecificState\r\n });\r\n } catch (error) {\r\n console.error(`[Venus Mock Rooms] Error proposing move:`, error);\r\n return Promise.reject({ success: false, error: error.message || 'Failed to propose move' });\r\n }\r\n },\r\n\r\n // NEW internal helper to simulate server-side move processing for mock API\r\n _processMockMove(roomId, move, room) {\r\n console.log('[Venus Mock Rooms] Simulating server processing for move:', move);\r\n move.id = 'processed-mock-move-' + Date.now(); // Give it a mock processed ID\r\n setTimeout(() => {\r\n const currentRoomState = mockRooms.get(roomId);\r\n if (!currentRoomState) return;\r\n\r\n const { rules, gameState } = currentRoomState.customMetadata;\r\n const { playerId, moveData } = move;\r\n let isValidMove = true;\r\n let validationError = null;\r\n\r\n // Mock Generic Validation\r\n if (rules.turnBased && gameState.currentPlayer !== playerId) {\r\n isValidMove = false;\r\n validationError = 'Not current player\\'s turn.';\r\n console.warn(`[Venus Mock Rooms] Invalid move by ${playerId}: Not their turn. Current: ${gameState.currentPlayer}`);\r\n }\r\n \r\n // Further mock validation based on moveData.type if H5 provides it\r\n const moveType = moveData?.type;\r\n if (isValidMove && moveType && rules.allowedMessageTypes?.[gameState.phase]?.[moveType]) {\r\n const ruleForMoveType = rules.allowedMessageTypes[gameState.phase][moveType];\r\n if (ruleForMoveType.requiredFields) {\r\n for (const field of ruleForMoveType.requiredFields) {\r\n if (!(field in moveData)) {\r\n isValidMove = false;\r\n validationError = `Missing required field: ${field} for move type ${moveType}.`;\r\n console.warn(`[Venus Mock Rooms] Invalid move by ${playerId}: ${validationError}`);\r\n break;\r\n }\r\n }\r\n }\r\n } else if (isValidMove && moveType && !rules.allowedMessageTypes?.[gameState.phase]?.[moveType]) {\r\n // If moveType is specified but no rule allows it (could be a warning or error in real server)\r\n console.warn(`[Venus Mock Rooms] Move type \"${moveType}\" not defined in allowedMessageTypes for phase \"${gameState.phase}\". Processing by default.`);\r\n }\r\n\r\n if (isValidMove) {\r\n console.log('[Venus Mock Rooms] Move considered valid by mock server. Updating game state.');\r\n move.status = 'mock_valid';\r\n // Apply mock game state updates based on the move\r\n gameState.lastMoveBy = playerId;\r\n gameState.lastMoveTimestamp = new Date();\r\n\r\n if (moveData.type === 'end_game') {\r\n gameState.phase = 'ended';\r\n gameState.endedAt = new Date();\r\n currentRoomState.status = 'archived'; // Mock archiving room on game end\r\n console.log('[Venus Mock Rooms] Mock: Game ended.');\r\n } else if (moveData.type === 'force_update_state') {\r\n Object.assign(gameState, moveData.payload); // Directly apply payload to gameState\r\n console.log('[Venus Mock Rooms] Mock: Game state forcibly updated with:', moveData.payload);\r\n }\r\n\r\n // Common logic for advancing turn if applicable (and not an end_game or specific state-setting move)\r\n const nonTurnAdvancingMoves = ['end_game', 'force_update_state'];\r\n if (rules.turnBased && gameState.turnOrder && gameState.turnOrder.length > 0 && !nonTurnAdvancingMoves.includes(moveData.type)) {\r\n const currentPlayerIndex = gameState.turnOrder.indexOf(gameState.currentPlayer || '');\r\n if (currentPlayerIndex !== -1) {\r\n const nextPlayerIndex = (currentPlayerIndex + 1) % gameState.turnOrder.length;\r\n gameState.currentPlayer = gameState.turnOrder[nextPlayerIndex];\r\n gameState.turnCount = (gameState.turnCount || 0) + 1;\r\n console.log(`[Venus Mock Rooms] Mock: Turn advanced to ${gameState.currentPlayer}`);\r\n broadcastEvent(roomId, 'turn_changed', {\r\n roomId: roomId,\r\n currentPlayer: gameState.currentPlayer,\r\n previousPlayer: playerId, // The one who just moved\r\n turnCount: gameState.turnCount\r\n });\r\n }\r\n }\r\n currentRoomState.updatedAt = new Date();\r\n currentRoomState.version++;\r\n broadcastEvent(roomId, 'room_data_updated', { roomId: roomId, roomData: currentRoomState, timestamp: Date.now() });\r\n } else {\r\n console.warn('[Venus Mock Rooms] Move considered invalid by mock server. No game state change.', { validationError });\r\n move.status = 'mock_invalid';\r\n move.error = validationError;\r\n // Optionally, send a system message or specific event for invalid move\r\n }\r\n console.log('[Venus Mock Rooms] Finished mock processing for move:', move);\r\n }, 100); // Simulate processing delay\r\n },\r\n\r\n // NEW: Process proposed move for mock API\r\n _processMockProposedMove(roomId, proposedMoveId, proposedMove, room) {\r\n console.log('[Venus Mock Rooms] Simulating server processing for proposed move:', proposedMoveId);\r\n \r\n const { rules, gameState } = room.customMetadata;\r\n const { proposerProfileId, gameSpecificState, moveType } = proposedMove;\r\n \r\n // Mock generic validation\r\n let isGenericValid = true;\r\n let genericValidationReason = '';\r\n \r\n // 🛡️ SECURITY: Special handling for resignation moves (matching real server)\r\n if (moveType === 'resignation') {\r\n // Check for resignedBy in multiple possible locations (matching server fix)\r\n const resignedBy = proposedMove.resignedBy || gameSpecificState?.resignedBy;\r\n \r\n if (!resignedBy) {\r\n isGenericValid = false;\r\n genericValidationReason = 'Security violation: Resignation move must specify who is resigning (resignedBy field required).';\r\n } else if (resignedBy !== proposerProfileId) {\r\n isGenericValid = false;\r\n genericValidationReason = `Security violation: Player ${proposerProfileId} cannot resign on behalf of player ${resignedBy}. Players can only resign themselves.`;\r\n } else if (!gameState.playerStates || !gameState.playerStates[proposerProfileId]) {\r\n isGenericValid = false;\r\n genericValidationReason = `Security violation: Player ${proposerProfileId} is not in this game and cannot resign.`;\r\n } else {\r\n console.log(`[Venus Mock Rooms] ✅ Resignation move validated: ${proposerProfileId} is resigning themselves`);\r\n }\r\n } else {\r\n // Normal turn validation for non-resignation moves\r\n if (rules.turnBased && gameState.currentPlayer !== proposerProfileId) {\r\n isGenericValid = false;\r\n genericValidationReason = `Not player's turn. Current: ${gameState.currentPlayer}`;\r\n }\r\n }\r\n \r\n // Field requirements validation\r\n if (isGenericValid && moveType && rules.allowedMessageTypes?.[gameState.phase]?.[moveType]) {\r\n const ruleForMoveType = rules.allowedMessageTypes[gameState.phase][moveType];\r\n if (ruleForMoveType.requiredFields) {\r\n for (const field of ruleForMoveType.requiredFields) {\r\n // For resignation, check both top-level and gameSpecificState\r\n const hasField = moveType === 'resignation' ? \r\n (proposedMove[field] !== undefined || gameSpecificState[field] !== undefined) :\r\n (gameSpecificState[field] !== undefined);\r\n \r\n if (!hasField) {\r\n isGenericValid = false;\r\n genericValidationReason = `Missing required field: ${field}`;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n \r\n // Update proposed move status\r\n proposedMove.serverGenericValidationStatus = isGenericValid ? 'valid' : 'invalid';\r\n proposedMove.serverGenericValidationReason = genericValidationReason;\r\n proposedMove.serverCustomValidationStatus = 'not_applicable'; // Mock: no custom validation\r\n proposedMove.clientConsensusStatus = 'valid'; // Mock: assume consensus\r\n \r\n if (isGenericValid) {\r\n // Apply game state updates from gameSpecificState\r\n Object.assign(gameState, gameSpecificState);\r\n \r\n // Check if game ended (generic game-agnostic detection)\r\n if (gameSpecificState.isGameOver === true) {\r\n gameState.phase = 'ended';\r\n gameState.winner = gameSpecificState.winner || null;\r\n gameState.endReason = gameSpecificState.gameStatus || 'completed';\r\n gameState.endedAt = new Date();\r\n gameState.currentPlayer = null; // Clear current player since game is over\r\n console.log(`[Venus Mock Rooms] 🏁 Game ended in room ${roomId}: ${gameState.endReason}, winner: ${gameState.winner || 'draw'}`);\r\n } else {\r\n // Advance turn if applicable and game is not over\r\n if (rules.turnBased && gameState.turnOrder && gameState.turnOrder.length > 0) {\r\n const currentPlayerIndex = gameState.turnOrder.indexOf(gameState.currentPlayer || '');\r\n if (currentPlayerIndex !== -1) {\r\n const nextPlayerIndex = (currentPlayerIndex + 1) % gameState.turnOrder.length;\r\n gameState.currentPlayer = gameState.turnOrder[nextPlayerIndex];\r\n gameState.turnCount = (gameState.turnCount || 0) + 1;\r\n }\r\n }\r\n }\r\n \r\n gameState.lastMoveBy = proposerProfileId;\r\n gameState.lastMoveTimestamp = new Date();\r\n room.updatedAt = new Date();\r\n room.version++;\r\n \r\n console.log(`[Venus Mock Rooms] Proposed move ${proposedMoveId} validated and applied`);\r\n } else {\r\n console.log(`[Venus Mock Rooms] Proposed move ${proposedMoveId} validation failed: ${genericValidationReason}`);\r\n }\r\n \r\n // Broadcast validation update\r\n broadcastEvent(roomId, 'app:h5:proposedMoveValidationUpdated', {\r\n roomId: roomId,\r\n proposedMoveId: proposedMoveId,\r\n proposedMoveData: proposedMove\r\n });\r\n \r\n // If valid, broadcast final room update\r\n if (isGenericValid) {\r\n broadcastEvent(roomId, 'room_data_updated', {\r\n roomId: roomId,\r\n roomData: room,\r\n timestamp: Date.now()\r\n });\r\n }\r\n },\r\n\r\n getUserRooms(appId, includeArchived = false) {\r\n try {\r\n console.log(`[Venus Mock Rooms] Getting user rooms:`, { appId, includeArchived });\r\n \r\n const userId = 'mock-user'; // Could be enhanced to support multiple users\r\n \r\n let rooms = Array.from(mockRooms.values()).filter(room => \r\n room.currentPlayers.includes(userId) &&\r\n (!appId || room.appId === appId) &&\r\n (includeArchived || room.status === 'active')\r\n );\r\n\r\n // Sort by most recent activity\r\n rooms.sort((a, b) => new Date(b.updatedAt) - new Date(a.updatedAt));\r\n\r\n return Promise.resolve({\r\n success: true,\r\n rooms: rooms,\r\n });\r\n } catch (error) {\r\n console.error(`[Venus Mock Rooms] Error getting user rooms:`, error);\r\n return Promise.reject(new Error(error.message || 'Failed to get user rooms'));\r\n }\r\n },\r\n\r\n getGameState(roomId) {\r\n try {\r\n console.log(`[Venus Mock Rooms] Getting game state for room ${roomId}`);\r\n \r\n const room = mockRooms.get(roomId);\r\n if (!room) {\r\n return Promise.reject({ success: false, error: 'Room not found'});\r\n }\r\n\r\n const gameState = room.customMetadata?.rules?.gameState || {};\r\n\r\n return Promise.resolve({\r\n success: true,\r\n data: gameState, // Return the authoritative game state from the mock room\r\n });\r\n } catch (error) {\r\n console.error(`[Venus Mock Rooms] Error getting game state:`, error);\r\n return Promise.reject({ success: false, error: error.message || 'Failed to get game state' });\r\n }\r\n },\r\n};\r\n\r\n// Initialize rooms functionality on a VenusAPI instance\r\nexport function initializeRooms(venusApiInstance, mockData = null) {\r\n // Initializing room system mock\r\n\r\n // Initialize with default mock data if provided\r\n if (mockData && Array.isArray(mockData.rooms)) {\r\n mockData.rooms.forEach(room => {\r\n mockRooms.set(room.id, room);\r\n mockMessages.set(room.id, []);\r\n mockPlayers.set(room.id, room.currentPlayers.map(playerId => ({\r\n id: playerId,\r\n roomId: room.id,\r\n joinedAt: new Date(),\r\n lastActive: new Date(),\r\n status: 'active',\r\n customData: {},\r\n role: playerId === room.createdBy ? 'owner' : 'member',\r\n })));\r\n });\r\n // Initialized with default rooms\r\n }\r\n\r\n // Create proxied objects that will delegate to real API when available\r\n venusApiInstance.rooms = createProxiedObject.call(venusApiInstance, 'rooms', roomsMock);\r\n\r\n // Expose room methods directly on venus for compatibility with venus-rooms.ts\r\n venusApiInstance.getUserRooms = createProxiedMethod('getUserRooms', roomsMock.getUserRooms);\r\n venusApiInstance.createRoom = createProxiedMethod('createRoom', roomsMock.createRoom);\r\n venusApiInstance.joinRoom = createProxiedMethod('joinRoom', roomsMock.joinRoom);\r\n venusApiInstance.joinOrCreateRoom = createProxiedMethod('joinOrCreateRoom', roomsMock.joinOrCreateRoom);\r\n venusApiInstance.joinRoomByCode = createProxiedMethod('joinRoomByCode', roomsMock.joinRoomByCode);\r\n venusApiInstance.listPublicRooms = createProxiedMethod('listPublicRooms', roomsMock.listPublicRooms);\r\n venusApiInstance.searchRooms = createProxiedMethod('searchRooms', roomsMock.searchRooms);\r\n venusApiInstance.subscribeToRoom = createProxiedMethod('subscribeToRoom', roomsMock.subscribeToRoom);\r\n\r\n // Add feature detection\r\n venusApiInstance.isRoomSystemEnabled = function() {\r\n return true; // Always enabled in mock for development\r\n };\r\n\r\n // Room system mock initialized successfully\r\n} ","/**\r\n * Venus Asset Loader - Unified asset loading for all H5 apps\r\n * Simplifies complex asset loading with automatic WebView handling, streaming support, and caching\r\n */\r\n\r\nclass VenusAssetLoader {\r\n constructor() {\r\n this.cache = new Map();\r\n this.blobUrls = new Map();\r\n // Will be set during initialization when VenusAPI is available\r\n this.isWebView = false;\r\n this.venusAPI = null;\r\n }\r\n\r\n // Set the VenusAPI reference during initialization\r\n setVenusAPI(api) {\r\n this.venusAPI = api;\r\n // Use VenusAPI's platform detection\r\n this.isWebView = !api.isWeb || !api.isWeb();\r\n }\r\n\r\n /**\r\n * Load any asset with automatic optimization\r\n * @param {string} url - Asset URL\r\n * @param {Object} options - Loading options\r\n * @returns {Promise<string>} - URL to use (original, blob, or object URL)\r\n */\r\n async loadAsset(url, options = {}) {\r\n const {\r\n type = 'auto', // 'image', 'audio', 'video', 'text', 'json', 'auto'\r\n cache = true, // Use cache\r\n timeout = 30000,\r\n isOptional = false // New option to suppress error logging for optional assets\r\n } = options;\r\n\r\n // Resolve the URL to ensure it has proper CDN prefix if needed\r\n // Use the public resolveAssetUrl if available (which adds CDN prefix)\r\n const resolvedUrl = (this.venusAPI && this.venusAPI.resolveAssetUrl) \r\n ? this.venusAPI.resolveAssetUrl(url)\r\n : this._resolveAssetUrl(url);\r\n\r\n // Check cache first\r\n if (cache && this.cache.has(resolvedUrl)) {\r\n return this.cache.get(resolvedUrl);\r\n }\r\n\r\n // Auto-detect type if needed\r\n const assetType = type === 'auto' ? this._detectType(resolvedUrl) : type;\r\n\r\n try {\r\n let resultUrl = resolvedUrl;\r\n\r\n // Text/JSON always fetched directly\r\n if (assetType === 'text' || assetType === 'json') {\r\n const content = await this._fetchText(resolvedUrl, timeout);\r\n this.cache.set(resolvedUrl, content);\r\n return content;\r\n }\r\n\r\n // Skip blob loading in mock mode (development)\r\n const isMockMode = this.venusAPI && this.venusAPI.isMock && this.venusAPI.isMock();\r\n \r\n // For media assets in WebView (but not mock mode), decide between streaming and blob\r\n if (this.isWebView && !isMockMode && ['image', 'audio', 'video'].includes(assetType)) {\r\n // Always use blob loading for videos in WebView to avoid streaming issues\r\n if (assetType === 'video') {\r\n resultUrl = await this._loadAsBlob(resolvedUrl, assetType);\r\n // Skip verification for blob videos - they're already verified during blob creation\r\n if (cache) {\r\n this.cache.set(resolvedUrl, resultUrl);\r\n }\r\n return resultUrl;\r\n } else if (assetType === 'audio') {\r\n // Audio also uses blob loading in WebView\r\n resultUrl = await this._loadAsBlob(resolvedUrl, assetType);\r\n } else {\r\n // Images use blob loading in WebView\r\n resultUrl = await this._loadAsBlob(resolvedUrl, assetType);\r\n }\r\n }\r\n\r\n // Verify the asset can be loaded (skip for WebView videos handled above)\r\n if (!(this.isWebView && !isMockMode && assetType === 'video')) {\r\n await this._verifyAsset(resultUrl, assetType);\r\n }\r\n\r\n if (cache) {\r\n this.cache.set(resolvedUrl, resultUrl);\r\n }\r\n\r\n return resultUrl;\r\n } catch (error) {\r\n // Only log errors for required assets\r\n if (!isOptional) {\r\n console.error(`[VenusAssetLoader] Failed to load ${resolvedUrl}:`, error);\r\n }\r\n throw error;\r\n }\r\n }\r\n\r\n async _fetchText(url, timeout) {\r\n const controller = new AbortController();\r\n const timeoutId = setTimeout(() => controller.abort(), timeout);\r\n\r\n try {\r\n // Use VenusAPI.fetchFromCdn if available\r\n const response = typeof VenusAPI !== 'undefined' && VenusAPI.fetchFromCdn\r\n ? await VenusAPI.fetchFromCdn(url, { signal: controller.signal })\r\n : await fetch(url, { signal: controller.signal });\r\n\r\n clearTimeout(timeoutId);\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\r\n }\r\n\r\n return await response.text();\r\n } catch (error) {\r\n clearTimeout(timeoutId);\r\n throw error;\r\n }\r\n }\r\n\r\n async _loadAsBlob(url, type) {\r\n // Check if we already have a blob URL for this asset\r\n if (this.blobUrls.has(url)) {\r\n return this.blobUrls.get(url);\r\n }\r\n\r\n const mimeType = {\r\n image: 'image/*',\r\n audio: 'audio/*',\r\n video: 'video/*'\r\n }[type] || '*/*';\r\n\r\n const controller = new AbortController();\r\n const timeoutId = setTimeout(() => controller.abort(), 30000);\r\n\r\n try {\r\n // Always use native fetch for blob loading since VenusAPI doesn't support blob()\r\n const response = await fetch(url, {\r\n mode: 'cors',\r\n credentials: 'omit',\r\n headers: { Accept: mimeType },\r\n signal: controller.signal\r\n });\r\n\r\n clearTimeout(timeoutId);\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\r\n }\r\n\r\n const blob = await response.blob();\r\n const blobUrl = URL.createObjectURL(blob);\r\n \r\n // Track blob URL for cleanup\r\n this.blobUrls.set(url, blobUrl);\r\n \r\n return blobUrl;\r\n } catch (error) {\r\n clearTimeout(timeoutId);\r\n throw error;\r\n }\r\n }\r\n\r\n async _checkStreamingSupport(url) {\r\n try {\r\n // Use VenusAPI.fetchFromCdn if available\r\n const response = typeof VenusAPI !== 'undefined' && VenusAPI.fetchFromCdn\r\n ? await VenusAPI.fetchFromCdn(url, { method: 'HEAD' })\r\n : await fetch(url, { method: 'HEAD' });\r\n\r\n const acceptRanges = response.headers.get('Accept-Ranges') === 'bytes';\r\n const contentLength = response.headers.get('Content-Length');\r\n \r\n return acceptRanges && !!contentLength;\r\n } catch {\r\n return false;\r\n }\r\n }\r\n\r\n async _verifyAsset(url, type) {\r\n return new Promise((resolve, reject) => {\r\n const timeout = setTimeout(() => {\r\n reject(new Error(`Verification timeout for ${type} asset`));\r\n }, 10000);\r\n\r\n if (type === 'image') {\r\n const img = new Image();\r\n console.log(`🖼️ [Asset Verification] Verifying image: ${url}`);\r\n img.onload = () => {\r\n console.log(`✅ [Asset Verification] Image verified successfully: ${url}`);\r\n clearTimeout(timeout);\r\n resolve();\r\n };\r\n img.onerror = (error) => {\r\n console.log(`❌ [Asset Verification] Image verification failed: ${url}`, error);\r\n clearTimeout(timeout);\r\n reject(new Error('Failed to load image'));\r\n };\r\n img.src = url;\r\n } else if (type === 'audio') {\r\n const audio = new Audio();\r\n audio.oncanplaythrough = () => {\r\n clearTimeout(timeout);\r\n resolve();\r\n };\r\n audio.onerror = () => {\r\n clearTimeout(timeout);\r\n reject(new Error('Failed to load audio'));\r\n };\r\n audio.src = url;\r\n audio.load();\r\n } else if (type === 'video') {\r\n const video = document.createElement('video');\r\n video.onloadedmetadata = () => {\r\n clearTimeout(timeout);\r\n video.src = ''; // Clean up\r\n resolve();\r\n };\r\n video.onerror = () => {\r\n clearTimeout(timeout);\r\n reject(new Error('Failed to load video'));\r\n };\r\n video.src = url;\r\n } else {\r\n clearTimeout(timeout);\r\n resolve(); // No verification needed for other types\r\n }\r\n });\r\n }\r\n\r\n _detectType(url) {\r\n const ext = url.split('.').pop()?.toLowerCase();\r\n if (['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg'].includes(ext)) return 'image';\r\n if (['mp3', 'wav', 'ogg', 'm4a', 'aac'].includes(ext)) return 'audio';\r\n if (['mp4', 'webm', 'mov', 'm4v'].includes(ext)) return 'video';\r\n if (['json'].includes(ext)) return 'json';\r\n return 'text';\r\n }\r\n\r\n _resolveAssetUrl(url) {\r\n // If already a full URL, return as-is\r\n if (url.startsWith('http://') || url.startsWith('https://')) {\r\n return url;\r\n }\r\n\r\n // Check if forceRemoteCdn is enabled\r\n const forceRemoteCdn = this.venusAPI && this.venusAPI._mock && this.venusAPI._mock.forceRemoteCdn;\r\n \r\n if (forceRemoteCdn) {\r\n // Force remote CDN usage - construct full CDN URL\r\n const CDN_BASE_URL = 'https://venus-static-01293ak.web.app/';\r\n const cleanUrl = url.startsWith('/') ? url.slice(1) : url;\r\n const fullUrl = CDN_BASE_URL + cleanUrl;\r\n console.log(`🌐 [Asset Loader] Force remote CDN: ${url} -> ${fullUrl}`);\r\n return fullUrl;\r\n }\r\n\r\n // In mock/development mode with relative paths, ensure they work correctly\r\n if (this.venusAPI && this.venusAPI.isMock && this.venusAPI.isMock()) {\r\n // In mock mode, paths starting with / are relative to the server root\r\n return url;\r\n }\r\n\r\n // In production, paths might need CDN prefix (handled by fetchFromCdn)\r\n return url;\r\n }\r\n\r\n /**\r\n * Preload multiple assets in parallel\r\n * @param {(string|{url: string, isOptional?: boolean})[]} urls - Array of URLs or URL objects with optional metadata\r\n * @param {Object} options - Loading options\r\n */\r\n async preloadAssets(urls, options = {}) {\r\n const { onProgress } = options;\r\n let loaded = 0;\r\n const total = urls.length;\r\n\r\n // Normalize input to always work with objects internally\r\n const normalizedUrls = urls.map(item => {\r\n if (typeof item === 'string') {\r\n return { url: item, isOptional: false };\r\n }\r\n return { \r\n url: item.url, \r\n isOptional: item.isOptional || false \r\n };\r\n });\r\n\r\n const results = await Promise.allSettled(\r\n normalizedUrls.map(async (item) => {\r\n try {\r\n // Pass isOptional flag to loadAsset\r\n const result = await this.loadAsset(item.url, { ...options, isOptional: item.isOptional });\r\n loaded++;\r\n if (onProgress) {\r\n onProgress(loaded / total, { loaded, total, current: item.url });\r\n }\r\n return { url: item.url, result, success: true, isOptional: item.isOptional };\r\n } catch (error) {\r\n loaded++;\r\n \r\n // loadAsset now handles logging based on isOptional flag\r\n if (onProgress) {\r\n onProgress(loaded / total, { loaded, total, current: item.url, error });\r\n }\r\n return { url: item.url, error, success: false, isOptional: item.isOptional };\r\n }\r\n })\r\n );\r\n\r\n // Only count/warn about required assets that failed\r\n const failedRequired = results.filter(r => \r\n (r.status === 'rejected' || !r.value?.success) && !r.value?.isOptional\r\n );\r\n \r\n if (failedRequired.length > 0) {\r\n console.warn(`[VenusAssetLoader] ${failedRequired.length} required assets failed to load`);\r\n // Log the URLs of failed required assets for debugging\r\n failedRequired.forEach(r => {\r\n console.warn(`[VenusAssetLoader] Failed required asset: ${r.value?.url}`);\r\n });\r\n }\r\n\r\n // Log optional failures at info level for debugging\r\n const failedOptional = results.filter(r => \r\n (r.status === 'rejected' || !r.value?.success) && r.value?.isOptional\r\n );\r\n \r\n if (failedOptional.length > 0) {\r\n console.info(`[VenusAssetLoader] ${failedOptional.length} optional assets were not found (this is OK)`);\r\n }\r\n\r\n return results.map(r => r.value);\r\n }\r\n\r\n /**\r\n * Clean up blob URLs to prevent memory leaks\r\n */\r\n cleanup() {\r\n for (const blobUrl of this.blobUrls.values()) {\r\n URL.revokeObjectURL(blobUrl);\r\n }\r\n this.blobUrls.clear();\r\n this.cache.clear();\r\n }\r\n\r\n /**\r\n * Get a cached asset URL if available\r\n */\r\n getCached(url) {\r\n // Use the public resolveAssetUrl if available (which adds CDN prefix)\r\n const resolvedUrl = (this.venusAPI && this.venusAPI.resolveAssetUrl) \r\n ? this.venusAPI.resolveAssetUrl(url)\r\n : this._resolveAssetUrl(url);\r\n return this.cache.get(resolvedUrl);\r\n }\r\n}\r\n\r\n// Export as part of VenusAPI\r\nif (typeof VenusAPI !== 'undefined') {\r\n VenusAPI.assetLoader = new VenusAssetLoader();\r\n \r\n // Convenience methods\r\n VenusAPI.loadAsset = (url, options) => VenusAPI.assetLoader.loadAsset(url, options);\r\n VenusAPI.preloadAssets = (urls, options) => VenusAPI.assetLoader.preloadAssets(urls, options);\r\n VenusAPI.cleanupAssets = () => VenusAPI.assetLoader.cleanup();\r\n}\r\n\r\n// Export initialization function for Venus API\r\nexport function initializeAssetLoader(api, createProxiedMethod) {\r\n // Create the asset loader instance\r\n const assetLoader = new VenusAssetLoader();\r\n \r\n // Set the VenusAPI reference for platform detection\r\n assetLoader.setVenusAPI(api);\r\n \r\n // Add the instance to the API (not proxied)\r\n api._assetLoader = assetLoader;\r\n \r\n // Also expose as public assetLoader property as documented in the API\r\n api.assetLoader = assetLoader;\r\n \r\n // Add convenience methods using createProxiedMethod if available\r\n if (createProxiedMethod) {\r\n api.loadAsset = createProxiedMethod('loadAsset', function(url, options) {\r\n return assetLoader.loadAsset(url, options);\r\n });\r\n \r\n api.preloadAssets = createProxiedMethod('preloadAssets', function(urls, options) {\r\n return assetLoader.preloadAssets(urls, options);\r\n });\r\n \r\n api.cleanupAssets = createProxiedMethod('cleanupAssets', function() {\r\n return assetLoader.cleanup();\r\n });\r\n } else {\r\n // Fallback for environments without createProxiedMethod\r\n api.loadAsset = function(url, options) {\r\n return assetLoader.loadAsset(url, options);\r\n };\r\n \r\n api.preloadAssets = function(urls, options) {\r\n return assetLoader.preloadAssets(urls, options);\r\n };\r\n \r\n api.cleanupAssets = function() {\r\n return assetLoader.cleanup();\r\n };\r\n }\r\n \r\n // Also expose on global VenusAPI for backward compatibility\r\n if (typeof window !== 'undefined' && window.VenusAPI) {\r\n window.VenusAPI.loadAsset = api.loadAsset;\r\n window.VenusAPI.preloadAssets = api.preloadAssets;\r\n window.VenusAPI.cleanupAssets = api.cleanupAssets;\r\n }\r\n} ","/* esm.sh - break_eternity.js@2.1.2 */\r\nfunction se(r,n){if(!(r instanceof n))throw new TypeError(\"Cannot call a class as a function\")}function le(r,n){for(var e=0;e<n.length;e++){var t=n[e];t.enumerable=t.enumerable||!1,t.configurable=!0,\"value\"in t&&(t.writable=!0),Object.defineProperty(r,t.key,t)}}function ue(r,n,e){return n&&le(r.prototype,n),e&&le(r,e),Object.defineProperty(r,\"prototype\",{writable:!1}),r}var me=function(){function r(n){se(this,r),this.map=new Map,this.first=void 0,this.last=void 0,this.maxSize=n}return ue(r,[{key:\"size\",get:function(){return this.map.size}},{key:\"get\",value:function(e){var t=this.map.get(e);if(t!==void 0)return t!==this.first&&(t===this.last?(this.last=t.prev,this.last.next=void 0):(t.prev.next=t.next,t.next.prev=t.prev),t.next=this.first,this.first.prev=t,this.first=t),t.value}},{key:\"set\",value:function(e,t){if(!(this.maxSize<1)){if(this.map.has(e))throw new Error(\"Cannot update existing keys in the cache\");var i=new ge(e,t);for(this.first===void 0?(this.first=i,this.last=i):(i.next=this.first,this.first.prev=i,this.first=i),this.map.set(e,i);this.map.size>this.maxSize;){var a=this.last;this.map.delete(a.key),this.last=a.prev,this.last.next=void 0}}}}]),r}(),ge=ue(function r(n,e){se(this,r),this.next=void 0,this.prev=void 0,this.key=n,this.value=e}),ne=17,T=9e15,ce=Math.log10(9e15),$=1/9e15,ve=308,ye=-324,fe=5,de=1023,Ne=function(){for(var r=[],n=ye+1;n<=ve;n++)r.push(+(\"1e\"+n));var e=323;return function(t){return r[t+e]}}(),_=[2,Math.E,3,4,5,6,7,8,9,10],be=[[1,1.0891180521811203,1.1789767925673957,1.2701455431742086,1.3632090180450092,1.4587818160364217,1.5575237916251419,1.6601571006859253,1.767485818836978,1.8804192098842727,2],[1,1.1121114330934079,1.231038924931609,1.3583836963111375,1.4960519303993531,1.6463542337511945,1.8121385357018724,1.996971324618307,2.2053895545527546,2.4432574483385254,Math.E],[1,1.1187738849693603,1.2464963939368214,1.38527004705667,1.5376664685821402,1.7068895236551784,1.897001227148399,2.1132403089001035,2.362480153784171,2.6539010333870774,3],[1,1.1367350847096405,1.2889510672956703,1.4606478703324786,1.6570295196661111,1.8850062585672889,2.1539465047453485,2.476829779693097,2.872061932789197,3.3664204535587183,4],[1,1.1494592900767588,1.319708228183931,1.5166291280087583,1.748171114438024,2.0253263297298045,2.3636668498288547,2.7858359149579424,3.3257226212448145,4.035730287722532,5],[1,1.159225940787673,1.343712473580932,1.5611293155111927,1.8221199554561318,2.14183924486326,2.542468319282638,3.0574682501653316,3.7390572020926873,4.6719550537360774,6],[1,1.1670905356972596,1.3632807444991446,1.5979222279405536,1.8842640123816674,2.2416069644878687,2.69893426559423,3.3012632110403577,4.121250340630164,5.281493033448316,7],[1,1.1736630594087796,1.379783782386201,1.6292821855668218,1.9378971836180754,2.3289975651071977,2.8384347394720835,3.5232708454565906,4.478242031114584,5.868592169644505,8],[1,1.1793017514670474,1.394054150657457,1.65664127441059,1.985170999970283,2.4069682290577457,2.9647310119960752,3.7278665320924946,4.814462547283592,6.436522247411611,9],[1,1.1840100246247336,1.4061375836156955,1.6802272208863964,2.026757028388619,2.4770056063449646,3.080525271755482,3.9191964192627284,5.135152840833187,6.989961179534715,10]],we=[[-1,-.9194161097107025,-.8335625019330468,-.7425599821143978,-.6466611521029437,-.5462617907227869,-.4419033816638769,-.3342645487554494,-.224140440909962,-.11241087890006762,0],[-1,-.90603157029014,-.80786507256596,-.7064666939634,-.60294836853664,-.49849837513117,-.39430303318768,-.29147201034755,-.19097820800866,-.09361896280296,0],[-1,-.9021579584316141,-.8005762598234203,-.6964780623319391,-.5911906810998454,-.486050182576545,-.3823089430815083,-.28106046722897615,-.1831906535795894,-.08935809204418144,0],[-1,-.8917227442365535,-.781258746326964,-.6705130326902455,-.5612813129406509,-.4551067709033134,-.35319256652135966,-.2563741554088552,-.1651412821106526,-.0796919581982668,0],[-1,-.8843387974366064,-.7678744063886243,-.6529563724510552,-.5415870994657841,-.4352842206588936,-.33504449124791424,-.24138853420685147,-.15445285440944467,-.07409659641336663,0],[-1,-.8786709358426346,-.7577735191184886,-.6399546189952064,-.527284921869926,-.4211627631006314,-.3223479611761232,-.23107655627789858,-.1472057700818259,-.07035171210706326,0],[-1,-.8740862815291583,-.7497032990976209,-.6297119746181752,-.5161838335958787,-.41036238255751956,-.31277212146489963,-.2233976621705518,-.1418697367979619,-.06762117662323441,0],[-1,-.8702632331800649,-.7430366914122081,-.6213373075161548,-.5072025698095242,-.40171437727184167,-.30517930701410456,-.21736343968190863,-.137710238299109,-.06550774483471955,0],[-1,-.8670016295947213,-.7373984232432306,-.6143173985094293,-.49973884395492807,-.394584953527678,-.2989649949848695,-.21245647317021688,-.13434688362382652,-.0638072667348083,0],[-1,-.8641642839543857,-.732534623168535,-.6083127477059322,-.4934049257184696,-.3885773075899922,-.29376029055315767,-.2083678561173622,-.13155653399373268,-.062401588652553186,0]],s=function(n){return k.fromValue_noAlloc(n)},m=function(n,e,t){return k.fromComponents(n,e,t)},c=function(n,e,t){return k.fromComponents_noNormalize(n,e,t)},K=function(n,e){var t=e+1,i=Math.ceil(Math.log10(Math.abs(n))),a=Math.round(n*Math.pow(10,t-i))*Math.pow(10,i-t);return parseFloat(a.toFixed(Math.max(t-i,0)))},ie=function(n){return Math.sign(n)*Math.log10(Math.abs(n))},ke=function(n){if(!isFinite(n))return n;if(n<-50)return n===Math.trunc(n)?Number.NEGATIVE_INFINITY:0;for(var e=1;n<10;)e=e*n,++n;n-=1;var t=.9189385332046727;t=t+(n+.5)*Math.log(n),t=t-n;var i=n*n,a=n;return t=t+1/(12*a),a=a*i,t=t-1/(360*a),a=a*i,t=t+1/(1260*a),a=a*i,t=t-1/(1680*a),a=a*i,t=t+1/(1188*a),a=a*i,t=t-691/(360360*a),a=a*i,t=t+7/(1092*a),a=a*i,t=t-3617/(122400*a),Math.exp(t)/e},Me=.36787944117144233,oe=.5671432904097838,ae=function(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e-10,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,i,a;if(!Number.isFinite(n))return n;if(t){if(n===0)return n;if(n===1)return oe;n<10?i=0:i=Math.log(n)-Math.log(Math.log(n))}else{if(n===0)return-1/0;n<=-.1?i=-2:i=Math.log(-n)-Math.log(-Math.log(-n))}for(var l=0;l<100;++l){if(a=(n*Math.exp(-i)+i*i)/(i+1),Math.abs(a-i)<e*Math.abs(a))return a;i=a}throw Error(\"Iteration failed to converge: \".concat(n.toString()))};function he(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e-10,e=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,t,i,a,l;if(!Number.isFinite(r.mag))return new k(r);if(e){if(r.eq(k.dZero))return c(0,0,0);if(r.eq(k.dOne))return k.fromNumber(oe);t=k.ln(r)}else{if(r.eq(k.dZero))return new k(k.dNegInf);t=k.ln(r.neg())}for(var f=0;f<100;++f){if(i=t.neg().exp(),a=t.sub(r.mul(i)),l=t.sub(a.div(t.add(1).sub(t.add(2).mul(a).div(k.mul(2,t).add(2))))),k.abs(l.sub(t)).lt(k.abs(l).mul(n)))return l;t=l}throw Error(\"Iteration failed to converge: \".concat(r.toString()))}var k=function(){function r(n){se(this,r),this.sign=0,this.mag=0,this.layer=0,n instanceof r?this.fromDecimal(n):typeof n==\"number\"?this.fromNumber(n):typeof n==\"string\"&&this.fromString(n)}return ue(r,[{key:\"m\",get:function(){if(this.sign===0)return 0;if(this.layer===0){var e=Math.floor(Math.log10(this.mag)),t;return this.mag===5e-324?t=5:t=this.mag/Ne(e),this.sign*t}else if(this.layer===1){var i=this.mag-Math.floor(this.mag);return this.sign*Math.pow(10,i)}else return this.sign},set:function(e){this.layer<=2?this.fromMantissaExponent(e,this.e):(this.sign=Math.sign(e),this.sign===0&&(this.layer=0,this.exponent=0))}},{key:\"e\",get:function(){return this.sign===0?0:this.layer===0?Math.floor(Math.log10(this.mag)):this.layer===1?Math.floor(this.mag):this.layer===2?Math.floor(Math.sign(this.mag)*Math.pow(10,Math.abs(this.mag))):this.mag*Number.POSITIVE_INFINITY},set:function(e){this.fromMantissaExponent(this.m,e)}},{key:\"s\",get:function(){return this.sign},set:function(e){e===0?(this.sign=0,this.layer=0,this.mag=0):this.sign=e}},{key:\"mantissa\",get:function(){return this.m},set:function(e){this.m=e}},{key:\"exponent\",get:function(){return this.e},set:function(e){this.e=e}},{key:\"normalize\",value:function(){if(this.sign===0||this.mag===0&&this.layer===0||this.mag===Number.NEGATIVE_INFINITY&&this.layer>0&&Number.isFinite(this.layer))return this.sign=0,this.mag=0,this.layer=0,this;if(this.layer===0&&this.mag<0&&(this.mag=-this.mag,this.sign=-this.sign),this.mag===Number.POSITIVE_INFINITY||this.layer===Number.POSITIVE_INFINITY||this.mag===Number.NEGATIVE_INFINITY||this.layer===Number.NEGATIVE_INFINITY)return this.mag=Number.POSITIVE_INFINITY,this.layer=Number.POSITIVE_INFINITY,this;if(this.layer===0&&this.mag<$)return this.layer+=1,this.mag=Math.log10(this.mag),this;var e=Math.abs(this.mag),t=Math.sign(this.mag);if(e>=T)return this.layer+=1,this.mag=t*Math.log10(e),this;for(;e<ce&&this.layer>0;)this.layer-=1,this.layer===0?this.mag=Math.pow(10,this.mag):(this.mag=t*Math.pow(10,e),e=Math.abs(this.mag),t=Math.sign(this.mag));return this.layer===0&&(this.mag<0?(this.mag=-this.mag,this.sign=-this.sign):this.mag===0&&(this.sign=0)),(Number.isNaN(this.sign)||Number.isNaN(this.layer)||Number.isNaN(this.mag))&&(this.sign=Number.NaN,this.layer=Number.NaN,this.mag=Number.NaN),this}},{key:\"fromComponents\",value:function(e,t,i){return this.sign=e,this.layer=t,this.mag=i,this.normalize(),this}},{key:\"fromComponents_noNormalize\",value:function(e,t,i){return this.sign=e,this.layer=t,this.mag=i,this}},{key:\"fromMantissaExponent\",value:function(e,t){return this.layer=1,this.sign=Math.sign(e),e=Math.abs(e),this.mag=t+Math.log10(e),this.normalize(),this}},{key:\"fromMantissaExponent_noNormalize\",value:function(e,t){return this.fromMantissaExponent(e,t),this}},{key:\"fromDecimal\",value:function(e){return this.sign=e.sign,this.layer=e.layer,this.mag=e.mag,this}},{key:\"fromNumber\",value:function(e){return this.mag=Math.abs(e),this.sign=Math.sign(e),this.layer=0,this.normalize(),this}},{key:\"fromString\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i=e,a=r.fromStringCache.get(i);if(a!==void 0)return this.fromDecimal(a);e=e.replace(\",\",\"\");var l=e.split(\"^^^\");if(l.length===2){var f=parseFloat(l[0]),g=parseFloat(l[1]),h=l[1].split(\";\"),v=1;if(h.length===2&&(v=parseFloat(h[1]),isFinite(v)||(v=1)),isFinite(f)&&isFinite(g)){var u=r.pentate(f,g,v,t);return this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}}var M=e.split(\"^^\");if(M.length===2){var x=parseFloat(M[0]),w=parseFloat(M[1]),o=M[1].split(\";\"),F=1;if(o.length===2&&(F=parseFloat(o[1]),isFinite(F)||(F=1)),isFinite(x)&&isFinite(w)){var A=r.tetrate(x,w,F,t);return this.sign=A.sign,this.layer=A.layer,this.mag=A.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}}var d=e.split(\"^\");if(d.length===2){var S=parseFloat(d[0]),p=parseFloat(d[1]);if(isFinite(S)&&isFinite(p)){var q=r.pow(S,p);return this.sign=q.sign,this.layer=q.layer,this.mag=q.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}}e=e.trim().toLowerCase();var I,N,y=e.split(\"pt\");if(y.length===2){I=10;var V=!1;y[0][0]==\"-\"&&(V=!0,y[0]=y[0].slice(1)),N=parseFloat(y[0]),y[1]=y[1].replace(\"(\",\"\"),y[1]=y[1].replace(\")\",\"\");var C=parseFloat(y[1]);if(isFinite(C)||(C=1),isFinite(I)&&isFinite(N)){var D=r.tetrate(I,N,C,t);return this.sign=D.sign,this.layer=D.layer,this.mag=D.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),V&&(this.sign*=-1),this}}if(y=e.split(\"p\"),y.length===2){I=10;var Y=!1;y[0][0]==\"-\"&&(Y=!0,y[0]=y[0].slice(1)),N=parseFloat(y[0]),y[1]=y[1].replace(\"(\",\"\"),y[1]=y[1].replace(\")\",\"\");var L=parseFloat(y[1]);if(isFinite(L)||(L=1),isFinite(I)&&isFinite(N)){var G=r.tetrate(I,N,L,t);return this.sign=G.sign,this.layer=G.layer,this.mag=G.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),Y&&(this.sign*=-1),this}}if(y=e.split(\"f\"),y.length===2){I=10;var E=!1;y[0][0]==\"-\"&&(E=!0,y[0]=y[0].slice(1)),y[0]=y[0].replace(\"(\",\"\"),y[0]=y[0].replace(\")\",\"\");var X=parseFloat(y[0]);if(y[1]=y[1].replace(\"(\",\"\"),y[1]=y[1].replace(\")\",\"\"),N=parseFloat(y[1]),isFinite(X)||(X=1),isFinite(I)&&isFinite(N)){var Q=r.tetrate(I,N,X,t);return this.sign=Q.sign,this.layer=Q.layer,this.mag=Q.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),E&&(this.sign*=-1),this}}var J=e.split(\"e\"),Z=J.length-1;if(Z===0){var re=parseFloat(e);if(isFinite(re))return this.fromNumber(re),r.fromStringCache.size>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}else if(Z===1){var W=parseFloat(e);if(isFinite(W)&&Math.abs(W)>1e-307)return this.fromNumber(W),r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}var H=e.split(\"e^\");if(H.length===2){this.sign=1,H[0].charAt(0)==\"-\"&&(this.sign=-1);for(var te=\"\",U=0;U<H[1].length;++U){var P=H[1].charCodeAt(U);if(P>=43&&P<=57||P===101)te+=H[1].charAt(U);else{if(this.layer=parseFloat(te),this.mag=parseFloat(H[1].substr(U+1)),this.layer<0||this.layer%1!=0){var B=r.tetrate(10,this.layer,this.mag,t);this.sign=B.sign,this.layer=B.layer,this.mag=B.mag}return this.normalize(),r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}}}if(Z<1)return this.sign=0,this.layer=0,this.mag=0,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this;var z=parseFloat(J[0]);if(z===0)return this.sign=0,this.layer=0,this.mag=0,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this;var R=parseFloat(J[J.length-1]);if(Z>=2){var ee=parseFloat(J[J.length-2]);isFinite(ee)&&(R*=Math.sign(ee),R+=ie(ee))}if(!isFinite(z))this.sign=J[0]===\"-\"?-1:1,this.layer=Z,this.mag=R;else if(Z===1)this.sign=Math.sign(z),this.layer=1,this.mag=R+Math.log10(Math.abs(z));else if(this.sign=Math.sign(z),this.layer=Z,Z===2){var j=r.mul(m(1,2,R),s(z));return this.sign=j.sign,this.layer=j.layer,this.mag=j.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}else this.mag=R;return this.normalize(),r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}},{key:\"fromValue\",value:function(e){return e instanceof r?this.fromDecimal(e):typeof e==\"number\"?this.fromNumber(e):typeof e==\"string\"?this.fromString(e):(this.sign=0,this.layer=0,this.mag=0,this)}},{key:\"toNumber\",value:function(){return this.mag===Number.POSITIVE_INFINITY&&this.layer===Number.POSITIVE_INFINITY&&this.sign===1?Number.POSITIVE_INFINITY:this.mag===Number.POSITIVE_INFINITY&&this.layer===Number.POSITIVE_INFINITY&&this.sign===-1?Number.NEGATIVE_INFINITY:Number.isFinite(this.layer)?this.layer===0?this.sign*this.mag:this.layer===1?this.sign*Math.pow(10,this.mag):this.mag>0?this.sign>0?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:0:Number.NaN}},{key:\"mantissaWithDecimalPlaces\",value:function(e){return isNaN(this.m)?Number.NaN:this.m===0?0:K(this.m,e)}},{key:\"magnitudeWithDecimalPlaces\",value:function(e){return isNaN(this.mag)?Number.NaN:this.mag===0?0:K(this.mag,e)}},{key:\"toString\",value:function(){return isNaN(this.layer)||isNaN(this.sign)||isNaN(this.mag)?\"NaN\":this.mag===Number.POSITIVE_INFINITY||this.layer===Number.POSITIVE_INFINITY?this.sign===1?\"Infinity\":\"-Infinity\":this.layer===0?this.mag<1e21&&this.mag>1e-7||this.mag===0?(this.sign*this.mag).toString():this.m+\"e\"+this.e:this.layer===1?this.m+\"e\"+this.e:this.layer<=fe?(this.sign===-1?\"-\":\"\")+\"e\".repeat(this.layer)+this.mag:(this.sign===-1?\"-\":\"\")+\"(e^\"+this.layer+\")\"+this.mag}},{key:\"toExponential\",value:function(e){return this.layer===0?(this.sign*this.mag).toExponential(e):this.toStringWithDecimalPlaces(e)}},{key:\"toFixed\",value:function(e){return this.layer===0?(this.sign*this.mag).toFixed(e):this.toStringWithDecimalPlaces(e)}},{key:\"toPrecision\",value:function(e){return this.e<=-7?this.toExponential(e-1):e>this.e?this.toFixed(e-this.exponent-1):this.toExponential(e-1)}},{key:\"valueOf\",value:function(){return this.toString()}},{key:\"toJSON\",value:function(){return this.toString()}},{key:\"toStringWithDecimalPlaces\",value:function(e){return this.layer===0?this.mag<1e21&&this.mag>1e-7||this.mag===0?(this.sign*this.mag).toFixed(e):K(this.m,e)+\"e\"+K(this.e,e):this.layer===1?K(this.m,e)+\"e\"+K(this.e,e):this.layer<=fe?(this.sign===-1?\"-\":\"\")+\"e\".repeat(this.layer)+K(this.mag,e):(this.sign===-1?\"-\":\"\")+\"(e^\"+this.layer+\")\"+K(this.mag,e)}},{key:\"abs\",value:function(){return c(this.sign===0?0:1,this.layer,this.mag)}},{key:\"neg\",value:function(){return c(-this.sign,this.layer,this.mag)}},{key:\"negate\",value:function(){return this.neg()}},{key:\"negated\",value:function(){return this.neg()}},{key:\"sgn\",value:function(){return this.sign}},{key:\"round\",value:function(){return this.mag<0?c(0,0,0):this.layer===0?m(this.sign,0,Math.round(this.mag)):new r(this)}},{key:\"floor\",value:function(){return this.mag<0?this.sign===-1?c(-1,0,1):c(0,0,0):this.sign===-1?this.neg().ceil().neg():this.layer===0?m(this.sign,0,Math.floor(this.mag)):new r(this)}},{key:\"ceil\",value:function(){return this.mag<0?this.sign===1?c(1,0,1):c(0,0,0):this.sign===-1?this.neg().floor().neg():this.layer===0?m(this.sign,0,Math.ceil(this.mag)):new r(this)}},{key:\"trunc\",value:function(){return this.mag<0?c(0,0,0):this.layer===0?m(this.sign,0,Math.trunc(this.mag)):new r(this)}},{key:\"add\",value:function(e){var t=s(e);if(this.eq(r.dInf)&&t.eq(r.dNegInf)||this.eq(r.dNegInf)&&t.eq(r.dInf))return new r(r.dNaN);if(!Number.isFinite(this.layer))return new r(this);if(!Number.isFinite(t.layer))return new r(t);if(this.sign===0)return new r(t);if(t.sign===0)return new r(this);if(this.sign===-t.sign&&this.layer===t.layer&&this.mag===t.mag)return c(0,0,0);var i,a;if(this.layer>=2||t.layer>=2)return this.maxabs(t);if(r.cmpabs(this,t)>0?(i=new r(this),a=new r(t)):(i=new r(t),a=new r(this)),i.layer===0&&a.layer===0)return r.fromNumber(i.sign*i.mag+a.sign*a.mag);var l=i.layer*Math.sign(i.mag),f=a.layer*Math.sign(a.mag);if(l-f>=2)return i;if(l===0&&f===-1){if(Math.abs(a.mag-Math.log10(i.mag))>ne)return i;var g=Math.pow(10,Math.log10(i.mag)-a.mag),h=a.sign+i.sign*g;return m(Math.sign(h),1,a.mag+Math.log10(Math.abs(h)))}if(l===1&&f===0){if(Math.abs(i.mag-Math.log10(a.mag))>ne)return i;var v=Math.pow(10,i.mag-Math.log10(a.mag)),u=a.sign+i.sign*v;return m(Math.sign(u),1,Math.log10(a.mag)+Math.log10(Math.abs(u)))}if(Math.abs(i.mag-a.mag)>ne)return i;var M=Math.pow(10,i.mag-a.mag),x=a.sign+i.sign*M;return m(Math.sign(x),1,a.mag+Math.log10(Math.abs(x)))}},{key:\"plus\",value:function(e){return this.add(e)}},{key:\"sub\",value:function(e){return this.add(s(e).neg())}},{key:\"subtract\",value:function(e){return this.sub(e)}},{key:\"minus\",value:function(e){return this.sub(e)}},{key:\"mul\",value:function(e){var t=s(e);if(this.eq(r.dInf)&&t.eq(r.dNegInf)||this.eq(r.dNegInf)&&t.eq(r.dInf))return new r(r.dNegInf);if(this.mag==Number.POSITIVE_INFINITY&&t.eq(r.dZero)||this.eq(r.dZero)&&this.mag==Number.POSITIVE_INFINITY)return new r(r.dNaN);if(this.eq(r.dNegInf)&&t.eq(r.dNegInf))return new r(r.dInf);if(!Number.isFinite(this.layer))return new r(this);if(!Number.isFinite(t.layer))return new r(t);if(this.sign===0||t.sign===0)return c(0,0,0);if(this.layer===t.layer&&this.mag===-t.mag)return c(this.sign*t.sign,0,1);var i,a;if(this.layer>t.layer||this.layer==t.layer&&Math.abs(this.mag)>Math.abs(t.mag)?(i=new r(this),a=new r(t)):(i=new r(t),a=new r(this)),i.layer===0&&a.layer===0)return r.fromNumber(i.sign*a.sign*i.mag*a.mag);if(i.layer>=3||i.layer-a.layer>=2)return m(i.sign*a.sign,i.layer,i.mag);if(i.layer===1&&a.layer===0)return m(i.sign*a.sign,1,i.mag+Math.log10(a.mag));if(i.layer===1&&a.layer===1)return m(i.sign*a.sign,1,i.mag+a.mag);if(i.layer===2&&a.layer===1){var l=m(Math.sign(i.mag),i.layer-1,Math.abs(i.mag)).add(m(Math.sign(a.mag),a.layer-1,Math.abs(a.mag)));return m(i.sign*a.sign,l.layer+1,l.sign*l.mag)}if(i.layer===2&&a.layer===2){var f=m(Math.sign(i.mag),i.layer-1,Math.abs(i.mag)).add(m(Math.sign(a.mag),a.layer-1,Math.abs(a.mag)));return m(i.sign*a.sign,f.layer+1,f.sign*f.mag)}throw Error(\"Bad arguments to mul: \"+this+\", \"+e)}},{key:\"multiply\",value:function(e){return this.mul(e)}},{key:\"times\",value:function(e){return this.mul(e)}},{key:\"div\",value:function(e){var t=s(e);return this.mul(t.recip())}},{key:\"divide\",value:function(e){return this.div(e)}},{key:\"divideBy\",value:function(e){return this.div(e)}},{key:\"dividedBy\",value:function(e){return this.div(e)}},{key:\"recip\",value:function(){return this.mag===0?new r(r.dNaN):this.mag===Number.POSITIVE_INFINITY?c(0,0,0):this.layer===0?m(this.sign,0,1/this.mag):m(this.sign,this.layer,-this.mag)}},{key:\"reciprocal\",value:function(){return this.recip()}},{key:\"reciprocate\",value:function(){return this.recip()}},{key:\"mod\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i=s(e),a=i.abs();if(this.eq(r.dZero)||a.eq(r.dZero))return c(0,0,0);if(t){var l=this.abs().mod(a);return this.sign==-1!=(i.sign==-1)&&(l=i.abs().sub(l)),l.mul(i.sign)}var f=this.toNumber(),g=a.toNumber();return isFinite(f)&&isFinite(g)&&f!=0&&g!=0?new r(f%g):this.sub(a).eq(this)?c(0,0,0):a.sub(this).eq(a)?new r(this):this.sign==-1?this.abs().mod(a).neg():this.sub(this.div(a).floor().mul(a))}},{key:\"modulo\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return this.mod(e,t)}},{key:\"modular\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return this.mod(e,t)}},{key:\"cmp\",value:function(e){var t=s(e);return this.sign>t.sign?1:this.sign<t.sign?-1:this.sign*this.cmpabs(e)}},{key:\"cmpabs\",value:function(e){var t=s(e),i=this.mag>0?this.layer:-this.layer,a=t.mag>0?t.layer:-t.layer;return i>a?1:i<a?-1:this.mag>t.mag?1:this.mag<t.mag?-1:0}},{key:\"compare\",value:function(e){return this.cmp(e)}},{key:\"isNan\",value:function(){return isNaN(this.sign)||isNaN(this.layer)||isNaN(this.mag)}},{key:\"isFinite\",value:function(n){function e(){return n.apply(this,arguments)}return e.toString=function(){return n.toString()},e}(function(){return isFinite(this.sign)&&isFinite(this.layer)&&isFinite(this.mag)})},{key:\"eq\",value:function(e){var t=s(e);return this.sign===t.sign&&this.layer===t.layer&&this.mag===t.mag}},{key:\"equals\",value:function(e){return this.eq(e)}},{key:\"neq\",value:function(e){return!this.eq(e)}},{key:\"notEquals\",value:function(e){return this.neq(e)}},{key:\"lt\",value:function(e){return this.cmp(e)===-1}},{key:\"lte\",value:function(e){return!this.gt(e)}},{key:\"gt\",value:function(e){return this.cmp(e)===1}},{key:\"gte\",value:function(e){return!this.lt(e)}},{key:\"max\",value:function(e){var t=s(e);return this.lt(t)?new r(t):new r(this)}},{key:\"min\",value:function(e){var t=s(e);return this.gt(t)?new r(t):new r(this)}},{key:\"maxabs\",value:function(e){var t=s(e);return this.cmpabs(t)<0?new r(t):new r(this)}},{key:\"minabs\",value:function(e){var t=s(e);return this.cmpabs(t)>0?new r(t):new r(this)}},{key:\"clamp\",value:function(e,t){return this.max(e).min(t)}},{key:\"clampMin\",value:function(e){return this.max(e)}},{key:\"clampMax\",value:function(e){return this.min(e)}},{key:\"cmp_tolerance\",value:function(e,t){var i=s(e);return this.eq_tolerance(i,t)?0:this.cmp(i)}},{key:\"compare_tolerance\",value:function(e,t){return this.cmp_tolerance(e,t)}},{key:\"eq_tolerance\",value:function(e,t){var i=s(e);if(t==null&&(t=1e-7),this.sign!==i.sign||Math.abs(this.layer-i.layer)>1)return!1;var a=this.mag,l=i.mag;return this.layer>i.layer&&(l=ie(l)),this.layer<i.layer&&(a=ie(a)),Math.abs(a-l)<=t*Math.max(Math.abs(a),Math.abs(l))}},{key:\"equals_tolerance\",value:function(e,t){return this.eq_tolerance(e,t)}},{key:\"neq_tolerance\",value:function(e,t){return!this.eq_tolerance(e,t)}},{key:\"notEquals_tolerance\",value:function(e,t){return this.neq_tolerance(e,t)}},{key:\"lt_tolerance\",value:function(e,t){var i=s(e);return!this.eq_tolerance(i,t)&&this.lt(i)}},{key:\"lte_tolerance\",value:function(e,t){var i=s(e);return this.eq_tolerance(i,t)||this.lt(i)}},{key:\"gt_tolerance\",value:function(e,t){var i=s(e);return!this.eq_tolerance(i,t)&&this.gt(i)}},{key:\"gte_tolerance\",value:function(e,t){var i=s(e);return this.eq_tolerance(i,t)||this.gt(i)}},{key:\"pLog10\",value:function(){return this.lt(r.dZero)?c(0,0,0):this.log10()}},{key:\"absLog10\",value:function(){return this.sign===0?new r(r.dNaN):this.layer>0?m(Math.sign(this.mag),this.layer-1,Math.abs(this.mag)):m(1,0,Math.log10(this.mag))}},{key:\"log10\",value:function(){return this.sign<=0?new r(r.dNaN):this.layer>0?m(Math.sign(this.mag),this.layer-1,Math.abs(this.mag)):m(this.sign,0,Math.log10(this.mag))}},{key:\"log\",value:function(e){return e=s(e),this.sign<=0?new r(r.dNaN):e.sign<=0?new r(r.dNaN):e.sign===1&&e.layer===0&&e.mag===1?new r(r.dNaN):this.layer===0&&e.layer===0?m(this.sign,0,Math.log(this.mag)/Math.log(e.mag)):r.div(this.log10(),e.log10())}},{key:\"log2\",value:function(){return this.sign<=0?new r(r.dNaN):this.layer===0?m(this.sign,0,Math.log2(this.mag)):this.layer===1?m(Math.sign(this.mag),0,Math.abs(this.mag)*3.321928094887362):this.layer===2?m(Math.sign(this.mag),1,Math.abs(this.mag)+.5213902276543247):m(Math.sign(this.mag),this.layer-1,Math.abs(this.mag))}},{key:\"ln\",value:function(){return this.sign<=0?new r(r.dNaN):this.layer===0?m(this.sign,0,Math.log(this.mag)):this.layer===1?m(Math.sign(this.mag),0,Math.abs(this.mag)*2.302585092994046):this.layer===2?m(Math.sign(this.mag),1,Math.abs(this.mag)+.36221568869946325):m(Math.sign(this.mag),this.layer-1,Math.abs(this.mag))}},{key:\"logarithm\",value:function(e){return this.log(e)}},{key:\"pow\",value:function(e){var t=s(e),i=new r(this),a=new r(t);if(i.sign===0)return a.eq(0)?c(1,0,1):i;if(i.sign===1&&i.layer===0&&i.mag===1)return i;if(a.sign===0)return c(1,0,1);if(a.sign===1&&a.layer===0&&a.mag===1)return i;var l=i.absLog10().mul(a).pow10();return this.sign===-1?Math.abs(a.toNumber()%2)%2===1?l.neg():Math.abs(a.toNumber()%2)%2===0?l:new r(r.dNaN):l}},{key:\"pow10\",value:function(){if(this.eq(r.dInf))return new r(r.dInf);if(this.eq(r.dNegInf))return c(0,0,0);if(!Number.isFinite(this.layer)||!Number.isFinite(this.mag))return new r(r.dNaN);var e=new r(this);if(e.layer===0){var t=Math.pow(10,e.sign*e.mag);if(Number.isFinite(t)&&Math.abs(t)>=.1)return m(1,0,t);if(e.sign===0)return c(1,0,1);e=c(e.sign,e.layer+1,Math.log10(e.mag))}return e.sign>0&&e.mag>=0?m(e.sign,e.layer+1,e.mag):e.sign<0&&e.mag>=0?m(-e.sign,e.layer+1,-e.mag):c(1,0,1)}},{key:\"pow_base\",value:function(e){return s(e).pow(this)}},{key:\"root\",value:function(e){var t=s(e);return this.lt(0)&&t.mod(2,!0).eq(1)?this.neg().root(t).neg():this.pow(t.recip())}},{key:\"factorial\",value:function(){return this.mag<0?this.add(1).gamma():this.layer===0?this.add(1).gamma():this.layer===1?r.exp(r.mul(this,r.ln(this).sub(1))):r.exp(this)}},{key:\"gamma\",value:function(){if(this.mag<0)return this.recip();if(this.layer===0){if(this.lt(c(1,0,24)))return r.fromNumber(ke(this.sign*this.mag));var e=this.mag-1,t=.9189385332046727;t=t+(e+.5)*Math.log(e),t=t-e;var i=e*e,a=e,l=12*a,f=1/l,g=t+f;if(g===t||(t=g,a=a*i,l=360*a,f=1/l,g=t-f,g===t))return r.exp(t);t=g,a=a*i,l=1260*a;var h=1/l;return t=t+h,a=a*i,l=1680*a,h=1/l,t=t-h,r.exp(t)}else return this.layer===1?r.exp(r.mul(this,r.ln(this).sub(1))):r.exp(this)}},{key:\"lngamma\",value:function(){return this.gamma().ln()}},{key:\"exp\",value:function(){return this.mag<0?c(1,0,1):this.layer===0&&this.mag<=709.7?r.fromNumber(Math.exp(this.sign*this.mag)):this.layer===0?m(1,1,this.sign*Math.log10(Math.E)*this.mag):this.layer===1?m(1,2,this.sign*(Math.log10(.4342944819032518)+this.mag)):m(1,this.layer+1,this.sign*this.mag)}},{key:\"sqr\",value:function(){return this.pow(2)}},{key:\"sqrt\",value:function(){if(this.layer===0)return r.fromNumber(Math.sqrt(this.sign*this.mag));if(this.layer===1)return m(1,2,Math.log10(this.mag)-.3010299956639812);var e=r.div(c(this.sign,this.layer-1,this.mag),c(1,0,2));return e.layer+=1,e.normalize(),e}},{key:\"cube\",value:function(){return this.pow(3)}},{key:\"cbrt\",value:function(){return this.lt(0)?this.neg().pow(1/3).neg():this.pow(1/3)}},{key:\"tetrate\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c(1,0,1),i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(e===1)return r.pow(this,t);if(e===0)return new r(t);if(this.eq(r.dOne))return c(1,0,1);if(this.eq(-1))return r.pow(this,t);if(e===Number.POSITIVE_INFINITY){var a=this.toNumber();if(a<=1.444667861009766&&a>=.06598803584531254){var l=r.ln(this).neg(),f=l.lambertw().div(l);if(a<1)return f;var g=l.lambertw(!1).div(l);return a>1.444667861009099&&(f=g=r.fromNumber(Math.E)),t=s(t),t.eq(g)?g:t.lt(g)?f:new r(r.dInf)}else return a>1.444667861009766?new r(r.dInf):new r(r.dNaN)}if(this.eq(r.dZero)){var h=Math.abs((e+1)%2);return h>1&&(h=2-h),r.fromNumber(h)}if(e<0)return r.iteratedlog(t,this,-e,i);t=new r(t);var v=e;e=Math.trunc(e);var u=v-e;if(this.gt(r.dZero)&&(this.lt(1)||this.lte(1.444667861009766)&&t.lte(r.ln(this).neg().lambertw(!1).div(r.ln(this).neg())))&&(v>1e4||!i)){var M=Math.min(1e4,e);t.eq(r.dOne)?t=this.pow(u):this.lt(1)?t=t.pow(1-u).mul(this.pow(t).pow(u)):t=t.layeradd(u,this);for(var x=0;x<M;++x){var w=t;if(t=this.pow(t),w.eq(t))return t}return v>1e4&&Math.ceil(v)%2==1?this.pow(t):t}u!==0&&(t.eq(r.dOne)?this.gt(10)||i?t=this.pow(u):(t=r.fromNumber(r.tetrate_critical(this.toNumber(),u)),this.lt(2)&&(t=t.sub(1).mul(this.minus(1)).plus(1))):this.eq(10)?t=t.layeradd10(u,i):this.lt(1)?t=t.pow(1-u).mul(this.pow(t).pow(u)):t=t.layeradd(u,this,i));for(var o=0;o<e;++o){if(t=this.pow(t),!isFinite(t.layer)||!isFinite(t.mag))return t.normalize();if(t.layer-this.layer>3)return c(t.sign,t.layer+(e-o-1),t.mag);if(o>1e4)return t}return t}},{key:\"iteratedexp\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c(1,0,1),i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return this.tetrate(e,t,i)}},{key:\"iteratedlog\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:10,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(t<0)return r.tetrate(e,-t,this,i);e=s(e);var a=r.fromDecimal(this),l=t;t=Math.trunc(t);var f=l-t;if(a.layer-e.layer>3){var g=Math.min(t,a.layer-e.layer-3);t-=g,a.layer-=g}for(var h=0;h<t;++h){if(a=a.log(e),!isFinite(a.layer)||!isFinite(a.mag))return a.normalize();if(h>1e4)return a}return f>0&&f<1&&(e.eq(10)?a=a.layeradd10(-f,i):a=a.layeradd(-f,e,i)),a}},{key:\"slog\",value:function(){for(var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:10,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:100,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,a=.001,l=!1,f=!1,g=this.slog_internal(e,i).toNumber(),h=1;h<t;++h){var v=new r(e).tetrate(g,r.dOne,i),u=v.gt(this);if(h>1&&f!=u&&(l=!0),f=u,l?a/=2:a*=2,a=Math.abs(a)*(u?-1:1),g+=a,a===0)break}return r.fromNumber(g)}},{key:\"slog_internal\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:10,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(e=s(e),e.lte(r.dZero))return new r(r.dNaN);if(e.eq(r.dOne))return new r(r.dNaN);if(e.lt(r.dOne))return this.eq(r.dOne)?c(0,0,0):this.eq(r.dZero)?c(-1,0,1):new r(r.dNaN);if(this.mag<0||this.eq(r.dZero))return c(-1,0,1);if(e.lt(1.444667861009766)){var i=r.ln(e).neg(),a=i.lambertw().div(i);if(this.eq(a))return new r(r.dInf);if(this.gt(a))return new r(r.dNaN)}var l=0,f=r.fromDecimal(this);if(f.layer-e.layer>3){var g=f.layer-e.layer-3;l+=g,f.layer-=g}for(var h=0;h<100;++h)if(f.lt(r.dZero))f=r.pow(e,f),l-=1;else{if(f.lte(r.dOne))return t?r.fromNumber(l+f.toNumber()-1):r.fromNumber(l+r.slog_critical(e.toNumber(),f.toNumber()));l+=1,f=r.log(f,e)}return r.fromNumber(l)}},{key:\"layeradd10\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;e=r.fromValue_noAlloc(e).toNumber();var i=r.fromDecimal(this);if(e>=1){i.mag<0&&i.layer>0?(i.sign=0,i.mag=0,i.layer=0):i.sign===-1&&i.layer==0&&(i.sign=1,i.mag=-i.mag);var a=Math.trunc(e);e-=a,i.layer+=a}if(e<=-1){var l=Math.trunc(e);if(e-=l,i.layer+=l,i.layer<0)for(var f=0;f<100;++f){if(i.layer++,i.mag=Math.log10(i.mag),!isFinite(i.mag))return i.sign===0&&(i.sign=1),i.layer<0&&(i.layer=0),i.normalize();if(i.layer>=0)break}}for(;i.layer<0;)i.layer++,i.mag=Math.log10(i.mag);return i.sign===0&&(i.sign=1,i.mag===0&&i.layer>=1&&(i.layer-=1,i.mag=1)),i.normalize(),e!==0?i.layeradd(e,10,t):i}},{key:\"layeradd\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,a=s(t);if(a.gt(1)&&a.lte(1.444667861009766)){var l=r.excess_slog(this,t,i),f=l[0].toNumber(),g=l[1],h=f+e,v=r.ln(t).neg(),u=v.lambertw().div(v),M=v.lambertw(!1).div(v),x=r.dOne;g==1?x=u.mul(M).sqrt():g==2&&(x=M.mul(2));var w=a.pow(x),o=Math.floor(h),F=h-o,A=x.pow(1-F).mul(w.pow(F));return r.tetrate(a,o,A,i)}var d=this.slog(t,100,i).toNumber(),S=d+e;return S>=0?r.tetrate(t,S,r.dOne,i):Number.isFinite(S)?S>=-1?r.log(r.tetrate(t,S+1,r.dOne,i),t):r.log(r.log(r.tetrate(t,S+2,r.dOne,i),t),t):new r(r.dNaN)}},{key:\"lambertw\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return this.lt(-.3678794411710499)?new r(r.dNaN):e?this.abs().lt(\"1e-300\")?new r(this):this.mag<0?r.fromNumber(ae(this.toNumber())):this.layer===0?r.fromNumber(ae(this.sign*this.mag)):this.lt(\"eee15\")?he(this):this.ln():this.sign===1?new r(r.dNaN):this.layer===0?r.fromNumber(ae(this.sign*this.mag,1e-10,!1)):this.layer==1?he(this,1e-10,!1):this.neg().recip().lambertw().neg()}},{key:\"ssqrt\",value:function(){return this.linear_sroot(2)}},{key:\"linear_sroot\",value:function(e){if(e==1)return this;if(this.eq(r.dInf))return new r(r.dInf);if(!this.isFinite())return new r(r.dNaN);if(e>0&&e<1)return this.root(e);if(e>-2&&e<-1)return r.fromNumber(e).add(2).pow(this.recip());if(e<=0)return new r(r.dNaN);if(e==Number.POSITIVE_INFINITY){var t=this.toNumber();return t<Math.E&&t>Me?this.pow(this.recip()):new r(r.dNaN)}if(this.eq(1))return c(1,0,1);if(this.lt(0))return new r(r.dNaN);if(this.lte(\"1ee-16\"))return e%2==1?new r(this):new r(r.dNaN);if(this.gt(1)){var i=r.dTen;this.gte(r.tetrate(10,e,1,!0))&&(i=this.iteratedlog(10,e-1,!0)),e<=1&&(i=this.root(e));for(var a=r.dZero,l=i.layer,f=i.iteratedlog(10,l,!0),g=f,h=f.div(2),v=!0;v;)h=a.add(f).div(2),r.iteratedexp(10,l,h,!0).tetrate(e,1,!0).gt(this)?f=h:a=h,h.eq(g)?v=!1:g=h;return r.iteratedexp(10,l,h,!0)}else{for(var u=1,M=m(1,10,1),x=m(1,10,1),w=m(1,10,1),o=m(1,1,-16),F=r.dZero,A=m(1,10,1),d=o.pow10().recip(),S=r.dZero,p=d,q=d,I=Math.ceil(e)%2==0,N=0,y=m(1,10,1),V=!1,C=r.dZero,D=!1;u<4;){if(u==2){if(I)break;w=m(1,10,1),o=M,u=3,A=m(1,10,1),y=m(1,10,1)}for(V=!1;o.neq(w);){if(C=o,o.pow10().recip().tetrate(e,1,!0).eq(1)&&o.pow10().recip().lt(.4))d=o.pow10().recip(),p=o.pow10().recip(),q=o.pow10().recip(),S=r.dZero,N=-1,u==3&&(y=o);else if(o.pow10().recip().tetrate(e,1,!0).eq(o.pow10().recip())&&!I&&o.pow10().recip().lt(.4))d=o.pow10().recip(),p=o.pow10().recip(),q=o.pow10().recip(),S=r.dZero,N=0;else if(o.pow10().recip().tetrate(e,1,!0).eq(o.pow10().recip().mul(2).tetrate(e,1,!0)))d=o.pow10().recip(),p=r.dZero,q=d.mul(2),S=d,I?N=-1:N=0;else{for(F=o.mul(12e-17),d=o.pow10().recip(),p=o.add(F).pow10().recip(),S=d.sub(p),q=d.add(S);p.tetrate(e,1,!0).eq(d.tetrate(e,1,!0))||q.tetrate(e,1,!0).eq(d.tetrate(e,1,!0))||p.gte(d)||q.lte(d);)F=F.mul(2),p=o.add(F).pow10().recip(),S=d.sub(p),q=d.add(S);if((u==1&&q.tetrate(e,1,!0).gt(d.tetrate(e,1,!0))&&p.tetrate(e,1,!0).gt(d.tetrate(e,1,!0))||u==3&&q.tetrate(e,1,!0).lt(d.tetrate(e,1,!0))&&p.tetrate(e,1,!0).lt(d.tetrate(e,1,!0)))&&(y=o),q.tetrate(e,1,!0).lt(d.tetrate(e,1,!0)))N=-1;else if(I)N=1;else if(u==3&&o.gt_tolerance(M,1e-8))N=0;else{for(;p.tetrate(e,1,!0).eq_tolerance(d.tetrate(e,1,!0),1e-8)||q.tetrate(e,1,!0).eq_tolerance(d.tetrate(e,1,!0),1e-8)||p.gte(d)||q.lte(d);)F=F.mul(2),p=o.add(F).pow10().recip(),S=d.sub(p),q=d.add(S);q.tetrate(e,1,!0).sub(d.tetrate(e,1,!0)).lt(d.tetrate(e,1,!0).sub(p.tetrate(e,1,!0)))?N=0:N=1}}if(N==-1&&(D=!0),u==1&&N==1||u==3&&N!=0)if(w.eq(m(1,10,1)))o=o.mul(2);else{var Y=!1;if(V&&(N==1&&u==1||N==-1&&u==3)&&(Y=!0),o=o.add(w).div(2),Y)break}else if(w.eq(m(1,10,1)))w=o,o=o.div(2);else{var L=!1;if(V&&(N==1&&u==1||N==-1&&u==3)&&(L=!0),w=w.sub(A),o=o.sub(A),L)break}if(w.sub(o).div(2).abs().gt(A.mul(1.5))&&(V=!0),A=w.sub(o).div(2).abs(),o.gt(\"1e18\")||o.eq(C))break}if(o.gt(\"1e18\")||!D||y==m(1,10,1))break;u==1?M=y:u==3&&(x=y),u++}w=M,o=m(1,1,-18);for(var G=o,E=r.dZero,X=!0;X;)if(w.eq(m(1,10,1))?E=o.mul(2):E=w.add(o).div(2),r.pow(10,E).recip().tetrate(e,1,!0).gt(this)?o=E:w=E,E.eq(G)?X=!1:G=E,o.gt(\"1e18\"))return new r(r.dNaN);if(E.eq_tolerance(M,1e-15)){if(x.eq(m(1,10,1)))return new r(r.dNaN);for(w=m(1,10,1),o=x,G=o,E=r.dZero,X=!0;X;)if(w.eq(m(1,10,1))?E=o.mul(2):E=w.add(o).div(2),r.pow(10,E).recip().tetrate(e,1,!0).gt(this)?o=E:w=E,E.eq(G)?X=!1:G=E,o.gt(\"1e18\"))return new r(r.dNaN);return E.pow10().recip()}else return E.pow10().recip()}}},{key:\"pentate\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c(1,0,1),i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;t=new r(t);var a=e;e=Math.floor(e);var l=a-e,f=r.dZero,g=r.dZero;if(l!==0)if(t.eq(r.dOne))++e,t=r.fromNumber(l);else return this.pentate(t.penta_log(this,void 0,i).plus(a).toNumber(),1,i);if(e>0)for(var h=0;h<e;){if(g=f,f=t,t=this.tetrate(t.toNumber(),r.dOne,i),++h,this.gt(0)&&this.lte(1)&&t.gt(0)&&t.lte(1))return this.tetrate(e-h,t,i);if(t.eq(f)||t.eq(g)&&h%2==e%2||!isFinite(t.layer)||!isFinite(t.mag))return t.normalize();if(h>1e4)return t}else for(var v=0;v<-e;++v){if(f=t,t=t.slog(this,void 0,i),t.eq(f)||!isFinite(t.layer)||!isFinite(t.mag))return t.normalize();if(v>100)return t}return t}},{key:\"penta_log\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:10,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:100,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(e=new r(e),e.lte(1))return new r(r.dNaN);if(this.eq(1))return c(0,0,0);if(this.eq(r.dInf))return new r(r.dInf);var a=new r(1),l=0,f=1;if(this.lt(-1)){if(this.lte(-2))return new r(r.dNaN);var g=e.tetrate(this.toNumber(),1,i);if(this.eq(g))return new r(r.dNegInf);if(this.gt(g))return new r(r.dNaN)}if(this.gt(1)){for(;a.lt(this);)if(l++,a=r.tetrate(e,a.toNumber(),1,i),l>1e3)return new r(r.dNaN)}else for(;a.gt(this);)if(l--,a=r.slog(a,e,i),l>100)return new r(r.dNaN);for(var h=1;h<t;++h){var v=e.pentate(l,r.dOne,i);if(v.eq(this))break;var u=v.gt(this);if(f=Math.abs(f)*(u?-1:1),l+=f,f/=2,f===0)break}return r.fromNumber(l)}},{key:\"linear_penta_root\",value:function(e){return e==1?this:e<0?new r(r.dNaN):this.eq(r.dInf)?new r(r.dInf):this.isFinite()?e>0&&e<1?this.root(e):this.eq(1)?c(1,0,1):this.lt(0)?new r(r.dNaN):this.lt(1)?this.linear_sroot(e):r.increasingInverse(function(t){return r.pentate(t,e,1,!0)})(this):new r(r.dNaN)}},{key:\"sin\",value:function(){return this.mag<0?new r(this):this.layer===0?r.fromNumber(Math.sin(this.sign*this.mag)):c(0,0,0)}},{key:\"cos\",value:function(){return this.mag<0?c(1,0,1):this.layer===0?r.fromNumber(Math.cos(this.sign*this.mag)):c(0,0,0)}},{key:\"tan\",value:function(){return this.mag<0?new r(this):this.layer===0?r.fromNumber(Math.tan(this.sign*this.mag)):c(0,0,0)}},{key:\"asin\",value:function(){return this.mag<0?new r(this):this.layer===0?r.fromNumber(Math.asin(this.sign*this.mag)):new r(r.dNaN)}},{key:\"acos\",value:function(){return this.mag<0?r.fromNumber(Math.acos(this.toNumber())):this.layer===0?r.fromNumber(Math.acos(this.sign*this.mag)):new r(r.dNaN)}},{key:\"atan\",value:function(){return this.mag<0?new r(this):this.layer===0?r.fromNumber(Math.atan(this.sign*this.mag)):r.fromNumber(Math.atan(this.sign*(1/0)))}},{key:\"sinh\",value:function(){return this.exp().sub(this.negate().exp()).div(2)}},{key:\"cosh\",value:function(){return this.exp().add(this.negate().exp()).div(2)}},{key:\"tanh\",value:function(){return this.sinh().div(this.cosh())}},{key:\"asinh\",value:function(){return r.ln(this.add(this.sqr().add(1).sqrt()))}},{key:\"acosh\",value:function(){return r.ln(this.add(this.sqr().sub(1).sqrt()))}},{key:\"atanh\",value:function(){return this.abs().gte(1)?new r(r.dNaN):r.ln(this.add(1).div(r.fromNumber(1).sub(this))).div(2)}},{key:\"ascensionPenalty\",value:function(e){return e===0?new r(this):this.root(r.pow(10,e))}},{key:\"egg\",value:function(){return this.add(9)}},{key:\"lessThanOrEqualTo\",value:function(e){return this.cmp(e)<1}},{key:\"lessThan\",value:function(e){return this.cmp(e)<0}},{key:\"greaterThanOrEqualTo\",value:function(e){return this.cmp(e)>-1}},{key:\"greaterThan\",value:function(e){return this.cmp(e)>0}}],[{key:\"fromComponents\",value:function(e,t,i){return new r().fromComponents(e,t,i)}},{key:\"fromComponents_noNormalize\",value:function(e,t,i){return new r().fromComponents_noNormalize(e,t,i)}},{key:\"fromMantissaExponent\",value:function(e,t){return new r().fromMantissaExponent(e,t)}},{key:\"fromMantissaExponent_noNormalize\",value:function(e,t){return new r().fromMantissaExponent_noNormalize(e,t)}},{key:\"fromDecimal\",value:function(e){return new r().fromDecimal(e)}},{key:\"fromNumber\",value:function(e){return new r().fromNumber(e)}},{key:\"fromString\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return new r().fromString(e,t)}},{key:\"fromValue\",value:function(e){return new r().fromValue(e)}},{key:\"fromValue_noAlloc\",value:function(e){if(e instanceof r)return e;if(typeof e==\"string\"){var t=r.fromStringCache.get(e);return t!==void 0?t:r.fromString(e)}else return typeof e==\"number\"?r.fromNumber(e):c(0,0,0)}},{key:\"abs\",value:function(e){return s(e).abs()}},{key:\"neg\",value:function(e){return s(e).neg()}},{key:\"negate\",value:function(e){return s(e).neg()}},{key:\"negated\",value:function(e){return s(e).neg()}},{key:\"sign\",value:function(e){return s(e).sign}},{key:\"sgn\",value:function(e){return s(e).sign}},{key:\"round\",value:function(e){return s(e).round()}},{key:\"floor\",value:function(e){return s(e).floor()}},{key:\"ceil\",value:function(e){return s(e).ceil()}},{key:\"trunc\",value:function(e){return s(e).trunc()}},{key:\"add\",value:function(e,t){return s(e).add(t)}},{key:\"plus\",value:function(e,t){return s(e).add(t)}},{key:\"sub\",value:function(e,t){return s(e).sub(t)}},{key:\"subtract\",value:function(e,t){return s(e).sub(t)}},{key:\"minus\",value:function(e,t){return s(e).sub(t)}},{key:\"mul\",value:function(e,t){return s(e).mul(t)}},{key:\"multiply\",value:function(e,t){return s(e).mul(t)}},{key:\"times\",value:function(e,t){return s(e).mul(t)}},{key:\"div\",value:function(e,t){return s(e).div(t)}},{key:\"divide\",value:function(e,t){return s(e).div(t)}},{key:\"recip\",value:function(e){return s(e).recip()}},{key:\"reciprocal\",value:function(e){return s(e).recip()}},{key:\"reciprocate\",value:function(e){return s(e).reciprocate()}},{key:\"mod\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return s(e).mod(t,i)}},{key:\"modulo\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return s(e).modulo(t,i)}},{key:\"modular\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return s(e).modular(t,i)}},{key:\"cmp\",value:function(e,t){return s(e).cmp(t)}},{key:\"cmpabs\",value:function(e,t){return s(e).cmpabs(t)}},{key:\"compare\",value:function(e,t){return s(e).cmp(t)}},{key:\"isNaN\",value:function(n){function e(t){return n.apply(this,arguments)}return e.toString=function(){return n.toString()},e}(function(n){return n=s(n),isNaN(n.sign)||isNaN(n.layer)||isNaN(n.mag)})},{key:\"isFinite\",value:function(n){function e(t){return n.apply(this,arguments)}return e.toString=function(){return n.toString()},e}(function(n){return n=s(n),isFinite(n.sign)&&isFinite(n.layer)&&isFinite(n.mag)})},{key:\"eq\",value:function(e,t){return s(e).eq(t)}},{key:\"equals\",value:function(e,t){return s(e).eq(t)}},{key:\"neq\",value:function(e,t){return s(e).neq(t)}},{key:\"notEquals\",value:function(e,t){return s(e).notEquals(t)}},{key:\"lt\",value:function(e,t){return s(e).lt(t)}},{key:\"lte\",value:function(e,t){return s(e).lte(t)}},{key:\"gt\",value:function(e,t){return s(e).gt(t)}},{key:\"gte\",value:function(e,t){return s(e).gte(t)}},{key:\"max\",value:function(e,t){return s(e).max(t)}},{key:\"min\",value:function(e,t){return s(e).min(t)}},{key:\"minabs\",value:function(e,t){return s(e).minabs(t)}},{key:\"maxabs\",value:function(e,t){return s(e).maxabs(t)}},{key:\"clamp\",value:function(e,t,i){return s(e).clamp(t,i)}},{key:\"clampMin\",value:function(e,t){return s(e).clampMin(t)}},{key:\"clampMax\",value:function(e,t){return s(e).clampMax(t)}},{key:\"cmp_tolerance\",value:function(e,t,i){return s(e).cmp_tolerance(t,i)}},{key:\"compare_tolerance\",value:function(e,t,i){return s(e).cmp_tolerance(t,i)}},{key:\"eq_tolerance\",value:function(e,t,i){return s(e).eq_tolerance(t,i)}},{key:\"equals_tolerance\",value:function(e,t,i){return s(e).eq_tolerance(t,i)}},{key:\"neq_tolerance\",value:function(e,t,i){return s(e).neq_tolerance(t,i)}},{key:\"notEquals_tolerance\",value:function(e,t,i){return s(e).notEquals_tolerance(t,i)}},{key:\"lt_tolerance\",value:function(e,t,i){return s(e).lt_tolerance(t,i)}},{key:\"lte_tolerance\",value:function(e,t,i){return s(e).lte_tolerance(t,i)}},{key:\"gt_tolerance\",value:function(e,t,i){return s(e).gt_tolerance(t,i)}},{key:\"gte_tolerance\",value:function(e,t,i){return s(e).gte_tolerance(t,i)}},{key:\"pLog10\",value:function(e){return s(e).pLog10()}},{key:\"absLog10\",value:function(e){return s(e).absLog10()}},{key:\"log10\",value:function(e){return s(e).log10()}},{key:\"log\",value:function(e,t){return s(e).log(t)}},{key:\"log2\",value:function(e){return s(e).log2()}},{key:\"ln\",value:function(e){return s(e).ln()}},{key:\"logarithm\",value:function(e,t){return s(e).logarithm(t)}},{key:\"pow\",value:function(e,t){return s(e).pow(t)}},{key:\"pow10\",value:function(e){return s(e).pow10()}},{key:\"root\",value:function(e,t){return s(e).root(t)}},{key:\"factorial\",value:function(e,t){return s(e).factorial()}},{key:\"gamma\",value:function(e,t){return s(e).gamma()}},{key:\"lngamma\",value:function(e,t){return s(e).lngamma()}},{key:\"exp\",value:function(e){return s(e).exp()}},{key:\"sqr\",value:function(e){return s(e).sqr()}},{key:\"sqrt\",value:function(e){return s(e).sqrt()}},{key:\"cube\",value:function(e){return s(e).cube()}},{key:\"cbrt\",value:function(e){return s(e).cbrt()}},{key:\"tetrate\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:c(1,0,1),a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return s(e).tetrate(t,i,a)}},{key:\"iteratedexp\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:c(1,0,1),a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return s(e).iteratedexp(t,i,a)}},{key:\"iteratedlog\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:10,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return s(e).iteratedlog(t,i,a)}},{key:\"layeradd10\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return s(e).layeradd10(t,i)}},{key:\"layeradd\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:10,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return s(e).layeradd(t,i,a)}},{key:\"slog\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:10,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return s(e).slog(t,100,i)}},{key:\"lambertw\",value:function(e,t){return s(e).lambertw(t)}},{key:\"ssqrt\",value:function(e){return s(e).ssqrt()}},{key:\"linear_sroot\",value:function(e,t){return s(e).linear_sroot(t)}},{key:\"pentate\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:c(1,0,1),a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return s(e).pentate(t,i,a)}},{key:\"penta_log\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:10,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return s(e).penta_log(t,100,i)}},{key:\"linear_penta_root\",value:function(e,t){return s(e).linear_penta_root(t)}},{key:\"sin\",value:function(e){return s(e).sin()}},{key:\"cos\",value:function(e){return s(e).cos()}},{key:\"tan\",value:function(e){return s(e).tan()}},{key:\"asin\",value:function(e){return s(e).asin()}},{key:\"acos\",value:function(e){return s(e).acos()}},{key:\"atan\",value:function(e){return s(e).atan()}},{key:\"sinh\",value:function(e){return s(e).sinh()}},{key:\"cosh\",value:function(e){return s(e).cosh()}},{key:\"tanh\",value:function(e){return s(e).tanh()}},{key:\"asinh\",value:function(e){return s(e).asinh()}},{key:\"acosh\",value:function(e){return s(e).acosh()}},{key:\"atanh\",value:function(e){return s(e).atanh()}},{key:\"affordGeometricSeries\",value:function(e,t,i,a){return this.affordGeometricSeries_core(s(e),s(t),s(i),a)}},{key:\"sumGeometricSeries\",value:function(e,t,i,a){return this.sumGeometricSeries_core(e,s(t),s(i),a)}},{key:\"affordArithmeticSeries\",value:function(e,t,i,a){return this.affordArithmeticSeries_core(s(e),s(t),s(i),s(a))}},{key:\"sumArithmeticSeries\",value:function(e,t,i,a){return this.sumArithmeticSeries_core(s(e),s(t),s(i),s(a))}},{key:\"efficiencyOfPurchase\",value:function(e,t,i){return this.efficiencyOfPurchase_core(s(e),s(t),s(i))}},{key:\"randomDecimalForTesting\",value:function(e){if(Math.random()*20<1)return c(0,0,0);var t=Math.random()>.5?1:-1;if(Math.random()*20<1)return c(t,0,1);var i=Math.floor(Math.random()*(e+1)),a=i===0?Math.random()*616-308:Math.random()*16;Math.random()>.9&&(a=Math.trunc(a));var l=Math.pow(10,a);return Math.random()>.9&&(l=Math.trunc(l)),m(t,i,l)}},{key:\"affordGeometricSeries_core\",value:function(e,t,i,a){var l=t.mul(i.pow(a));return r.floor(e.div(l).mul(i.sub(1)).add(1).log10().div(i.log10()))}},{key:\"sumGeometricSeries_core\",value:function(e,t,i,a){return t.mul(i.pow(a)).mul(r.sub(1,i.pow(e))).div(r.sub(1,i))}},{key:\"affordArithmeticSeries_core\",value:function(e,t,i,a){var l=t.add(a.mul(i)),f=l.sub(i.div(2)),g=f.pow(2);return f.neg().add(g.add(i.mul(e).mul(2)).sqrt()).div(i).floor()}},{key:\"sumArithmeticSeries_core\",value:function(e,t,i,a){var l=t.add(a.mul(i));return e.div(2).mul(l.mul(2).plus(e.sub(1).mul(i)))}},{key:\"efficiencyOfPurchase_core\",value:function(e,t,i){return e.div(t).add(e.div(i))}},{key:\"slog_critical\",value:function(e,t){return e>10?t-1:r.critical_section(e,t,we)}},{key:\"tetrate_critical\",value:function(e,t){return r.critical_section(e,t,be)}},{key:\"critical_section\",value:function(e,t,i){t*=10,t<0&&(t=0),t>10&&(t=10),e<2&&(e=2),e>10&&(e=10);for(var a=0,l=0,f=0;f<_.length;++f)if(_[f]==e){a=i[f][Math.floor(t)],l=i[f][Math.ceil(t)];break}else if(_[f]<e&&_[f+1]>e){var g=(e-_[f])/(_[f+1]-_[f]);a=i[f][Math.floor(t)]*(1-g)+i[f+1][Math.floor(t)]*g,l=i[f][Math.ceil(t)]*(1-g)+i[f+1][Math.ceil(t)]*g;break}var h=t-Math.floor(t);return a<=0||l<=0?a*(1-h)+l*h:Math.pow(e,Math.log(a)/Math.log(e)*(1-h)+Math.log(l)/Math.log(e)*h)}},{key:\"excess_slog\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;e=s(e),t=s(t);var a=t;if(t=t.toNumber(),t==1||t<=0)return[new r(r.dNaN),0];if(t>1.444667861009766)return[e.slog(t,100,i),0];var l=r.ln(t).neg(),f=l.lambertw().div(l),g=r.dInf;if(t>1&&(g=l.lambertw(!1).div(l)),t>1.444667861009099&&(f=g=r.fromNumber(Math.E)),e.lt(f))return[e.slog(t,100,i),0];if(e.eq(f))return[new r(r.dInf),0];if(e.eq(g))return[new r(r.dNegInf),2];if(e.gt(g)){var h=g.mul(2),v=a.pow(h),u=0;if(e.gte(h)&&e.lt(v))u=0;else if(e.gte(v)){var M=v;for(u=1;M.lt(e);)if(M=a.pow(M),u=u+1,M.layer>3){var x=Math.floor(e.layer-M.layer+1);M=a.iteratedexp(x,M,i),u=u+x}M.gt(e)&&(M=M.log(t),u=u-1)}else if(e.lt(h)){var w=h;for(u=0;w.gt(e);)w=w.log(t),u=u-1}for(var o=0,F=0,A=.5,d=h,S=r.dZero;A>1e-16;){if(F=o+A,d=h.pow(1-F).mul(v.pow(F)),S=r.iteratedexp(t,u,d),S.eq(e))return[new r(u+F),2];S.lt(e)&&(o+=A),A/=2}return S.neq_tolerance(e,1e-7)?[new r(r.dNaN),0]:[new r(u+o),2]}if(e.lt(g)&&e.gt(f)){var p=f.mul(g).sqrt(),q=a.pow(p),I=0;if(e.lte(p)&&e.gt(q))I=0;else if(e.lte(q)){var N=q;for(I=1;N.gt(e);)N=a.pow(N),I=I+1;N.lt(e)&&(N=N.log(t),I=I-1)}else if(e.gt(p)){var y=p;for(I=0;y.lt(e);)y=y.log(t),I=I-1}for(var V=0,C=0,D=.5,Y=p,L=r.dZero;D>1e-16;){if(C=V+D,Y=p.pow(1-C).mul(q.pow(C)),L=r.iteratedexp(t,I,Y),L.eq(e))return[new r(I+C),1];L.gt(e)&&(V+=D),D/=2}return L.neq_tolerance(e,1e-7)?[new r(r.dNaN),0]:[new r(I+V),1]}throw new Error(\"Unhandled behavior in excess_slog\")}},{key:\"increasingInverse\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:120,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:r.dLayerMax.neg(),l=arguments.length>4&&arguments[4]!==void 0?arguments[4]:r.dLayerMax,f=arguments.length>5&&arguments[5]!==void 0?arguments[5]:r.dLayerMax.neg(),g=arguments.length>6&&arguments[6]!==void 0?arguments[6]:r.dLayerMax;return function(h){if(h=new r(h),a=new r(a),l=new r(l),f=new r(f),g=new r(g),h.isNan()||l.lt(a)||h.lt(f)||h.gt(g))return new r(r.dNaN);var v=function(b){return new r(b)},u=!0;if(l.lt(0))u=!1;else if(a.gt(0))u=!0;else{var M=e(r.dZero);if(M.eq(h))return c(0,0,0);u=h.gt(M),t&&(u=!u)}var x=u,w;if(u){if(l.lt($))u=!0;else if(a.gt($))u=!1;else{var o=e(new r($));u=h.lt(o),t&&(u=!u)}if(u){w=!0;var F=r.pow(10,T).recip();if(l.lt(F))u=!1;else if(a.gt(F))u=!0;else{var A=e(new r(F));u=h.gt(A),t&&(u=!u)}if(u)v=function(b){return r.pow(10,b).recip()};else{var d=r.tetrate(10,T);if(l.lt(d))u=!1;else if(a.gt(d))u=!0;else{var S=e(new r(d));u=h.gt(S),t&&(u=!u)}u?v=function(b){return r.tetrate(10,new r(b).toNumber()).recip()}:v=function(b){return new r(b).gt(Math.log10(Number.MAX_VALUE))?r.dZero:r.tetrate(10,r.pow(10,b).toNumber()).recip()}}}else{if(w=!1,l.lt(T))u=!0;else if(a.gt(T))u=!1;else{var p=e(new r(T));u=h.lt(p),t&&(u=!u)}if(u)v=function(b){return new r(b)};else{var q=r.pow(10,T);if(l.lt(q))u=!0;else if(a.gt(q))u=!1;else{var I=e(new r(q));u=h.lt(I),t&&(u=!u)}if(u)v=function(b){return r.pow(10,b)};else{var N=r.tetrate(10,T);if(l.lt(N))u=!0;else if(a.gt(N))u=!1;else{var y=e(new r(N));u=h.lt(y),t&&(u=!u)}u?v=function(b){return r.tetrate(10,new r(b).toNumber())}:v=function(b){return new r(b).gt(Math.log10(Number.MAX_VALUE))?r.dInf:r.tetrate(10,r.pow(10,b).toNumber())}}}}}else{if(w=!0,l.lt(-$))u=!1;else if(a.gt(-$))u=!0;else{var V=e(new r(-$));u=h.gt(V),t&&(u=!u)}if(u){var C=r.pow(10,T).recip().neg();if(l.lt(C))u=!0;else if(a.gt(C))u=!1;else{var D=e(new r(C));u=h.lt(D),t&&(u=!u)}if(u)v=function(b){return r.pow(10,b).recip().neg()};else{var Y=r.tetrate(10,T).neg();if(l.lt(Y))u=!0;else if(a.gt(Y))u=!1;else{var L=e(new r(Y));u=h.lt(L),t&&(u=!u)}u?v=function(b){return r.tetrate(10,new r(b).toNumber()).recip().neg()}:v=function(b){return new r(b).gt(Math.log10(Number.MAX_VALUE))?r.dZero:r.tetrate(10,r.pow(10,b).toNumber()).recip().neg()}}}else{if(w=!1,l.lt(-T))u=!1;else if(a.gt(-T))u=!0;else{var G=e(new r(-T));u=h.gt(G),t&&(u=!u)}if(u)v=function(b){return r.neg(b)};else{var E=r.pow(10,T).neg();if(l.lt(E))u=!1;else if(a.gt(E))u=!0;else{var X=e(new r(E));u=h.gt(X),t&&(u=!u)}if(u)v=function(b){return r.pow(10,b).neg()};else{var Q=r.tetrate(10,T).neg();if(l.lt(Q))u=!1;else if(a.gt(Q))u=!0;else{var J=e(new r(Q));u=h.gt(J),t&&(u=!u)}u?v=function(b){return r.tetrate(10,new r(b).toNumber()).neg()}:v=function(b){return new r(b).gt(Math.log10(Number.MAX_VALUE))?r.dNegInf:r.tetrate(10,r.pow(10,b).toNumber()).neg()}}}}}for(var Z=x!=w!=t,re=Z?function(O,b){return r.gt(O,b)}:function(O,b){return r.lt(O,b)},W=.001,H=!1,te=!1,U=1,P=r.dOne,B=0,z=!1,R=1;R<i;++R){z=!1,B=U,P=v(U),P.gt(l)&&(P=l,z=!0),P.lt(a)&&(P=a,z=!0);var ee=e(P);if(ee.eq(h)&&!z)break;var j=re(ee,h);if(R>1&&te!=j&&(H=!0),te=j,H?W/=2:W*=2,j!=Z&&P.eq(l)||j==Z&&P.eq(a))return new r(r.dNaN);if(W=Math.abs(W)*(j?-1:1),U+=W,W===0||B==U)break}return v(U)}}}]),r}();k.dZero=c(0,0,0);k.dOne=c(1,0,1);k.dNegOne=c(-1,0,1);k.dTwo=c(1,0,2);k.dTen=c(1,0,10);k.dNaN=c(Number.NaN,Number.NaN,Number.NaN);k.dInf=c(1,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY);k.dNegInf=c(-1,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY);k.dNumberMax=m(1,0,Number.MAX_VALUE);k.dNumberMin=m(1,0,Number.MIN_VALUE);k.dLayerSafeMax=m(1,Number.MAX_SAFE_INTEGER,T-1);k.dLayerSafeMin=m(1,Number.MAX_SAFE_INTEGER,-(T-1));k.dLayerMax=m(1,Number.MAX_VALUE,T-1);k.dLayerMin=m(1,Number.MAX_VALUE,-(T-1));k.fromStringCache=new me(de);s=k.fromValue_noAlloc;m=k.fromComponents;c=k.fromComponents_noNormalize;k.fromMantissaExponent;k.fromMantissaExponent_noNormalize;export{k as default};\r\n","// H5 Big Number System - Venus API\r\n// Provides break_eternity.js functionality to H5 games\r\n\r\n// Import break_eternity.js as ES6 module from local file (default export)\r\nimport Decimal from '../lib/break_eternity.js';\r\n\r\nfunction createNumbersAPI() {\r\n // Create the numbers API\r\n const numbersAPI = {\r\n // Type detection helper\r\n isBigNumber: (value) => {\r\n if (typeof value === 'string' && value.startsWith('BE:')) return true;\r\n if (value instanceof Decimal) return true;\r\n if (typeof value === 'number' && (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER)) return true;\r\n return false;\r\n },\r\n \r\n // Normalize any input to Decimal (for API responses)\r\n normalize: (value) => {\r\n if (value instanceof Decimal) return value;\r\n if (typeof value === 'string' && value.startsWith('BE:')) {\r\n return new Decimal(value.slice(3));\r\n }\r\n return new Decimal(value);\r\n },\r\n \r\n // Common game formatters\r\n format: {\r\n incremental: (value) => {\r\n const decimal = value instanceof Decimal ? value : new Decimal(value);\r\n const suffixes = ['', 'K', 'M', 'B', 'T', 'Qa', 'Qi', 'Sx', 'Sp', 'Oc', 'No', 'Dc'];\r\n \r\n if (decimal.lt(1000)) return decimal.toFixed(0);\r\n \r\n const log = decimal.log10();\r\n const suffixIndex = Math.floor(log / 3);\r\n \r\n if (suffixIndex < suffixes.length) {\r\n const divisor = Decimal.pow(1000, suffixIndex);\r\n const value = decimal.div(divisor);\r\n return `${value.toFixed(2)}${suffixes[suffixIndex]}`;\r\n }\r\n \r\n return decimal.toExponential(2);\r\n }\r\n },\r\n \r\n // NEW: Calculate geometric series cost with full Decimal precision\r\n calculateGeometricSeriesCost: (baseCost, multiplier, currentQuantity, purchaseAmount) => {\r\n try {\r\n const base = new Decimal(baseCost);\r\n const r = new Decimal(multiplier);\r\n const q = new Decimal(currentQuantity);\r\n const n = new Decimal(purchaseAmount);\r\n\r\n if (r.eq(1)) {\r\n // Linear progression: baseCost * n\r\n return base.mul(n);\r\n }\r\n\r\n // Geometric series: a * (r^n - 1) / (r - 1)\r\n // where a = baseCost * r^currentQuantity\r\n const a = base.mul(r.pow(q));\r\n const numerator = a.mul(r.pow(n).sub(1));\r\n const denominator = r.sub(1);\r\n \r\n return numerator.div(denominator);\r\n } catch (error) {\r\n console.error('[VenusAPI] Decimal calculation failed, falling back to regular math:', error);\r\n // Fallback to regular JavaScript math\r\n const base = Number(baseCost);\r\n const r = Number(multiplier);\r\n if (r === 1) return base * purchaseAmount;\r\n const a = base * Math.pow(r, currentQuantity);\r\n return (a * (Math.pow(r, purchaseAmount) - 1)) / (r - 1);\r\n }\r\n },\r\n\r\n // NEW: Find maximum affordable amount using Decimal precision\r\n calculateMaxAffordableDecimal: (availableCash, baseCost, multiplier, currentQuantity) => {\r\n try {\r\n const cash = new Decimal(availableCash);\r\n \r\n // Quick check if even one is affordable\r\n const costOne = numbersAPI.calculateGeometricSeriesCost(baseCost, multiplier, currentQuantity, 1);\r\n if (cash.lt(costOne)) return 0;\r\n\r\n // Binary search with Decimal precision\r\n let low = 1;\r\n let high = 1;\r\n\r\n // Find upper bound (exponential search)\r\n while (high < 1000000) { // Safety limit\r\n const cost = numbersAPI.calculateGeometricSeriesCost(baseCost, multiplier, currentQuantity, high);\r\n if (cost.gt(cash)) break;\r\n low = high;\r\n high *= 2;\r\n }\r\n\r\n // Binary search for exact maximum\r\n while (low < high) {\r\n const mid = Math.floor((low + high + 1) / 2);\r\n const cost = numbersAPI.calculateGeometricSeriesCost(baseCost, multiplier, currentQuantity, mid);\r\n \r\n if (cost.lte(cash)) {\r\n low = mid;\r\n } else {\r\n high = mid - 1;\r\n }\r\n }\r\n\r\n return low;\r\n } catch (error) {\r\n console.error('[VenusAPI] Decimal max affordable calculation failed:', error);\r\n // Fallback to simple division\r\n return Math.floor(Number(availableCash) / Number(baseCost));\r\n }\r\n },\r\n\r\n // NEW: Format Decimal value for currency display\r\n formatDecimalCurrency: (decimalValue) => {\r\n try {\r\n if (numbersAPI.isBigNumber(decimalValue)) {\r\n return `$${numbersAPI.format.incremental(decimalValue)}`;\r\n }\r\n // Fallback for regular numbers\r\n return `$${numbersAPI.format.incremental(decimalValue)}`;\r\n } catch (error) {\r\n console.error('[VenusAPI] Decimal formatting failed:', error);\r\n return `$${Number(decimalValue).toLocaleString()}`;\r\n }\r\n }\r\n };\r\n\r\n // Initialized with break_eternity.js\r\n \r\n return numbersAPI;\r\n}\r\n\r\n// Export initialization function for venus-api/index.js\r\nexport async function initializeNumbers(venusApiInstance) {\r\n // Initializing numbers system...\r\n \r\n // Import createProxiedObject and createProxiedMethod from core\r\n const { createProxiedObject, createProxiedMethod } = await import('./core.js');\r\n \r\n // Create the numbers API (Decimal is already imported as ES6 module)\r\n const numbersAPI = createNumbersAPI();\r\n \r\n // Add numbers API to VenusAPI instance\r\n venusApiInstance.numbers = createProxiedObject.call(\r\n venusApiInstance,\r\n 'numbers',\r\n {\r\n isBigNumber: numbersAPI.isBigNumber,\r\n normalize: numbersAPI.normalize,\r\n format: {\r\n incremental: numbersAPI.format.incremental\r\n },\r\n // NEW: Expose geometric series calculation methods\r\n calculateGeometricSeriesCost: numbersAPI.calculateGeometricSeriesCost,\r\n calculateMaxAffordableDecimal: numbersAPI.calculateMaxAffordableDecimal,\r\n formatDecimalCurrency: numbersAPI.formatDecimalCurrency,\r\n // Expose Decimal class for direct use\r\n Decimal: Decimal\r\n }\r\n );\r\n \r\n // Numbers system initialized with break_eternity.js\r\n}\r\n\r\n// Export Decimal for direct use in games\r\nexport { Decimal };","import {\r\n OpenCommentsResult,\r\n PostApi,\r\n PostInfo,\r\n ShareContext,\r\n SharePostResult,\r\n ToggleFollowResult,\r\n ToggleLikeResult,\r\n} from './PostApi'\r\nimport { createMockDelay, MOCK_DELAYS } from '../venus-api/systems/core'\r\nimport { VenusAPI } from '../venus-api/types'\r\n\r\nexport class MockPostApi implements PostApi {\r\n private readonly venusApi: VenusAPI\r\n\r\n constructor(venusApi: VenusAPI) {\r\n this.venusApi = venusApi\r\n }\r\n\r\n async getPostInfo(): Promise<PostInfo> {\r\n const venusApi = this.venusApi\r\n\r\n await createMockDelay(MOCK_DELAYS.short)\r\n\r\n return venusApi._mock.currentPostInteractions\r\n }\r\n\r\n async openCommentsAsync(): Promise<OpenCommentsResult> {\r\n // console.log('[Venus Mock] Opening comments with options:', options);\r\n await createMockDelay(MOCK_DELAYS.short)\r\n\r\n return {\r\n opened: true,\r\n commentsCount: 0,\r\n }\r\n }\r\n\r\n async sharePostAsync(context: ShareContext): Promise<SharePostResult> {\r\n console.log('[Venus Mock] Sharing post with additionalInfo:', context)\r\n await createMockDelay(MOCK_DELAYS.short)\r\n return {\r\n shared: true,\r\n platform: 'mock',\r\n }\r\n }\r\n\r\n async toggleFollowAsync(): Promise<ToggleFollowResult> {\r\n const venusApi = this.venusApi\r\n\r\n console.log('[Venus Mock] *Toggling follow status')\r\n await createMockDelay(MOCK_DELAYS.short)\r\n\r\n // Toggle following state\r\n venusApi._mock.currentPostInteractions.isFollowing =\r\n !venusApi._mock.currentPostInteractions.isFollowing\r\n\r\n const isFollowing = venusApi._mock.currentPostInteractions.isFollowing\r\n\r\n // Return direct data, not wrapped in success object\r\n return {\r\n isFollowing: isFollowing,\r\n action: isFollowing ? 'followed' : 'unfollowed',\r\n }\r\n }\r\n\r\n async toggleLikeAsync(): Promise<ToggleLikeResult> {\r\n const venusApi = this.venusApi\r\n\r\n await createMockDelay(MOCK_DELAYS.short)\r\n\r\n // Toggle like state and update count\r\n venusApi._mock.currentPostInteractions.isLiked =\r\n !venusApi._mock.currentPostInteractions.isLiked\r\n\r\n const isLiked = venusApi._mock.currentPostInteractions.isLiked\r\n\r\n if (isLiked) {\r\n venusApi._mock.currentPostInteractions.likesCount++\r\n } else {\r\n venusApi._mock.currentPostInteractions.likesCount = Math.max(\r\n 0,\r\n venusApi._mock.currentPostInteractions.likesCount - 1,\r\n )\r\n }\r\n\r\n // Return direct data, not wrapped in success object\r\n return {\r\n isLiked: isLiked,\r\n likesCount: venusApi._mock.currentPostInteractions.likesCount,\r\n action: isLiked ? 'liked' : 'unliked',\r\n }\r\n }\r\n}\r\n","import {\r\n OpenCommentsResult,\r\n PostApi,\r\n PostInfo,\r\n ShareContext,\r\n SharePostResult,\r\n ToggleFollowResult,\r\n ToggleLikeResult,\r\n} from './PostApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\n\r\nexport class RpcPostApi implements PostApi {\r\n private readonly rpcClient: RpcClient\r\n\r\n constructor(rpcClient: RpcClient) {\r\n this.rpcClient = rpcClient\r\n }\r\n\r\n getPostInfo(): Promise<PostInfo> {\r\n return this.rpcClient.call(VenusMessageId.GET_POST_INTERACTIONS, {})\r\n }\r\n\r\n openCommentsAsync(): Promise<OpenCommentsResult> {\r\n return this.rpcClient.call(VenusMessageId.OPEN_COMMENTS, {})\r\n }\r\n\r\n sharePostAsync(context: ShareContext): Promise<SharePostResult> {\r\n return this.rpcClient.call(VenusMessageId.SHARE_POST, {\r\n shareContext: context,\r\n })\r\n }\r\n\r\n toggleFollowAsync(): Promise<ToggleFollowResult> {\r\n return this.rpcClient.call<ToggleFollowResult>(\r\n VenusMessageId.TOGGLE_FOLLOW,\r\n {},\r\n )\r\n }\r\n\r\n toggleLikeAsync(): Promise<ToggleLikeResult> {\r\n return this.rpcClient.call<ToggleLikeResult>(VenusMessageId.TOGGLE_LIKE, {})\r\n }\r\n}\r\n","import { VenusAPI } from '../venus-api/types'\r\nimport { Host } from '../Host'\r\n\r\nexport * from './PostApi'\r\nexport * from './MockPostApi'\r\nexport * from './RpcPostApi'\r\n\r\nexport function initializePost(venusApi: VenusAPI, host: Host) {\r\n venusApi.getPostInteractionsAsync = () => {\r\n return host.post.getPostInfo()\r\n }\r\n\r\n venusApi.toggleFollowAsync = () => {\r\n return host.post.toggleFollowAsync()\r\n }\r\n\r\n venusApi.toggleLikeAsync = () => {\r\n return host.post.toggleLikeAsync()\r\n }\r\n\r\n venusApi.sharePostAsync = async (options) => {\r\n await host.post.sharePostAsync(options)\r\n }\r\n\r\n venusApi.openCommentsAsync = async () => {\r\n await host.post.openCommentsAsync()\r\n }\r\n}\r\n","import { RoomsApi } from './RoomsApi'\r\n\r\nexport class MockRoomsApi implements RoomsApi {\r\n join(roomId: string): Promise<any> {\r\n throw new Error('Method not implemented.')\r\n }\r\n // Mock room storage to simulate real-time rooms in development\r\n mockRooms = new Map()\r\n mockMessages = new Map() // roomId -> messages[]\r\n mockRoomMoves = new Map() // roomId -> moves[]\r\n mockSubscriptions = new Map() // instanceId -> subscriptions\r\n\r\n createRoom(options: any): Promise<any> {\r\n return Promise.resolve(undefined)\r\n }\r\n\r\n generateRoomId() {\r\n return 'room_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\r\n }\r\n\r\n // Helper to generate message IDs\r\n generateMessageId() {\r\n return 'msg_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\r\n }\r\n\r\n // Helper to generate room codes\r\n generateRoomCode() {\r\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'\r\n let code = ''\r\n for (let i = 0; i < 6; i++) {\r\n code += characters.charAt(Math.floor(Math.random() * characters.length))\r\n }\r\n return code\r\n }\r\n}\r\n","import { AnalyticsApi, MockAnalyticsApi } from './analytics'\r\nimport { Host } from './Host.ts'\r\nimport { AdsApi, MockAdsApi } from './ads'\r\nimport { createMockStorageApi, StorageApi } from './storage'\r\nimport { Avatar3dApi, MockAvatarApi } from './avatar3d'\r\nimport { VenusAPI } from './venus-api/types.ts'\r\nimport { MockNavigationApi, NavigationApi } from './navigation'\r\nimport { MockNotificationsApi, NotificationsApi } from './notifications'\r\nimport {\r\n ActionSheetItem,\r\n MockPopupsApi,\r\n PopupsApi,\r\n ShowActionSheetOptions,\r\n} from './popups'\r\nimport { MockProfileApi, ProfileApi } from './profile'\r\nimport { CdnApi, MockCdnApi } from './cdn'\r\nimport { MockTimeApi, TimeApi } from './time'\r\nimport { MockPostApi, PostApi } from './post'\r\nimport { AiApi, MockAiApi } from './ai'\r\nimport { HapticsApi, MockHapticsApi } from './haptics'\r\nimport { FeaturesApi, MockFeaturesApi } from './features'\r\nimport { LifecycleApi, MockLifecycleApi } from './lifecycles'\r\nimport { MockSimulationApi, SimulationApi } from './simulation'\r\nimport { RoomsApi } from './rooms'\r\nimport { MockRoomsApi } from './rooms/MockRoomsApi'\r\nimport { LoggingApi, MockLoggingApi } from './logging'\r\nimport { IapApi, MockIapApi } from './iap'\r\nimport { VenusMessageId } from './VenusMessageId'\r\nimport { MockOverlay, OverlayElements } from './MockOverlay'\r\nimport { MockSharedAssetsApi, RpcSharedAssetsApi } from './shared-assets'\r\n\r\nenum MockHostState {\r\n PLAYING,\r\n PAUSED,\r\n SLEEPING,\r\n TERMINATED,\r\n}\r\n\r\nexport class MockHost implements Host {\r\n readonly ads: AdsApi\r\n readonly analytics: AnalyticsApi\r\n readonly deviceCache: StorageApi\r\n readonly appStorage: StorageApi\r\n readonly globalStorage: StorageApi\r\n readonly avatar3d: Avatar3dApi\r\n readonly navigation: NavigationApi\r\n readonly notifications: NotificationsApi\r\n readonly popups: PopupsApi\r\n readonly profile: ProfileApi\r\n readonly cdn: CdnApi\r\n readonly time: TimeApi\r\n readonly post: PostApi\r\n readonly ai: AiApi\r\n readonly haptics: HapticsApi\r\n readonly features: FeaturesApi\r\n readonly lifecycle: LifecycleApi\r\n readonly simulation: SimulationApi\r\n readonly rooms: RoomsApi\r\n readonly logging: LoggingApi\r\n readonly iap: IapApi\r\n\r\n private state: MockHostState = MockHostState.PLAYING\r\n\r\n get isInitialized() {\r\n return this._isInitialized\r\n }\r\n\r\n private readonly venusApi: VenusAPI\r\n private _isInitialized: boolean = false\r\n private readonly _overlay: MockOverlay\r\n\r\n private readonly _mockLifecyclesApi: MockLifecycleApi\r\n private readonly _mockAdsApi: MockAdsApi\r\n\r\n constructor(venusApi: VenusAPI) {\r\n this.venusApi = venusApi\r\n this._overlay = this.createOverlay()\r\n this._mockAdsApi = new MockAdsApi(this._overlay)\r\n this._mockLifecyclesApi = new MockLifecycleApi()\r\n\r\n this.ads = this._mockAdsApi\r\n this.analytics = new MockAnalyticsApi()\r\n const appUrl = typeof window !== 'undefined' ? window.location.href : ''\r\n this.deviceCache = createMockStorageApi('deviceCache', appUrl)\r\n this.appStorage = createMockStorageApi('appStorage', appUrl)\r\n this.globalStorage = createMockStorageApi('globalStorage')\r\n this.avatar3d = new MockAvatarApi(venusApi)\r\n this.navigation = new MockNavigationApi(venusApi)\r\n this.notifications = new MockNotificationsApi(venusApi)\r\n this.popups = new MockPopupsApi(this._overlay)\r\n this.profile = new MockProfileApi()\r\n this.cdn = new MockCdnApi()\r\n this.time = new MockTimeApi(venusApi)\r\n this.post = new MockPostApi(venusApi)\r\n this.ai = new MockAiApi()\r\n this.haptics = new MockHapticsApi(venusApi)\r\n this.features = new MockFeaturesApi()\r\n this.lifecycle = this._mockLifecyclesApi\r\n this.simulation = new MockSimulationApi()\r\n this.rooms = new MockRoomsApi()\r\n this.logging = new MockLoggingApi()\r\n this.iap = new MockIapApi()\r\n\r\n venusApi.isMock = () => true\r\n this.venusApi.sharedAssets = new MockSharedAssetsApi(this.venusApi)\r\n }\r\n\r\n initialize(): Promise<void> {\r\n this._isInitialized = true\r\n return Promise.resolve()\r\n }\r\n\r\n private updateUiControls() {\r\n const controls = {\r\n closeButton: { x: 16, y: 16, width: 32, height: 32 },\r\n menuButton: {\r\n x: window.innerWidth - 48,\r\n y: 16,\r\n width: 32,\r\n height: 32,\r\n },\r\n feedHeader: { x: 0, y: 0, width: window.innerWidth, height: 56 },\r\n playButton: {\r\n x: 0,\r\n y: window.innerHeight - 60,\r\n width: window.innerWidth,\r\n height: 60,\r\n },\r\n }\r\n return controls\r\n }\r\n\r\n private createOverlay(): MockOverlay {\r\n const venusApi = this.venusApi\r\n venusApi.config.ui.controls = this.updateUiControls()\r\n const uiControls = venusApi.config.ui.controls\r\n\r\n // Create overlay container\r\n const overlayContainer = document.createElement('div')\r\n overlayContainer.id = 'venus-mock-overlay'\r\n overlayContainer.style.cssText = `\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n pointer-events: none;\r\n z-index: 10000;\r\n `\r\n document.body.appendChild(overlayContainer)\r\n\r\n // Create close button\r\n const menuButton = this.createOverlayButton(\r\n 'close',\r\n 'Menu',\r\n uiControls.menuButton,\r\n () => {\r\n this.handleMenuButtonClicked()\r\n },\r\n 'rgba(59, 130, 246, 0.7)', // Blue background instead of black\r\n '#FFFFFF',\r\n )\r\n overlayContainer.appendChild(menuButton)\r\n\r\n // Setup ad overlay container\r\n const adOverlay = this.setupAdOverlay()\r\n\r\n // Setup action sheet overlay container\r\n const actionSheet = this.setupActionSheetOverlay()\r\n\r\n // Handle window resize\r\n window.addEventListener('resize', () => {\r\n this.updateOverlayLayout()\r\n })\r\n\r\n return {\r\n container: overlayContainer,\r\n elements: {\r\n menuButton: menuButton,\r\n },\r\n appVisibilityState: 'visible',\r\n actionSheetOverlay: actionSheet,\r\n adOverlay: adOverlay,\r\n showAdOverlay: () => {\r\n return this.showAdOverlay('REWARDED VIDEO AD')\r\n },\r\n showActionSheet: (items, options) => {\r\n return this.showActionSheetOverlay(items, options)\r\n },\r\n }\r\n }\r\n\r\n private async handleMenuButtonClicked() {\r\n this.triggerLifecycleEvent(VenusMessageId.PAUSE)\r\n\r\n const sleepAwakeToggleAction: ActionSheetItem = {\r\n label: '⏰ Awake',\r\n id: 'sleepAwakeToggle',\r\n }\r\n if (this.state === MockHostState.PAUSED) {\r\n sleepAwakeToggleAction.label = '💤 Sleep'\r\n }\r\n\r\n // const quitPlayToggleAction: ActionSheetItem = {\r\n // label: '▶️ Play',\r\n // id: 'quitPlayToggle',\r\n // }\r\n //\r\n // if (this.canQuit()) {\r\n // quitPlayToggleAction.label = '🛑 Quit'\r\n // }\r\n\r\n const action = await this.showActionSheetOverlay([sleepAwakeToggleAction])\r\n\r\n if (action === sleepAwakeToggleAction.id) {\r\n if (this.state === MockHostState.PAUSED) {\r\n this.state = MockHostState.SLEEPING\r\n this.triggerLifecycleEvent(VenusMessageId.HIDDEN)\r\n } else {\r\n this.state = MockHostState.PAUSED\r\n this.triggerLifecycleEvent(VenusMessageId.SHOWN)\r\n }\r\n } else {\r\n if (this.state === MockHostState.PAUSED) {\r\n this.triggerLifecycleEvent(VenusMessageId.RESUME)\r\n }\r\n }\r\n }\r\n\r\n private async showAdOverlay(type: any): Promise<boolean> {\r\n return new Promise((resolve, reject) => {\r\n const overlay = this._overlay\r\n const adOverlay = overlay.adOverlay\r\n\r\n // Clear any existing content\r\n overlay.adOverlay.innerHTML = ''\r\n\r\n // Add ad type heading\r\n const heading = document.createElement('h1')\r\n heading.style.cssText = `\r\n font-size: 24px;\r\n margin-bottom: 20px;\r\n text-align: center;\r\n `\r\n heading.innerText =\r\n type === 'interstitial' ? 'INTERSTITIAL AD' : 'REWARDED VIDEO AD'\r\n overlay.adOverlay.appendChild(heading)\r\n\r\n // Add mock ad content\r\n const content = document.createElement('div')\r\n content.style.cssText = `\r\n width: 300px;\r\n height: 250px;\r\n background-color: #1e40af;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n margin-bottom: 20px;\r\n border-radius: 8px;\r\n `\r\n content.innerText = 'Mock Ad Content'\r\n adOverlay.appendChild(content)\r\n\r\n // Add timer text\r\n const timer = document.createElement('p')\r\n timer.style.cssText = `\r\n margin-bottom: 20px;\r\n font-size: 16px;\r\n `\r\n timer.innerText = 'Normally ads would have a timer...'\r\n adOverlay.appendChild(timer)\r\n\r\n // Add OK button\r\n const okButton = document.createElement('button')\r\n okButton.style.cssText = `\r\n padding: 10px 40px;\r\n background-color: #2563eb;\r\n color: white;\r\n border: none;\r\n border-radius: 4px;\r\n font-size: 16px;\r\n cursor: pointer;\r\n `\r\n okButton.innerText = 'Close Ad'\r\n adOverlay.appendChild(okButton)\r\n\r\n // Show the overlay\r\n adOverlay.style.display = 'flex'\r\n\r\n okButton.onclick = () => {\r\n this.hideAdOverlay()\r\n resolve(true)\r\n }\r\n })\r\n }\r\n\r\n private hideAdOverlay() {\r\n const overlay = this._overlay\r\n if (overlay.adOverlay) {\r\n overlay.adOverlay.style.display = 'none'\r\n }\r\n }\r\n\r\n private setupActionSheetOverlay() {\r\n const actionSheetOverlay = document.createElement('div')\r\n actionSheetOverlay.id = 'venus-action-sheet-overlay'\r\n actionSheetOverlay.style.cssText = `\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 10600;\r\n font-family: sans-serif;\r\n display: none;\r\n `\r\n document.body.appendChild(actionSheetOverlay)\r\n return actionSheetOverlay\r\n }\r\n\r\n private createOverlayButton(\r\n id: string,\r\n text: string,\r\n position: { x: number; y: number; width: number; height: number },\r\n onClick: () => void,\r\n background: string,\r\n color: string,\r\n ) {\r\n const button = document.createElement('button')\r\n button.id = `venus-mock-${id}-button`\r\n button.innerText = text\r\n button.style.cssText = `\r\n position: absolute;\r\n left: ${position.x}px;\r\n top: ${position.y}px;\r\n width: ${position.width}px;\r\n min-width: ${position.width}px;\r\n height: ${position.height}px;\r\n background: ${background};\r\n color: ${color};\r\n border: none;\r\n border-radius: 8px;\r\n font-family: sans-serif;\r\n font-weight: bold;\r\n font-size: ${Math.min(position.width, position.height) / 3}px;\r\n cursor: pointer;\r\n pointer-events: auto;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n opacity: 0.9;\r\n transition: opacity 0.2s;\r\n `\r\n button.addEventListener('click', onClick)\r\n button.addEventListener('mouseover', () => {\r\n button.style.opacity = '1'\r\n })\r\n button.addEventListener('mouseout', () => {\r\n button.style.opacity = '0.9'\r\n })\r\n\r\n return button\r\n }\r\n\r\n private updateOverlayLayout() {\r\n //this.log('Updating mock overlay')\r\n const venusApi = this.venusApi\r\n const overlay = this._overlay\r\n\r\n venusApi.config.ui.controls = this.updateUiControls()\r\n\r\n // Get updated UI controls from VenusAPI\r\n const uiControls = venusApi.config.ui.controls\r\n //this.log('Controls: ', venusApi.config.ui.controls)\r\n\r\n const menuBtn = overlay.elements.menuButton\r\n const menuPos = uiControls.menuButton\r\n menuBtn.style.left = `${menuPos.x}px`\r\n menuBtn.style.top = `${menuPos.y}px`\r\n menuBtn.style.width = `${menuPos.width}px`\r\n menuBtn.style.minWidth = `${menuPos.width}px`\r\n menuBtn.style.height = `${menuPos.height}px`\r\n }\r\n\r\n private triggerLifecycleEvent(name: string) {\r\n console.log('Trigger Lifecycle Event: ', name)\r\n\r\n if (name == VenusMessageId.PLAY) {\r\n this._mockLifecyclesApi.triggerOnPlayCallbacks({\r\n hudInsets: { top: 60, right: 0, bottom: 0, left: 0 },\r\n // shareData: {\r\n // title: 'Mock Share Title',\r\n // description: 'Mock share description for testing',\r\n // },\r\n format: 'post',\r\n // stackData: null,\r\n })\r\n } else if (name == VenusMessageId.PAUSE) {\r\n this._mockLifecyclesApi.triggerOnPauseCallbacks()\r\n } else if (name == VenusMessageId.RESUME) {\r\n this._mockLifecyclesApi.triggerOnResumeCallbacks()\r\n } else if (name == VenusMessageId.QUIT) {\r\n this._mockLifecyclesApi.triggerOnQuitCallbacks()\r\n } else if (name == VenusMessageId.SHOWN) {\r\n this._mockLifecyclesApi.triggerOnShowCallbacks({\r\n hudInsets: { top: 60, bottom: 120, left: 0, right: 0 },\r\n })\r\n } else if (name == VenusMessageId.HIDDEN) {\r\n this._mockLifecyclesApi.triggerOnHideCallbacks()\r\n }\r\n }\r\n\r\n private setOverlayElementVisibility(\r\n element: keyof OverlayElements,\r\n visible: boolean,\r\n ) {\r\n const overlay = this._overlay\r\n const elements = overlay.elements\r\n if (elements[element]) {\r\n elements[element].style.display = visible ? 'flex' : 'none'\r\n }\r\n }\r\n\r\n private setupAdOverlay() {\r\n const adOverlay = document.createElement('div')\r\n adOverlay.id = 'venus-ad-overlay'\r\n adOverlay.style.cssText = `\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: rgba(37, 99, 235, 0.9);\r\n color: white;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 10500;\r\n font-family: sans-serif;\r\n display: none;\r\n `\r\n document.body.appendChild(adOverlay)\r\n return adOverlay\r\n }\r\n\r\n private log(msg: string, ...args: any[]) {\r\n console.log(`[Venus Mock] ${msg}`, ...args)\r\n }\r\n\r\n private showActionSheetOverlay(\r\n items: ActionSheetItem[],\r\n options?: ShowActionSheetOptions,\r\n ): Promise<string | number | null> {\r\n this.log('Showing ActionSheetOverlay...')\r\n\r\n return new Promise((resolve, reject) => {\r\n const overlay = this._overlay\r\n // Clear any existing content and event listeners\r\n overlay.actionSheetOverlay.innerHTML = ''\r\n overlay.actionSheetOverlay.style.display = 'flex'\r\n\r\n // Create action sheet container\r\n const actionSheet = document.createElement('div')\r\n actionSheet.className = 'venus-action-sheet'\r\n actionSheet.style.cssText = `\r\n background-color: white;\r\n border-radius: 8px;\r\n width: 80%;\r\n max-width: 400px;\r\n max-height: 80%;\r\n display: flex;\r\n flex-direction: column;\r\n overflow: hidden;\r\n color: black;\r\n `\r\n\r\n // Add title if provided\r\n if (options?.title) {\r\n const titleContainer = document.createElement('div')\r\n titleContainer.style.cssText = `\r\n padding: 16px;\r\n border-bottom: 1px solid #eaeaea;\r\n font-weight: bold;\r\n font-size: 18px;\r\n text-align: center;\r\n color: black;\r\n `\r\n titleContainer.innerText = options.title\r\n actionSheet.appendChild(titleContainer)\r\n }\r\n\r\n // Add message if provided\r\n if (options?.message) {\r\n const messageContainer = document.createElement('div')\r\n messageContainer.style.cssText = `\r\n padding: 8px 16px;\r\n color: #666;\r\n font-size: 14px;\r\n text-align: center;\r\n `\r\n messageContainer.innerText = options.message\r\n actionSheet.appendChild(messageContainer)\r\n }\r\n\r\n // Add options\r\n const optionsContainer = document.createElement('div')\r\n optionsContainer.style.cssText = `\r\n overflow-y: auto;\r\n max-height: 300px;\r\n `\r\n\r\n items.forEach((item, index) => {\r\n const optionItem = document.createElement('div')\r\n optionItem.style.cssText = `\r\n padding: 12px 16px;\r\n border-bottom: 1px solid #eaeaea;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n transition: background-color 0.2s;\r\n color: black;\r\n `\r\n\r\n // Add hover effect\r\n optionItem.addEventListener('mouseover', () => {\r\n optionItem.style.backgroundColor = '#f5f5f5'\r\n })\r\n\r\n optionItem.addEventListener('mouseout', () => {\r\n optionItem.style.backgroundColor = 'white'\r\n })\r\n\r\n // Add icon if provided\r\n if (item.icon) {\r\n const iconSpan = document.createElement('span')\r\n iconSpan.style.cssText = `\r\n margin-right: 12px;\r\n font-size: 16px;\r\n `\r\n iconSpan.innerText = item.icon\r\n optionItem.appendChild(iconSpan)\r\n }\r\n\r\n // Add label\r\n const labelSpan = document.createElement('span')\r\n labelSpan.style.cssText = `\r\n color: black;\r\n `\r\n labelSpan.innerText = item.label\r\n optionItem.appendChild(labelSpan)\r\n\r\n // Handle click\r\n optionItem.addEventListener('click', () => {\r\n this.hideActionSheetOverlay()\r\n const optionId = item.id !== undefined ? item.id : index\r\n resolve(optionId)\r\n })\r\n\r\n optionsContainer.appendChild(optionItem)\r\n })\r\n\r\n actionSheet.appendChild(optionsContainer)\r\n\r\n // Add cancel button only if cancel is not disabled\r\n if (!options?.disableCancel) {\r\n const cancelButton = document.createElement('div')\r\n cancelButton.style.cssText = `\r\n padding: 14px 16px;\r\n text-align: center;\r\n font-weight: bold;\r\n cursor: pointer;\r\n color: #3b82f6;\r\n border-top: 1px solid #eaeaea;\r\n `\r\n cancelButton.innerText = options?.cancelButtonText || 'Cancel'\r\n cancelButton.addEventListener('click', () => {\r\n this.hideActionSheetOverlay()\r\n resolve(null)\r\n })\r\n\r\n actionSheet.appendChild(cancelButton)\r\n }\r\n\r\n // Add close button (X) in the top-right corner only if cancel is not disabled\r\n if (!options?.disableCancel) {\r\n const closeButton = document.createElement('div')\r\n closeButton.style.cssText = `\r\n position: absolute;\r\n top: 8px;\r\n right: 8px;\r\n width: 24px;\r\n height: 24px;\r\n border-radius: 12px;\r\n background-color: rgba(0,0,0,0.1);\r\n color: #666;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n font-size: 14px;\r\n `\r\n closeButton.innerText = '✕'\r\n closeButton.addEventListener('click', () => {\r\n this.hideActionSheetOverlay()\r\n resolve(null)\r\n })\r\n\r\n actionSheet.appendChild(closeButton)\r\n overlay.actionSheetOverlay.appendChild(actionSheet)\r\n }\r\n })\r\n }\r\n\r\n hideActionSheetOverlay() {\r\n const overlay = this._overlay\r\n if (overlay.actionSheetOverlay) {\r\n overlay.actionSheetOverlay.style.display = 'none'\r\n }\r\n }\r\n}\r\n","import {\r\n OnNotificationCallback,\r\n OnRequestCallback,\r\n OnResponseCallback,\r\n RpcNotification,\r\n RpcRequest,\r\n RpcResponse,\r\n RpcTransport,\r\n Subscription,\r\n} from './rpc'\r\nimport { VenusMessageId } from './VenusMessageId'\r\n\r\nexport interface VenusMessage {\r\n type: string\r\n direction: string\r\n data?: {\r\n requestId?: string\r\n success?: boolean\r\n\r\n //NOTE(Zee): Some things send 'value' others send 'data'\r\n value?: any\r\n data?: any\r\n\r\n error?: string\r\n\r\n script?: string\r\n }\r\n instanceId: string\r\n timestamp: number\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n _venusInitState?: {\r\n poolId: string\r\n apiInjected: boolean\r\n gameInitialized: boolean\r\n }\r\n ReactNativeWebView?: {\r\n postMessage(message: string): void\r\n }\r\n venus: {\r\n _config: {\r\n locale: string\r\n instanceId: string\r\n context?: any\r\n profile?: {\r\n id?: string\r\n username?: string\r\n }\r\n environment: {\r\n browserInfo?: {\r\n language: string\r\n }\r\n }\r\n _handlers: Record<string, any>\r\n }\r\n _fetchFromCdn: (url: string) => Promise<string>\r\n _roomSubscriptions: any\r\n }\r\n }\r\n}\r\n\r\nexport type OnVenusMessageCallback = (message: VenusMessage) => void\r\n\r\nexport class VenusTransport implements RpcTransport {\r\n private readonly messageHandler: (event: MessageEvent) => void\r\n\r\n private readonly onNotificationCallbacks: OnNotificationCallback[] = []\r\n private readonly onNotificationCallbacksToRemove: OnNotificationCallback[] =\r\n []\r\n\r\n private readonly onVenusMessageCallbacks: OnVenusMessageCallback[] = []\r\n private readonly onResponseCallbacks: OnResponseCallback[] = []\r\n private readonly onResponseCallbacksToRemove: OnResponseCallback[] = []\r\n\r\n private _instanceId: string | null = null\r\n private isStarted: boolean = false\r\n private isProcessingMessage: boolean = false\r\n\r\n constructor() {\r\n this.messageHandler = async (event) => {\r\n this.isProcessingMessage = true\r\n\r\n let message: VenusMessage\r\n if (typeof event.data === 'string') {\r\n //this.log(`Message is a string. Parsing...`)\r\n message = JSON.parse(event.data)\r\n } else {\r\n message = event.data as VenusMessage\r\n }\r\n\r\n if (!message) {\r\n this.logInfo('No message found. Ignoring message...')\r\n return\r\n }\r\n\r\n //this.logInfo(`message received:\\n${JSON.stringify(message, null, 2)}`)\r\n\r\n this.notifyVenusMessageReceived(message)\r\n\r\n if (\r\n message.type === VenusMessageId.PLAY ||\r\n message.type === VenusMessageId.PAUSE ||\r\n message.type === VenusMessageId.RESUME ||\r\n message.type === VenusMessageId.SHOWN ||\r\n message.type === VenusMessageId.HIDDEN ||\r\n message.type === VenusMessageId.CLEANUP ||\r\n message.type === VenusMessageId.QUIT\r\n ) {\r\n const notification: RpcNotification = {\r\n type: 'rpc-notification',\r\n id: message.type,\r\n payload: message.data,\r\n }\r\n this.handleNotification(notification)\r\n\r\n // NOTE(Zee): This early return is dangerous here. we have to make sure isProcessingMessage is set to false!\r\n this.isProcessingMessage = false\r\n return\r\n }\r\n\r\n const messageData = message.data\r\n if (!messageData) {\r\n this.logWarn('No data found. Ignoring message...')\r\n this.isProcessingMessage = false\r\n return\r\n }\r\n\r\n const requestId = messageData.requestId\r\n if (!requestId) {\r\n this.logWarn('No requestId. Ignoring message...')\r\n this.isProcessingMessage = false\r\n return\r\n }\r\n\r\n if (message.type !== VenusMessageId.H5_RESPONSE) {\r\n this.logWarn(`Ignoring unknown message type: ${message.type}`)\r\n this.isProcessingMessage = false\r\n return\r\n }\r\n\r\n const success = messageData.success\r\n let error = undefined\r\n if (!success) {\r\n error = {\r\n message: messageData.error || 'Unknown error',\r\n }\r\n }\r\n\r\n // Result can be either inside value or data\r\n let result = messageData.value\r\n if (result === undefined) {\r\n result = messageData.data\r\n }\r\n\r\n const response: RpcResponse = {\r\n type: 'rpc-response',\r\n id: requestId,\r\n result: result,\r\n method: message.type,\r\n error: error,\r\n }\r\n\r\n await this.handleResponse(response)\r\n this.isProcessingMessage = false\r\n }\r\n }\r\n onNotification(callback: OnNotificationCallback): Subscription {\r\n this.onNotificationCallbacks.push(callback)\r\n return {\r\n unsubscribe: () => {\r\n if (this.isProcessingMessage) {\r\n this.onNotificationCallbacks.push(callback)\r\n } else {\r\n this.removeOnNotificationCallback(callback)\r\n }\r\n },\r\n }\r\n }\r\n\r\n onRequest(callback: OnRequestCallback): Subscription {\r\n throw new Error('Method not implemented.')\r\n }\r\n\r\n onResponse(callback: OnResponseCallback): Subscription {\r\n this.onResponseCallbacks.push(callback)\r\n return {\r\n unsubscribe: () => {\r\n if (this.isProcessingMessage) {\r\n this.onResponseCallbacksToRemove.push(callback)\r\n } else {\r\n this.removeOnResponseCallback(callback)\r\n }\r\n },\r\n }\r\n }\r\n\r\n public get instanceId(): string | null {\r\n return this._instanceId\r\n }\r\n\r\n public set instanceId(instanceId: string) {\r\n this._instanceId = instanceId\r\n }\r\n\r\n sendRequest(request: RpcRequest): void {\r\n const instanceId = this.instanceId || 'unknown'\r\n const method = request.method\r\n const message: VenusMessage = {\r\n type: method,\r\n direction: 'H5_TO_APP',\r\n data: {\r\n ...request.args,\r\n requestId: request.id,\r\n },\r\n instanceId: instanceId,\r\n timestamp: Date.now(),\r\n }\r\n this.sendVenusMessage(message)\r\n }\r\n\r\n sendVenusMessage(message: VenusMessage): void {\r\n const messageAsString = JSON.stringify(message, null, 2)\r\n //this.logInfo(`Sending message:\\n${messageAsString}`)\r\n const reactNativeWebView = window.ReactNativeWebView\r\n if (reactNativeWebView) {\r\n reactNativeWebView.postMessage(messageAsString)\r\n } else {\r\n window.parent.postMessage(messageAsString, '*')\r\n }\r\n }\r\n\r\n sendResponse(response: RpcResponse): void {\r\n throw new Error('Method not implemented.')\r\n }\r\n\r\n start() {\r\n if (this.isStarted) {\r\n return\r\n }\r\n this.isStarted = true\r\n window.addEventListener('message', this.messageHandler, true)\r\n this.logInfo(`Started`)\r\n }\r\n\r\n stop() {\r\n if (!this.isStarted) {\r\n return\r\n }\r\n this.isStarted = false\r\n window.removeEventListener('message', this.messageHandler)\r\n this.logInfo(`Stopped`)\r\n }\r\n\r\n private handleNotification(notification: RpcNotification): void {\r\n //this.logInfo('Notification received: ', notification.id)\r\n for (const callback of this.onNotificationCallbacks) {\r\n callback(notification)\r\n }\r\n\r\n for (const callback of this.onNotificationCallbacksToRemove) {\r\n this.removeOnNotificationCallback(callback)\r\n }\r\n this.onNotificationCallbacksToRemove.length = 0\r\n }\r\n\r\n private async handleResponse(response: RpcResponse): Promise<void> {\r\n for (const callback of this.onResponseCallbacks) {\r\n const consumed = await callback(response)\r\n if (consumed) {\r\n break\r\n }\r\n }\r\n\r\n for (const callback of this.onResponseCallbacksToRemove) {\r\n this.removeOnResponseCallback(callback)\r\n }\r\n this.onResponseCallbacksToRemove.length = 0\r\n }\r\n\r\n private removeOnResponseCallback(callback: OnResponseCallback): void {\r\n this.onResponseCallbacks.splice(\r\n this.onResponseCallbacks.indexOf(callback),\r\n 1,\r\n )\r\n }\r\n\r\n private removeOnNotificationCallback(callback: OnNotificationCallback): void {\r\n this.onNotificationCallbacks.splice(\r\n this.onNotificationCallbacks.indexOf(callback),\r\n 1,\r\n )\r\n }\r\n\r\n private logInfo(message: string, ...params: any[]) {\r\n console.log(`[Venus Transport] ${message}`, ...params)\r\n }\r\n\r\n private logWarn(message: string, ...params: any[]) {\r\n console.warn(`[Venus Transport] ${message}`, ...params)\r\n }\r\n\r\n onVenusMessage(callback: OnVenusMessageCallback): Subscription {\r\n this.onVenusMessageCallbacks.push(callback)\r\n return {\r\n unsubscribe: () => {\r\n this.onVenusMessageCallbacks.splice(\r\n this.onVenusMessageCallbacks.indexOf(callback),\r\n 1,\r\n )\r\n },\r\n }\r\n }\r\n\r\n private notifyVenusMessageReceived(message: VenusMessage) {\r\n for (const callback of this.onVenusMessageCallbacks) {\r\n callback(message)\r\n }\r\n }\r\n}\r\n","import {\r\n NotificationsApi,\r\n ScheduleLocalNotification,\r\n ScheduleLocalNotificationOptions,\r\n NotificationTriggerInput,\r\n} from './NotificationsApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\n\r\nexport class RpcNotificationsApi implements NotificationsApi {\r\n private readonly rpcClient: RpcClient\r\n\r\n constructor(rpcClient: RpcClient) {\r\n this.rpcClient = rpcClient\r\n }\r\n\r\n async scheduleLocalNotification(\r\n title: string,\r\n body: string,\r\n options?: ScheduleLocalNotificationOptions,\r\n ): Promise<string | null> {\r\n const request: ScheduleLocalNotificationRequest = {\r\n title: title,\r\n body: body,\r\n data: options?.payload,\r\n key: options?.groupId,\r\n priority: options?.priority || 1,\r\n trigger: options?.trigger ?? null,\r\n }\r\n const response =\r\n await this.rpcClient.call<ScheduleLocalNotificationResponse>(\r\n VenusMessageId.SCHEDULE_LOCAL_NOTIFICATION,\r\n request,\r\n )\r\n\r\n if (response.scheduled) {\r\n return response.id\r\n }\r\n return null\r\n }\r\n\r\n async cancelLocalNotification(id: string): Promise<boolean> {\r\n const result = await this.rpcClient.call<CancelLocalNotificationResult>(\r\n VenusMessageId.CANCEL_LOCAL_NOTIFICATION,\r\n {\r\n id: id,\r\n },\r\n )\r\n return result.canceled\r\n }\r\n\r\n async getAllScheduledLocalNotifications(): Promise<\r\n ScheduleLocalNotification[]\r\n > {\r\n const response =\r\n await this.rpcClient.call<GetAllLocalNotificationsResponse>(\r\n VenusMessageId.GET_ALL_SCHEDULED_LOCAL_NOTIFICATIONS,\r\n {},\r\n )\r\n\r\n const notifications: ScheduleLocalNotification[] =\r\n response.notifications.map((notif) => {\r\n return {\r\n id: notif.identifier,\r\n title: notif.content.title,\r\n body: notif.content.body,\r\n payload: notif.content.data,\r\n trigger: notif.trigger,\r\n }\r\n })\r\n\r\n return notifications\r\n }\r\n\r\n async isLocalNotificationsEnabled(): Promise<boolean> {\r\n const response =\r\n await this.rpcClient.call<IsLocalNotificationsEnabledResponse>(\r\n VenusMessageId.IS_LOCAL_NOTIFICATIONS_ENABLED,\r\n {},\r\n )\r\n return response.enabled\r\n }\r\n\r\n async setLocalNotificationsEnabled(enabled: boolean): Promise<boolean> {\r\n const response =\r\n await this.rpcClient.call<SetLocalNotificationsEnabledResponse>(\r\n VenusMessageId.SET_LOCAL_NOTIFICATIONS_ENABLED,\r\n {\r\n enabled: enabled,\r\n },\r\n )\r\n return response.enabled\r\n }\r\n}\r\n\r\ninterface CancelLocalNotificationResult {\r\n id: string\r\n canceled: boolean\r\n}\r\n\r\ninterface ScheduleLocalNotificationRequest {\r\n title: string\r\n body: string\r\n trigger: NotificationTriggerInput\r\n priority: number\r\n key?: string // Optional key for grouping related notifications\r\n data?: Record<string, any>\r\n}\r\n\r\ninterface ScheduleLocalNotificationResponse {\r\n id: string\r\n scheduled: boolean\r\n trigger?: NotificationTriggerInput\r\n}\r\n\r\ninterface IsLocalNotificationsEnabledResponse {\r\n enabled: boolean\r\n}\r\n\r\ninterface SetLocalNotificationsEnabledResponse {\r\n enabled: boolean\r\n}\r\n\r\ninterface GetAllLocalNotificationsResponse {\r\n notifications: NotificationRequest[]\r\n count: number\r\n}\r\n\r\ninterface NotificationRequest {\r\n identifier: string\r\n content: NotificationContent\r\n trigger?: NotificationTriggerInput\r\n}\r\n\r\nexport type NotificationContent = {\r\n title: string | null\r\n subtitle: string | null\r\n body: string | null\r\n data?: Record<string, any>\r\n}\r\n","export class VenusRoom {\r\n public readonly id: string\r\n public name: string\r\n public players: any[]\r\n public maxPlayers: number\r\n public gameType: string\r\n public appId: string\r\n public type: any\r\n public createdBy: string\r\n public createdAt: number\r\n public updatedAt: number\r\n public isPrivate: boolean\r\n public currentPlayers: string[]\r\n public status: any\r\n public customMetadata: Record<string, any>\r\n public admins: string[]\r\n public roomCode: string\r\n public description: string\r\n public data: Record<string, any>\r\n public version: string\r\n\r\n private _subscriptions = new Map()\r\n\r\n constructor(roomData: any) {\r\n this.id = roomData.id\r\n this.name = roomData.name\r\n this.players = roomData.currentPlayers || []\r\n this.maxPlayers = roomData.maxPlayers\r\n this.gameType = roomData.gameType\r\n\r\n this.appId = roomData.appId\r\n this.type = roomData.type\r\n this.createdBy = roomData.createdBy\r\n this.createdAt = roomData.createdAt\r\n this.updatedAt = roomData.updatedAt\r\n this.isPrivate = roomData.isPrivate\r\n this.currentPlayers = roomData.currentPlayers || []\r\n this.status = roomData.status\r\n this.customMetadata = roomData.customMetadata || {}\r\n this.admins = roomData.admins || []\r\n this.roomCode = roomData.roomCode\r\n this.description = roomData.description\r\n this.data = roomData.data || {}\r\n this.version = roomData.version\r\n\r\n console.log(`VenusRoom: Created room object for ${this.id}`, {\r\n hasCustomMetadata: !!this.customMetadata,\r\n hasGameState: !!this.customMetadata?.rules?.gameState,\r\n gamePhase: this.customMetadata?.rules?.gameState?.phase,\r\n currentPlayer: this.customMetadata?.rules?.gameState?.currentPlayer,\r\n })\r\n }\r\n\r\n private updateFromRoomData(newRoomData: any) {\r\n if (newRoomData.id === this.id) {\r\n // Update all room properties with fresh data\r\n this.name = newRoomData.name || this.name\r\n this.players = newRoomData.currentPlayers || this.players\r\n this.maxPlayers = newRoomData.maxPlayers || this.maxPlayers\r\n this.gameType = newRoomData.gameType || this.gameType\r\n this.currentPlayers = newRoomData.currentPlayers || this.currentPlayers\r\n this.customMetadata = newRoomData.customMetadata || this.customMetadata\r\n this.data = newRoomData.data || this.data\r\n this.status = newRoomData.status || this.status\r\n this.updatedAt = newRoomData.updatedAt || this.updatedAt\r\n\r\n console.log(`VenusRoom: Updated room object ${this.id} with fresh data`, {\r\n hasCustomMetadata: !!this.customMetadata,\r\n hasGameState: !!this.customMetadata?.rules?.gameState,\r\n gamePhase: this.customMetadata?.rules?.gameState?.phase,\r\n currentPlayer: this.customMetadata?.rules?.gameState?.currentPlayer,\r\n })\r\n }\r\n }\r\n\r\n // NEW: Generic message handler for room-manager.js integration\r\n private onMessage(callback: any) {\r\n const subscriptionId =\r\n 'messages_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\r\n\r\n // Set up subscriptions to all event types that this room might receive\r\n if (!window.venus._roomSubscriptions.allEvents) {\r\n window.venus._roomSubscriptions.allEvents = {}\r\n }\r\n if (!window.venus._roomSubscriptions.allEvents[this.id]) {\r\n window.venus._roomSubscriptions.allEvents[this.id] = []\r\n }\r\n\r\n window.venus._roomSubscriptions.allEvents[this.id].push(callback)\r\n\r\n this._subscriptions.set(subscriptionId, {\r\n type: 'allEvents',\r\n callback: callback,\r\n })\r\n\r\n return {\r\n unsubscribe: () => {\r\n const callbacks =\r\n window.venus._roomSubscriptions.allEvents[this.id] || []\r\n const index = callbacks.indexOf(callback)\r\n if (index > -1) callbacks.splice(index, 1)\r\n this._subscriptions.delete(subscriptionId)\r\n },\r\n }\r\n }\r\n}\r\n","import { RoomsApi } from './RoomsApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport { VenusRoom } from './VenusRoom'\r\n\r\nexport class RpcRoomsApi implements RoomsApi {\r\n private readonly rpcClient: RpcClient\r\n\r\n constructor(rpcClient: RpcClient) {\r\n this.rpcClient = rpcClient\r\n }\r\n join(roomId: string): Promise<any> {\r\n throw new Error('Method not implemented.')\r\n }\r\n\r\n async createRoom(options: any): Promise<any> {\r\n const response = await this.rpcClient.call<any>(\r\n VenusMessageId.H5_ROOM_CREATE,\r\n {\r\n options: options,\r\n },\r\n )\r\n if (response.success === false) {\r\n throw new Error(response.error || 'Failed to create room')\r\n }\r\n\r\n // The response IS the room data when coming from the real API\r\n const roomData = response.roomData || response\r\n const room = new VenusRoom(roomData)\r\n // 🔧 FIX: Register room object for subscription updates\r\n //window.venus._roomObjects[room.id] = room\r\n return room\r\n }\r\n\r\n async joinOrCreateRoom(options: any) {\r\n const response: any = await this.rpcClient.call(\r\n VenusMessageId.H5_ROOM_JOIN_OR_CREATE,\r\n {\r\n options: options,\r\n },\r\n )\r\n if (response.success === false) {\r\n throw new Error(response.error || 'Failed to join or create room')\r\n }\r\n\r\n const data = response.value || response\r\n const room = new VenusRoom(data.roomData)\r\n // 🔧 FIX: Register room object for subscription updates\r\n // window.venus._roomObjects[room.id] = room\r\n\r\n return {\r\n action: data.action,\r\n room: room,\r\n playersJoined: data.playersJoined,\r\n }\r\n }\r\n\r\n async listPublicRooms(gameType: any, limit = 20) {\r\n const response: any = await this.rpcClient.call(\r\n VenusMessageId.H5_ROOM_LIST_PUBLIC,\r\n {\r\n gameType: gameType,\r\n limit: limit,\r\n },\r\n )\r\n if (!response.success) {\r\n throw new Error(response.error || 'Failed to list public rooms')\r\n }\r\n\r\n // Return array of room data (not room objects since user hasn't joined)\r\n return response.rooms || []\r\n }\r\n\r\n async searchRooms(searchQuery: any, gameType: any, limit = 20) {\r\n const response: any = await this.rpcClient.call(\r\n VenusMessageId.H5_ROOM_SEARCH,\r\n {\r\n searchQuery: searchQuery,\r\n gameType: gameType,\r\n limit: limit,\r\n },\r\n )\r\n if (!response.success) {\r\n throw new Error(response.error || 'Failed to search rooms')\r\n }\r\n\r\n return response.rooms || []\r\n }\r\n\r\n async joinRoomByCode(roomCode: string) {\r\n const response: any = await this.rpcClient.call(\r\n VenusMessageId.H5_ROOM_JOIN_BY_CODE,\r\n {\r\n roomCode: roomCode,\r\n },\r\n )\r\n if (!response.success) {\r\n throw new Error(response.error || 'Failed to join room by code')\r\n }\r\n\r\n // The response IS the room data when coming from the real API\r\n const roomData = response.roomData || response\r\n const room = new VenusRoom(roomData)\r\n // 🔧 FIX: Register room object for subscription updates\r\n // window.venus._roomObjects[room.id] = room\r\n return room\r\n }\r\n\r\n // Get user's rooms with optional filtering\r\n async getUserRooms(appId: string, includeArchived = false) {\r\n const response: any = await this.rpcClient.call(\r\n VenusMessageId.H5_ROOM_GET_USER_ROOMS,\r\n {\r\n appId: appId,\r\n includePersonal: includeArchived,\r\n },\r\n )\r\n if (!response.success) {\r\n throw new Error(response.error || 'Failed to get user rooms')\r\n }\r\n\r\n // Convert raw room data to VenusRoom objects and filter out corrupted entries\r\n const rawRooms = response.rooms || []\r\n const venusRooms = []\r\n\r\n for (const roomData of rawRooms) {\r\n // Skip rooms with missing canonical ID\r\n if (!roomData.id) {\r\n console.warn('getUserRooms: Skipping room with missing ID:', roomData)\r\n continue\r\n }\r\n\r\n try {\r\n const venusRoom = new VenusRoom(roomData)\r\n // 🔧 FIX: Register room object for subscription updates\r\n //window.venus._roomObjects[venusRoom.id] = venusRoom\r\n venusRooms.push(venusRoom)\r\n } catch (error) {\r\n console.warn(\r\n 'getUserRooms: Failed to create VenusRoom object:',\r\n error,\r\n roomData,\r\n )\r\n // Continue processing other rooms\r\n }\r\n }\r\n\r\n return venusRooms\r\n }\r\n\r\n // Convenience method for common use case\r\n quickMatch(gameType: any) {\r\n return this.joinOrCreateRoom({\r\n matchCriteria: {\r\n gameType: gameType,\r\n isPrivate: false,\r\n hasSpace: true,\r\n },\r\n createOptions: {\r\n name: gameType + ' Game',\r\n gameType: gameType,\r\n isPrivate: false,\r\n maxPlayers: 4, // sensible default\r\n },\r\n })\r\n }\r\n\r\n isRoomSystemEnabled = function () {\r\n return true\r\n }\r\n\r\n // Enhanced room creation with game rules\r\n async createGameRoom(options: any) {\r\n const enhancedOptions = {\r\n ...options,\r\n customMetadata: {\r\n ...options.customMetadata,\r\n rules: {\r\n ruleEngine: options.ruleEngine || 'basic',\r\n validateMessages: options.validateMessages || false,\r\n randomizePlayerOrder: options.randomizePlayerOrder || false,\r\n clientValidation: options.clientValidation || false,\r\n allowedMessageTypes: options.allowedMessageTypes || {},\r\n gameState: {\r\n phase: 'waiting',\r\n currentPlayer: null,\r\n turnOrder: [],\r\n playerStates: {},\r\n ...options.initialGameState,\r\n },\r\n ...options.rules,\r\n },\r\n },\r\n }\r\n\r\n return this.createRoom(enhancedOptions)\r\n }\r\n\r\n // Convenience method for subscribing to all game events\r\n subscribeToGameEvents(roomId: string, callback: any) {\r\n if (!window.venus._roomSubscriptions.gameEvents[roomId]) {\r\n window.venus._roomSubscriptions.gameEvents[roomId] = []\r\n }\r\n window.venus._roomSubscriptions.gameEvents[roomId].push(callback)\r\n\r\n return {\r\n unsubscribe: () => {\r\n const callbacks =\r\n window.venus._roomSubscriptions.gameEvents[roomId] || []\r\n const index = callbacks.indexOf(callback)\r\n if (index > -1) callbacks.splice(index, 1)\r\n },\r\n }\r\n }\r\n\r\n async updateData(room: VenusRoom, updates: any, merge = true) {\r\n const response: any = await this.rpcClient.call(\r\n VenusMessageId.H5_ROOM_UPDATE_DATA,\r\n {\r\n roomId: room.id,\r\n updates: updates,\r\n merge: merge,\r\n },\r\n )\r\n if (!response.success) {\r\n throw new Error(response.error || 'Failed to update room data')\r\n }\r\n return response.data\r\n }\r\n\r\n async getData(room: VenusRoom) {\r\n const response: any = await this.rpcClient.call(\r\n VenusMessageId.H5_ROOM_GET_DATA,\r\n {\r\n roomId: room.id,\r\n },\r\n )\r\n if (!response.success) {\r\n throw new Error(response.error || 'Failed to get room data')\r\n }\r\n return response.data\r\n }\r\n\r\n async sendMessage(venusRoom: VenusRoom, messageData: any) {\r\n const response: any = await this.rpcClient.call(\r\n VenusMessageId.H5_ROOM_SEND_MESSAGE,\r\n {\r\n roomId: venusRoom.id,\r\n message: messageData,\r\n },\r\n )\r\n if (!response.success) {\r\n throw new Error(response.error || 'Failed to send message')\r\n }\r\n return response.messageId\r\n }\r\n\r\n async leave(room: VenusRoom) {\r\n const response: any = await this.rpcClient.call(\r\n VenusMessageId.H5_ROOM_LEAVE,\r\n {\r\n roomId: room.id,\r\n },\r\n )\r\n if (!response.success) {\r\n throw new Error(response.error || 'Failed to leave room')\r\n }\r\n\r\n // Clean up all subscriptions\r\n // this._subscriptions.forEach((sub) => {\r\n // if (sub.unsubscribe) sub.unsubscribe()\r\n // })\r\n // this._subscriptions.clear()\r\n //\r\n // // 🔧 FIX: Remove room object from global registry when leaving\r\n // if (window.venus._roomObjects[this.id]) {\r\n // delete window.venus._roomObjects[this.id]\r\n // console.log(\r\n // `[Venus Rooms] 🧹 Removed room object ${this.id} from global registry`,\r\n // )\r\n // }\r\n\r\n return response\r\n }\r\n\r\n async startGame(room: VenusRoom, gameConfig = {}, turnOrder = null) {\r\n const response: any = await this.rpcClient.call(\r\n VenusMessageId.H5_ROOM_START_GAME,\r\n {\r\n roomId: room.id,\r\n gameConfig: gameConfig,\r\n turnOrder: turnOrder,\r\n },\r\n )\r\n if (!response.success) {\r\n throw new Error(response.error || 'Failed to start game')\r\n }\r\n return response.data\r\n }\r\n\r\n async proposeMove(room: VenusRoom, proposalPayload: any) {\r\n const response: any = await this.rpcClient.call(\r\n VenusMessageId.H5_ROOM_PROPOSE_MOVE,\r\n {\r\n roomId: room.id,\r\n gameSpecificState: proposalPayload.gameSpecificState,\r\n moveType: proposalPayload.moveType,\r\n clientContext: proposalPayload.clientContext,\r\n clientProposalId: proposalPayload.clientProposalId,\r\n },\r\n )\r\n if (!response.success) {\r\n throw new Error(response.error || 'Failed to propose move')\r\n }\r\n return response.data\r\n }\r\n\r\n async validateMove(\r\n room: VenusRoom,\r\n moveId: string,\r\n isValid: boolean,\r\n reason = null,\r\n validatorId = null,\r\n ) {\r\n console.log(`[Venus Rooms] Validating move ${moveId}: ${isValid}`)\r\n // TODO: Implement actual validation logic when peer validation is added\r\n // For now, just return success to maintain compatibility\r\n return { success: true, moveId, isValid, reason }\r\n }\r\n\r\n async roomSubscribeToGameEvents(room: VenusRoom, callback: any) {\r\n const subscriptionId =\r\n 'game_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\r\n\r\n // TODO: Fix this madness\r\n if (!window.venus._roomSubscriptions.gameEvents[room.id]) {\r\n window.venus._roomSubscriptions.gameEvents[room.id] = []\r\n }\r\n window.venus._roomSubscriptions.gameEvents[room.id].push(callback)\r\n\r\n // this._subscriptions.set(subscriptionId, {\r\n // type: 'gameEvents',\r\n // callback: callback\r\n // });\r\n //\r\n // return {\r\n // unsubscribe: () => {\r\n // const callbacks = window.venus._roomSubscriptions.gameEvents[this.id] || [];\r\n // const index = callbacks.indexOf(callback);\r\n // if (index > -1) callbacks.splice(index, 1);\r\n // this._subscriptions.delete(subscriptionId);\r\n // }\r\n // };\r\n }\r\n\r\n subscribe(room: VenusRoom, options: any = {}) {\r\n const subscriptionIds: any[] = []\r\n const roomId = room.id\r\n\r\n // Set up data subscription if requested\r\n if (options.onData) {\r\n const dataSubId =\r\n 'data_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\r\n\r\n if (!window.venus._roomSubscriptions.data[roomId]) {\r\n window.venus._roomSubscriptions.data[roomId] = []\r\n }\r\n window.venus._roomSubscriptions.data[roomId].push(options.onData)\r\n subscriptionIds.push({\r\n type: 'data',\r\n id: dataSubId,\r\n callback: options.onData,\r\n })\r\n }\r\n\r\n // Set up messages subscription if requested\r\n if (options.onMessages) {\r\n const msgSubId =\r\n 'messages_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\r\n\r\n if (!window.venus._roomSubscriptions.messages[roomId]) {\r\n window.venus._roomSubscriptions.messages[roomId] = []\r\n }\r\n window.venus._roomSubscriptions.messages[roomId].push(options.onMessages)\r\n subscriptionIds.push({\r\n type: 'messages',\r\n id: msgSubId,\r\n callback: options.onMessages,\r\n })\r\n }\r\n\r\n // Set up game events subscription if requested\r\n if (options.onMoves || options.onGameEvents) {\r\n const handler = options.onMoves || options.onGameEvents\r\n const gameSubId =\r\n 'game_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\r\n\r\n if (!window.venus._roomSubscriptions.gameEvents[roomId]) {\r\n window.venus._roomSubscriptions.gameEvents[roomId] = []\r\n }\r\n window.venus._roomSubscriptions.gameEvents[roomId].push(handler)\r\n subscriptionIds.push({\r\n type: 'gameEvents',\r\n id: gameSubId,\r\n callback: handler,\r\n })\r\n }\r\n\r\n // Start the actual Firebase subscription if this is the first subscription\r\n const needsSubscription =\r\n subscriptionIds.length > 0 &&\r\n (!window.venus._roomSubscriptions.data[roomId] ||\r\n window.venus._roomSubscriptions.data[roomId].length <= 1) &&\r\n (!window.venus._roomSubscriptions.messages[roomId] ||\r\n window.venus._roomSubscriptions.messages[roomId].length <= 1) &&\r\n (!window.venus._roomSubscriptions.gameEvents[roomId] ||\r\n window.venus._roomSubscriptions.gameEvents[roomId].length <= 1)\r\n\r\n if (needsSubscription) {\r\n this.rpcClient\r\n .call(VenusMessageId.H5_ROOM_SUBSCRIBE, {\r\n roomId: roomId,\r\n subscribeToData: !!options.onData,\r\n subscribeToMessages: !!options.onMessages,\r\n subscribeToProposedMoves: !!(options.onMoves || options.onGameEvents),\r\n })\r\n .catch((error) => {\r\n console.error('Failed to set up room subscription:', error)\r\n })\r\n }\r\n\r\n // Return composite unsubscribe function (idempotent)\r\n let called = false\r\n return () => {\r\n if (called) return\r\n called = true\r\n\r\n // Remove all callbacks\r\n subscriptionIds.forEach((sub: { type: string; callback: any }) => {\r\n const callbacks =\r\n window.venus._roomSubscriptions[sub.type][roomId] || []\r\n const index = callbacks.indexOf(sub.callback)\r\n if (index > -1) callbacks.splice(index, 1)\r\n })\r\n\r\n // Check if we should unsubscribe from Firebase\r\n const hasNoCallbacks =\r\n (!window.venus._roomSubscriptions.data[roomId] ||\r\n window.venus._roomSubscriptions.data[roomId].length === 0) &&\r\n (!window.venus._roomSubscriptions.messages[roomId] ||\r\n window.venus._roomSubscriptions.messages[roomId].length === 0) &&\r\n (!window.venus._roomSubscriptions.gameEvents[roomId] ||\r\n window.venus._roomSubscriptions.gameEvents[roomId].length === 0)\r\n\r\n if (hasNoCallbacks) {\r\n this.rpcClient\r\n .call(VenusMessageId.H5_ROOM_UNSUBSCRIBE, {\r\n roomId: roomId,\r\n })\r\n .catch((error) => {\r\n console.error('Failed to clean up room subscription:', error)\r\n })\r\n }\r\n }\r\n }\r\n}\r\n","import { Host } from './Host.ts'\r\nimport { RpcClient } from './rpc'\r\nimport { VenusMessage, VenusTransport } from './VenusTransport.ts'\r\nimport { AnalyticsApi, RpcAnalyticsApi } from './analytics'\r\nimport { AdsApi, RpcAdsApi } from './ads'\r\nimport { RpcStorageApi, StorageApi } from './storage'\r\nimport { VenusMessageId } from './VenusMessageId.ts'\r\nimport { Avatar3dApi, RpcAvatarApi } from './avatar3d'\r\nimport { VenusAPI } from './venus-api/types.ts'\r\nimport { NavigationApi, RpcNavigationApi } from './navigation'\r\nimport { NotificationsApi } from './notifications'\r\nimport { RpcNotificationsApi } from './notifications/RpcNotificationsApi'\r\nimport { PopupsApi, RpcPopupsApi } from './popups'\r\nimport { HostProfileApi, ProfileApi } from './profile'\r\nimport { CdnApi, HostCdnApi } from './cdn'\r\nimport { HostTimeApi, TimeApi } from './time'\r\nimport { PostApi, RpcPostApi } from './post'\r\nimport { AiApi, RpcAiApi } from './ai'\r\nimport { HapticsApi, RpcHapticsApi } from './haptics'\r\nimport { FeaturesApi, RpcFeaturesApi } from './features'\r\nimport { LifecycleApi, RpcLifecycleApi } from './lifecycles'\r\nimport { RpcSimulationApi, SimulationApi } from './simulation'\r\nimport { RoomsApi } from './rooms'\r\nimport { RpcRoomsApi } from './rooms/RpcRoomsApi'\r\nimport { LoggingApi, RpcLoggingApi } from './logging'\r\nimport { IapApi, RpcIapApi } from './iap'\r\nimport { RpcSharedAssetsApi } from './shared-assets'\r\n\r\nconst getCdnBaseUrl = (): string => {\r\n return 'https://venus-static-01293ak.web.app/'\r\n}\r\n\r\nexport class RemoteHost implements Host {\r\n readonly ads: AdsApi\r\n readonly analytics: AnalyticsApi\r\n readonly deviceCache: StorageApi\r\n readonly appStorage: StorageApi\r\n readonly globalStorage: StorageApi\r\n readonly avatar3d: Avatar3dApi\r\n readonly navigation: NavigationApi\r\n readonly notifications: NotificationsApi\r\n readonly popups: PopupsApi\r\n readonly profile: ProfileApi\r\n readonly cdn: CdnApi\r\n readonly time: TimeApi\r\n readonly post: PostApi\r\n readonly ai: AiApi\r\n readonly haptics: HapticsApi\r\n readonly features: FeaturesApi\r\n readonly lifecycle: LifecycleApi\r\n readonly simulation: SimulationApi\r\n readonly rooms: RoomsApi\r\n readonly logging: LoggingApi\r\n readonly iap: IapApi\r\n\r\n get isInitialized() {\r\n return this._isInitialized\r\n }\r\n\r\n private readonly venusApi: VenusAPI\r\n private readonly rpcClient: RpcClient\r\n private _isInitialized: boolean = false\r\n\r\n constructor(venusApi: VenusAPI) {\r\n this.venusApi = venusApi\r\n const rpcClient = new RpcClient()\r\n this.rpcClient = rpcClient\r\n\r\n this.ads = new RpcAdsApi(rpcClient)\r\n this.analytics = new RpcAnalyticsApi(rpcClient)\r\n this.deviceCache = new RpcStorageApi(rpcClient, {\r\n clear: VenusMessageId.DEVICE_CACHE_CLEAR,\r\n getItem: VenusMessageId.DEVICE_CACHE_GET_ITEM,\r\n getKey: VenusMessageId.DEVICE_CACHE_KEY,\r\n length: VenusMessageId.DEVICE_CACHE_LENGTH,\r\n removeItem: VenusMessageId.DEVICE_CACHE_REMOVE_ITEM,\r\n setItem: VenusMessageId.DEVICE_CACHE_SET_ITEM,\r\n })\r\n this.appStorage = new RpcStorageApi(rpcClient, {\r\n clear: VenusMessageId.APP_STORAGE_CLEAR,\r\n getItem: VenusMessageId.APP_STORAGE_GET_ITEM,\r\n getKey: VenusMessageId.APP_STORAGE_KEY,\r\n length: VenusMessageId.APP_STORAGE_LENGTH,\r\n removeItem: VenusMessageId.APP_STORAGE_REMOVE_ITEM,\r\n setItem: VenusMessageId.APP_STORAGE_SET_ITEM,\r\n getAllItems: VenusMessageId.APP_STORAGE_GET_ALL_ITEMS,\r\n setMultipleItems: VenusMessageId.APP_STORAGE_SET_ITEM,\r\n removeMultipleItems: VenusMessageId.APP_STORAGE_REMOVE_ITEM,\r\n })\r\n this.globalStorage = new RpcStorageApi(rpcClient, {\r\n clear: VenusMessageId.GLOBAL_STORAGE_CLEAR,\r\n getItem: VenusMessageId.GLOBAL_STORAGE_GET_ITEM,\r\n getKey: VenusMessageId.GLOBAL_STORAGE_KEY,\r\n length: VenusMessageId.GLOBAL_STORAGE_LENGTH,\r\n removeItem: VenusMessageId.GLOBAL_STORAGE_REMOVE_ITEM,\r\n setItem: VenusMessageId.GLOBAL_STORAGE_SET_ITEM,\r\n getAllItems: VenusMessageId.GLOBAL_STORAGE_GET_ALL_ITEMS,\r\n setMultipleItems: VenusMessageId.GLOBAL_STORAGE_SET_MULTIPLE_ITEMS,\r\n removeMultipleItems: VenusMessageId.GLOBAL_STORAGE_REMOVE_MULTIPLE_ITEMS,\r\n })\r\n\r\n this.avatar3d = new RpcAvatarApi(rpcClient, venusApi)\r\n this.navigation = new RpcNavigationApi(rpcClient, venusApi)\r\n this.notifications = new RpcNotificationsApi(rpcClient)\r\n this.popups = new RpcPopupsApi(rpcClient)\r\n this.profile = new HostProfileApi()\r\n this.cdn = new HostCdnApi(getCdnBaseUrl())\r\n this.time = new HostTimeApi(rpcClient)\r\n this.post = new RpcPostApi(rpcClient)\r\n this.ai = new RpcAiApi(rpcClient)\r\n this.haptics = new RpcHapticsApi(rpcClient)\r\n this.features = new RpcFeaturesApi(rpcClient)\r\n this.lifecycle = new RpcLifecycleApi(rpcClient)\r\n this.simulation = new RpcSimulationApi(rpcClient)\r\n this.rooms = new RpcRoomsApi(rpcClient)\r\n this.logging = new RpcLoggingApi(this, rpcClient)\r\n this.iap = new RpcIapApi(rpcClient)\r\n\r\n venusApi.isMock = () => false\r\n this.venusApi.sharedAssets = new RpcSharedAssetsApi(rpcClient, venusApi)\r\n\r\n console.log('[Venus SDK] Remote host created')\r\n }\r\n\r\n async initialize(): Promise<void> {\r\n this.log('Initializing Remote Host...')\r\n\r\n const transport = new VenusTransport()\r\n transport.start()\r\n this.rpcClient.start(transport)\r\n\r\n try {\r\n this.log('Trying to initialize using NEW method...')\r\n transport.instanceId = await this.initNew()\r\n } catch (error) {\r\n this.log(`Failed to initialize using NEW method: ${error}`)\r\n this.log(`Trying to initialize using OLD method...`)\r\n transport.instanceId = await this.initOld(transport)\r\n }\r\n this.log(`Remote Host Initialized with id: ${transport.instanceId}`)\r\n this._isInitialized = true\r\n this.venusApi._bootstrap.apiInjected = true\r\n this.venusApi._bootstrap.venus = window.venus\r\n\r\n await this.rpcClient.call(VenusMessageId.READY, {})\r\n }\r\n\r\n private registerIFrame(transport: VenusTransport): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n this.log('Registering IFrame...')\r\n\r\n const location = window.location\r\n const pathName = location.pathname\r\n const tokens = pathName.split('/')\r\n const appId = tokens[2]\r\n\r\n console.log('[Venus SDK] App ID ', appId)\r\n\r\n // Sending iframe registration message...\r\n const registrationMessage: VenusMessage = {\r\n type: 'H5_IFRAME_REGISTER',\r\n instanceId: appId,\r\n direction: 'H5_TO_APP',\r\n timestamp: Date.now(),\r\n }\r\n\r\n const subscription = transport.onVenusMessage((message: VenusMessage) => {\r\n if (message.type == 'INJECT_VENUS_API_SCRIPT') {\r\n const scriptContent = message.data?.script\r\n if (!scriptContent) {\r\n throw new Error('Failed to inject venus api, no script found.')\r\n }\r\n const script = document.createElement('script')\r\n script.type = 'text/javascript'\r\n script.textContent = scriptContent\r\n document.head.appendChild(script)\r\n\r\n setTimeout(() => {\r\n if (window.venus) {\r\n subscription.unsubscribe()\r\n resolve(window.venus?._config?.instanceId)\r\n }\r\n }, 100)\r\n }\r\n })\r\n transport.sendVenusMessage(registrationMessage)\r\n\r\n setTimeout(() => {\r\n subscription.unsubscribe()\r\n reject()\r\n }, 1000)\r\n })\r\n }\r\n\r\n private async initNew() {\r\n const response = await this.rpcClient.call<InitResponse>(\r\n VenusMessageId.INIT_SDK,\r\n {},\r\n 1000,\r\n )\r\n return response.instanceId\r\n }\r\n\r\n private async initOld(transport: VenusTransport): Promise<string> {\r\n const isInIframe = window.self !== window.top\r\n const hasReactNativeWebView =\r\n typeof window.ReactNativeWebView !== 'undefined'\r\n\r\n if (hasReactNativeWebView) {\r\n return this.useInjectedId()\r\n } else if (isInIframe) {\r\n return await this.registerIFrame(transport)\r\n } else {\r\n throw new Error('Failed to initialize. Unknown Error')\r\n }\r\n }\r\n\r\n private useInjectedId() {\r\n const instanceId =\r\n window.venus?._config?.instanceId || window._venusInitState?.poolId\r\n this.log(`On mobile, using injected instanceId: ${instanceId}`)\r\n if (!instanceId) {\r\n throw new Error('Expected injected instanceId on mobile')\r\n }\r\n return instanceId\r\n }\r\n\r\n private log(message: string) {\r\n console.log(`[Venus SDK] [Remote Host] ${message}`)\r\n }\r\n}\r\n\r\ninterface InitResponse {\r\n instanceId: string\r\n}\r\n","import { MockHost } from './MockHost.ts'\r\nimport { RemoteHost } from './RemoteHost.ts'\r\nimport { AnalyticsApi } from './analytics'\r\nimport { AdsApi } from './ads'\r\nimport { StorageApi } from './storage/StorageApi.ts'\r\nimport { Avatar3dApi } from './avatar3d'\r\nimport { VenusAPI } from './venus-api/types.ts'\r\nimport { NavigationApi } from './navigation'\r\nimport { NotificationsApi } from './notifications'\r\nimport { PopupsApi } from './popups'\r\nimport { ProfileApi } from './profile'\r\nimport { CdnApi } from './cdn/CdnApi'\r\nimport { TimeApi } from './time'\r\nimport { PostApi } from './post'\r\nimport { AiApi } from './ai'\r\nimport { HapticsApi } from './haptics'\r\nimport { FeaturesApi } from './features'\r\nimport { LifecycleApi } from './lifecycles'\r\nimport { SimulationApi } from './simulation'\r\nimport { RoomsApi } from './rooms'\r\nimport { LoggingApi } from './logging'\r\nimport { IapApi } from './iap'\r\n\r\nexport interface Host {\r\n readonly ads: AdsApi\r\n readonly analytics: AnalyticsApi\r\n readonly deviceCache: StorageApi\r\n readonly appStorage: StorageApi\r\n readonly globalStorage: StorageApi\r\n readonly avatar3d: Avatar3dApi\r\n readonly navigation: NavigationApi\r\n readonly notifications: NotificationsApi\r\n readonly popups: PopupsApi\r\n readonly profile: ProfileApi\r\n readonly cdn: CdnApi\r\n readonly time: TimeApi\r\n readonly post: PostApi\r\n readonly ai: AiApi\r\n readonly haptics: HapticsApi\r\n readonly features: FeaturesApi\r\n readonly lifecycle: LifecycleApi\r\n readonly simulation: SimulationApi\r\n readonly rooms: RoomsApi\r\n readonly logging: LoggingApi\r\n\r\n readonly isInitialized: boolean\r\n\r\n initialize(): Promise<void>\r\n readonly iap: IapApi\r\n}\r\n\r\nexport function createHost(venusApi: VenusAPI, isMock: boolean): Host {\r\n if (isMock) {\r\n console.log('[Venus SDK] Creating Local Host')\r\n return new MockHost(venusApi)\r\n } else {\r\n console.log('[Venus SDK] Creating Remote Host')\r\n return new RemoteHost(venusApi)\r\n }\r\n}\r\n","import { initializeStorage } from '../storage/'\r\nimport { initializeAds } from '../ads'\r\nimport { initializeTheme } from './systems/theme.js'\r\nimport { initializePopups } from '../popups'\r\nimport { initializeLocalNotifications } from '../notifications'\r\nimport { initializeTime } from '../time'\r\nimport { initializeAvatar3d } from '../avatar3d'\r\nimport { initializeStackNavigation } from '../navigation'\r\nimport { initializeAi } from '../ai'\r\nimport { initializeRooms } from './systems/rooms.js'\r\nimport { initializeAssetLoader } from './systems/asset-loader.js'\r\nimport { initializeNumbers } from './systems/numbers.js'\r\nimport { createProxiedMethod, createProxiedObject } from './systems/core.js'\r\nimport { initializeAnalytics } from '../analytics'\r\nimport { initializeIap } from '../iap'\r\nimport { createHost } from '../Host'\r\nimport { SDK_VERSION } from '../version'\r\nimport { initializeProfile } from '../profile/'\r\nimport { initializeCdn } from '../cdn'\r\nimport { initializePost } from '../post'\r\nimport { initializeHaptics } from '../haptics'\r\nimport { initializeFeaturesApi } from '../features'\r\nimport { initializeLifecycleApi } from '../lifecycles'\r\nimport { initializeSimulation } from '../simulation'\r\nimport { initializeLoggingApi } from '../logging'\r\n\r\n// HapticStyle enum for type safety\r\nconst HapticStyle = {\r\n LIGHT: 'light',\r\n MEDIUM: 'medium',\r\n HEAVY: 'heavy',\r\n SUCCESS: 'success',\r\n WARNING: 'warning',\r\n ERROR: 'error',\r\n}\r\n\r\nclass VenusAPI {\r\n constructor() {\r\n console.log(`[Venus SDK] SDK Version: ${SDK_VERSION}`)\r\n // Shared configuration\r\n this._shared = {\r\n initialized: false,\r\n initPromise: null,\r\n }\r\n\r\n // Bootstrap-specific properties\r\n this._bootstrap = {\r\n apiInjected: false,\r\n apiInjectionTimeout: null,\r\n venus: null,\r\n isInsideHostedEnvironment: false,\r\n _localHandlers: {}, // Store local handlers here\r\n _pendingMessages: [], // Buffer messages until handlers are registered\r\n }\r\n\r\n // Generate deterministic instance ID based on current URL\r\n const deterministicInstanceId = this._generateDeterministicInstanceId()\r\n\r\n // Mock data structure matching real config format\r\n this._mock = {\r\n // Essential config (matching H5ConfigProperties)\r\n appId: 'mock-app',\r\n mode: 'preview',\r\n instanceId: deterministicInstanceId, // Use deterministic ID instead of random\r\n appUrl: 'mock-app/index.html',\r\n safeAreaInsets: {\r\n top: 10,\r\n right: 0,\r\n bottom: 10,\r\n left: 0,\r\n },\r\n uiControls: {\r\n closeButton: { x: 16, y: 16, width: 32, height: 32 },\r\n menuButton: { x: window.innerWidth - 48, y: 16, width: 32, height: 32 },\r\n feedHeader: { x: 0, y: 0, width: window.innerWidth, height: 66 },\r\n playButton: {\r\n x: 0,\r\n y: window.innerHeight - 60,\r\n width: window.innerWidth,\r\n height: 60,\r\n },\r\n },\r\n // Complete theme structure (matching createH5Theme output)\r\n theme: {\r\n background: {\r\n default: '#131419',\r\n muted: '#1b1d25',\r\n dark: '#0d0e11',\r\n },\r\n text: {\r\n primary: '#ffffff',\r\n muted: '#808080',\r\n inverted: '#000000',\r\n },\r\n theme: {\r\n primary: '#f6c833',\r\n secondary: '#6366f1',\r\n background: '#131419',\r\n border: '#262626',\r\n card: '#1b1d25',\r\n 'card-glass': 'rgba(27, 29, 37, 0.8)',\r\n },\r\n typography: {\r\n fontFamily: {\r\n base: 'Plus Jakarta Sans, Roboto, sans-serif',\r\n heading: 'Plus Jakarta Sans, Roboto, sans-serif',\r\n mono: 'monospace',\r\n },\r\n fontSize: {\r\n '2xs': '10px',\r\n xs: '12px',\r\n sm: '14px',\r\n md: '16px',\r\n lg: '18px',\r\n xl: '20px',\r\n '2xl': '24px',\r\n '3xl': '30px',\r\n '4xl': '36px',\r\n '5xl': '48px',\r\n '6xl': '60px',\r\n },\r\n fontWeight: {\r\n thin: '100',\r\n extralight: '200',\r\n light: '300',\r\n regular: '400',\r\n medium: '500',\r\n semibold: '600',\r\n bold: '700',\r\n extrabold: '800',\r\n black: '900',\r\n extrablack: '950',\r\n },\r\n lineHeight: {\r\n none: '1',\r\n tight: '1.25',\r\n snug: '1.375',\r\n normal: '1.5',\r\n relaxed: '1.625',\r\n loose: '2',\r\n },\r\n },\r\n },\r\n // Static locale data at top level\r\n locale: 'en-US',\r\n languageCode: 'en',\r\n // Static profile data (renamed from currentProfile)\r\n profile: {\r\n id: 'mock-profile-123',\r\n username: 'MockProfile',\r\n avatarUrl: 'https://i.pravatar.cc/150?u=mock',\r\n },\r\n // Complete environment info (matching buildStaticConfig)\r\n environment: {\r\n isDevelopment: true,\r\n platform: 'web',\r\n platformVersion: 'mock-1.0',\r\n browserInfo: {\r\n browser: 'MockBrowser',\r\n userAgent: navigator.userAgent,\r\n isMobile: /Mobi|Android/i.test(navigator.userAgent),\r\n isTablet: /iPad|Tablet|Pad/i.test(navigator.userAgent),\r\n language: navigator.language || 'en-US',\r\n },\r\n },\r\n // Complete device info (matching buildStaticConfig)\r\n device: {\r\n screenSize: { width: window.innerWidth, height: window.innerHeight },\r\n viewportSize: {\r\n width: window.innerWidth - 20, // account for safe area\r\n height: window.innerHeight - 20,\r\n },\r\n orientation:\r\n window.innerWidth > window.innerHeight ? 'landscape' : 'portrait',\r\n pixelRatio: window.devicePixelRatio || 1,\r\n fontScale: 1,\r\n deviceType: window.innerWidth > 768 ? 'tablet' : 'phone',\r\n platform: 'web',\r\n isWeb: true,\r\n isMobile: /Mobi|Android/i.test(navigator.userAgent),\r\n hapticsEnabled: false, // Mock environment doesn't support haptics\r\n haptics: {\r\n supported: false,\r\n enabled: false,\r\n },\r\n },\r\n // Context structure (matching buildStaticConfig)\r\n context: {\r\n postData: undefined,\r\n stack: {\r\n isInStack: false,\r\n stackPosition: 0,\r\n parentInstanceId: undefined,\r\n },\r\n },\r\n\r\n // Internal state (existing handlers and interaction data)\r\n handlers: {\r\n onPlay: null,\r\n onPause: null,\r\n onResume: null,\r\n onQuit: null,\r\n onHide: null,\r\n onShow: null,\r\n },\r\n currentPostInteractions: {\r\n isLiked: false,\r\n isFollowing: false,\r\n likesCount: 42,\r\n commentsCount: 7,\r\n },\r\n\r\n // Platform overrides for testing different environments\r\n platformOverrides: {\r\n isMobile: true,\r\n isWeb: false,\r\n },\r\n }\r\n\r\n // Detect if we're inside a hosted environment (iframe or WebView)\r\n this._detectHostedEnvironment()\r\n\r\n // Add config object with structured access\r\n this.config = createProxiedObject.call(this, 'config', {\r\n locale: 'en-US',\r\n languageCode: 'en',\r\n profile: {\r\n id: 'mock-user-123',\r\n username: 'Test User',\r\n avatarUrl: null,\r\n },\r\n environment: {\r\n isDevelopment: true,\r\n platform:\r\n typeof navigator !== 'undefined' ? navigator.platform : 'unknown',\r\n platformVersion: 'unknown',\r\n browserInfo: {\r\n browser: 'unknown',\r\n userAgent:\r\n typeof navigator !== 'undefined' ? navigator.userAgent : 'unknown',\r\n isMobile: true,\r\n isTablet: false,\r\n language:\r\n typeof navigator !== 'undefined' ? navigator.language : 'en-US',\r\n },\r\n },\r\n ui: {\r\n controls: {\r\n closeButton: { x: 16, y: 16, width: 32, height: 32 },\r\n menuButton: {\r\n x: typeof window !== 'undefined' ? window.innerWidth - 48 : 352,\r\n y: 16,\r\n width: 32,\r\n height: 32,\r\n },\r\n feedHeader: {\r\n x: 0,\r\n y: 0,\r\n width: typeof window !== 'undefined' ? window.innerWidth : 400,\r\n height: 66,\r\n },\r\n playButton: {\r\n x: 0,\r\n y: typeof window !== 'undefined' ? window.innerHeight - 60 : 740,\r\n width: typeof window !== 'undefined' ? window.innerWidth : 400,\r\n height: 60,\r\n },\r\n },\r\n safeArea: { top: 44, left: 0, right: 0, bottom: 34 },\r\n hudInsets: {\r\n preview: { top: 60, left: 0, right: 0, bottom: 40 },\r\n fullscreen: { top: 44, left: 0, right: 0, bottom: 34 },\r\n },\r\n },\r\n device: {\r\n screenSize: {\r\n width: typeof window !== 'undefined' ? window.screen?.width || 0 : 0,\r\n height:\r\n typeof window !== 'undefined' ? window.screen?.height || 0 : 0,\r\n },\r\n viewportSize: {\r\n width: typeof window !== 'undefined' ? window.innerWidth : 0,\r\n height: typeof window !== 'undefined' ? window.innerHeight : 0,\r\n },\r\n orientation: 'portrait',\r\n pixelRatio:\r\n typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1,\r\n fontScale: 1,\r\n deviceType: 'phone',\r\n hapticsEnabled: false,\r\n haptics: { supported: false, enabled: false },\r\n },\r\n theme: {\r\n background: { default: '#131419', muted: '#1b1d25', dark: '#0d0e11' },\r\n text: { primary: '#ffffff', muted: '#808080', inverted: '#000000' },\r\n theme: {\r\n primary: '#f6c833',\r\n secondary: '#6366f1',\r\n background: '#131419',\r\n border: '#262626',\r\n card: '#1b1d25',\r\n 'card-glass': 'rgba(27, 29, 37, 0.8)',\r\n },\r\n typography: {\r\n fontFamily: {\r\n base: 'Plus Jakarta Sans, Roboto, sans-serif',\r\n heading: 'Plus Jakarta Sans, Roboto, sans-serif',\r\n mono: 'monospace',\r\n },\r\n fontSize: {\r\n '2xs': '10px',\r\n xs: '12px',\r\n sm: '14px',\r\n md: '16px',\r\n lg: '18px',\r\n xl: '20px',\r\n '2xl': '24px',\r\n '3xl': '30px',\r\n '4xl': '36px',\r\n '5xl': '48px',\r\n '6xl': '60px',\r\n },\r\n fontWeight: {\r\n thin: '100',\r\n extralight: '200',\r\n light: '300',\r\n regular: '400',\r\n medium: '500',\r\n semibold: '600',\r\n bold: '700',\r\n extrabold: '800',\r\n black: '900',\r\n extrablack: '950',\r\n },\r\n lineHeight: {\r\n none: '1',\r\n tight: '1.25',\r\n snug: '1.375',\r\n normal: '1.5',\r\n relaxed: '1.625',\r\n loose: '2',\r\n },\r\n },\r\n },\r\n })\r\n\r\n const isInsideHostedEnv = this._bootstrap.isInsideHostedEnvironment\r\n const host = createHost(this, !isInsideHostedEnv)\r\n this.host = host\r\n\r\n // Initialize storage functionality (renamed from localStorage)\r\n initializeStorage(this, host)\r\n\r\n // Initialize ads functionality\r\n initializeAds(this, host)\r\n\r\n // Initialize theme functionality\r\n initializeTheme(this)\r\n\r\n // Initialize UI functionality\r\n initializePopups(this, host)\r\n\r\n // initialize analytics functionality\r\n initializeAnalytics(this, host)\r\n\r\n // Initialize IAP functionality\r\n initializeIap(this, host)\r\n\r\n // Initialize local notifications functionality\r\n initializeLocalNotifications(this, host)\r\n\r\n // Initialize time functionality\r\n initializeTime(this, host)\r\n\r\n // Initialize lifecycle functionality\r\n initializeLifecycleApi(this, host)\r\n\r\n // Haptic feedback\r\n initializeHaptics(this, host)\r\n\r\n // Initialize runtime assets functionality\r\n initializeCdn(this, host)\r\n\r\n initializeFeaturesApi(this, host)\r\n\r\n initializeLoggingApi(this, host)\r\n\r\n // ✅ FEATURE FLAG: Only initialize avatar3d functionality if not disabled\r\n const isAvatar3dDisabled =\r\n typeof window !== 'undefined' &&\r\n window.location.search.includes('EXPO_PUBLIC_DISABLE_3D_AVATARS=true')\r\n\r\n initializeProfile(this, host)\r\n\r\n if (!isAvatar3dDisabled) {\r\n // Initialize avatar3d functionality\r\n initializeAvatar3d(this, host)\r\n }\r\n\r\n // Initialize stack navigation functionality\r\n initializeStackNavigation(this, host)\r\n\r\n // Post interactions\r\n initializePost(this, host)\r\n\r\n // 🦊 INITIALIZE NEW AI SYSTEM\r\n initializeAi(this, host)\r\n\r\n // Initialize rooms functionality (will get mock data later from initializeAsync)\r\n initializeRooms(this)\r\n\r\n // Initialize simulation functionality (unified crafting, slots, actors)\r\n initializeSimulation(this, host)\r\n\r\n // Initialize asset loader functionality\r\n initializeAssetLoader(this, createProxiedMethod)\r\n }\r\n\r\n // Generate deterministic instance ID based on current page URL\r\n _generateDeterministicInstanceId() {\r\n try {\r\n // Get current URL and normalize it like H5IdUtils does\r\n let url = window.location.href || ''\r\n\r\n // Normalize URL to match H5IdUtils.normalizeAppUrl logic:\r\n // 1. Remove protocol, domain, port\r\n let normalizedUrl = url.replace(/^https?:\\/\\/[^\\/]+/, '')\r\n\r\n // 2. Remove query parameters and hash fragments\r\n normalizedUrl = normalizedUrl.split('?')[0].split('#')[0].trim()\r\n\r\n // 3. Ensure it starts with /H5/ for consistency\r\n if (\r\n !normalizedUrl.startsWith('/H5/') &&\r\n !normalizedUrl.startsWith('H5/')\r\n ) {\r\n // If it's just the app name, assume it's in /H5/\r\n if (!normalizedUrl.includes('/')) {\r\n normalizedUrl = `/H5/${normalizedUrl}/index.html`\r\n } else if (!normalizedUrl.startsWith('/')) {\r\n normalizedUrl = `/${normalizedUrl}`\r\n }\r\n }\r\n\r\n // Normalized URL for deterministic hashing\r\n\r\n // Create hash from normalized URL (same logic as H5IdUtils)\r\n let hash = 0\r\n for (let i = 0; i < normalizedUrl.length; i++) {\r\n const char = normalizedUrl.charCodeAt(i)\r\n hash = (hash << 5) - hash + char\r\n hash = hash & hash // Convert to 32-bit integer\r\n }\r\n\r\n // Convert to positive base36 and ensure 8 characters (same as H5IdUtils)\r\n const hashB36 = Math.abs(hash).toString(36)\r\n const paddedHash = hashB36.substring(0, 8).padEnd(8, '0')\r\n\r\n const deterministicId = `app-${paddedHash}`\r\n\r\n // Generated deterministic instance ID\r\n\r\n return deterministicId\r\n } catch (error) {\r\n console.error(\r\n '[Venus Bootstrap] Error generating deterministic ID, falling back to random:',\r\n error,\r\n )\r\n // Fallback to improved random ID if deterministic generation fails\r\n return 'app-' + Math.random().toString(36).substr(2, 8)\r\n }\r\n }\r\n\r\n //---------------------------------------\r\n // BOOTSTRAP METHODS\r\n //---------------------------------------\r\n\r\n _detectHostedEnvironment() {\r\n // Detecting hosted environment...\r\n console.log('[Venus SDK] Detecting host environment...')\r\n\r\n // Check if we're inside an iframe or WebView\r\n const isInIframe = window.self !== window.top\r\n const hasReactNativeWebView =\r\n typeof window.ReactNativeWebView !== 'undefined'\r\n\r\n this._bootstrap.isInsideHostedEnvironment =\r\n isInIframe || hasReactNativeWebView\r\n\r\n console.log(\r\n `[Venus SDK] isInIframe: ${isInIframe}, hasReactNativeWebView: ${hasReactNativeWebView}`,\r\n )\r\n }\r\n\r\n isMobile() {\r\n return typeof window.ReactNativeWebView !== 'undefined'\r\n }\r\n\r\n _initializeMockMode() {\r\n // Add any mock mode specific initialization here\r\n // console.log('[Venus Mock] Initializing mock mode');\r\n\r\n // Apply locale override if it was set during initialization\r\n if (this._mock.localeOverride) {\r\n // console.log('[Venus Mock] Applying locale override:', this._mock.localeOverride);\r\n this.config.locale = this._mock.localeOverride\r\n this.config.languageCode = this._mock.localeOverride.split('-')[0] // Extract language from locale\r\n // console.log('[Venus Mock] Updated locale:', this.config.locale, 'languageCode:', this.config.languageCode);\r\n }\r\n\r\n // Initialize rooms with mock data if provided\r\n if (this._mock.roomsData) {\r\n // console.log('[Venus Mock] Reinitializing rooms with mock data');\r\n initializeRooms(this, this._mock.roomsData)\r\n }\r\n }\r\n\r\n //---------------------------------------\r\n // PUBLIC API METHODS\r\n //---------------------------------------\r\n\r\n async initializeAsync(options = {}) {\r\n // If already initialized successfully, resolve immediately.\r\n if (this._shared.initialized) {\r\n // console.log('[Venus Bootstrap] initializeAsync called but already initialized. Resolving true.');\r\n return Promise.resolve(true)\r\n }\r\n\r\n if (this._shared.initPromise) {\r\n return this._shared.initPromise\r\n }\r\n\r\n this._shared.initPromise = new Promise(async (resolve) => {\r\n try {\r\n // Log unsupported parameters\r\n if (options) {\r\n const supportedRootParams = [\r\n 'hardDisableMock',\r\n 'mock',\r\n 'helpText',\r\n 'forceRemoteCdn',\r\n ]\r\n const supportedMockParams = [\r\n 'initDelay',\r\n 'isMobile',\r\n 'isWeb',\r\n 'locale',\r\n 'rooms',\r\n 'craftingConfig',\r\n 'onShowContext',\r\n 'onHideContext',\r\n ]\r\n\r\n // Check root level params\r\n Object.keys(options).forEach((param) => {\r\n if (!supportedRootParams.includes(param)) {\r\n this.log(`Unsupported parameter: ${param}`)\r\n }\r\n })\r\n\r\n // 🔧 CONSOLIDATED: Support legacy mockData for backward compatibility\r\n if (options.mockData && typeof options.mockData === 'object') {\r\n console.warn(\r\n '[Venus Mock] mockData is deprecated, use options.mock instead',\r\n )\r\n // Merge mockData into mock for backward compatibility\r\n options.mock = { ...options.mock, ...options.mockData }\r\n }\r\n\r\n // Check mock params if present\r\n if (options.mock && typeof options.mock === 'object') {\r\n Object.keys(options.mock).forEach((param) => {\r\n if (!supportedMockParams.includes(param)) {\r\n this.log(`Unsupported mock parameter: ${param}`)\r\n }\r\n })\r\n }\r\n\r\n // Store helpText in mock configuration if provided\r\n if (options.helpText && typeof options.helpText === 'string') {\r\n this._mock.helpText = options.helpText\r\n // console.log('[Venus Mock] Stored help text for later retrieval');\r\n }\r\n\r\n // Store forceRemoteCdn option if provided\r\n if (typeof options.forceRemoteCdn === 'boolean') {\r\n this._mock.forceRemoteCdn = options.forceRemoteCdn\r\n console.log(\r\n '[Venus Mock] Force remote CDN mode:',\r\n options.forceRemoteCdn,\r\n )\r\n }\r\n }\r\n\r\n await this.host.initialize()\r\n\r\n // If we're in a hosted environment, wait for Venus API to be injected\r\n if (this._bootstrap.isInsideHostedEnvironment) {\r\n this._shared.initialized = true\r\n resolve(true)\r\n return\r\n }\r\n\r\n // We're either in standalone mode or API injection failed\r\n // console.log('[Venus Bootstrap] Using mock implementation at', new Date().toISOString());\r\n\r\n // Get mock delay if specified\r\n const mockDelay = options.mock?.initDelay ?? 100\r\n this.log(`Using mock initialization delay: ${mockDelay}ms`)\r\n\r\n setTimeout(async () => {\r\n this._shared.initialized = true\r\n\r\n // Initialize mock mode\r\n this._initializeMockMode()\r\n\r\n resolve(true)\r\n }, mockDelay)\r\n } catch (err) {\r\n console.warn(\r\n '[Venus Bootstrap] Initialization error, falling back to mock mode',\r\n err,\r\n )\r\n\r\n // If hardDisableMock is true, don't fall back to mock\r\n if (options.hardDisableMock) {\r\n console.warn(\r\n '[Venus Bootstrap] hardDisableMock is true, not using mock.',\r\n )\r\n resolve(false)\r\n return\r\n }\r\n\r\n // Initialize mock mode\r\n this._initializeMockMode()\r\n\r\n setTimeout(async () => {\r\n this._shared.initialized = true\r\n\r\n resolve(true)\r\n }, 100)\r\n }\r\n })\r\n\r\n return this._shared.initPromise\r\n }\r\n}\r\n\r\n// Create singleton instance\r\nconst instance = new VenusAPI()\r\n\r\n// Export for module usage\r\nexport default instance\r\n\r\n// Also attach to window for non-module environments\r\nwindow.VenusAPI = instance\r\n\r\n// Export HapticStyle enum for H5 apps to use\r\ninstance.HapticStyle = HapticStyle\r\n\r\n// Add isAvailable utility method for H5 games\r\ninstance.isAvailable = function () {\r\n try {\r\n return !!(typeof window !== 'undefined' && window.VenusAPI) || !!this\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\n// Initialize core systems that should always be available\r\n;(async () => {\r\n try {\r\n // Initialize numbers system for exponential games\r\n await initializeNumbers(instance)\r\n console.log('[Venus SDK] Numbers system initialized')\r\n } catch (error) {\r\n console.error('[Venus SDK] Failed to initialize numbers system:', error)\r\n }\r\n})()\r\n"]}