@series-inc/venus-sdk 3.0.2 → 3.0.4
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.
- package/README.md +186 -0
- package/dist/{chunk-NQGU2VZM.mjs → chunk-PXWCNWJ6.mjs} +8 -6
- package/dist/chunk-PXWCNWJ6.mjs.map +1 -0
- package/dist/index.cjs +6 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/venus-api/index.cjs +6 -4
- package/dist/venus-api/index.cjs.map +1 -1
- package/dist/venus-api/index.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunk-NQGU2VZM.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/venus-api/systems/core.js","../../src/rooms/RoomsApi.ts","../../src/rooms/VenusRoom.ts","../../src/rooms/index.ts","../../src/storage/MockStorageApi.ts","../../src/storage/RpcStorageApi.ts","../../src/storage/index.ts","../../src/ads/RpcAdsApi.ts","../../src/ads/MockAdsApi.ts","../../src/ads/index.ts","../../src/venus-api/systems/theme.js","../../src/popups/RpcPopupsApi.ts","../../src/popups/MockPopupsApi.ts","../../src/popups/index.ts","../../src/notifications/MockNotificationsApi.ts","../../src/notifications/RpcNotificationsApi.ts","../../src/notifications/index.ts","../../src/time/utils.ts","../../src/time/HostTimeApi.ts","../../src/time/MockTimeApi.ts","../../src/time/index.ts","../../src/avatar3d/MockAvatarApi.ts","../../src/avatar3d/RpcAvatarApi.ts","../../src/avatar3d/index.ts","../../src/navigation/MockNavigationApi.ts","../../src/navigation/RpcNavigationApi.ts","../../src/navigation/index.ts","../../src/ai/RpcAiApi.ts","../../src/ai/MockAiApi.ts","../../src/ai/index.ts","../../src/venus-api/systems/asset-loader.js","../../src/venus-api/lib/break_eternity.js","../../src/venus-api/systems/numbers.js","../../src/venus-api/index.js","../../src/analytics/MockAnalyticsApi.ts","../../src/analytics/RpcAnalyticsApi.ts","../../src/analytics/index.ts","../../src/iap/RpcIapApi.ts","../../src/iap/MockCurrencyIcon.ts","../../src/iap/MockIapApi.ts","../../src/iap/index.ts","../../src/leaderboard/RpcLeaderboardApi.ts","../../src/leaderboard/MockLeaderboardApi.ts","../../src/leaderboard/index.ts","../../src/profile/HostProfileApi.ts","../../src/profile/MockProfileApi.ts","../../src/profile/index.ts","../../src/cdn/HostCdnApi.ts","../../src/cdn/MockCdnApi.ts","../../src/cdn/index.ts","../../src/post/MockPostApi.ts","../../src/post/RpcPostApi.ts","../../src/post/index.ts","../../src/haptics/RpcHapticsApi.ts","../../src/haptics/MockHapticsApi.ts","../../src/haptics/index.ts","../../src/features/RpcFeaturesApi.ts","../../src/features/MockFeaturesApi.ts","../../src/features/index.ts","../../src/lifecycles/MockLifecycleApi.ts","../../src/lifecycles/RpcLifecycleApi.ts","../../src/lifecycles/index.ts","../../src/simulation/utils.ts","../../src/simulation/RpcSimulationApi.ts","../../src/simulation/MockSimulationApi.ts","../../src/simulation/index.ts","../../src/MockHost.ts","../../src/logging/MockLoggingApi.ts","../../src/logging/RpcLoggingApi.ts","../../src/logging/index.ts","../../src/shared-assets/consts.ts","../../src/shared-assets/RpcSharedAssetsApi.ts","../../src/shared-assets/MockSharedAssetsApi.ts","../../src/game-preloader/MockPreloaderApi.ts","../../src/game-preloader/RpcPreloaderApi.ts","../../src/game-preloader/index.ts","../../src/social/MockSocialApi.ts","../../src/rpc/RpcClient.ts","../../src/VenusTransport.ts","../../src/RemoteHost.ts","../../src/rooms/RpcRoomsApi.ts","../../src/social/RpcSocialApi.ts","../../src/Host.ts","../../src/version.ts","../../src/social/index.ts"],"names":["selectedAsset","r","createProxiedMethod","value","createProxiedObject","generateAppIdentifier","_","setupRoomNotifications","VenusAPI"],"mappings":"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","file":"index.cjs","sourcesContent":["// Core utility functions for the Venus API system\r\n// These functions are used across multiple modules to handle real vs mock API delegation\r\n\r\n// Helper function to create proxied methods that delegate to real API when available\r\nexport function createProxiedMethod(methodName, mockImpl) {\r\n return function (...args) {\r\n // For lifecycle handlers (methods that start with 'on'), store them locally\r\n if (methodName.startsWith('on') && typeof args[0] === 'function') {\r\n if (!this._bootstrap._localHandlers) {\r\n this._bootstrap._localHandlers = {}\r\n }\r\n\r\n // Store the handler locally\r\n this._bootstrap._localHandlers[methodName] = args[0]\r\n\r\n // If the real API is available, also register with it\r\n if (\r\n this._bootstrap.venus &&\r\n typeof this._bootstrap.venus[methodName] === 'function'\r\n ) {\r\n return this._bootstrap.venus[methodName](...args)\r\n }\r\n\r\n return true\r\n }\r\n\r\n // For all other methods, if the real API is available and has the method, use it\r\n if (\r\n this._bootstrap.venus &&\r\n typeof this._bootstrap.venus[methodName] === 'function'\r\n ) {\r\n return this._bootstrap.venus[methodName](...args)\r\n }\r\n\r\n // Otherwise, fall back to the mock implementation\r\n return mockImpl.apply(this, args)\r\n }\r\n}\r\n\r\n// Helper function to create proxied objects with methods and getters that delegate to real API\r\nexport function createProxiedObject(objectName, mockImpl) {\r\n const self = this // Store reference to 'this' for use in handlers\r\n\r\n // Helper to create recursive proxies\r\n function createNestedProxy(target, realApiPath) {\r\n const handler = {\r\n get: function (targetObj, prop, receiver) {\r\n // If the real API is available, use it\r\n if (self._bootstrap.venus && realApiPath) {\r\n // Navigate to the correct path in the real API\r\n let realApiValue = self._bootstrap.venus\r\n const pathParts = realApiPath.split('.')\r\n\r\n for (const part of pathParts) {\r\n if (realApiValue && realApiValue[part]) {\r\n realApiValue = realApiValue[part]\r\n } else {\r\n realApiValue = null\r\n break\r\n }\r\n }\r\n\r\n if (realApiValue && prop in realApiValue) {\r\n const realValue = Reflect.get(realApiValue, prop, receiver)\r\n\r\n // If the real value is an object (but not a function), create a nested proxy\r\n if (\r\n realValue &&\r\n typeof realValue === 'object' &&\r\n typeof realValue !== 'function'\r\n ) {\r\n return createNestedProxy(realValue, `${realApiPath}.${prop}`)\r\n }\r\n\r\n return realValue\r\n }\r\n }\r\n\r\n // Otherwise, get from the mock implementation\r\n const value = Reflect.get(targetObj, prop)\r\n\r\n // If it's a method, bind it to the VenusAPI instance\r\n if (typeof value === 'function') {\r\n return function (...args) {\r\n return value.apply(self, args)\r\n }\r\n }\r\n\r\n // If it's an object (but not null or array), create a nested proxy\r\n if (value && typeof value === 'object' && !Array.isArray(value)) {\r\n const nestedPath = realApiPath ? `${realApiPath}.${prop}` : prop\r\n return createNestedProxy(value, nestedPath)\r\n }\r\n\r\n return value\r\n },\r\n }\r\n\r\n return new Proxy(target, handler)\r\n }\r\n\r\n return createNestedProxy(mockImpl, objectName)\r\n}\r\n\r\n// Helper function to check if we're on web platform (for feature detection)\r\nexport function isWebPlatform() {\r\n return typeof window !== 'undefined' && !window.ReactNativeWebView\r\n}\r\n\r\n// Standard mock delay (100ms for most operations, 1000ms for longer ones like ads/AI)\r\nexport const MOCK_DELAYS = {\r\n short: 100, // Quick operations (get/set preferences, etc.)\r\n medium: 500, // Medium operations (network-like calls)\r\n long: 1000, // Long operations (ads, AI, etc.)\r\n}\r\n\r\n// Centralized mock delay function\r\nexport function createMockDelay(ms = MOCK_DELAYS.short) {\r\n return new Promise((resolve) => setTimeout(resolve, ms))\r\n}\r\n","import { VenusRoom } from './VenusRoom'\r\n\r\nexport interface CreateRoomOptions {\r\n maxPlayers?: number\r\n gameType?: string\r\n isPrivate?: boolean\r\n roomCode?: string\r\n name?: string\r\n description?: string\r\n customMetadata?: Record<string, any>\r\n}\r\n\r\nexport interface JoinOrCreateResult {\r\n action: 'created' | 'joined'\r\n room: VenusRoom\r\n playersJoined: number\r\n}\r\n\r\nexport interface RoomSubscriptionOptions {\r\n onData?: (roomData: any) => void\r\n onMessages?: (messagePayload: any) => void\r\n onMoves?: (movePayload: any) => void\r\n onGameEvents?: (eventPayload: any) => void\r\n}\r\n\r\nexport interface ProposeMovePayload {\r\n gameSpecificState: any\r\n moveType: string\r\n clientContext?: Record<string, any>\r\n clientProposalId?: string\r\n}\r\n\r\nexport interface ProposeMoveResult {\r\n proposedMoveId: string\r\n}\r\n\r\nexport interface ValidateMoveResult {\r\n success: boolean\r\n moveId: string\r\n isValid: boolean\r\n reason?: string | null\r\n}\r\n\r\nexport interface RoomsApi {\r\n // Core matchmaking (internal names, bound to clean namespace)\r\n createRoom(options: CreateRoomOptions): Promise<VenusRoom>\r\n joinOrCreateRoom(options: CreateRoomOptions): Promise<JoinOrCreateResult>\r\n joinRoomByCode?(roomCode: string): Promise<VenusRoom>\r\n getUserRooms?(includeArchived?: boolean): Promise<VenusRoom[]>\r\n\r\n // Subscriptions\r\n subscribe?(\r\n room: VenusRoom,\r\n options: RoomSubscriptionOptions,\r\n ): (() => void) | { unsubscribe(): void }\r\n\r\n // Room instance methods\r\n updateData?(room: VenusRoom, updates: Record<string, any>, merge?: boolean): Promise<any>\r\n getData?(room: VenusRoom): Promise<any>\r\n sendMessage?(room: VenusRoom, messageData: any): Promise<string>\r\n leave?(room: VenusRoom): Promise<any>\r\n startGame?(room: VenusRoom, gameConfig?: Record<string, any>, turnOrder?: string[] | null): Promise<any>\r\n proposeMove?(room: VenusRoom, proposalPayload: ProposeMovePayload): Promise<ProposeMoveResult>\r\n validateMove?(\r\n room: VenusRoom,\r\n moveId: string,\r\n isValid: boolean,\r\n reason?: string | null,\r\n validatorId?: string | null,\r\n ): Promise<ValidateMoveResult>\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}\r\n","import { VenusAPI } from '../venus-api/types'\r\nimport { Host } from '../Host'\r\nimport { RoomsApi } from './RoomsApi'\r\nimport { VenusTransport, VenusMessage } from '../VenusTransport'\r\nimport { Subscription } from '../rpc'\r\n\r\nexport * from './RoomsApi'\r\nexport { VenusRoom } from './VenusRoom'\r\n\r\ntype MutableVenusApi = VenusAPI & Record<string, any>\r\ntype MutableRoomsApi = RoomsApi & Record<string, any>\r\n\r\n// Type definitions for room notification payloads\r\ninterface RoomDataUpdatedPayload {\r\n roomId: string\r\n roomData: any\r\n timestamp?: number\r\n}\r\n\r\ninterface RoomMessagePayload {\r\n roomId: string\r\n message: any\r\n}\r\n\r\ninterface ProposedMoveValidationPayload {\r\n roomId: string\r\n proposedMoveData: any\r\n proposedMoveId?: string\r\n changeType?: string\r\n timestamp?: number\r\n}\r\n\r\nfunction bindMethod(\r\n target: Record<string, any>,\r\n targetKey: string,\r\n source: MutableRoomsApi,\r\n sourceKey?: string,\r\n) {\r\n const key = sourceKey ?? targetKey\r\n const fn = source?.[key]\r\n if (typeof fn === 'function') {\r\n target[targetKey] = fn.bind(source)\r\n return true\r\n }\r\n return false\r\n}\r\n\r\n/**\r\n * Set up room notification listeners using the transport's onVenusMessage hook.\r\n * This routes host-sent room notifications (H5_ROOM_DATA_UPDATED, etc.) to the\r\n * callbacks registered in the RoomsApi instance.\r\n * @param transport The Venus transport to listen for messages\r\n * @param getSubscriptions Function to retrieve subscription state from RoomsApi\r\n */\r\nexport function setupRoomNotifications(\r\n transport: VenusTransport,\r\n getSubscriptions: () => any,\r\n): Subscription {\r\n console.log('[Venus Rooms] Setting up room notification listeners')\r\n \r\n return transport.onVenusMessage((message: VenusMessage) => {\r\n const subscriptions = getSubscriptions()\r\n if (!subscriptions) {\r\n return\r\n }\r\n\r\n // Route H5_ROOM_DATA_UPDATED notifications to data callbacks\r\n if (message.type === 'H5_ROOM_DATA_UPDATED') {\r\n const messageData = message.data as RoomDataUpdatedPayload\r\n const { roomId, roomData } = messageData\r\n if (!roomId) return\r\n\r\n const callbacks = subscriptions.data?.[roomId] || []\r\n const allEventsCallbacks = subscriptions.allEvents?.[roomId] || []\r\n console.log(`[Venus Rooms] 🔔 Room data updated for ${roomId}, notifying ${callbacks.length} callbacks`, roomData)\r\n \r\n callbacks.forEach((callback: (data: any) => void) => {\r\n try {\r\n callback(roomData)\r\n } catch (error) {\r\n console.error('[Venus Rooms] Error in room data callback:', error)\r\n throw error // Fail loudly - rethrow after logging\r\n }\r\n })\r\n\r\n // Also notify allEvents listeners\r\n allEventsCallbacks.forEach((callback: (payload: any) => void) => {\r\n try {\r\n callback({ type: message.type, ...messageData })\r\n } catch (error) {\r\n console.error('[Venus Rooms] Error in allEvents callback:', error)\r\n throw error\r\n }\r\n })\r\n }\r\n\r\n // Route H5_ROOM_MESSAGE_* notifications to message callbacks\r\n if (\r\n message.type === 'H5_ROOM_MESSAGE_RECEIVED' ||\r\n message.type === 'H5_ROOM_MESSAGE_UPDATED' ||\r\n message.type === 'H5_ROOM_MESSAGE_DELETED'\r\n ) {\r\n const messageData = message.data as RoomMessagePayload\r\n const { roomId } = messageData\r\n if (!roomId) return\r\n\r\n const callbacks = subscriptions.messages?.[roomId] || []\r\n const allEventsCallbacks = subscriptions.allEvents?.[roomId] || []\r\n console.log(`[Venus Rooms] 🔔 Room message event for ${roomId}, notifying ${callbacks.length} callbacks`)\r\n \r\n // Forward full payload to preserve messageId for deletes and other metadata\r\n callbacks.forEach((callback: (payload: any) => void) => {\r\n try {\r\n callback(messageData)\r\n } catch (error) {\r\n console.error('[Venus Rooms] Error in room message callback:', error)\r\n throw error // Fail loudly - rethrow after logging\r\n }\r\n })\r\n\r\n // Also notify allEvents listeners\r\n allEventsCallbacks.forEach((callback: (payload: any) => void) => {\r\n try {\r\n callback({ type: message.type, ...messageData })\r\n } catch (error) {\r\n console.error('[Venus Rooms] Error in allEvents callback:', error)\r\n throw error\r\n }\r\n })\r\n }\r\n\r\n // Route H5_PROPOSED_MOVE_VALIDATION_UPDATED to game event callbacks\r\n if (message.type === 'app:h5:proposedMoveValidationUpdated') {\r\n const messageData = message.data as ProposedMoveValidationPayload\r\n const { roomId } = messageData\r\n if (!roomId) return\r\n\r\n const callbacks = subscriptions.gameEvents?.[roomId] || []\r\n const allEventsCallbacks = subscriptions.allEvents?.[roomId] || []\r\n console.log(`[Venus Rooms] 🔔 Proposed move validation updated for ${roomId}, notifying ${callbacks.length} callbacks`)\r\n \r\n // Forward full payload to preserve proposedMoveId, changeType, timestamp\r\n callbacks.forEach((callback: (payload: any) => void) => {\r\n try {\r\n callback(messageData)\r\n } catch (error) {\r\n console.error('[Venus Rooms] Error in game event callback:', error)\r\n throw error // Fail loudly - rethrow after logging\r\n }\r\n })\r\n\r\n // Also notify allEvents listeners\r\n allEventsCallbacks.forEach((callback: (payload: any) => void) => {\r\n try {\r\n callback({ type: message.type, ...messageData })\r\n } catch (error) {\r\n console.error('[Venus Rooms] Error in allEvents callback:', error)\r\n throw error\r\n }\r\n })\r\n }\r\n })\r\n}\r\n\r\nexport function initializeRoomsApi(venusApi: VenusAPI, host: Host) {\r\n const roomsApi = host?.rooms as MutableRoomsApi | undefined\r\n if (!roomsApi) {\r\n console.warn(\r\n '[Venus SDK] Host did not provide a rooms implementation. Rooms API will be unavailable.',\r\n )\r\n return\r\n }\r\n\r\n const venus = venusApi as MutableVenusApi\r\n const existingNamespace = (venus.rooms || {}) as Record<string, any>\r\n const roomsNamespace: Record<string, any> = Object.assign({}, existingNamespace)\r\n\r\n const namespaceBindings: Array<[string, string?]> = [\r\n ['create', 'createRoom'],\r\n ['joinOrCreate', 'joinOrCreateRoom'],\r\n ['joinByCode', 'joinRoomByCode'],\r\n ['list', 'getUserRooms'],\r\n ['subscribeToRoom', 'subscribe'],\r\n ['updateRoomData', 'updateData'],\r\n ['getRoomData', 'getData'],\r\n ['sendRoomMessage', 'sendMessage'],\r\n ['leaveRoom', 'leave'],\r\n ['startRoomGame', 'startGame'],\r\n ['proposeMove'],\r\n ['validateMove'],\r\n ]\r\n\r\n namespaceBindings.forEach(([targetKey, sourceKey]) => {\r\n bindMethod(roomsNamespace, targetKey, roomsApi, sourceKey)\r\n })\r\n\r\n venus.rooms = roomsNamespace as any\r\n}\r\n","import { StorageApi } from './StorageApi.ts'\r\n\r\nexport type StorageType = 'globalStorage' | 'deviceCache' | 'appStorage'\r\n\r\nexport function createMockStorageApi(\r\n storageType: StorageType,\r\n appUrl?: string,\r\n) {\r\n const appIdentifier = appUrl ? generateAppIdentifier(appUrl) : null\r\n\r\n let prefix\r\n let syncDelay = 0 // Simulate sync delay for cloud storage\r\n\r\n switch (storageType) {\r\n case 'deviceCache':\r\n prefix = 'venus:app' // Keep same prefix for backward compatibility\r\n syncDelay = 0 // No sync delay\r\n break\r\n case 'appStorage':\r\n prefix = 'venus:app' // Same prefix as deviceCache (both are app-specific)\r\n syncDelay = 100 // Simulate cloud sync delay\r\n break\r\n case 'globalStorage':\r\n prefix = 'venus:global' // Cross-app cloud storage\r\n syncDelay = 100 // Simulate cloud sync delay\r\n break\r\n default:\r\n throw new Error(`Unknown storage type: ${storageType}`)\r\n }\r\n\r\n prefix =\r\n storageType === 'globalStorage' || !appIdentifier\r\n ? `${prefix}:`\r\n : `${prefix}:${appIdentifier}:`\r\n\r\n return new MockStorageApi(prefix, syncDelay)\r\n}\r\n\r\nexport class MockStorageApi implements StorageApi {\r\n private readonly prefix: string\r\n private readonly syncDelay: number\r\n\r\n constructor(prefix: string, syncDelay: number) {\r\n this.prefix = prefix\r\n this.syncDelay = syncDelay\r\n }\r\n\r\n async clear(): Promise<void> {\r\n const fullLength = localStorage.length\r\n for (let i = 0; i < fullLength; i++) {\r\n const fullKey = localStorage.key(i)\r\n if (fullKey && fullKey.startsWith(this.prefix)) {\r\n localStorage.removeItem(fullKey)\r\n }\r\n }\r\n await this.simulateSyncDelay()\r\n }\r\n\r\n async getAllItems(): Promise<string[]> {\r\n const items = new Array<string>()\r\n const fullLength = localStorage.length\r\n for (let i = 0; i < fullLength; i++) {\r\n const fullKey = localStorage.key(i)\r\n if (fullKey && fullKey.startsWith(this.prefix)) {\r\n const item = localStorage.getItem(fullKey)\r\n if (item) {\r\n items.push(item)\r\n }\r\n }\r\n }\r\n return items\r\n }\r\n\r\n async getItem(key: string): Promise<string | null> {\r\n const fullKey = this.buildKey(key)\r\n await this.simulateSyncDelay()\r\n return localStorage.getItem(fullKey)\r\n }\r\n\r\n async key(index: number): Promise<string | null> {\r\n const keys = this.keys()\r\n if (index < 0 || index >= keys.length) {\r\n return null\r\n }\r\n await this.simulateSyncDelay()\r\n return keys[index]\r\n }\r\n\r\n async length(): Promise<number> {\r\n return this.keys().length\r\n }\r\n\r\n async removeItem(key: string): Promise<void> {\r\n const fullKey = this.buildKey(key)\r\n await this.simulateSyncDelay()\r\n localStorage.removeItem(fullKey)\r\n }\r\n\r\n async setItem(key: string, item: string): Promise<void> {\r\n const fullKey = this.buildKey(key)\r\n await this.simulateSyncDelay()\r\n localStorage.setItem(fullKey, item)\r\n }\r\n\r\n async setMultipleItems(\r\n entries: { key: string; value: string }[],\r\n ): Promise<void> {\r\n for (const entry of entries) {\r\n const fullKey = this.buildKey(entry.key)\r\n localStorage.setItem(fullKey, entry.value)\r\n }\r\n await this.simulateSyncDelay()\r\n }\r\n\r\n async removeMultipleItems(keys: string[]): Promise<void> {\r\n for (const key of keys) {\r\n const fullKey = this.buildKey(key)\r\n localStorage.removeItem(fullKey)\r\n }\r\n await this.simulateSyncDelay()\r\n }\r\n\r\n private buildKey(key: string): string {\r\n const prefix = this.prefix\r\n return `${prefix}${key}`\r\n }\r\n\r\n private extractKey(fullKey: string): string {\r\n const prefix = this.prefix\r\n return fullKey.substring(prefix.length)\r\n }\r\n\r\n private keys(): string[] {\r\n const keys = new Array<string>()\r\n let length = localStorage.length\r\n for (let i = 0; i < length; i++) {\r\n const fullKey = localStorage.key(i)\r\n if (fullKey && fullKey.startsWith(this.prefix)) {\r\n length++\r\n const key = this.extractKey(fullKey)\r\n keys.push(key)\r\n }\r\n }\r\n return keys\r\n }\r\n\r\n private async simulateSyncDelay() {\r\n const syncDelay = this.syncDelay\r\n if (syncDelay > 0) {\r\n await new Promise((resolve) => setTimeout(resolve, syncDelay))\r\n }\r\n }\r\n}\r\n\r\nfunction generateAppIdentifier(appUrl?: string) {\r\n if (!appUrl) appUrl = ''\r\n\r\n // First normalize to ensure we're hashing the same identifier regardless of format\r\n const normalizedId = normalizeAppIdentifier(appUrl)\r\n // Generating hash for normalized ID\r\n\r\n let hash = 0\r\n for (let i = 0; i < normalizedId.length; i++) {\r\n const char = normalizedId.charCodeAt(i)\r\n hash = (hash << 5) - hash + char // Same as real API - djb2 hash algorithm\r\n hash |= 0 // Convert to 32bit integer\r\n }\r\n\r\n // Convert to hex\r\n // Generated app identifier\r\n return Math.abs(hash).toString(16)\r\n}\r\n\r\nfunction normalizeAppIdentifier(input: string) {\r\n // Normalizing app identifier input\r\n\r\n // Handle full URLs\r\n if (input.startsWith('http')) {\r\n try {\r\n // For URLs like http://127.0.0.1:5000/H5/bird-flap/index.html?cacheBust=12345678\r\n // Extract the app ID part (bird-flap)\r\n const url = new URL(input)\r\n const pathParts = url.pathname.split('/')\r\n\r\n // Find the part after 'H5' in the path\r\n const h5Index = pathParts.findIndex((part) => part === 'H5')\r\n if (h5Index !== -1 && h5Index < pathParts.length - 1) {\r\n const appId = pathParts[h5Index + 1]\r\n // Extracted app ID from full URL path\r\n return appId\r\n }\r\n\r\n // If we couldn't extract from path, use the hostname as fallback\r\n // Could not extract app ID from URL path, using hostname\r\n return url.hostname\r\n } catch (error) {\r\n console.error(`[Venus Mock] Error parsing URL: ${error}`, { input })\r\n // If URL parsing fails, treat as a raw ID\r\n return input\r\n }\r\n }\r\n\r\n // Handle path-based URLs like '/H5/bird-flap/index.html'\r\n if (input.includes('/H5/')) {\r\n try {\r\n const pathParts = input.split('/')\r\n // Find the part after 'H5' in the path\r\n const h5Index = pathParts.findIndex((part) => part === 'H5')\r\n if (h5Index !== -1 && h5Index < pathParts.length - 1) {\r\n const appId = pathParts[h5Index + 1]\r\n // Extracted app ID from path-based URL\r\n return appId\r\n }\r\n } catch (error) {\r\n console.error(`[Venus Mock] Error parsing path-based URL: ${error}`, {\r\n input,\r\n })\r\n }\r\n }\r\n\r\n // Not a URL, just return as is\r\n // Input is not a URL, treating as raw app ID\r\n return input\r\n}\r\n","import { RpcClient } from '../rpc'\nimport { StorageApi } from './StorageApi.ts'\n\nexport interface MethodIds {\n clear: string\n getItem: string\n getKey: string\n length: string\n removeItem: string\n setItem: string\n getAllItems?: string\n removeMultipleItems?: string\n setMultipleItems?: string\n}\n\nexport class RpcStorageApi implements StorageApi {\n private readonly rpcClient: RpcClient\n private readonly methodIds: MethodIds\n\n constructor(rpcClient: RpcClient, methodIds: MethodIds) {\n this.rpcClient = rpcClient\n this.methodIds = methodIds\n }\n\n clear(): Promise<void> {\n return this.rpcClient.call(this.methodIds.clear)\n }\n\n getItem(key: string): Promise<string | null> {\n return this.rpcClient.call(this.methodIds.getItem, {\n key: key,\n })\n }\n\n setItem(key: string, value: string): Promise<void> {\n return this.rpcClient.call(this.methodIds.setItem, {\n key: key,\n value: value,\n })\n }\n\n key(index: number): Promise<string | null> {\n return this.rpcClient.call(this.methodIds.getKey, {\n index: index,\n })\n }\n\n length(): Promise<number> {\n return this.rpcClient.call(this.methodIds.length)\n }\n\n removeItem(key: string): Promise<void> {\n return this.rpcClient.call(this.methodIds.removeItem, {\n key: key,\n })\n }\n\n removeMultipleItems(keys: string[]): Promise<void> {\n if (!this.methodIds.removeMultipleItems) {\n throw new Error('Method not implemented')\n }\n return this.rpcClient.call(this.methodIds.removeMultipleItems, {\n keys: keys,\n })\n }\n\n getAllItems(): Promise<string[]> {\n if (!this.methodIds.getAllItems) {\n throw new Error('Method not implemented')\n }\n return this.rpcClient.call(this.methodIds.getAllItems)\n }\n\n setMultipleItems(items: { key: string; value: string }[]): Promise<void> {\n if (!this.methodIds.setMultipleItems) {\n throw new Error('Method not implemented')\n }\n return this.rpcClient.call(this.methodIds.setMultipleItems, {\n items: items,\n })\n }\n}\n","import { VenusAPI } from '../venus-api/types.ts'\nimport { Host } from '../Host.ts'\n\nexport * from './StorageApi'\nexport * from './MockStorageApi'\nexport * from './RpcStorageApi'\n\nexport function initializeStorage(venusApiInstance: VenusAPI, host: Host) {\n venusApiInstance.deviceCache = host.deviceCache\n venusApiInstance.appStorage = host.appStorage\n venusApiInstance.globalStorage = host.globalStorage\n}\n","import { AdsApi, ShowInterstitialAdOptions, ShowRewardedAdOptions } from './AdsApi.ts'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId.ts'\r\n\r\nexport class RpcAdsApi implements AdsApi {\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 showInterstitialAd(options?: ShowInterstitialAdOptions): Promise<boolean> {\r\n console.log(`[Venus SDK] [RpcAdsApi] showInterstitialAd`)\r\n const response = await this.rpcClient.call<ShowInterstitialAdResponse>(\r\n VenusMessageId.SHOW_INTERSTITIAL_AD,\r\n options || {},\r\n -1,\r\n )\r\n return response.shown\r\n }\r\n\r\n async isRewardedAdReadyAsync(): Promise<boolean> {\r\n console.log(`[Venus SDK] [RpcAdsApi] isRewardedAdReadyAsync`)\r\n const response = await this.rpcClient.call<IsRewardedAdReadyResponse>(\r\n VenusMessageId.IS_REWARDED_AD_READY,\r\n )\r\n return response.ready\r\n }\r\n\r\n async showRewardedAdAsync(options?: ShowRewardedAdOptions): Promise<boolean> {\r\n console.log('[Venus SDK] [RpcAdsApi] showRewardedAdAsync')\r\n const result = await this.rpcClient.call<ShowRewardedAdResponse>(\r\n VenusMessageId.SHOW_REWARDED_AD,\r\n options || {},\r\n -1,\r\n )\r\n const resultAsString = JSON.stringify(result, null, 2)\r\n console.log(\r\n `[Venus SDK] [RpcAdsApi] rewarded ad shown with result as JSON:\\n${resultAsString}`,\r\n )\r\n return result.rewardEarned\r\n }\r\n}\r\n\r\ninterface IsRewardedAdReadyResponse {\r\n ready: boolean\r\n adType: 'rewarded'\r\n}\r\n\r\ninterface ShowInterstitialAdResponse {\r\n shown: boolean\r\n adType: 'interstitial'\r\n}\r\n\r\ninterface ShowRewardedAdResponse {\r\n shown: boolean\r\n adType: string\r\n rewardEarned: boolean\r\n}\r\n","import { AdsApi, ShowInterstitialAdOptions, ShowRewardedAdOptions } from './AdsApi.ts'\r\nimport { createMockDelay, MOCK_DELAYS } from '../venus-api/systems/core'\r\nimport { MockOverlay } from '../MockOverlay'\r\n\r\nexport class MockAdsApi implements AdsApi {\r\n private mockOverlay: MockOverlay\r\n\r\n constructor(mockOverlay: MockOverlay) {\r\n this.mockOverlay = mockOverlay\r\n }\r\n\r\n async isRewardedAdReadyAsync(): Promise<boolean> {\r\n this.log('[MockAdsApi] isRewardedAdReadyAsync called')\r\n await createMockDelay(MOCK_DELAYS.short)\r\n return true\r\n }\r\n\r\n async showRewardedAdAsync(options?: ShowRewardedAdOptions): Promise<boolean> {\r\n this.log('[MockAdsApi] showRewardedAdAsync called')\r\n await this.mockOverlay.showAdOverlay(options)\r\n this.log('[MockAdsApi] Rewarded ad completed')\r\n return true\r\n }\r\n\r\n async showInterstitialAd(options?: ShowInterstitialAdOptions): Promise<boolean> {\r\n this.log(`[MockAdsApi] showInterstitialAd`)\r\n await this.mockOverlay.showAdOverlay(options)\r\n this.log('[MockAdsApi] interstitial ad shown')\r\n return true\r\n }\r\n\r\n private log(message: string, ...args: any[]): void {\r\n console.log(`[Venus SDK] ${message}`, ...args)\r\n }\r\n}\r\n","import { VenusAPI } from '../venus-api/types.ts'\nimport { Host } from '../Host.ts'\n\nexport * from './AdsApi.ts'\nexport * from './RpcAdsApi'\nexport * from './MockAdsApi'\n\n// Initialize ads functionality on a VenusAPI instance\nexport function initializeAds(venusApiInstance: VenusAPI, host: Host) {\n // Legacy\n venusApiInstance.isRewardedAdReadyAsync =\n host.ads.isRewardedAdReadyAsync.bind(host.ads)\n venusApiInstance.showRewardedAdAsync = host.ads.showRewardedAdAsync.bind(\n host.ads,\n )\n\n venusApiInstance.ads = host.ads\n}\n","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} ","import {\r\n ActionSheetItem,\r\n PopupsApi,\r\n ShowActionSheetOptions,\r\n ShowAlertOptions,\r\n ShowConfirmOptions,\r\n ShowToastOptions,\r\n} from './PopupsApi'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport { RpcClient } from '../rpc'\r\n\r\nexport class RpcPopupsApi implements PopupsApi {\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 showActionSheet(\r\n items: ActionSheetItem[],\r\n options?: ShowActionSheetOptions,\r\n ): Promise<string | number | null> {\r\n const result = await this.rpcClient.call<string | number>(\r\n VenusMessageId.ACTION_SHEET_SHOW,\r\n {\r\n title: options?.title || '',\r\n message: options?.message || '',\r\n options: items,\r\n cancelButtonText: options?.cancelButtonText || 'Cancel',\r\n },\r\n )\r\n return result\r\n }\r\n\r\n async showAlert(\r\n title: string,\r\n message: string,\r\n options?: ShowAlertOptions,\r\n ): Promise<void> {\r\n const buttonText = options?.buttonText || 'OK'\r\n await this.rpcClient.call(VenusMessageId.ALERT_DIALOG, {\r\n title,\r\n message,\r\n buttonText,\r\n })\r\n }\r\n\r\n async showConfirm(\r\n title: string,\r\n message: string,\r\n options?: ShowConfirmOptions,\r\n ): Promise<boolean> {\r\n const confirmText = options?.confirmText || 'OK'\r\n const cancelText = options?.cancelText || 'Cancel'\r\n\r\n const result = await this.rpcClient.call<boolean>(\r\n VenusMessageId.CONFIRM_DIALOG,\r\n {\r\n title,\r\n message,\r\n confirmText,\r\n cancelText,\r\n },\r\n )\r\n\r\n return result\r\n }\r\n\r\n async showToast(\r\n message: string,\r\n options?: ShowToastOptions,\r\n ): Promise<boolean> {\r\n const duration = options?.duration ?? 3000\r\n const variant = options?.variant ?? 'info'\r\n const response = await this.rpcClient.call<ShowToastResponse>(\r\n VenusMessageId.TOAST,\r\n {\r\n message,\r\n duration,\r\n variant,\r\n action: options?.action,\r\n },\r\n duration + 2000,\r\n )\r\n return response.actionTriggered\r\n }\r\n}\r\n\r\nexport interface ShowToastResponse {\r\n shown: boolean\r\n actionTriggered: boolean\r\n}\r\n","import {\r\n ActionSheetItem,\r\n PopupsApi,\r\n ShowActionSheetOptions,\r\n ShowAlertOptions,\r\n ShowConfirmOptions,\r\n ShowToastOptions,\r\n} from './PopupsApi'\r\nimport { MockOverlay } from '../MockOverlay'\r\n\r\nexport class MockPopupsApi implements PopupsApi {\r\n private readonly overlay: MockOverlay\r\n\r\n constructor(override: MockOverlay) {\r\n this.overlay = override\r\n }\r\n\r\n showActionSheet(\r\n items: ActionSheetItem[],\r\n options?: ShowActionSheetOptions,\r\n ): Promise<string | number | null> {\r\n console.log(\r\n `[Venus Mock] Show Action sheet, items: ${JSON.stringify(items, null, 2)}, options: ${JSON.stringify(options, null, 2)}`,\r\n )\r\n return this.overlay.showActionSheet(items, options)\r\n }\r\n\r\n async showAlert(\r\n title: string,\r\n message: string,\r\n options?: ShowAlertOptions,\r\n ): Promise<void> {\r\n window.alert(`${title}\\n${message}`)\r\n }\r\n\r\n async showConfirm(\r\n title: string,\r\n message: string,\r\n options?: ShowConfirmOptions,\r\n ): Promise<boolean> {\r\n const result = window.confirm(`${title || 'Confirm'}\\n${message}`)\r\n\r\n return result\r\n }\r\n\r\n async showToast(\r\n message: string,\r\n options?: ShowToastOptions,\r\n ): Promise<boolean> {\r\n const variant = options?.variant ?? 'info'\r\n const duration = options?.duration ?? 3000\r\n const action = options?.action\r\n\r\n console.log('[Venus Mock] Toast:', message, {\r\n variant,\r\n duration,\r\n hasAction: !!action,\r\n })\r\n\r\n // Handle action toasts vs simple toasts\r\n if (action) {\r\n // Action toast - show with action button simulation\r\n const actionResult = window.confirm(\r\n `${message}\\n\\n[${action.label}] or [Cancel]`,\r\n )\r\n\r\n if (actionResult) {\r\n console.log('[Venus Mock] Toast action triggered:', action.label)\r\n return true\r\n }\r\n }\r\n return false\r\n }\r\n}\r\n","import { VenusAPI } from '../venus-api/types'\r\nimport { Host } from '../Host'\r\n\r\nexport * from './PopupsApi'\r\nexport * from './RpcPopupsApi'\r\nexport * from './MockPopupsApi'\r\n\r\nexport function initializePopups(venusApi: VenusAPI, host: Host) {\r\n venusApi.showToast = async (input) => {\r\n if (typeof input === 'string') {\r\n return await host.popups.showToast(input)\r\n } else {\r\n return await host.popups.showToast(input.message, {\r\n duration: input.duration,\r\n action: input.action,\r\n variant: 'success',\r\n })\r\n }\r\n }\r\n\r\n venusApi.showAlert = async (input) => {\r\n await host.popups.showAlert(input.title, input.message, {\r\n buttonText: input.buttonText,\r\n })\r\n }\r\n\r\n venusApi.showConfirm = async (input) => {\r\n const confirmed = await host.popups.showConfirm(\r\n input.title,\r\n input.message,\r\n {\r\n confirmText: input.confirmText,\r\n cancelText: input.cancelText,\r\n },\r\n )\r\n return confirmed\r\n }\r\n\r\n venusApi.showActionSheet = async (input) => {\r\n return await host.popups.showActionSheet(input.options, {\r\n title: input.title,\r\n message: input.message,\r\n cancelButtonText: input.cancelButtonText,\r\n disableCancel: input.disableCancel,\r\n })\r\n }\r\n\r\n venusApi.popups = host.popups\r\n}\r\n","import {\r\n NotificationsApi,\r\n ScheduleLocalNotification,\r\n ScheduleNotificationOptions,\r\n} from './NotificationsApi'\r\nimport {\r\n createMockDelay,\r\n isWebPlatform,\r\n MOCK_DELAYS,\r\n} from '../venus-api/systems/core'\r\nimport { VenusAPI } from '../venus-api/types'\r\n\r\nexport class MockNotificationsApi implements NotificationsApi {\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 cancelNotification(notificationId: string): Promise<boolean> {\r\n const venusApi = this.venusApi\r\n\r\n // Check if notifications are supported on this platform\r\n if (isWebPlatform()) {\r\n console.log(\r\n '[Venus Mock] Cancel notification on web platform (simulated):',\r\n notificationId,\r\n )\r\n return true\r\n }\r\n\r\n console.log('[Venus Mock] Cancel local notification:', notificationId)\r\n\r\n // Simulate a delay\r\n await createMockDelay(MOCK_DELAYS.short)\r\n\r\n // Remove from mock storage\r\n if (\r\n venusApi._mock.scheduledNotifications &&\r\n venusApi._mock.scheduledNotifications[notificationId]\r\n ) {\r\n delete venusApi._mock.scheduledNotifications[notificationId]\r\n return true\r\n }\r\n\r\n return false\r\n }\r\n\r\n async getAllScheduledLocalNotifications(): Promise<\r\n ScheduleLocalNotification[]\r\n > {\r\n // Check if notifications are supported on this platform\r\n if (isWebPlatform()) {\r\n console.log(\r\n '[Venus Mock] Get notifications on web platform (returning empty list)',\r\n )\r\n // Return direct array (not wrapped in success object)\r\n return []\r\n }\r\n\r\n console.log('[Venus Mock] Get all scheduled local notifications')\r\n\r\n // Simulate a delay\r\n await createMockDelay(MOCK_DELAYS.short)\r\n\r\n const venusApi = this.venusApi\r\n\r\n // Return direct array of notifications (not wrapped in success object)\r\n const notifications = venusApi._mock.scheduledNotifications || {}\r\n return Object.values(notifications)\r\n }\r\n\r\n async isLocalNotificationsEnabled(): Promise<boolean> {\r\n // Check if notifications are supported on this platform\r\n if (isWebPlatform()) {\r\n console.log('[Venus Mock] Notifications not available on web platform')\r\n // Return direct boolean (not wrapped in success object)\r\n return false\r\n }\r\n\r\n console.log('[Venus Mock] Check if local notifications are enabled')\r\n\r\n // Simulate a delay\r\n await createMockDelay(MOCK_DELAYS.short)\r\n\r\n const venusApi = this.venusApi\r\n // Return direct boolean (not wrapped in success object)\r\n const isEnabled = venusApi._mock.notificationsEnabled !== false\r\n return isEnabled\r\n }\r\n\r\n async scheduleAsync(\r\n title: string,\r\n body: string,\r\n seconds: number,\r\n notificationId?: string,\r\n options?: ScheduleNotificationOptions\r\n ): Promise<string | null> {\r\n const { priority = 50, groupId, payload } = options || {}\r\n \r\n // Check if notifications are supported on this platform\r\n if (isWebPlatform()) {\r\n console.log(\r\n '[Venus Mock] Notifications not supported on web platform, simulating success',\r\n )\r\n\r\n // Provide helpful feedback to developers\r\n console.info(\r\n '🔔 [Venus Mock] Notification would be scheduled:',\r\n title || 'Untitled',\r\n '\\n Body:',\r\n body || 'No body',\r\n '\\n This is a simulation - real notifications require a native platform.',\r\n )\r\n\r\n // Return direct mock ID (not wrapped in success object)\r\n const mockId = `mock-web-notification-${Date.now()}`\r\n return mockId\r\n }\r\n\r\n console.log('[Venus Mock] Schedule local notification:', { title, body, seconds, options })\r\n\r\n const venusApi = this.venusApi\r\n // Initialize pendingRequests if it doesn't exist\r\n if (!venusApi._mock.pendingRequests) {\r\n console.log('[Venus Mock] Initializing pendingRequests')\r\n venusApi._mock.pendingRequests = {}\r\n }\r\n\r\n const requestId = Date.now().toString()\r\n console.log('[Venus Mock] Creating request with ID:', requestId)\r\n\r\n return new Promise((resolve) => {\r\n venusApi._mock.pendingRequests[requestId] = { resolve }\r\n\r\n // Generate a mock notification ID\r\n const id = notificationId || `mock-notification-${Date.now()}`\r\n\r\n // Store this notification in mock storage for later retrieval\r\n if (!venusApi._mock.scheduledNotifications) {\r\n venusApi._mock.scheduledNotifications = {}\r\n }\r\n\r\n venusApi._mock.scheduledNotifications[id] = {\r\n id,\r\n title,\r\n body,\r\n payload,\r\n seconds,\r\n }\r\n\r\n // Simulate a delay using standard timing\r\n setTimeout(() => {\r\n // Return direct notification ID (not wrapped in success object)\r\n resolve(id)\r\n }, MOCK_DELAYS.short)\r\n })\r\n }\r\n\r\n async setLocalNotificationsEnabled(enabled: boolean): Promise<boolean> {\r\n const venusApi = this.venusApi\r\n\r\n // Check if notifications are supported on this platform\r\n if (isWebPlatform()) {\r\n console.log(\r\n '[Venus Mock] Set notifications enabled on web platform (simulated):',\r\n enabled,\r\n )\r\n // Return void for successful setting (like the real API)\r\n return true\r\n }\r\n\r\n console.log('[Venus Mock] Set local notifications enabled:', enabled)\r\n\r\n // Simulate a delay\r\n await createMockDelay(MOCK_DELAYS.short)\r\n\r\n // Update mock storage\r\n venusApi._mock.notificationsEnabled = enabled\r\n return enabled\r\n }\r\n}\r\n","import {\r\n NotificationsApi,\r\n ScheduleLocalNotification,\r\n ScheduleNotificationOptions,\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 scheduleAsync(\r\n title: string,\r\n body: string,\r\n seconds: number,\r\n notificationId?: string,\r\n options?: ScheduleNotificationOptions\r\n ): Promise<string | null> {\r\n const { priority = 50, groupId, payload } = options || {}\r\n \r\n const request: ScheduleLocalNotificationRequest = {\r\n title,\r\n body,\r\n priority,\r\n key: groupId,\r\n data: payload,\r\n seconds,\r\n notificationId,\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 cancelNotification(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 priority: number\r\n key?: string // Optional key for grouping related notifications\r\n data?: Record<string, any>\r\n seconds?: number\r\n notificationId?: string\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","import { VenusAPI } from '../venus-api/types'\r\nimport { Host } from '../Host'\r\n\r\nexport * from './NotificationsApi'\r\nexport * from './MockNotificationsApi'\r\nexport * from './RpcNotificationsApi'\r\n\r\nexport function initializeLocalNotifications(venusApi: VenusAPI, host: Host) {\r\n venusApi.notifications = host.notifications\r\n}\r\n","export function isPacificDaylightTime(date: Date) {\n // US DST rules: Starts second Sunday in March, ends first Sunday in November\n const year = date.getFullYear()\n\n // Calculate second Sunday in March\n const marchStart = new Date(year, 2, 8) // March 8th\n const daysUntilSundayInMarch = (7 - marchStart.getDay()) % 7\n const dstStart = new Date(year, 2, 8 + daysUntilSundayInMarch)\n dstStart.setHours(2, 0, 0, 0) // 2am local time\n\n // Calculate first Sunday in November\n const novemberStart = new Date(year, 10, 1) // November 1st\n const daysUntilSundayInNov = (7 - novemberStart.getDay()) % 7\n const dstEnd = new Date(year, 10, 1 + daysUntilSundayInNov)\n dstEnd.setHours(2, 0, 0, 0) // 2am local time\n\n // Compare with current date\n return date >= dstStart && date < dstEnd\n}\n","import { GetFutureTimeOptions, ServerTimeData, TimeApi } from './TimeApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport { isPacificDaylightTime } from './utils'\r\n\r\nexport class HostTimeApi implements TimeApi {\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 requestTimeAsync(): Promise<ServerTimeData> {\r\n const response = await this.rpcClient.call<ServerTimeData>(\r\n VenusMessageId.REQUEST_SERVER_TIME,\r\n {},\r\n )\r\n return response\r\n }\r\n\r\n formatTime(timestamp: number, options?: any): string {\r\n // Get user locale from configuration\r\n let locale = 'en-US' // Default fallback locale\r\n\r\n const windowVenus = window.venus\r\n\r\n if (windowVenus._config.locale) {\r\n locale = windowVenus._config.locale\r\n } else if (\r\n windowVenus._config.environment &&\r\n windowVenus._config.environment.browserInfo &&\r\n windowVenus._config.environment.browserInfo.language\r\n ) {\r\n locale = windowVenus._config.environment.browserInfo.language\r\n }\r\n\r\n // Create a Date object from the timestamp\r\n const date = new Date(timestamp)\r\n\r\n // Format options\r\n const dateTimeOptions = {\r\n dateStyle: options.dateStyle || 'medium',\r\n timeStyle: options.timeStyle || 'medium',\r\n hour12: options.hour12 !== undefined ? options.hour12 : true,\r\n ...options,\r\n }\r\n\r\n return date.toLocaleString(locale, dateTimeOptions)\r\n }\r\n\r\n formatNumber(value: number, options?: Intl.NumberFormatOptions): string {\r\n try {\r\n // Get user locale from configuration\r\n let locale = 'en-US' // Default fallback locale\r\n const windowVenus = window.venus\r\n\r\n if (windowVenus._config.locale) {\r\n locale = windowVenus._config.locale\r\n } else if (\r\n windowVenus._config.environment &&\r\n windowVenus._config.environment.browserInfo &&\r\n windowVenus._config.environment.browserInfo.language\r\n ) {\r\n locale = windowVenus._config.environment.browserInfo.language\r\n }\r\n\r\n // Format options\r\n const numberOptions = {\r\n style: options?.style || 'decimal',\r\n minimumFractionDigits: options?.minimumFractionDigits || 0,\r\n maximumFractionDigits: options?.maximumFractionDigits || 2,\r\n ...options,\r\n }\r\n\r\n return value.toLocaleString(locale, numberOptions)\r\n } catch (error) {\r\n console.error('[Venus] Error formatting number:', error)\r\n // Fallback to basic formatting\r\n return String(value)\r\n }\r\n }\r\n\r\n async getFutureTimeAsync(options?: GetFutureTimeOptions): Promise<number> {\r\n // Get the current server time first\r\n const timeInfo = await this.requestTimeAsync()\r\n\r\n // Start with the server time\r\n const serverTime = new Date(timeInfo.serverTime)\r\n const result = new Date(serverTime)\r\n\r\n // Add days, hours, and minutes if specified\r\n if (options?.days) {\r\n result.setDate(result.getDate() + options.days)\r\n }\r\n\r\n if (options?.hours) {\r\n result.setHours(result.getHours() + options.hours)\r\n }\r\n\r\n if (options?.minutes) {\r\n result.setMinutes(result.getMinutes() + options.minutes)\r\n }\r\n\r\n // Set specific time of day if requested\r\n if (options?.timeOfDay) {\r\n const { hour = 0, minute = 0, second = 0 } = options.timeOfDay\r\n\r\n // If we're setting the time of day, we do it in the user's local timezone\r\n // Get timezone offset in minutes\r\n const timezoneOffset =\r\n timeInfo.timezoneOffset || new Date().getTimezoneOffset()\r\n\r\n // First set the UTC time that corresponds to the local time\r\n const localHour = hour\r\n\r\n // Reset hours, minutes, seconds\r\n result.setHours(localHour, minute, second, 0)\r\n }\r\n\r\n // For specific timezones, we need to convert\r\n if (options?.timezone) {\r\n switch (options.timezone.toUpperCase()) {\r\n case 'PT':\r\n case 'PST':\r\n case 'PDT': {\r\n // Handle Pacific Time conversion\r\n // First determine if date is in PDT\r\n const isPDT = isPacificDaylightTime(result)\r\n const ptOffset = isPDT ? -7 : -8 // PDT is UTC-7, PST is UTC-8\r\n\r\n // Reset time to midnight UTC\r\n result.setUTCHours(0, 0, 0, 0)\r\n\r\n // Add the specific time in PT (converting to UTC)\r\n const { hour = 0, minute = 0, second = 0 } = options.timeOfDay || {}\r\n\r\n // Convert PT time to UTC time\r\n // e.g., 9am PT = 16:00 or 17:00 UTC\r\n const utcHour = (hour - ptOffset) % 24\r\n result.setUTCHours(utcHour, minute, second, 0)\r\n break\r\n }\r\n // Add other timezone cases as needed\r\n default:\r\n console.warn(\r\n '[Venus] Timezone ' +\r\n options.timezone +\r\n ' not supported, using local time',\r\n )\r\n }\r\n }\r\n\r\n // Return direct timestamp number\r\n return result.getTime()\r\n }\r\n}\r\n","import { GetFutureTimeOptions, ServerTimeData, TimeApi } from './TimeApi'\nimport { createMockDelay, MOCK_DELAYS } from '../venus-api/systems/core'\nimport { VenusAPI } from '../venus-api/types'\nimport { isPacificDaylightTime } from './utils'\n\nexport class MockTimeApi implements TimeApi {\n private readonly venusApi: VenusAPI\n\n constructor(venusApi: VenusAPI) {\n this.venusApi = venusApi\n }\n\n formatNumber(value: number, options?: Intl.NumberFormatOptions): string {\n const locale = this.getLocale()\n\n // Format options\n const numberOptions = {\n style: options?.style || 'decimal',\n minimumFractionDigits: options?.minimumFractionDigits || 0,\n maximumFractionDigits: options?.maximumFractionDigits || 2,\n ...options,\n }\n\n console.log(`[Venus Mock] Formatting number ${value} with locale ${locale}`)\n return value.toLocaleString(locale, numberOptions)\n }\n\n formatTime(timestamp: number, options?: any): string {\n // Get user locale from configuration\n const locale = this.getLocale()\n\n // Create a Date object from the timestamp\n const date = new Date(timestamp)\n\n // Format options\n const dateTimeOptions = {\n dateStyle: options.dateStyle || 'medium',\n timeStyle: options.timeStyle || 'medium',\n hour12: options.hour12 !== undefined ? options.hour12 : true,\n ...options,\n }\n\n console.log(\n `[Venus Mock] Formatting time ${timestamp} with locale ${locale}`,\n )\n return date.toLocaleString(locale, dateTimeOptions)\n }\n\n async getFutureTimeAsync(options?: GetFutureTimeOptions): Promise<number> {\n console.log('[Venus Mock] Getting future time with options:', options)\n\n // Get the current server time first - now returns direct TimeInfo object\n const timeInfo = await this.requestTimeAsync()\n\n // Start with the server time\n const serverTime = new Date(timeInfo.serverTime)\n const result = new Date(serverTime)\n\n // Add days, hours, and minutes if specified\n if (options?.days) {\n result.setDate(result.getDate() + options.days)\n }\n\n if (options?.hours) {\n result.setHours(result.getHours() + options.hours)\n }\n\n if (options?.minutes) {\n result.setMinutes(result.getMinutes() + options.minutes)\n }\n\n // Set specific time of day if requested\n if (options?.timeOfDay) {\n const { hour = 0, minute = 0, second = 0 } = options.timeOfDay\n\n // If we're setting the time of day, we do it in the user's local timezone\n // Get timezone offset in minutes\n const timezoneOffset =\n timeInfo.timezoneOffset || new Date().getTimezoneOffset()\n\n // First set the UTC time that corresponds to the local time\n const localHour = hour\n\n // Reset hours, minutes, seconds\n result.setHours(localHour, minute, second, 0)\n }\n\n // For specific timezones, we need to convert\n if (options?.timezone) {\n switch (options?.timezone.toUpperCase()) {\n case 'PT':\n case 'PST':\n case 'PDT': {\n // Handle Pacific Time conversion\n // First determine if date is in PDT\n const isPDT = isPacificDaylightTime(result)\n const ptOffset = isPDT ? -7 : -8 // PDT is UTC-7, PST is UTC-8\n\n // Reset time to midnight UTC\n const utcDay = result.getUTCDate()\n const utcMonth = result.getUTCMonth()\n const utcYear = result.getUTCFullYear()\n result.setUTCHours(0, 0, 0, 0)\n\n // Add the specific time in PT (converting to UTC)\n const { hour = 0, minute = 0, second = 0 } = options.timeOfDay || {}\n\n // Convert PT time to UTC time\n // e.g., 9am PT = 16:00 or 17:00 UTC\n const utcHour = (hour - ptOffset) % 24\n result.setUTCHours(utcHour, minute, second, 0)\n break\n }\n // Add other timezone cases as needed\n default:\n console.warn(\n `[Venus Mock] Timezone ${options.timezone} not supported, using local time`,\n )\n }\n }\n\n // Return direct timestamp number to match real API\n return result.getTime()\n }\n\n async requestTimeAsync(): Promise<ServerTimeData> {\n console.log('[Venus Mock] Requesting time')\n await createMockDelay(MOCK_DELAYS.short)\n\n const venusApi = this.venusApi\n\n // In the mock, we'll simulate server-client time offset\n // This helps developers test time sync behavior\n\n // Simulate a small offset between server and client time\n // In production, this could be seconds or even minutes\n const mockOffset = venusApi._mock.serverTimeOffset || 2500 // Default 2.5 second offset\n const mockServerTime = Date.now() + mockOffset\n\n // Get timezone offset in minutes (positive for west of UTC, negative for east)\n const timezoneOffset = new Date().getTimezoneOffset()\n\n // Convert server time (UTC) to local time\n // Note: getTimezoneOffset() returns minutes WEST of UTC with reversed sign convention:\n // - For UTC-5 (e.g., Eastern Time): Returns +300 minutes (positive)\n // - For UTC+3 (e.g., Moscow): Returns -180 minutes (negative)\n // So we subtract the offset (which adds time for eastern timezones and subtracts for western)\n const localTime = mockServerTime - timezoneOffset * 60000\n\n // Return direct TimeInfo object (not wrapped in success object)\n const timeInfo = {\n serverTime: mockServerTime,\n localTime,\n timezoneOffset: timezoneOffset,\n formattedTime: new Date(localTime).toISOString(),\n locale: venusApi._mock.user?.locale || 'en-US',\n }\n\n console.log('[Venus Mock] Time response:', {\n serverTime: new Date(timeInfo.serverTime).toISOString(),\n localTime: new Date(timeInfo.localTime).toISOString(),\n timezoneOffset: timeInfo.timezoneOffset,\n })\n\n return timeInfo\n }\n\n private getLocale() {\n const venusApi = this.venusApi\n\n // Get user locale from configuration\n let locale = 'en-US' // Default fallback locale\n\n if (venusApi._mock.user && venusApi._mock.user.locale) {\n locale = venusApi._mock.user.locale\n } else if (\n venusApi._mock.environment &&\n venusApi._mock.environment.browserInfo.language\n ) {\n locale = venusApi._mock.environment.browserInfo.language\n }\n\n return locale\n }\n}\n","import { VenusAPI } from '../venus-api/types'\nimport { Host } from '../Host'\n\nexport * from './TimeApi'\nexport * from './HostTimeApi'\nexport * from './utils'\nexport * from './MockTimeApi'\n\nexport function initializeTime(venusApi: VenusAPI, host: Host) {\n venusApi.requestTimeAsync = () => {\n return host.time.requestTimeAsync()\n }\n\n venusApi.getFutureTimeAsync = (options?: {\n days?: number\n hours?: number\n minutes?: number\n timeOfDay?: any\n timezone?: string\n }) => {\n return host.time.getFutureTimeAsync(options)\n }\n\n venusApi.formatTime = (timestamp, options) => {\n return host.time.formatTime(timestamp, options)\n }\n\n venusApi.formatNumber = (value, options) => {\n return host.time.formatNumber(value, options)\n }\n}\n","import { Avatar3dApi, Avatar3dEdits, ShowEditorOptions } from './Avatar3dApi.ts'\r\nimport { VenusAPI } from '../venus-api/types.ts'\r\nimport { Avatar3dConfig } from './Avatar3dConfig.ts'\r\nimport { AssetManifest, Category } from './AssetManifest.ts'\r\nimport { createMockDelay, MOCK_DELAYS } from '../venus-api/systems/core'\r\n\r\ndeclare global {\r\n interface Window {\r\n VenusPrototyping?: {\r\n showAvatarEditorOverlay: (\r\n options: any,\r\n resolve: (args: any) => void,\r\n ) => Promise<void>\r\n }\r\n }\r\n}\r\n\r\nexport class MockAvatarApi implements Avatar3dApi {\r\n private readonly _venusApi: VenusAPI\r\n\r\n private cachedAssets: Record<string, Category> | null = null\r\n private cachedVersion: string = ''\r\n\r\n constructor(venusApi: VenusAPI) {\r\n this._venusApi = venusApi\r\n }\r\n downloadAssetPaths(): Promise<Record<string, string[]>> {\r\n console.log('[Venus Mock] Downloading avatar3d asset paths...')\r\n return this.getAllAssetPaths()\r\n }\r\n\r\n async deleteAvatar(): Promise<void> {\r\n console.log(`[Venus Mock] Deleting avatar3d config`)\r\n const venusApi = this._venusApi\r\n\r\n // Get current profile from Venus API context\r\n const currentProfile = venusApi.getCurrentProfile()\r\n const profileId = currentProfile?.id || 'default_profile'\r\n\r\n // Remove from localStorage\r\n localStorage.removeItem(`venus-mock-avatar3d-${profileId}`)\r\n\r\n console.log(\r\n `[Venus Mock] Avatar3d config deleted from localStorage for profile: ${profileId}`,\r\n )\r\n }\r\n\r\n async loadAvatar(avatar3dId?: string): Promise<Avatar3dConfig | null> {\r\n console.log(`[Venus Mock] Loading avatar3d`, { avatar3dId })\r\n const venusApi = this._venusApi\r\n let config\r\n\r\n if (avatar3dId) {\r\n // Mock shared avatar3d loading using deterministic selection\r\n console.log(`[Venus Mock] Loading shared avatar3d by ID: ${avatar3dId}`)\r\n config = await this.selectAvatarConfig(avatar3dId, false)\r\n } else {\r\n // Always return a valid avatar, even if no profile\r\n const currentProfile = venusApi.getCurrentProfile()\r\n const profileId = currentProfile?.id || 'default_profile'\r\n\r\n console.log(`[Venus Mock] Loading avatar3d for profile: ${profileId}`)\r\n\r\n // Always generate fresh avatar config with current CDN URLs\r\n // localStorage is only used for save persistence, not loading\r\n console.log(\r\n '[Venus Mock] Generating fresh avatar config with current CDN URLs',\r\n )\r\n if (profileId === 'default_profile') {\r\n // Use consistent defaults for the default profile\r\n config = await this.selectAvatarConfig(null, true)\r\n } else {\r\n // Use seeded random for other profiles\r\n config = await this.selectAvatarConfig(profileId, false)\r\n }\r\n }\r\n\r\n // Return direct config or null if not found\r\n return config || null\r\n }\r\n\r\n async saveAvatar(config: Avatar3dConfig): Promise<string> {\r\n console.log(`[Venus Mock] Saving avatar3d config:`, config)\r\n const venusApi = this._venusApi\r\n\r\n // Get current profile from Venus API context\r\n const currentProfile = venusApi.getCurrentProfile()\r\n const profileId = currentProfile?.id || 'default_profile'\r\n\r\n // Save to localStorage for mock persistence\r\n localStorage.setItem(\r\n `venus-mock-avatar3d-${profileId}`,\r\n JSON.stringify(config),\r\n )\r\n\r\n // Generate a mock avatar3dId\r\n const mockAvatar3dId = `mock_avatar3d_${profileId}_${Date.now()}`\r\n\r\n console.log(\r\n `[Venus Mock] Avatar3d config saved to localStorage with mock ID: ${mockAvatar3dId}`,\r\n )\r\n\r\n // Return direct avatar ID\r\n return mockAvatar3dId\r\n }\r\n\r\n downloadManifest(): Promise<AssetManifest> {\r\n return this.loadAssetsManifest()\r\n }\r\n\r\n async showEditor(options?: ShowEditorOptions): Promise<Avatar3dEdits> {\r\n console.log(\r\n `[Venus Mock] showAvatar3dEditorAsync called with options:`,\r\n options,\r\n )\r\n\r\n // Mock implementation - simulate opening avatar editor\r\n if (window.VenusPrototyping) {\r\n // If prototyping utilities are available, use them for a better experience\r\n return new Promise((resolve) => {\r\n window.VenusPrototyping!.showAvatarEditorOverlay(options, resolve)\r\n })\r\n }\r\n\r\n // Simple browser-based simulation\r\n console.log('[Venus Mock] Simulating avatar editor opening...')\r\n\r\n // Simulate delay for opening editor\r\n await createMockDelay(MOCK_DELAYS.medium)\r\n\r\n // Generate a mock avatar configuration\r\n const mockAvatarConfig = await this.selectAvatarConfig(null, false)\r\n\r\n // Simulate user interaction - 70% chance they save changes, 30% they cancel\r\n const userSavedChanges = Math.random() > 0.3\r\n\r\n console.log(\r\n '[Venus Mock] Avatar editor simulation complete - user would use requestPopOrQuit() with result data',\r\n )\r\n\r\n // Return direct editor result\r\n if (userSavedChanges) {\r\n const mockAvatarId = `mock_avatar_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`\r\n\r\n return {\r\n wasChanged: true,\r\n config: mockAvatarConfig,\r\n savedAvatarId: mockAvatarId,\r\n }\r\n } else {\r\n return {\r\n wasChanged: false,\r\n config: null,\r\n savedAvatarId: null,\r\n }\r\n }\r\n }\r\n\r\n private async getAssets() {\r\n let cachedAssets = this.cachedAssets\r\n if (!cachedAssets) {\r\n this.log('No cached assets found, loading new manifest...')\r\n cachedAssets = (await this.loadAssetsManifest()).categories\r\n }\r\n return cachedAssets\r\n }\r\n\r\n private async loadAssetsManifest() {\r\n this.log('Loading avatar3d assets manifest from CDN...')\r\n const venusApi = this._venusApi\r\n\r\n // Use the CDN base URL from Venus API configuration\r\n const baseManifestUrl = venusApi.resolveAvatarAssetUrl('assets.json')\r\n\r\n // Add cache busting to prevent CDN/browser cache issues\r\n const separator = baseManifestUrl.includes('?') ? '&' : '?'\r\n const manifestUrl = `${baseManifestUrl}${separator}v=${Date.now()}`\r\n\r\n console.log('[Venus Mock] Fetching manifest from URL:', manifestUrl)\r\n\r\n try {\r\n const response = await fetch(manifestUrl, {\r\n method: 'GET',\r\n headers: {\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json',\r\n },\r\n mode: 'cors',\r\n cache: 'no-cache',\r\n })\r\n\r\n console.log(\r\n '[Venus Mock] Fetch response status:',\r\n response.status,\r\n response.statusText,\r\n )\r\n console.log(\r\n '[Venus Mock] Response headers:',\r\n Object.fromEntries(response.headers.entries()),\r\n )\r\n\r\n if (!response.ok) {\r\n throw new Error(\r\n `Failed to fetch assets manifest: ${response.status} ${response.statusText}`,\r\n )\r\n }\r\n\r\n const manifest = (await response.json()) as AssetManifest\r\n console.log('[Venus Mock] Loaded assets manifest:', {\r\n version: manifest.version,\r\n generatedAt: manifest.generatedAt,\r\n categories: Object.keys(manifest.categories || {}),\r\n })\r\n\r\n // Cache the assets but not the raw JSON\r\n this.cachedAssets = manifest.categories || {}\r\n this.cachedVersion = manifest.version\r\n\r\n return manifest\r\n } catch (error) {\r\n console.error('[Venus Mock] Failed to load assets manifest:', error)\r\n\r\n // Return a fallback minimal manifest for development\r\n console.log(\r\n '[Venus Mock] Using fallback minimal manifest for development',\r\n )\r\n const fallbackManifest: AssetManifest = {\r\n version: 'dev-fallback',\r\n generatedAt: new Date().toISOString(),\r\n categories: {\r\n head: {\r\n type: 'mesh',\r\n assets: [\r\n {\r\n id: 'head_default',\r\n filename: 'head_default.glb',\r\n displayName: 'Default Head',\r\n },\r\n {\r\n id: 'head_variant1',\r\n filename: 'head_variant1.glb',\r\n displayName: 'Head Variant 1',\r\n },\r\n ],\r\n },\r\n outfit: {\r\n type: 'mesh',\r\n assets: [\r\n {\r\n id: 'outfit_default',\r\n filename: 'outfit_default.glb',\r\n displayName: 'Default Outfit',\r\n },\r\n {\r\n id: 'outfit_casual',\r\n filename: 'outfit_casual.glb',\r\n displayName: 'Casual Outfit',\r\n },\r\n ],\r\n },\r\n hat: {\r\n type: 'mesh',\r\n assets: [\r\n {\r\n id: 'hat_none',\r\n filename: 'hat_none.glb',\r\n displayName: 'No Hat',\r\n },\r\n {\r\n id: 'hat_cap',\r\n filename: 'hat_cap.glb',\r\n displayName: 'Baseball Cap',\r\n },\r\n ],\r\n },\r\n hair: {\r\n type: 'mesh',\r\n assets: [\r\n {\r\n id: 'hair_default',\r\n filename: 'hair_default.glb',\r\n displayName: 'Default Hair',\r\n },\r\n {\r\n id: 'hair_long',\r\n filename: 'hair_long.glb',\r\n displayName: 'Long Hair',\r\n },\r\n ],\r\n },\r\n 'face-accessory': {\r\n type: 'mesh',\r\n assets: [\r\n {\r\n id: 'glasses_none',\r\n filename: 'glasses_none.glb',\r\n displayName: 'No Glasses',\r\n },\r\n {\r\n id: 'glasses_regular',\r\n filename: 'glasses_regular.glb',\r\n displayName: 'Regular Glasses',\r\n },\r\n ],\r\n },\r\n animation: {\r\n type: 'mesh',\r\n assets: [\r\n {\r\n id: 'idle_default',\r\n filename: 'idle_default.glb',\r\n displayName: 'Default Idle',\r\n },\r\n {\r\n id: 'wave',\r\n filename: 'wave.glb',\r\n displayName: 'Wave Animation',\r\n },\r\n ],\r\n },\r\n },\r\n }\r\n\r\n this.cachedAssets = fallbackManifest.categories\r\n this.cachedVersion = fallbackManifest.version\r\n\r\n return fallbackManifest\r\n }\r\n }\r\n\r\n private async selectAvatarConfig(\r\n avatarId: string | null = null,\r\n useDefaults = false,\r\n ): Promise<Avatar3dConfig> {\r\n const categories = await this.getAssets()\r\n this.log(`Manifest ${JSON.stringify(categories, null, 2)}`)\r\n\r\n const rng = avatarId ? this.seededRandom(avatarId) : () => Math.random()\r\n\r\n const headAsset = this.selectAsset(\r\n categories,\r\n 'head',\r\n rng,\r\n avatarId,\r\n useDefaults,\r\n )\r\n\r\n const outfitAsset = this.selectAsset(\r\n categories,\r\n 'outfit',\r\n rng,\r\n avatarId,\r\n useDefaults,\r\n )\r\n const hatAsset = this.selectAsset(\r\n categories,\r\n 'hat',\r\n rng,\r\n avatarId,\r\n useDefaults,\r\n )\r\n const hairAsset = this.selectAsset(\r\n categories,\r\n 'hair',\r\n rng,\r\n avatarId,\r\n useDefaults,\r\n )\r\n const faceAccessoryAsset = this.selectAsset(\r\n categories,\r\n 'face-accessory',\r\n rng,\r\n avatarId,\r\n useDefaults,\r\n )\r\n const animationAsset = this.selectAsset(\r\n categories,\r\n 'animation',\r\n rng,\r\n avatarId,\r\n useDefaults,\r\n )\r\n\r\n const config: Avatar3dConfig = {\r\n headAsset: headAsset.filename,\r\n outfitAsset: outfitAsset.filename,\r\n animationAsset: animationAsset.filename,\r\n faceAccessoryAsset: faceAccessoryAsset.filename,\r\n hairAsset: hairAsset.filename,\r\n hatAsset: hatAsset.filename,\r\n skinColor: null, // NOTE(Zee): This was not selected anywhere?\r\n }\r\n\r\n console.log(\r\n `[Venus Mock] Selected avatar config for ${avatarId || 'default'}:`,\r\n config,\r\n )\r\n return config\r\n }\r\n\r\n private selectAsset(\r\n manifest: Record<string, Category>,\r\n categoryId: string,\r\n rng: () => number,\r\n avatarId: string | null,\r\n useDefaults = false,\r\n ) {\r\n const categoryAssets = manifest[categoryId].assets\r\n\r\n if (useDefaults) {\r\n // Always use the first asset for default avatar (consistent)\r\n const selectedAsset = categoryAssets[0]\r\n console.log(\r\n `[Venus Mock] Using default asset for ${categoryId}:`,\r\n selectedAsset.id,\r\n )\r\n return selectedAsset\r\n }\r\n\r\n if (avatarId) {\r\n // Use seeded random for deterministic selection based on ID\r\n const index = Math.floor(rng() * categoryAssets.length)\r\n const selectedAsset = categoryAssets[index]\r\n console.log(\r\n `[Venus Mock] Seeded selection for ${avatarId} ${categoryId}:`,\r\n selectedAsset.id,\r\n `(index ${index}/${categoryAssets.length})`,\r\n )\r\n return selectedAsset\r\n }\r\n\r\n // Fallback to first asset if no ID\r\n const selectedAsset = categoryAssets[0]\r\n this.log(`Fallback to first asset for ${categoryId}:`, selectedAsset.id)\r\n\r\n return selectedAsset\r\n }\r\n\r\n private seededRandom(seed: string) {\r\n const hash = this.simpleHash(seed)\r\n let state = hash\r\n return function () {\r\n state = (state * 1664525 + 1013904223) % 4294967296\r\n return state / 4294967296\r\n }\r\n }\r\n\r\n private simpleHash(str: string) {\r\n let hash = 0\r\n for (let i = 0; i < str.length; i++) {\r\n const char = str.charCodeAt(i)\r\n hash = (hash << 5) - hash + char\r\n hash = hash & hash // Convert to 32-bit integer\r\n }\r\n return Math.abs(hash)\r\n }\r\n\r\n private async getAllAssetPaths() {\r\n const venusApi = this._venusApi\r\n const assets = await this.getAssets()\r\n const allPaths: Record<string, string[]> = {}\r\n\r\n for (const [category, categoryData] of Object.entries(assets)) {\r\n allPaths[category] = (categoryData?.assets || []).map((asset) =>\r\n venusApi.resolveAvatarAssetUrl(`${category}/${asset.filename}`),\r\n )\r\n }\r\n\r\n this.log('All available asset paths:', allPaths)\r\n return allPaths\r\n }\r\n\r\n private log(message: string, ...args: any[]) {\r\n console.log(`\"[Venus Mock] ${message}`, args)\r\n }\r\n}\r\n","import { Avatar3dApi, Avatar3dEdits, ShowEditorOptions } from './Avatar3dApi.ts'\r\nimport { Avatar3dConfig } from './Avatar3dConfig.ts'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId.ts'\r\nimport { Asset, AssetManifest } from './AssetManifest.ts'\r\nimport { VenusAPI } from '../venus-api/types.ts'\r\n\r\nexport class RpcAvatarApi implements Avatar3dApi {\r\n private readonly venusApi: VenusAPI\r\n private readonly rpcClient: RpcClient\r\n\r\n constructor(rpcClient: RpcClient, venusApi: VenusAPI) {\r\n this.rpcClient = rpcClient\r\n this.venusApi = venusApi\r\n }\r\n\r\n async downloadAssetPaths(): Promise<Record<string, string[]>> {\r\n const venusApi = this.venusApi\r\n console.log('[Venus] Downloading avatar3d asset paths...')\r\n\r\n const manifestUrl = venusApi.resolveAvatarAssetUrl('assets.json')\r\n console.log('[Venus] 🔍 Manifest URL resolved to:', manifestUrl)\r\n\r\n const manifest = await this.fetchFromCdn(manifestUrl)\r\n console.log('[Venus] 📦 Manifest loaded successfully:', {\r\n version: manifest.version,\r\n categories: Object.keys(manifest.categories || {}),\r\n totalAssets: Object.values(manifest.categories || {}).reduce(function (\r\n sum,\r\n cat,\r\n ) {\r\n return sum + (cat.assets?.length || 0)\r\n }, 0),\r\n })\r\n\r\n const categories = manifest.categories || {}\r\n\r\n // Process into asset paths with full URLs\r\n const assetPaths: Record<string, string[]> = {}\r\n for (const categoryKey in categories) {\r\n const categoryData = categories[categoryKey]\r\n const categoryPath = categoryKey\r\n const assetUrls = (categoryData?.assets || []).map((asset: Asset) => {\r\n const url = venusApi.resolveAvatarAssetUrl(\r\n categoryPath + '/' + asset.filename,\r\n )\r\n console.log('[Venus] 🎨 Asset URL:', asset.filename, '->', url)\r\n return url\r\n })\r\n assetPaths[categoryKey] = assetUrls\r\n console.log(\r\n '[Venus] 📁 Category',\r\n categoryKey,\r\n 'has',\r\n assetUrls.length,\r\n 'assets',\r\n )\r\n }\r\n\r\n console.log('[Venus] Avatar3d asset paths downloaded successfully')\r\n\r\n // Return direct asset paths\r\n return assetPaths\r\n }\r\n\r\n async downloadManifest(): Promise<AssetManifest> {\r\n console.log('[Venus] Downloading avatar3d manifest...')\r\n const venusApi = this.venusApi\r\n\r\n // Use shared CDN fetch utility\r\n const manifestUrl = venusApi.resolveAvatarAssetUrl('assets.json')\r\n const manifest = await this.fetchFromCdn(manifestUrl)\r\n\r\n console.log('[Venus] Avatar3d manifest downloaded successfully')\r\n\r\n // Return direct manifest\r\n return manifest\r\n }\r\n\r\n async loadAvatar(avatarId?: string): Promise<Avatar3dConfig | null> {\r\n const result = await this.rpcClient.call(VenusMessageId.AVATAR3D_LOAD, {\r\n avatar3dId: avatarId,\r\n })\r\n this.log(\r\n `Avatar loaded with the following result:\\n${JSON.stringify(result, null, 2)}`,\r\n )\r\n return result as Avatar3dConfig\r\n }\r\n\r\n saveAvatar(config: Avatar3dConfig): Promise<string> {\r\n return this.rpcClient.call(VenusMessageId.AVATAR3D_SAVE, {\r\n config: config,\r\n })\r\n }\r\n\r\n deleteAvatar(): Promise<void> {\r\n return this.rpcClient.call(VenusMessageId.AVATAR3D_DELETE)\r\n }\r\n\r\n async showEditor(options?: ShowEditorOptions): Promise<Avatar3dEdits> {\r\n const rpcClient = this.rpcClient\r\n\r\n console.log(\r\n '[Venus] 🎨 showAvatar3dEditorAsync called with options:',\r\n options,\r\n )\r\n\r\n console.log(\r\n '[Venus] 📤 Sending H5_STACK_PUSH_REQUEST for avatar3d using _sendRequest...',\r\n )\r\n\r\n // Use _sendRequest to get the final result when the editor closes\r\n const rawResult = await rpcClient.call<Avatar3dEdits>(\r\n VenusMessageId.H5_STACK_PUSH_REQUEST,\r\n {\r\n targetAppId: 'AVATAR3D',\r\n contextData: options?.contextData || {},\r\n appParams: {\r\n currentAvatar: options?.currentAvatar,\r\n onSave: options?.onSave,\r\n onCancel: options?.onCancel,\r\n },\r\n },\r\n )\r\n\r\n console.log(\r\n '[Venus] ✅ Avatar editor completed with raw result:',\r\n rawResult,\r\n )\r\n\r\n // Return direct editor result\r\n return {\r\n wasChanged: rawResult.wasChanged || false,\r\n config: rawResult.config || null,\r\n savedAvatarId: rawResult.savedAvatarId || null,\r\n }\r\n }\r\n\r\n private async fetchFromCdn(url: string): Promise<AssetManifest> {\r\n const response = await fetch(url, {\r\n method: 'GET',\r\n headers: {\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json',\r\n },\r\n mode: 'cors',\r\n cache: 'no-cache',\r\n })\r\n\r\n if (!response.ok) {\r\n throw new Error(\r\n `CDN fetch failed: ${response.status} ${response.statusText}`,\r\n )\r\n }\r\n\r\n return (await response.json()) as AssetManifest\r\n }\r\n\r\n private log(message: string, ...options: any[]): void {\r\n console.log(`[Venus] ${message}`, options)\r\n }\r\n}\r\n","import { VenusAPI } from '../venus-api/types.ts'\nimport { Host } from '../Host.ts'\n\nexport * from './Avatar3dApi'\nexport * from './Avatar3dConfig'\nexport * from './AssetManifest'\nexport * from './MockAvatarApi'\nexport * from './RpcAvatarApi'\n\nexport function initializeAvatar3d(venusApi: VenusAPI, host: Host) {\n venusApi.loadAvatar3dAsync = host.avatar3d.loadAvatar.bind(host.avatar3d)\n venusApi.saveAvatar3dAsync = host.avatar3d.saveAvatar.bind(host.avatar3d)\n venusApi.deleteAvatar3dAsync = host.avatar3d.deleteAvatar.bind(host.avatar3d)\n venusApi.downloadAvatar3dManifestAsync = host.avatar3d.downloadManifest.bind(\n host.avatar3d,\n )\n venusApi.showAvatar3dEditorAsync = host.avatar3d.showEditor.bind(\n host.avatar3d,\n )\n venusApi.downloadAvatar3dAssetPathsAsync =\n host.avatar3d.downloadAssetPaths.bind(host.avatar3d)\n}\n","import {\n NavigationApi,\n NavigationStackInfo,\n PushAppOptions,\n QuitOptions,\n} from './NavigationApi'\nimport { VenusAPI } from '../venus-api/types'\nimport { createMockDelay, MOCK_DELAYS } from '../venus-api/systems/core'\n\nexport class MockNavigationApi implements NavigationApi {\n private readonly venusApi: VenusAPI\n\n constructor(venusApi: VenusAPI) {\n this.venusApi = venusApi\n }\n async requestPopOrQuit(options?: QuitOptions): Promise<boolean> {\n return true\n }\n\n getStackInfo(): NavigationStackInfo {\n const venusApi = this.venusApi\n const info: NavigationStackInfo = {\n isInStack: venusApi._mock.stackState.isInStack,\n stackPosition: venusApi._mock.stackState.stackPosition,\n isTopOfStack: venusApi._mock.stackState.isTopOfStack,\n stackDepth: venusApi._mock.stackState.stackDepth,\n parentInstanceId: venusApi._mock.stackState.parentInstanceId,\n }\n return info\n }\n\n async popApp(): Promise<void> {\n const venusApi = this.venusApi\n // Check if we can pop\n if (venusApi._mock.stackState.stackDepth <= 1) {\n console.warn('[Venus Mock] Cannot pop - at base of stack or not in stack')\n return\n }\n\n // Simulate delay\n await createMockDelay(MOCK_DELAYS.short)\n\n // Pop from history\n const poppedApp = venusApi._mock.stackState.stackHistory.pop()\n venusApi._mock.stackState.stackDepth--\n venusApi._mock.stackState.stackPosition = Math.max(\n 0,\n venusApi._mock.stackState.stackDepth - 1,\n )\n\n // Update stack state\n if (venusApi._mock.stackState.stackDepth === 0) {\n venusApi._mock.stackState.isInStack = false\n venusApi._mock.stackState.isTopOfStack = false\n venusApi._mock.stackState.parentInstanceId = null\n }\n\n this.log('App popped: ', poppedApp)\n }\n\n async pushApp(appId: string, options?: PushAppOptions): Promise<void> {\n const venusApi = this.venusApi\n\n // Simulate delay for mock\n await createMockDelay(MOCK_DELAYS.medium)\n\n // Update mock stack state\n venusApi._mock.stackState.stackHistory.push({\n appId,\n pushedAt: Date.now(),\n contextData: options?.contextData,\n appParams: options?.appParams,\n })\n\n venusApi._mock.stackState.isInStack = true\n venusApi._mock.stackState.stackDepth++\n venusApi._mock.stackState.stackPosition =\n venusApi._mock.stackState.stackDepth - 1\n venusApi._mock.stackState.isTopOfStack = true\n\n const pushedInstanceId = `mock-stack-${appId}-${Date.now()}`\n this.log('PushedInstanceId: ', pushedInstanceId)\n }\n\n private log(message: string, ...args: any[]) {\n console.log(`[Venus Mock] ${message}`, ...args)\n }\n}\n","import {\r\n NavigationApi,\r\n NavigationStackInfo,\r\n PushAppOptions,\r\n QuitOptions,\r\n} from './NavigationApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport { VenusAPI } from '../venus-api/types'\r\n\r\nexport class RpcNavigationApi implements NavigationApi {\r\n private readonly venusApi: VenusAPI\r\n private readonly rpcClient: RpcClient\r\n\r\n constructor(rpcClient: RpcClient, venusApi: VenusAPI) {\r\n this.rpcClient = rpcClient\r\n this.venusApi = venusApi\r\n }\r\n async requestPopOrQuit(options?: QuitOptions): Promise<boolean> {\r\n const result = await this.rpcClient.call<PopOrQuitResponse>(\r\n VenusMessageId.QUIT,\r\n options,\r\n )\r\n return result.success\r\n }\r\n\r\n getStackInfo(): NavigationStackInfo {\r\n const venusApi = this.venusApi\r\n console.log('[Venus] getStackInfo called')\r\n const config = window.venus._config\r\n const stackInfo = config.context?.stack || {\r\n isInStack: false,\r\n stackPosition: 0,\r\n parentInstanceId: null,\r\n appType: 'standalone',\r\n }\r\n return stackInfo\r\n }\r\n\r\n popApp(): Promise<void> {\r\n const rpcClient = this.rpcClient\r\n console.log('[Venus] popAppAsync called')\r\n return rpcClient.call(VenusMessageId.H5_STACK_POP_REQUEST)\r\n }\r\n\r\n pushApp(appId: string, options?: PushAppOptions): Promise<void> {\r\n const rpcClient = this.rpcClient\r\n console.log('[Venus] pushAppAsync called', { appId, options })\r\n return rpcClient.call(VenusMessageId.H5_STACK_PUSH_REQUEST, {\r\n targetAppId: appId,\r\n contextData: options?.contextData,\r\n appParams: options?.appParams,\r\n })\r\n }\r\n}\r\n\r\ninterface PopOrQuitResponse {\r\n success: boolean\r\n action: 'popped_from_stack'\r\n quitReason: string\r\n timestamp: number\r\n}\r\n","import { VenusAPI } from '../venus-api/types'\nimport { Host } from '../Host'\n\nexport * from './NavigationApi'\nexport * from './MockNavigationApi'\nexport * from './RpcNavigationApi'\n\nexport function initializeStackNavigation(venusApi: VenusAPI, host: Host) {\n venusApi._mock.stackState = {\n isInStack: false,\n stackPosition: 0,\n stackDepth: 0,\n isTopOfStack: false,\n parentInstanceId: null,\n stackHistory: [], // Track navigation history for mock\n }\n\n venusApi.pushAppAsync = host.navigation.pushApp.bind(host.navigation)\n venusApi.popAppAsync = host.navigation.popApp.bind(host.navigation)\n venusApi.getStackInfo = host.navigation.getStackInfo.bind(host.navigation)\n venusApi.requestPopOrQuit = (options) => {\n return host.navigation.requestPopOrQuit(options)\n }\n}\n","import { AiApi, AiChatCompletionRequest, AiChatCompletionData } from './AiApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\n\r\nexport class RpcAiApi implements AiApi {\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 requestChatCompletionAsync(\r\n request: AiChatCompletionRequest,\r\n ): Promise<AiChatCompletionData> {\r\n const response = await this.rpcClient.call<AiChatCompletionData>(\r\n VenusMessageId.AI_CHAT_COMPLETION,\r\n {\r\n request: (() => {\r\n const { apiKey, ...requestWithoutApiKey } = request\r\n return requestWithoutApiKey\r\n })(),\r\n },\r\n )\r\n // Return direct response data\r\n return response\r\n }\r\n\r\n async getAvailableCompletionModels(): Promise<Array<string>> {\r\n const response = await this.rpcClient.call<Array<string>>(\r\n VenusMessageId.AI_GET_AVAILABLE_MODELS,\r\n )\r\n return response\r\n }\r\n}\r\n","import { AiApi, AiChatCompletionData, AiChatCompletionRequest } from './AiApi'\r\n\r\nexport class MockAiApi implements AiApi {\r\n async requestChatCompletionAsync(\r\n request: AiChatCompletionRequest,\r\n ): Promise<AiChatCompletionData> {\r\n const { apiKey, ...requestBody } = request\r\n \r\n if (!apiKey) {\r\n throw new Error('An API key is required for a chat completion request when developing locally.')\r\n }\r\n\r\n const response = await fetch('https://series.ullm.rho.live/api/v1/completions', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${apiKey}`,\r\n },\r\n body: JSON.stringify(requestBody),\r\n })\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`)\r\n }\r\n\r\n const data: AiChatCompletionData = await response.json()\r\n return data\r\n }\r\n\r\n async getAvailableCompletionModels(): Promise<Array<string>> {\r\n const response = await fetch('https://series.ullm.rho.live/api/v1/models', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`)\r\n }\r\n\r\n const data: Array<string> = await response.json()\r\n return data\r\n }\r\n}\r\n","import { Host } from '../Host'\r\nimport { VenusAPI } from '../venus-api/types'\r\nimport { AiChatCompletionRequest } from './AiApi'\r\n\r\nexport * from './AiApi'\r\nexport * from './RpcAiApi'\r\nexport * from './MockAiApi'\r\n\r\nexport function initializeAi(venusApi: VenusAPI, host: Host) {\r\n venusApi.ai = host.ai\r\n}\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 { 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 { 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 { initializeLeaderboard } from '../leaderboard'\r\nimport { createHost } from '../Host'\r\nimport { initializeRoomsApi } from '../rooms'\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\nimport { initializePreloader } from '../game-preloader'\r\nimport { initializeSocial } from '../social'\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 // Note: Profile is now separate from config and accessed via getCurrentProfile()\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 this.launchParams = {}\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 // Note: Profile is no longer in config - use getCurrentProfile() instead\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 // Room subscriptions are now managed by RpcRoomsApi class instance\r\n // No need to initialize global state\r\n\r\n // Initialize storage functionality (renamed from localStorage)\r\n initializeStorage(this, host)\r\n initializeRoomsApi(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 leaderboard functionality\r\n initializeLeaderboard(this, host)\r\n\r\n // Initialize local notifications functionality\r\n initializeLocalNotifications(this, host)\r\n\r\n // Initialize preloader\r\n initializePreloader(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 simulation functionality (unified crafting, slots, actors)\r\n initializeSimulation(this, host)\r\n\r\n // Initialize social distribution APIs (share links + QR codes)\r\n initializeSocial(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 if (this._mock.roomsData) {\r\n console.warn(\r\n '[Venus Mock] Rooms mock data is no longer supported. Rooms functionality requires the Venus host environment.',\r\n )\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 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, reject) => {\r\n try {\r\n const result = await this.host.initialize(options)\r\n this._shared.initialized = true\r\n\r\n // If usePreloader is false (default), hide the client's load screen\r\n if (!options || !options.usePreloader) {\r\n // NOTE(Zee): No awaiting this\r\n this.host.preloader.hideLoadScreen()\r\n }\r\n resolve(result)\r\n } catch (err) {\r\n reject(err)\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","import { AnalyticsApi } from './AnalyticsApi.ts'\r\nimport { createMockDelay, MOCK_DELAYS } from '../venus-api/systems/core'\r\n\r\nexport class MockAnalyticsApi implements AnalyticsApi {\r\n async recordCustomEvent(\r\n eventName: string,\r\n payload: Record<string, any>,\r\n ): Promise<void> {\r\n console.log(\r\n `[Venus Mock] Logging event with ${eventName}, params ${payload}`,\r\n )\r\n await createMockDelay(MOCK_DELAYS.short)\r\n }\r\n\r\n async trackFunnelStep(stepNumber: number, stepName: string, funnelName?: string): Promise<void> {\r\n console.log(`[Venus Mock] tracking funnel step ${stepName} (step ${stepNumber}) for funnel ${funnelName ?? 'game'}`);\r\n await createMockDelay(MOCK_DELAYS.short)\r\n }\r\n}\r\n","import { AnalyticsApi } from './AnalyticsApi.ts'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId.ts'\r\n\r\nexport class RpcAnalyticsApi implements AnalyticsApi {\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 recordCustomEvent(\r\n eventName: string,\r\n payload: Record<string, any>,\r\n ): Promise<void> {\r\n console.log(\r\n `[Venus SDK] [RpcAnalyticsApi] recordCustomEvent: ${eventName} payload:\\n${JSON.stringify(payload, null, 2)}`,\r\n )\r\n await this.rpcClient.call(VenusMessageId.LOG_ANALYTICS_EVENT, {\r\n eventName: eventName,\r\n params: payload,\r\n })\r\n }\r\n\r\n async trackFunnelStep(stepNumber: number, stepName: string, funnelName?: string): Promise<void> {\r\n console.log(\r\n `[Venus SDK] [RpcAnalyticsApi] trackFunnelStep: stepNumber: ${stepNumber} stepName: ${stepName} funnelName: ${funnelName}`,\r\n )\r\n await this.rpcClient.call(VenusMessageId.TRACK_FUNNEL_STEP, {\r\n stepNumber,\r\n stepName,\r\n funnelName,\r\n })\r\n }\r\n}\r\n","import { VenusAPI } from '../venus-api/types.ts'\r\nimport { Host } from '../Host.ts'\r\n\r\nexport * from './AnalyticsApi'\r\nexport * from './MockAnalyticsApi'\r\nexport * from './RpcAnalyticsApi'\r\n\r\nexport function initializeAnalytics(venusApiInstance: VenusAPI, host: Host) {\r\n venusApiInstance.logCustomEvent = async (options) => {\r\n const result = await host.analytics.recordCustomEvent(\r\n options.eventName,\r\n options.params,\r\n )\r\n }\r\n\r\n venusApiInstance.analytics = host.analytics\r\n}\r\n","// packages/api/src/iap/RpcIapApi.ts\r\nimport { IapApi, SpendCurrencyOptions } from './IapApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport { LoadEmbeddedAssetsResponse } from '../shared-assets/RpcSharedAssetsApi'\r\n\r\nexport class RpcIapApi implements IapApi {\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 getHardCurrencyBalance(): Promise<number> {\r\n const response = await this.rpcClient.call<number>(\r\n VenusMessageId.H5_IAP_GET_WALLET,\r\n )\r\n return response\r\n }\r\n\r\n async spendCurrency(\r\n productId: string,\r\n cost: number,\r\n options?: SpendCurrencyOptions,\r\n ): Promise<void> {\r\n const result = await this.rpcClient.callT<\r\n IapSpendCurrencyRequest,\r\n IapSpendCurrencyResult\r\n >(VenusMessageId.H5_IAP_SPEND_CURRENCY, {\r\n amount: cost,\r\n productId: productId,\r\n screenName: options?.screenName,\r\n })\r\n if (!result.success) {\r\n throw new Error(result.error)\r\n }\r\n }\r\n\r\n async openStore(): Promise<void> {\r\n await this.rpcClient.call(VenusMessageId.H5_IAP_OPEN_STORE)\r\n }\r\n\r\n async getCurrencyIcon(): Promise<LoadEmbeddedAssetsResponse> {\r\n return await this.rpcClient.call(VenusMessageId.H5_IAP_GET_CURRENCY_ICON)\r\n }\r\n}\r\n\r\ninterface IapSpendCurrencyRequest {\r\n amount: number // Required: amount to spend\r\n productId: string // Required: unique identifier for the item being purchased\r\n screenName?: string // Optional: screen/route name where purchase occurred\r\n}\r\n\r\ninterface IapSpendCurrencyResult {\r\n success?: boolean\r\n error?: string\r\n}\r\n","export const mockCurrencyIconBase64 = \"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\";\r\n","import { LoadEmbeddedAssetsResponse } from '../shared-assets'\r\nimport { IapApi, SpendCurrencyOptions } from './IapApi'\r\nimport { mockCurrencyIconBase64 } from './MockCurrencyIcon'\r\n\r\nexport class MockIapApi implements IapApi {\r\n private _hardCurrency: number = 100\r\n\r\n get hardCurrency(): number {\r\n return this._hardCurrency\r\n }\r\n\r\n set hardCurrency(value: number) {\r\n this._hardCurrency = value\r\n }\r\n\r\n async spendCurrency(\r\n productId: string,\r\n cost: number,\r\n options?: SpendCurrencyOptions,\r\n ): Promise<void> {\r\n console.log(`[Mock IAP] Spending ${cost} on ${productId})`)\r\n const remainingHardCurrency = this._hardCurrency - cost\r\n if (remainingHardCurrency < 0) {\r\n throw new Error(\r\n `Not enough hard currency. Expected ${cost}, found ${this._hardCurrency}`,\r\n )\r\n }\r\n this._hardCurrency = remainingHardCurrency\r\n }\r\n\r\n async getHardCurrencyBalance(): Promise<number> {\r\n console.log('[Mock IAP] get hard currency called')\r\n return this._hardCurrency\r\n }\r\n\r\n async openStore(): Promise<void> {\r\n console.log('[Mock IAP] open store called')\r\n }\r\n\r\n async getCurrencyIcon(): Promise<LoadEmbeddedAssetsResponse> {\r\n console.log('[Mock IAP] get currency icon called')\r\n return {\r\n base64Data: mockCurrencyIconBase64,\r\n }\r\n }\r\n}\r\n","import { VenusAPI } from '../venus-api/types.ts'\nimport { Host } from '../Host.ts'\n\nexport * from './IapApi'\nexport * from './RpcIapApi'\nexport * from './MockIapApi'\n\nexport function initializeIap(venusApiInstance: VenusAPI, host: Host) {\n venusApiInstance.iap = host.iap\n}\n","import { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport {\r\n GetLeaderboardOptions,\r\n LeaderboardApi,\r\n LeaderboardResponse,\r\n LeaderboardHighlightOptions,\r\n LeaderboardHighlightResponse,\r\n PlayerStats,\r\n PlayerStatsOptions,\r\n StartRunResult,\r\n SubmitScoreOptions,\r\n SubmitScoreResult,\r\n} from './LeaderboardApi'\r\n\r\nexport class RpcLeaderboardApi implements LeaderboardApi {\r\n private readonly rpcClient: RpcClient\r\n\r\n constructor(rpcClient: RpcClient) {\r\n this.rpcClient = rpcClient\r\n }\r\n\r\n startRun(mode?: string): Promise<StartRunResult> {\r\n return this.rpcClient.call<StartRunResult>(\r\n VenusMessageId.H5_LEADERBOARD_START_RUN,\r\n mode ? { mode } : {},\r\n )\r\n }\r\n\r\n submitScore(\r\n sessionId: string,\r\n score: number,\r\n durationSec: number,\r\n options?: SubmitScoreOptions,\r\n ): Promise<SubmitScoreResult> {\r\n return this.rpcClient.call<SubmitScoreResult>(\r\n VenusMessageId.H5_LEADERBOARD_SUBMIT_SCORE,\r\n {\r\n sessionId,\r\n score,\r\n durationSec,\r\n mode: options?.mode,\r\n telemetry: options?.telemetry,\r\n metadata: options?.metadata,\r\n hash: options?.hash,\r\n },\r\n )\r\n }\r\n\r\n getLeaderboard(options?: GetLeaderboardOptions): Promise<LeaderboardResponse> {\r\n return this.rpcClient.call<LeaderboardResponse>(\r\n VenusMessageId.H5_LEADERBOARD_GET,\r\n options ?? {},\r\n )\r\n }\r\n\r\n getPlayerStats(options?: PlayerStatsOptions): Promise<PlayerStats> {\r\n return this.rpcClient.call<PlayerStats>(\r\n VenusMessageId.H5_LEADERBOARD_GET_PLAYER_STATS,\r\n options ?? {},\r\n )\r\n }\r\n\r\n getLeaderboardHighlight(options?: LeaderboardHighlightOptions): Promise<LeaderboardHighlightResponse> {\r\n return this.rpcClient.call<LeaderboardHighlightResponse>(\r\n VenusMessageId.H5_LEADERBOARD_GET_HIGHLIGHT,\r\n options ?? {},\r\n )\r\n }\r\n}\r\n","import {\r\n GetLeaderboardOptions,\r\n LeaderboardApi,\r\n LeaderboardEntry,\r\n LeaderboardResponse,\r\n LeaderboardHighlightOptions,\r\n LeaderboardHighlightResponse,\r\n PlayerStats,\r\n PlayerStatsOptions,\r\n StartRunResult,\r\n SubmitScoreOptions,\r\n SubmitScoreResult,\r\n} from './LeaderboardApi'\r\n\r\ninterface MockSession {\r\n id: string\r\n expiresAt: number\r\n mode: string\r\n hashNonce: string | null\r\n used: boolean\r\n}\r\n\r\nexport class MockLeaderboardApi implements LeaderboardApi {\r\n private sessions: Map<string, MockSession> = new Map()\r\n private entriesByMode: Map<string, LeaderboardEntry[]> = new Map()\r\n private sessionCounter = 0\r\n private requiresHash = false\r\n\r\n constructor(options?: { requiresHash?: boolean }) {\r\n if (options?.requiresHash) {\r\n this.requiresHash = true\r\n }\r\n }\r\n\r\n configure(options: { requiresHash?: boolean }): void {\r\n if (typeof options.requiresHash === 'boolean') {\r\n this.requiresHash = options.requiresHash\r\n }\r\n }\r\n\r\n private generateNonce(): string {\r\n return (\r\n Math.random().toString(36).slice(2) +\r\n Math.random().toString(36).slice(2)\r\n ).slice(0, 64)\r\n }\r\n\r\n private getModeKey(mode: string): string {\r\n const normalizedMode = mode || 'default'\r\n return `${normalizedMode}`\r\n }\r\n\r\n private getEntriesForMode(mode: string): LeaderboardEntry[] {\r\n const key = this.getModeKey(mode)\r\n if (!this.entriesByMode.has(key)) {\r\n this.entriesByMode.set(key, [])\r\n }\r\n return this.entriesByMode.get(key)!\r\n }\r\n\r\n async startRun(mode?: string): Promise<StartRunResult> {\r\n const sessionId = `mock_session_${++this.sessionCounter}`\r\n const startTime = Date.now()\r\n const expiresAt = startTime + 3_600_000\r\n const resolvedMode = mode || 'default'\r\n const hashNonce = this.requiresHash ? this.generateNonce() : null\r\n\r\n this.sessions.set(sessionId, {\r\n id: sessionId,\r\n expiresAt,\r\n mode: resolvedMode,\r\n hashNonce,\r\n used: false,\r\n })\r\n\r\n return {\r\n sessionId,\r\n startTime,\r\n expiresAt,\r\n hashNonce,\r\n mode: resolvedMode,\r\n }\r\n }\r\n\r\n async submitScore(\r\n sessionId: string,\r\n score: number,\r\n durationSec: number,\r\n options?: SubmitScoreOptions,\r\n ): Promise<SubmitScoreResult> {\r\n const session = this.sessions.get(sessionId)\r\n if (!session) {\r\n throw new Error('Invalid leaderboard session')\r\n }\r\n\r\n if (session.expiresAt < Date.now()) {\r\n throw new Error('Invalid or expired leaderboard session')\r\n }\r\n\r\n if (session.used) {\r\n throw new Error('Leaderboard session already used')\r\n }\r\n\r\n if (options?.mode && options.mode !== session.mode) {\r\n throw new Error('Submission mode does not match session mode')\r\n }\r\n\r\n if (session.hashNonce && !options?.hash) {\r\n throw new Error('Score hash is required for sealed leaderboard submissions')\r\n }\r\n\r\n const submittedAt = Date.now()\r\n const entry: LeaderboardEntry = {\r\n profileId: `mock_profile`,\r\n username: 'Mock Player',\r\n avatarUrl: null,\r\n score,\r\n durationSec,\r\n submittedAt,\r\n sessionId,\r\n rank: null,\r\n zScore: null,\r\n isAnomaly: false,\r\n trustScore: 50,\r\n metadata: options?.metadata ?? null,\r\n isSeed: false,\r\n }\r\n\r\n const modeEntries = this.getEntriesForMode(session.mode)\r\n modeEntries.push(entry)\r\n modeEntries.sort((a, b) => {\r\n if (b.score !== a.score) {\r\n return b.score - a.score\r\n }\r\n return a.submittedAt - b.submittedAt\r\n })\r\n\r\n modeEntries.forEach((e, index) => {\r\n modeEntries[index] = {\r\n ...e,\r\n rank: index + 1,\r\n }\r\n })\r\n\r\n session.used = true\r\n session.hashNonce = null\r\n\r\n const inserted = modeEntries.find((e) => e.sessionId === sessionId && e.submittedAt === submittedAt)\r\n\r\n return {\r\n accepted: true,\r\n rank: inserted?.rank ?? null,\r\n }\r\n }\r\n\r\n async getLeaderboard(options?: GetLeaderboardOptions): Promise<LeaderboardResponse> {\r\n const limit = options?.limit ?? 10\r\n const mode = options?.mode ?? 'default'\r\n const modeEntries = [...this.getEntriesForMode(mode)]\r\n\r\n const entries = modeEntries.slice(0, limit).map((entry) => ({\r\n ...entry,\r\n }))\r\n\r\n return {\r\n variant: 'standard',\r\n entries,\r\n totalEntries: modeEntries.length,\r\n nextCursor: null,\r\n playerRank: null,\r\n periodInstance: options?.period ?? 'alltime',\r\n }\r\n }\r\n\r\n async getPlayerStats(_options?: PlayerStatsOptions): Promise<PlayerStats> {\r\n const mode = _options?.mode ?? 'default'\r\n const modeEntries = this.getEntriesForMode(mode)\r\n const playerEntry = modeEntries[0] ?? null\r\n\r\n return {\r\n rank: playerEntry?.rank ?? null,\r\n score: playerEntry?.score,\r\n totalPlayers: modeEntries.length,\r\n percentile: playerEntry\r\n ? Math.max(0, 1 - ((playerEntry.rank ?? 1) - 1) / Math.max(modeEntries.length, 1))\r\n : undefined,\r\n trustScore: 50,\r\n periodInstance: _options?.period ?? 'alltime',\r\n }\r\n }\r\n\r\n async getLeaderboardHighlight(options?: LeaderboardHighlightOptions): Promise<LeaderboardHighlightResponse> {\r\n const mode = options?.mode ?? 'default'\r\n const modeEntries = [...this.getEntriesForMode(mode)]\r\n\r\n const topCount = Math.max(1, Math.min(options?.topCount ?? 3, 10))\r\n const aheadCount = Math.max(0, Math.min(options?.contextAhead ?? 4, 10))\r\n const behindCount = Math.max(0, Math.min(options?.contextBehind ?? 2, 10))\r\n\r\n const topEntries = modeEntries.slice(0, topCount)\r\n const playerEntry = modeEntries[0] ?? null\r\n const totalEntries = modeEntries.length\r\n\r\n let playerRank = playerEntry?.rank ?? null\r\n let beforePlayer: LeaderboardEntry[] = []\r\n let afterPlayer: LeaderboardEntry[] = []\r\n let totalBefore = playerRank ? playerRank - 1 : 0\r\n let totalAfter = playerRank ? Math.max(totalEntries - playerRank, 0) : 0\r\n let omittedBefore = totalBefore\r\n let omittedAfter = totalAfter\r\n\r\n if (playerRank && playerRank > 0) {\r\n const beforeStart = Math.max(playerRank - aheadCount - 1, 0)\r\n beforePlayer = modeEntries.slice(beforeStart, playerRank - 1)\r\n const afterEnd = Math.min(playerRank + behindCount, totalEntries)\r\n afterPlayer = modeEntries.slice(playerRank, afterEnd)\r\n\r\n const shownTopAhead = topEntries.filter((entry) => (entry.rank ?? 0) > 0 && (entry.rank ?? 0) < playerRank!).length\r\n omittedBefore = Math.max(totalBefore - (beforePlayer.length + shownTopAhead), 0)\r\n omittedAfter = Math.max(totalAfter - afterPlayer.length, 0)\r\n }\r\n\r\n return {\r\n variant: 'highlight',\r\n entries: topEntries,\r\n totalEntries,\r\n nextCursor: null,\r\n playerRank: playerRank ?? null,\r\n periodInstance: options?.period ?? 'alltime',\r\n context: {\r\n topEntries,\r\n beforePlayer,\r\n playerEntry: playerEntry ?? null,\r\n afterPlayer,\r\n totalBefore,\r\n totalAfter,\r\n omittedBefore,\r\n omittedAfter,\r\n },\r\n }\r\n }\r\n}\r\n","import { Host } from '../Host'\r\nimport { VenusAPI } from '../venus-api/types'\r\n\r\nexport * from './LeaderboardApi'\r\nexport { RpcLeaderboardApi } from './RpcLeaderboardApi'\r\nexport { MockLeaderboardApi } from './MockLeaderboardApi'\r\n\r\nexport function initializeLeaderboard(venusApiInstance: VenusAPI, host: Host) {\r\n venusApiInstance.leaderboard = host.leaderboard\r\n}\r\n","import { ProfileApi } from './ProfileApi'\r\nimport { Profile } from '../venus-api/types'\r\n\r\nexport class HostProfileApi implements ProfileApi {\r\n getCurrentProfile(): Profile {\r\n // Return profile from dedicated profile storage\r\n const profile = window.venus?.profile\r\n \r\n if (!profile) {\r\n throw new Error(\r\n '[Venus SDK] Host profile handshake did not complete. Await VenusAPI.initializeAsync() so INIT_SDK can deliver the profile before calling profile APIs.',\r\n )\r\n }\r\n\r\n // Profile is already sanitized by RemoteHost.initNew()\r\n // Validate required fields\r\n if (!profile.id || !profile.username) {\r\n throw new Error(\r\n '[Venus SDK] INIT_SDK returned an incomplete profile (missing id/username). The host must supply real credentials before rooms APIs are used.',\r\n )\r\n }\r\n\r\n return {\r\n id: profile.id,\r\n username: profile.username,\r\n avatarUrl: profile.avatarUrl,\r\n isAnonymous: profile.isAnonymous,\r\n }\r\n }\r\n}\r\n","import { ProfileApi } from './ProfileApi'\r\nimport { Profile } from '../venus-api/types'\r\n\r\nexport class MockProfileApi implements ProfileApi {\r\n getCurrentProfile(): Profile {\r\n return {\r\n id: 'mock_profile_123',\r\n name: 'Mock User',\r\n username: 'mockuser',\r\n isAnonymous: false,\r\n }\r\n }\r\n}\r\n","import { VenusAPI } from '../venus-api/types.ts'\nimport { Host } from '../Host'\n\nexport * from './ProfileApi'\nexport * from './HostProfileApi'\nexport * from './MockProfileApi'\n\nexport function initializeProfile(venusApi: VenusAPI, host: Host) {\n venusApi.getCurrentProfile = () => {\n return host.profile.getCurrentProfile()\n }\n}\n","import { CdnApi, FetchBlobOptions, SubPath } from './CdnApi'\r\n\r\nexport class HostCdnApi implements CdnApi {\r\n private readonly baseUrl: string\r\n\r\n constructor(baseUrl: string) {\r\n this.baseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl\r\n }\r\n\r\n async fetchBlob(path: SubPath, options?: FetchBlobOptions): Promise<Blob> {\r\n const controller = new AbortController()\r\n const timeoutId = setTimeout(\r\n () => controller.abort(),\r\n options?.timeout ?? 30000,\r\n )\r\n\r\n try {\r\n const url = this.resolveAssetUrl(path)\r\n const response = await fetch(url, {\r\n mode: 'cors',\r\n credentials: 'omit',\r\n headers: { Accept: '/*' },\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 return await response.blob()\r\n } catch (error) {\r\n clearTimeout(timeoutId)\r\n throw error\r\n }\r\n }\r\n\r\n async fetchFromCdn(url: string, request?: RequestInit): Promise<Response> {\r\n const response = await fetch(url, {\r\n method: 'GET',\r\n headers: {\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json',\r\n },\r\n mode: 'cors',\r\n cache: 'no-cache',\r\n })\r\n\r\n if (!response.ok) {\r\n throw new Error(\r\n `CDN fetch failed: \\${response.status} \\${response.statusText}`,\r\n )\r\n }\r\n\r\n return response\r\n }\r\n\r\n getAssetCdnBaseUrl(): string {\r\n return this.baseUrl\r\n }\r\n\r\n resolveAssetUrl(subPath: string): string {\r\n // Clean up the subPath (remove leading slash if present)\r\n const cleanSubPath = subPath.startsWith('/') ? subPath.slice(1) : subPath\r\n\r\n // Split path into directory and filename parts, encode only filename to preserve directory structure\r\n const pathParts = cleanSubPath.split('/')\r\n const encodedParts = pathParts.map((part, index) => {\r\n // Only encode the filename (last part), keep directory names as-is for URL structure\r\n return index === pathParts.length - 1 ? encodeURIComponent(part) : part\r\n })\r\n const encodedSubPath = encodedParts.join('/')\r\n\r\n const fullUrl = this.baseUrl + '/' + encodedSubPath\r\n return fullUrl\r\n }\r\n\r\n resolveAvatarAssetUrl(subPath: string): string {\r\n // Prepend 'avatar3d/' to the subPath and resolve using the base method\r\n const avatarSubPath = 'avatar3d/' + subPath\r\n return this.resolveAssetUrl(avatarSubPath)\r\n }\r\n\r\n resolveSharedLibUrl(subPath: string): string {\r\n // Prepend 'libs/' to the subPath and resolve using the base method\r\n const libSubPath = 'libs/' + subPath\r\n return this.resolveAssetUrl(libSubPath)\r\n }\r\n}\r\n","import { CdnApi, FetchBlobOptions, SubPath } from './CdnApi'\r\n\r\nexport class MockCdnApi implements CdnApi {\r\n private readonly baseUrl: string\r\n\r\n constructor() {\r\n this.baseUrl = 'https://venus-static-01293ak.web.app/'\r\n }\r\n\r\n async fetchBlob(path: SubPath, options?: FetchBlobOptions): Promise<Blob> {\r\n const controller = new AbortController()\r\n const timeoutId = setTimeout(\r\n () => controller.abort(),\r\n options?.timeout ?? 30000,\r\n )\r\n\r\n try {\r\n const url = this.resolveAssetUrl(path)\r\n const response = await fetch(url, {\r\n mode: 'cors',\r\n credentials: 'omit',\r\n headers: { Accept: '/*' },\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 return await response.blob()\r\n } catch (error) {\r\n clearTimeout(timeoutId)\r\n throw error\r\n }\r\n }\r\n\r\n getAssetCdnBaseUrl(): string {\r\n return this.baseUrl\r\n }\r\n\r\n resolveAssetUrl(subPath: string): string {\r\n // If subPath is already a full URL, return it as-is\r\n if (subPath.startsWith('http://') || subPath.startsWith('https://')) {\r\n // Input is already a full URL\r\n return subPath\r\n }\r\n\r\n if (subPath.startsWith('cdn/')) {\r\n return subPath\r\n }\r\n\r\n // Clean up the subPath (remove leading slash if present)\r\n const cleanSubPath = subPath.startsWith('/') ? subPath.slice(1) : subPath\r\n\r\n // Split path into directory and filename parts, encode only filename to preserve directory structure\r\n const pathParts = cleanSubPath.split('/')\r\n const encodedParts = pathParts.map((part, index) => {\r\n // Only encode the filename (last part), keep directory names as-is for URL structure\r\n return index === pathParts.length - 1 ? encodeURIComponent(part) : part\r\n })\r\n const encodedSubPath = encodedParts.join('/')\r\n\r\n // Construct the full URL\r\n const fullUrl = `${this.baseUrl}${encodedSubPath}`\r\n\r\n // Resolved asset URL\r\n return fullUrl\r\n }\r\n\r\n resolveAvatarAssetUrl(subPath: string): string {\r\n // If subPath is already a full URL, return it as-is\r\n if (subPath.startsWith('http://') || subPath.startsWith('https://')) {\r\n // Avatar asset input is already a full URL\r\n return subPath\r\n }\r\n\r\n // Prepend 'avatar3d/' to the subPath and resolve using the base method\r\n const avatarSubPath = `avatar3d/${subPath}`\r\n return this.resolveAssetUrl(avatarSubPath)\r\n }\r\n\r\n resolveSharedLibUrl(subPath: string): string {\r\n // If subPath is already a full URL, return it as-is\r\n if (subPath.startsWith('http://') || subPath.startsWith('https://')) {\r\n // Shared lib input is already a full URL\r\n return subPath\r\n }\r\n\r\n // Prepend 'libs/' to the subPath and resolve using the base method\r\n const libSubPath = `libs/${subPath}`\r\n return this.resolveAssetUrl(libSubPath)\r\n }\r\n\r\n async fetchFromCdn(url: string, options?: RequestInit): Promise<Response> {\r\n // Fetching from network\r\n\r\n // Security validation - only allow trusted CDN domains\r\n const allowedDomains = [\r\n 'venus-static-01293ak.web.app',\r\n 'firebasestorage.googleapis.com',\r\n 'cdn.venusapp.com',\r\n 'storage.googleapis.com',\r\n ]\r\n let urlObj: URL | null = null\r\n\r\n try {\r\n let isAllowed = true\r\n\r\n if (url.startsWith('http://') || url.startsWith('https://')) {\r\n urlObj = new URL(url)\r\n isAllowed = allowedDomains.some(\r\n (domain) =>\r\n urlObj!.hostname === domain ||\r\n urlObj!.hostname.endsWith('.' + domain),\r\n )\r\n\r\n if (!isAllowed) {\r\n const error = `Domain not allowed: ${urlObj.hostname}. Allowed domains: ${allowedDomains.join(', ')}`\r\n console.error('[Venus Network Mock] Security error:', error)\r\n throw new Error(error)\r\n }\r\n } else {\r\n // In development mode, let relative URLs be handled naturally by the browser/dev server\r\n // Using relative URL as-is in development mode\r\n // Don't convert to absolute URL - let fetch handle the relative URL\r\n urlObj = null // We'll use the original URL directly\r\n }\r\n\r\n const fetchUrl = urlObj ? urlObj.href : url\r\n // Making request\r\n\r\n const response = await fetch(fetchUrl, {\r\n method: options?.method || 'GET',\r\n headers: {\r\n Accept: 'text/plain, application/octet-stream, application/json, */*',\r\n ...options?.headers,\r\n },\r\n cache: options?.cache || 'default',\r\n mode: 'cors',\r\n })\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP ${response.status}: ${response.statusText}`)\r\n }\r\n\r\n // Fetch successful\r\n return response\r\n } catch (error) {\r\n // CORS Fallback for mock\r\n if (\r\n error instanceof Error &&\r\n error.message &&\r\n (error.message.includes('CORS') ||\r\n error.message.includes('preflight') ||\r\n error.message.includes('Access-Control') ||\r\n error.message.includes('cache-control'))\r\n ) {\r\n // CORS error detected, trying minimal fetch\r\n\r\n try {\r\n const fallbackUrl = urlObj ? urlObj.href : url\r\n const fallbackResponse = await fetch(fallbackUrl, {\r\n method: 'GET',\r\n mode: 'cors',\r\n cache: 'default',\r\n })\r\n\r\n if (!fallbackResponse.ok) {\r\n throw new Error(\r\n `HTTP ${fallbackResponse.status}: ${fallbackResponse.statusText}`,\r\n )\r\n }\r\n\r\n const fallbackText = await fallbackResponse.text()\r\n\r\n // CORS fallback fetch successful\r\n return fallbackResponse\r\n } catch (fallbackError) {\r\n console.error(\r\n '[Venus Network Mock] CORS fallback also failed (from network.js):',\r\n {\r\n url,\r\n originalError: error.message,\r\n fallbackError: fallbackError,\r\n timestamp: new Date().toISOString(),\r\n },\r\n )\r\n throw new Error(\r\n `CORS error: ${error.message}. Fallback also failed: ${fallbackError}`,\r\n )\r\n }\r\n }\r\n\r\n console.error('[Venus Network Mock] Fetch failed (from network.js):', {\r\n url,\r\n error: error,\r\n timestamp: new Date().toISOString(),\r\n })\r\n throw error\r\n }\r\n }\r\n}\r\n","import { VenusAPI } from '../venus-api/types'\r\nimport { Host } from '../Host'\r\n\r\nexport * from './CdnApi'\r\nexport * from './HostCdnApi'\r\nexport * from './MockCdnApi'\r\n\r\nexport function initializeCdn(venusApi: VenusAPI, host: Host) {\r\n // Core asset URL resolver\r\n venusApi.resolveAssetUrl = function (subPath) {\r\n return host.cdn.resolveAssetUrl(subPath)\r\n }\r\n\r\n // Avatar-specific asset URL resolver that prepends 'avatar3d/' to the subPath\r\n venusApi.resolveAvatarAssetUrl = function (subPath) {\r\n return host.cdn.resolveAvatarAssetUrl(subPath)\r\n }\r\n\r\n // Shared library URL resolver that prepends 'libs/' to the subPath\r\n venusApi.resolveSharedLibUrl = function (subPath) {\r\n return host.cdn.resolveSharedLibUrl(subPath)\r\n }\r\n\r\n // Helper method to get the base CDN URL\r\n venusApi.getAssetCdnBaseUrl = function () {\r\n return host.cdn.getAssetCdnBaseUrl()\r\n }\r\n\r\n venusApi.fetchFromCdn = (url: string, options?: RequestInit) => {\r\n return host.cdn.fetchFromCdn(url, options)\r\n }\r\n\r\n venusApi.cdn = host.cdn\r\n}\r\n","import {\r\n OpenCommentsResult,\r\n PostApi,\r\n PostInfo,\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 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 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 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.openCommentsAsync = async () => {\r\n await host.post.openCommentsAsync()\r\n }\r\n}\r\n","import { HapticFeedbackStyle, HapticsApi } from './HapticsApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\n\r\nexport class RpcHapticsApi implements HapticsApi {\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 triggerHapticAsync(style: HapticFeedbackStyle): Promise<void> {\r\n await this.rpcClient.call(VenusMessageId.TRIGGER_HAPTIC, {\r\n style: style,\r\n })\r\n }\r\n}\r\n","import { HapticFeedbackStyle, HapticsApi } from './HapticsApi'\nimport { VenusAPI } from '../venus-api/types'\n\nexport class MockHapticsApi implements HapticsApi {\n private readonly venusApi: VenusAPI\n\n constructor(venusApi: VenusAPI) {\n this.venusApi = venusApi\n }\n\n async triggerHapticAsync(style: HapticFeedbackStyle): Promise<void> {\n const venusApi = this.venusApi\n // Check if device supports haptics\n if (!venusApi._mock.device.supportsHaptics) {\n return\n }\n }\n}\n","import { VenusAPI } from '../venus-api/types'\nimport { Host } from '../Host'\n\nexport * from './HapticsApi'\nexport * from './RpcHapticsApi'\nexport * from './MockHapticsApi'\n\nexport function initializeHaptics(venusApi: VenusAPI, host: Host) {\n venusApi.triggerHapticAsync = (style) => {\n return host.haptics.triggerHapticAsync(style)\n }\n}\n","import { Experiment, FeaturesApi } from './FeaturesApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\n\r\nexport class RpcFeaturesApi implements FeaturesApi {\r\n private readonly rpcClient: RpcClient\r\n\r\n constructor(rcpClient: RpcClient) {\r\n this.rpcClient = rcpClient\r\n }\r\n\r\n async getExperiment(experimentName: string): Promise<Experiment | null> {\r\n console.log('[Venus] Getting Experiment', experimentName)\r\n return await this.rpcClient.call(VenusMessageId.GET_EXPERIMENT, {\r\n experimentName: experimentName,\r\n })\r\n }\r\n\r\n async getFeatureFlag(flagName: string): Promise<boolean> {\r\n console.log('[Venus] Getting Feature Flag', flagName)\r\n return await this.rpcClient.call(VenusMessageId.GET_FEATURE_FLAG, {\r\n flagName: flagName,\r\n })\r\n }\r\n\r\n async getFeatureGate(gateName: string): Promise<boolean> {\r\n console.log('[Venus] Getting Feature Gate', gateName)\r\n return await this.rpcClient.call(VenusMessageId.GET_FEATURE_GATE, {\r\n gateName: gateName,\r\n })\r\n }\r\n}\r\n","import { Experiment, FeaturesApi } from './FeaturesApi'\n\nexport class MockFeaturesApi implements FeaturesApi {\n async getExperiment(experimentName: string): Promise<Experiment | null> {\n return null\n }\n\n async getFeatureFlag(flagName: string): Promise<boolean> {\n return Promise.resolve(false)\n }\n\n getFeatureGate(gateName: string): Promise<boolean> {\n return Promise.resolve(false)\n }\n}\n","import { VenusAPI } from '../venus-api/types'\nimport { Host } from '../Host'\n\nexport * from './FeaturesApi'\nexport * from './RpcFeaturesApi'\nexport * from './MockFeaturesApi'\n\nexport function initializeFeaturesApi(venusApi: VenusAPI, host: Host) {\n venusApi.getExperiment = (options) => {\n return host.features.getExperiment(options.experimentName)\n }\n\n venusApi.getFeatureGate = (options) => {\n return host.features.getFeatureGate(options.gateName)\n }\n\n venusApi.getFeatureFlag = (options) => {\n return host.features.getFeatureFlag(options.flagName)\n }\n}\n","import {\r\n AwakeCallback,\r\n QuitCallback,\r\n LifecycleApi,\r\n PauseCallback,\r\n ResumeCallback,\r\n SleepCallback,\r\n} from './LifecycleApi'\r\nimport { Subscription } from '../rpc'\r\n\r\nexport class MockLifecycleApi implements LifecycleApi {\r\n private pauseCallbacks: Set<PauseCallback> = new Set<PauseCallback>()\r\n private resumeCallbacks: Set<ResumeCallback> = new Set<PauseCallback>()\r\n private awakeCallbacks = new Set<AwakeCallback>()\r\n private sleepCallbacks = new Set<SleepCallback>()\r\n private quitCallbacks = new Set<QuitCallback>()\r\n\r\n onSleep(callback: SleepCallback): Subscription {\r\n this.sleepCallbacks.add(callback)\r\n return {\r\n unsubscribe: () => {\r\n this.sleepCallbacks.delete(callback)\r\n },\r\n }\r\n }\r\n\r\n onAwake(callback: AwakeCallback): Subscription {\r\n this.awakeCallbacks.add(callback)\r\n return {\r\n unsubscribe: () => {\r\n this.awakeCallbacks.delete(callback)\r\n },\r\n }\r\n }\r\n\r\n onPause(callback: PauseCallback): Subscription {\r\n this.pauseCallbacks.add(callback)\r\n return {\r\n unsubscribe: () => {\r\n this.pauseCallbacks.delete(callback)\r\n },\r\n }\r\n }\r\n\r\n onResume(callback: ResumeCallback): Subscription {\r\n this.resumeCallbacks.add(callback)\r\n return {\r\n unsubscribe: () => {\r\n this.resumeCallbacks.delete(callback)\r\n },\r\n }\r\n }\r\n\r\n onQuit(callback: QuitCallback): Subscription {\r\n this.quitCallbacks.add(callback)\r\n return {\r\n unsubscribe: () => {\r\n this.quitCallbacks.delete(callback)\r\n },\r\n }\r\n }\r\n\r\n triggerPauseCallbacks() {\r\n for (const callback of this.pauseCallbacks) {\r\n callback()\r\n }\r\n }\r\n\r\n triggerResumeCallbacks() {\r\n for (const callback of this.resumeCallbacks) {\r\n callback()\r\n }\r\n }\r\n\r\n triggerAwakeCallbacks() {\r\n for (const callback of this.awakeCallbacks) {\r\n callback()\r\n }\r\n }\r\n\r\n triggerSleepCallbacks() {\r\n for (const callback of this.sleepCallbacks) {\r\n callback()\r\n }\r\n }\r\n\r\n triggerQuitCallbacks() {\r\n for (const callback of this.quitCallbacks) {\r\n callback()\r\n }\r\n }\r\n}\r\n","import {\r\n AwakeCallback,\r\n LifecycleApi,\r\n PauseCallback,\r\n QuitCallback,\r\n ResumeCallback,\r\n SleepCallback,\r\n} from './LifecycleApi'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport { RpcClient, Subscription } from '../rpc'\r\n\r\nexport class RpcLifecycleApi implements LifecycleApi {\r\n private readonly rpcClient: RpcClient\r\n\r\n constructor(rpcClient: RpcClient) {\r\n this.rpcClient = rpcClient\r\n }\r\n\r\n onQuit(callback: QuitCallback): Subscription {\r\n return this.rpcClient.onNotification(VenusMessageId.QUIT, callback)\r\n }\r\n\r\n onSleep(callback: SleepCallback): Subscription {\r\n return this.rpcClient.onNotification(VenusMessageId.SLEEP, callback)\r\n }\r\n\r\n onAwake(callback: AwakeCallback): Subscription {\r\n return this.rpcClient.onNotification(VenusMessageId.AWAKE, callback)\r\n }\r\n\r\n onResume(callback: ResumeCallback): Subscription {\r\n return this.rpcClient.onNotification(VenusMessageId.RESUME, callback)\r\n }\r\n\r\n onPause(callback: PauseCallback): Subscription {\r\n return this.rpcClient.onNotification(VenusMessageId.PAUSE, callback)\r\n }\r\n}\r\n","import { VenusAPI } from '../venus-api/types'\r\nimport { Host } from '../Host'\r\n\r\nexport * from './LifecycleApi'\r\nexport * from './MockLifecycleApi'\r\nexport * from './RpcLifecycleApi'\r\n\r\nexport function initializeLifecycleApi(venusApi: VenusAPI, host: Host) {\r\n venusApi.lifecycles = host.lifecycle\r\n}\r\n","export function sumContributions(\n contributions: Record<string, any>,\n): Record<string, number> {\n const totals: Record<string, number> = {}\n for (const profileId in contributions) {\n for (const entityId in contributions[profileId]) {\n const amount = contributions[profileId][entityId] || 0\n totals[entityId] = (totals[entityId] || 0) + amount\n }\n }\n return totals\n}\n","import {\r\n CollectRecipeResult,\r\n ExecuteRecipeOptions,\r\n ExecuteScopedRecipeResult,\r\n GetActiveRunsOptions,\r\n GetAvailableRecipesOptions,\r\n GetAvailableRecipesResult,\r\n GetBatchRecipeRequirements,\r\n Recipe,\r\n SimulationApi,\r\n TriggerRecipeChainOptions,\r\n} from './SimulationApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport { VenusSimulationConfig } from '../venus-api/types'\r\nimport { sumContributions } from './utils'\r\n\r\nexport class RpcSimulationApi implements SimulationApi {\r\n private readonly rpcClient: RpcClient\r\n private _simulationConfig: VenusSimulationConfig | null = null\r\n\r\n constructor(rpcClient: RpcClient) {\r\n this.rpcClient = rpcClient\r\n }\r\n async validateSlotAssignmentAsync(\r\n containerId: string,\r\n slotId: string,\r\n itemId: string,\r\n ): Promise<any> {\r\n return this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_VALIDATE_ASSIGNMENT,\r\n {\r\n containerId,\r\n slotId,\r\n itemId,\r\n },\r\n )\r\n }\r\n\r\n sumContributions(contributions: Record<string, any>): Record<string, number> {\r\n return sumContributions(contributions)\r\n }\r\n\r\n executeBatchOperationsAsync(\r\n operations: Array<any>,\r\n validateOnly?: boolean,\r\n ): Promise<any> {\r\n return this.rpcClient.call(VenusMessageId.H5_SIMULATION_BATCH_OPERATIONS, {\r\n operations,\r\n validateOnly,\r\n })\r\n }\r\n async getAvailableItemsAsync(\r\n containerId: string,\r\n slotId: string,\r\n ): Promise<Array<any>> {\r\n const response = await this.rpcClient.call<any>(\r\n VenusMessageId.H5_SIMULATION_GET_AVAILABLE_ITEMS,\r\n {\r\n containerId,\r\n slotId,\r\n },\r\n )\r\n return response.availableItems || []\r\n }\r\n calculatePowerPreviewAsync(\r\n containerId: string,\r\n slotId: string,\r\n candidateItemId: string,\r\n ): Promise<any> {\r\n return this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_CALCULATE_POWER_PREVIEW,\r\n {\r\n containerId,\r\n slotId,\r\n candidateItemId,\r\n },\r\n )\r\n }\r\n assignItemToSlotAsync(\r\n containerId: string,\r\n slotId: string,\r\n itemId: string,\r\n ): Promise<any> {\r\n return this.rpcClient.call(VenusMessageId.H5_SIMULATION_ASSIGN_ITEM, {\r\n containerId,\r\n slotId,\r\n itemId,\r\n })\r\n }\r\n\r\n removeItemFromSlotAsync(containerId: string, slotId: string): Promise<any> {\r\n return this.rpcClient.call(VenusMessageId.H5_SIMULATION_REMOVE_ITEM, {\r\n containerId,\r\n slotId,\r\n })\r\n }\r\n\r\n async getSlotContainersAsync(): Promise<any> {\r\n const response: any = await this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_GET_CONTAINERS,\r\n {},\r\n )\r\n return response.containers || []\r\n }\r\n\r\n async getSlotAssignmentsAsync(containerId: string): Promise<any> {\r\n const response: any = await this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_GET_ASSIGNMENTS,\r\n {\r\n containerId,\r\n },\r\n )\r\n // Server returns raw array, not wrapped in .assignments property\r\n return Array.isArray(response) ? response : response.assignments || []\r\n }\r\n\r\n async getStateAsync(roomId?: string): Promise<any> {\r\n const response = await this.rpcClient.call<any>(\r\n VenusMessageId.H5_SIMULATION_GET_STATE,\r\n {\r\n roomId: roomId,\r\n },\r\n )\r\n\r\n console.log('[Venus SDK] getStateAsync', response)\r\n // Cache configuration if included in response\r\n if (response.configuration) {\r\n this._simulationConfig = response.configuration\r\n }\r\n return response\r\n }\r\n\r\n async getConfigAsync(roomId?: string): Promise<VenusSimulationConfig> {\r\n if (this._simulationConfig) {\r\n return this._simulationConfig\r\n }\r\n\r\n // Fetch configuration directly\r\n const config = await this.rpcClient.call<VenusSimulationConfig>(\r\n VenusMessageId.H5_SIMULATION_GET_CONFIG,\r\n {},\r\n )\r\n console.log('[Venus SDK] getConfigAsync', config)\r\n if (config) {\r\n this._simulationConfig = config\r\n return config\r\n }\r\n\r\n throw new Error('No simulation configuration available')\r\n }\r\n\r\n executeRecipeAsync(\r\n recipeId: string,\r\n inputs?: any,\r\n options?: ExecuteRecipeOptions,\r\n ): Promise<any> {\r\n return this.rpcClient.call(VenusMessageId.H5_SIMULATION_EXECUTE_RECIPE, {\r\n recipeId: recipeId,\r\n inputs: inputs,\r\n roomId: options?.roomId,\r\n batchAmount: options?.batchAmount,\r\n allowPartialBatch: options?.allowPartialBatch,\r\n entity: options?.entity,\r\n })\r\n }\r\n\r\n collectRecipeAsync(runId: string): Promise<CollectRecipeResult> {\r\n return this.rpcClient.call(VenusMessageId.H5_SIMULATION_COLLECT_RECIPE, {\r\n runId: runId,\r\n })\r\n }\r\n\r\n getActiveRunsAsync(options?: GetActiveRunsOptions): Promise<any> {\r\n return this.rpcClient.call(VenusMessageId.H5_SIMULATION_GET_ACTIVE_RUNS, {\r\n roomId: options?.roomId,\r\n })\r\n }\r\n\r\n executeScopedRecipeAsync(\r\n recipeId: string,\r\n entity: string,\r\n inputs?: any,\r\n options?: any,\r\n ): Promise<ExecuteScopedRecipeResult> {\r\n return this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_EXECUTE_SCOPED_RECIPE,\r\n {\r\n recipeId: recipeId,\r\n entity: entity,\r\n inputs: inputs,\r\n roomId: options?.roomId ?? null,\r\n options,\r\n },\r\n )\r\n }\r\n\r\n getAvailableRecipesAsync(\r\n options?: GetAvailableRecipesOptions,\r\n ): Promise<GetAvailableRecipesResult> {\r\n return this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_GET_AVAILABLE_RECIPES,\r\n {\r\n roomId: options?.roomId || null,\r\n includeActorRecipes: options?.includeActorRecipes || false,\r\n },\r\n )\r\n }\r\n\r\n getRecipeRequirementsAsync(recipe: Recipe): Promise<any> {\r\n return this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_GET_RECIPE_REQUIREMENTS,\r\n {\r\n recipeId: recipe.recipeId,\r\n entity: recipe.entity,\r\n batchAmount: recipe.batchAmount,\r\n },\r\n )\r\n }\r\n\r\n getBatchRecipeRequirementsAsync(\r\n recipes: Recipe[],\r\n ): Promise<GetBatchRecipeRequirements> {\r\n return this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_GET_BATCH_RECIPE_REQUIREMENTS,\r\n {\r\n recipes,\r\n },\r\n )\r\n }\r\n\r\n triggerRecipeChainAsync(\r\n recipeId: string,\r\n options?: TriggerRecipeChainOptions,\r\n ): Promise<any> {\r\n return this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_TRIGGER_RECIPE_CHAIN,\r\n {\r\n triggerRecipeId: recipeId,\r\n context: options?.context,\r\n roomId: options?.roomId,\r\n },\r\n )\r\n }\r\n\r\n getEntityMetadataAsync(entityId: string): Promise<any> {\r\n return this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_GET_ENTITY_METADATA,\r\n {\r\n entityId,\r\n },\r\n )\r\n }\r\n\r\n async resolveFieldValueAsync(\r\n entityId: string,\r\n fieldPath: string,\r\n entity?: string,\r\n ): Promise<any> {\r\n const response = await this.rpcClient.call<ResolveFieldValueResponse>(\r\n VenusMessageId.H5_SIMULATION_RESOLVE_VALUE,\r\n {\r\n entityId,\r\n fieldPath,\r\n entity,\r\n },\r\n )\r\n // Extract primitive value from server response wrapper\r\n return response.value\r\n }\r\n}\r\n\r\ninterface ResolveFieldValueResponse {\r\n value: any\r\n}\r\n","import {\r\n CollectRecipeResult,\r\n ExecuteRecipeOptions,\r\n ExecuteScopedRecipeResult,\r\n GetActiveRunsOptions,\r\n GetAvailableRecipesOptions,\r\n GetAvailableRecipesResult,\r\n GetBatchRecipeRequirements,\r\n Recipe,\r\n SimulationApi,\r\n TriggerRecipeChainOptions,\r\n} from './SimulationApi'\r\nimport {\r\n RecipeRequirementResult,\r\n VenusSimulationConfig,\r\n VenusSimulationEffect,\r\n VenusSimulationState,\r\n} from '../venus-api/types'\r\nimport { sumContributions } from './utils'\r\n\r\nfunction generateAppIdentifier() {\r\n if (typeof window === 'undefined') return 'unknown-app'\r\n\r\n const url = window.location.href\r\n // Extract app ID from URL path like /H5/farming-game/index.html\r\n const match = url.match(/\\/H5\\/([^\\/]+)/)\r\n return match ? match[1] : 'unknown-app'\r\n}\r\n\r\nexport class MockSimulationApi implements SimulationApi {\r\n private readonly mockSimulationConfigs = new Map<\r\n string,\r\n VenusSimulationConfig\r\n >() // appIdentifier -> config\r\n private readonly mockSimulationStates = new Map<\r\n string,\r\n VenusSimulationState\r\n >() // appIdentifier -> config\r\n private readonly mockActiveTimers = new Map() // appIdentifier -> timers[]\r\n private readonly appId: string\r\n private readonly providedSimulationConfig: VenusSimulationConfig | null\r\n\r\n constructor(simulationConfig: VenusSimulationConfig | null = null) {\r\n this.appId = generateAppIdentifier()\r\n this.providedSimulationConfig = simulationConfig\r\n }\r\n\r\n sumContributions(contributions: Record<string, any>): Record<string, number> {\r\n return sumContributions(contributions)\r\n }\r\n\r\n async validateSlotAssignmentAsync(\r\n containerId: string,\r\n slotId: string,\r\n itemId: string,\r\n ): Promise<any> {\r\n this.log('validateSlotAssignmentAsync called:', {\r\n containerId,\r\n slotId,\r\n itemId,\r\n })\r\n return { valid: true, message: 'Mock validation successful' }\r\n }\r\n async executeBatchOperationsAsync(\r\n operations: Array<any>,\r\n validateOnly?: boolean,\r\n ): Promise<any> {\r\n this.log('executeBatchOperationsAsync called:', {\r\n operations,\r\n validateOnly,\r\n })\r\n return {\r\n success: true,\r\n results: operations.map(() => ({ success: true })),\r\n }\r\n }\r\n async getAvailableItemsAsync(\r\n containerId: string,\r\n slotId: string,\r\n ): Promise<Array<any>> {\r\n console.log('[Venus Simulation Mock] getAvailableItemsAsync called:', {\r\n containerId,\r\n slotId,\r\n })\r\n const appIdentifier = generateAppIdentifier()\r\n const mockSimulationConfigs = this.mockSimulationConfigs\r\n const config = mockSimulationConfigs.get(appIdentifier) || {\r\n entities: {},\r\n }\r\n\r\n // Mock: return some available items based on config\r\n const availableItems = Object.entries(config.entities)\r\n .slice(0, 3) // Mock: limit to first 3 entities\r\n .map(([entityId, entity]) => ({\r\n entityId,\r\n quantity: 1,\r\n metadata: entity.metadata,\r\n powerPreview: 100, // Mock power value\r\n }))\r\n\r\n return availableItems\r\n }\r\n async calculatePowerPreviewAsync(\r\n containerId: string,\r\n slotId: string,\r\n candidateItemId: string,\r\n ): Promise<any> {\r\n this.log('calculatePowerPreviewAsync called:', {\r\n containerId,\r\n slotId,\r\n candidateItemId,\r\n })\r\n return {\r\n currentPower: 1000,\r\n previewPower: 1200,\r\n powerDelta: 200,\r\n breakdown: { base: 800, weapon: 200, armor: 200 },\r\n }\r\n }\r\n\r\n async getSlotContainersAsync(): Promise<any> {\r\n this.log('getSlotContainersAsync called')\r\n const appIdentifier = this.appId\r\n const mockSimulationConfigs = this.mockSimulationConfigs\r\n const config = mockSimulationConfigs.get(appIdentifier) || {\r\n entities: {},\r\n }\r\n\r\n // Find entities with slot definitions\r\n const containers = Object.entries(config.entities)\r\n .filter(([_, entity]) => entity.metadata?.slots)\r\n .map(([entityId, entity]) => ({\r\n entityId,\r\n slots: entity.metadata?.slots,\r\n isOwned: true, // Mock: assume all containers are owned\r\n }))\r\n\r\n return containers\r\n }\r\n async getSlotAssignmentsAsync(containerId: string): Promise<any> {\r\n this.log('getSlotAssignmentsAsync called for:', containerId)\r\n // Mock: return empty assignments\r\n return []\r\n }\r\n async resolveFieldValueAsync(\r\n entityId: string,\r\n fieldPath: string,\r\n entity?: string,\r\n ): Promise<any> {\r\n this.log('resolveFieldValueAsync called:', {\r\n entityId,\r\n fieldPath,\r\n entity,\r\n })\r\n\r\n // Mock: return some reasonable field values\r\n const mockValues: Record<string, number> = {\r\n basePower: 850,\r\n weaponPower: 300,\r\n armorPower: 150,\r\n total_power: 1300,\r\n total_defense_power: 5000,\r\n }\r\n\r\n return mockValues[fieldPath] || 100\r\n }\r\n async getEntityMetadataAsync(entityId: string): Promise<any> {\r\n this.log('getEntityMetadataAsync called for:', entityId)\r\n const mockSimulationConfigs = this.mockSimulationConfigs\r\n const appIdentifier = this.appId\r\n const config: VenusSimulationConfig = mockSimulationConfigs.get(\r\n appIdentifier,\r\n ) || {\r\n entities: {},\r\n recipes: {},\r\n fieldResolution: {},\r\n version: '0.0.0',\r\n matchmaking: {},\r\n }\r\n\r\n const entity = config.entities[entityId]\r\n return entity?.metadata || {}\r\n }\r\n\r\n async collectRecipeAsync(runId: string): Promise<CollectRecipeResult> {\r\n this.log('collectRecipeAsync called:', { runId })\r\n\r\n // Mock successful collection with sample rewards\r\n const mockRewards = {\r\n cash: Math.floor(Math.random() * 1000) + 500,\r\n experience: Math.floor(Math.random() * 50) + 25,\r\n }\r\n\r\n return {\r\n success: true,\r\n runId: runId,\r\n rewards: mockRewards,\r\n message: 'Rewards collected successfully',\r\n }\r\n }\r\n\r\n executeRecipeAsync(\r\n recipeId: string,\r\n inputs?: any,\r\n options?: ExecuteRecipeOptions,\r\n ): Promise<any> {\r\n this.log('executeRecipeAsync called:', {\r\n recipeId,\r\n inputs,\r\n options,\r\n })\r\n const appIdentifier = this.appId\r\n return this.executeRecipe(appIdentifier, recipeId, inputs)\r\n }\r\n\r\n async executeScopedRecipeAsync(\r\n recipeId: string,\r\n entity: string,\r\n inputs?: any,\r\n options?: any,\r\n ): Promise<ExecuteScopedRecipeResult> {\r\n this.log('executeScopedRecipeAsync called:', {\r\n recipeId,\r\n entity,\r\n inputs,\r\n roomId: options?.roomId,\r\n options,\r\n })\r\n return {\r\n success: true,\r\n message: 'Mock scoped recipe execution successful',\r\n }\r\n }\r\n\r\n async getActiveRunsAsync(options?: GetActiveRunsOptions): Promise<any> {\r\n this.log('getActiveRunsAsync called:', options)\r\n const appIdentifier = this.appId\r\n\r\n let state = this.mockSimulationStates.get(appIdentifier)\r\n if (!state) {\r\n state = await this.initializeSimulationState(appIdentifier)\r\n }\r\n\r\n return state.activeRuns || []\r\n }\r\n\r\n async getAvailableRecipesAsync(\r\n options?: GetAvailableRecipesOptions,\r\n ): Promise<GetAvailableRecipesResult> {\r\n this.log('getAvailableRecipesAsync called:', options)\r\n\r\n // Mock available recipes based on context\r\n const baseRecipes = [\r\n { id: 'collect_resources', scope: 'player', clientViewable: true },\r\n { id: 'upgrade_equipment', scope: 'player', clientViewable: true },\r\n ]\r\n\r\n if (options?.roomId) {\r\n baseRecipes.push(\r\n { id: 'room_upgrade', scope: 'room', clientViewable: true },\r\n { id: 'cooperative_project', scope: 'room', clientViewable: true },\r\n )\r\n }\r\n\r\n if (options?.includeActorRecipes && options?.roomId) {\r\n baseRecipes.push(\r\n { id: 'trade_with_npc', scope: 'actor', clientViewable: true },\r\n { id: 'attack_monster', scope: 'actor', clientViewable: true },\r\n )\r\n }\r\n\r\n return { success: true, recipes: baseRecipes }\r\n }\r\n\r\n async getBatchRecipeRequirementsAsync(\r\n recipes: Recipe[],\r\n ): Promise<GetBatchRecipeRequirements> {\r\n this.log('getBatchRecipeRequirementsAsync called:', {\r\n count: recipes?.length,\r\n })\r\n const results = (recipes || []).map((q) => ({\r\n recipeId: q.recipeId,\r\n entity: q.entity || null,\r\n amount: q.batchAmount || 1,\r\n inputs: { cash: 'BE:0' },\r\n canAfford: true,\r\n disabled: false,\r\n }))\r\n return { success: true, results: results }\r\n }\r\n\r\n async getRecipeRequirementsAsync(\r\n recipe: Recipe,\r\n ): Promise<RecipeRequirementResult> {\r\n this.log('getRecipeRequirementsAsync called:', recipe)\r\n // Return minimal structure similar to server response for single\r\n return {\r\n recipeId: recipe.recipeId,\r\n entity: recipe.entity || null,\r\n amount: recipe.batchAmount,\r\n inputs: { cash: 'BE:0' },\r\n canAfford: true,\r\n disabled: false,\r\n }\r\n }\r\n\r\n async triggerRecipeChainAsync(\r\n recipeId: string,\r\n options?: TriggerRecipeChainOptions,\r\n ): Promise<any> {\r\n this.log('triggerRecipeChainAsync called:', { recipeId, ...options })\r\n return {\r\n success: true,\r\n message: 'Mock recipe chain triggered successfully',\r\n }\r\n }\r\n\r\n private log(message: string, ...args: any): void {\r\n console.log(`[Venus Sim Mock] ${message}`, args)\r\n }\r\n\r\n private async executeRecipe(\r\n appIdentifier: string,\r\n recipeId: string,\r\n inputs: any,\r\n ) {\r\n this.log(`Executing recipe ${recipeId} for ${appIdentifier}`, inputs)\r\n\r\n const mockSimulationConfigs = this.mockSimulationConfigs\r\n const mockSimulationStates = this.mockSimulationStates\r\n\r\n let config = mockSimulationConfigs.get(appIdentifier)\r\n let state = mockSimulationStates.get(appIdentifier)\r\n\r\n // Initialize if not exists\r\n if (!config || !state) {\r\n state = await this.initializeSimulationState(appIdentifier)\r\n\r\n // NOTE(Zee): Config still can be null here\r\n config = mockSimulationConfigs.get(appIdentifier)\r\n if (!config) {\r\n throw new Error('Failed to initialize simulation config')\r\n }\r\n }\r\n\r\n const recipe = config.recipes?.[recipeId]\r\n if (!recipe) {\r\n throw new Error(`Recipe ${recipeId} not found`)\r\n }\r\n\r\n // Check if recipe is disabled\r\n if (state.disabledRecipes?.includes(recipeId)) {\r\n throw new Error(`Recipe ${recipeId} is disabled`)\r\n }\r\n\r\n // Validate inputs\r\n if (recipe.inputs) {\r\n for (const [entityId, required] of Object.entries(recipe.inputs)) {\r\n const available = state.inventory[entityId] || 0\r\n if (available < required) {\r\n throw new Error(\r\n `Insufficient ${entityId}: required ${required}, available ${available}`,\r\n )\r\n }\r\n }\r\n }\r\n\r\n // Consume inputs\r\n if (recipe.inputs) {\r\n for (const [entityId, input] of Object.entries(recipe.inputs)) {\r\n const inventoryValue = state.inventory[entityId] || 0\r\n if (typeof input === 'number' && typeof inventoryValue === 'number') {\r\n state.inventory[entityId] = inventoryValue - input\r\n }\r\n }\r\n }\r\n\r\n // Apply begin effects immediately\r\n if (recipe.beginEffects) {\r\n this.applyEffects(state, recipe.beginEffects)\r\n }\r\n\r\n // Create simulation run\r\n const runId = this.generateRunId()\r\n const now = Date.now()\r\n const expiresAt = now + (recipe.duration || 0)\r\n\r\n const run = {\r\n id: runId,\r\n recipeId,\r\n status: 'running',\r\n startTime: now,\r\n expiresAt,\r\n inputs: recipe.inputs || {},\r\n }\r\n\r\n state.activeRuns.push(run)\r\n\r\n if (recipe.duration === 0) {\r\n // Instant recipe\r\n this.completeRun(appIdentifier, runId)\r\n return { status: 'completed', runId }\r\n } else {\r\n const mockActiveTimers = this.mockActiveTimers\r\n\r\n // Timed recipe\r\n const timer = setTimeout(() => {\r\n this.completeRun(appIdentifier, runId)\r\n }, recipe.duration)\r\n\r\n const timers = mockActiveTimers.get(appIdentifier) || []\r\n timers.push(timer)\r\n mockActiveTimers.set(appIdentifier, timers)\r\n\r\n return {\r\n status: 'running',\r\n runId,\r\n expiresAt: new Date(expiresAt).toISOString(),\r\n }\r\n }\r\n }\r\n\r\n private async initializeSimulationState(appIdentifier: string) {\r\n this.log(`Initializing simulation state for ${appIdentifier}`)\r\n\r\n const providedSimulationConfig = this.providedSimulationConfig\r\n const mockSimulationConfigs = this.mockSimulationConfigs\r\n const mockSimulationStates = this.mockSimulationStates\r\n const mockActiveTimers = this.mockActiveTimers\r\n\r\n // Get configuration - use provided config or empty config\r\n const config: VenusSimulationConfig = providedSimulationConfig || {\r\n version: '1.0',\r\n entities: {},\r\n recipes: {},\r\n }\r\n mockSimulationConfigs.set(appIdentifier, config)\r\n\r\n // Initialize empty inventory\r\n const initialInventory: Record<string, any> = {}\r\n\r\n // If a config was provided, initialize starting inventory based on it\r\n if (providedSimulationConfig && config.entities) {\r\n // You can customize initial amounts here based on your needs\r\n // This is just an example that gives a small amount of each entity\r\n Object.keys(config.entities).forEach((entityId) => {\r\n initialInventory[entityId] = 0 // Start with 0, let the app set initial values\r\n })\r\n }\r\n\r\n const state = {\r\n inventory: initialInventory,\r\n activeRuns: [],\r\n disabledRecipes: new Array<string>(),\r\n }\r\n\r\n // Check for recipes that start disabled\r\n if (config.recipes) {\r\n Object.entries(config.recipes).forEach(([recipeId, recipe]) => {\r\n if (recipe.metadata?.startsDisabled) {\r\n state.disabledRecipes.push(recipeId)\r\n }\r\n })\r\n }\r\n\r\n mockSimulationStates.set(appIdentifier, state)\r\n mockActiveTimers.set(appIdentifier, [])\r\n\r\n console.log(\r\n `[Venus Simulation Mock] Initialized state for ${appIdentifier}:`,\r\n state,\r\n )\r\n\r\n // Auto-start any auto-restart recipes if configured\r\n if (config.recipes) {\r\n Object.entries(config.recipes).forEach(([recipeId, recipe]) => {\r\n // Check for autoRestart at top level OR in metadata\r\n const isAutoRestart = recipe.autoRestart || recipe.metadata?.autoRestart\r\n if (isAutoRestart && recipe.outputs) {\r\n this.log(`Found auto-restart recipe: ${recipeId}`, {\r\n topLevelAutoRestart: recipe.autoRestart,\r\n metadataAutoRestart: recipe.metadata?.autoRestart,\r\n hasOutputs: !!recipe.outputs,\r\n duration: recipe.duration,\r\n })\r\n\r\n // Check if this recipe should auto-start based on its condition\r\n const condition =\r\n recipe.maxRestartCondition || recipe.metadata?.maxRestartCondition\r\n if (condition && condition.entity) {\r\n const currentAmount = initialInventory[condition.entity] || 0\r\n if (currentAmount < condition.maxValue) {\r\n console.log(\r\n `[Venus Simulation Mock] Auto-starting ${recipeId} at initialization`,\r\n {\r\n currentAmount,\r\n maxValue: condition.maxValue,\r\n entity: condition.entity,\r\n },\r\n )\r\n setTimeout(() => {\r\n this.executeRecipe(appIdentifier, recipeId, {})\r\n }, 1000)\r\n }\r\n } else {\r\n // No condition means always auto-start (like building_income_tick)\r\n console.log(\r\n `[Venus Simulation Mock] Auto-starting ${recipeId} at initialization (no condition)`,\r\n )\r\n setTimeout(() => {\r\n this.executeRecipe(appIdentifier, recipeId, {})\r\n }, 1000)\r\n }\r\n }\r\n })\r\n }\r\n\r\n return state\r\n }\r\n\r\n private generateRunId() {\r\n return 'run_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\r\n }\r\n\r\n private completeRun(appIdentifier: string, runId: string) {\r\n this.log(`Completing run ${runId} for ${appIdentifier}`)\r\n\r\n const mockSimulationConfigs = this.mockSimulationConfigs\r\n const mockSimulationStates = this.mockSimulationStates\r\n\r\n const config = mockSimulationConfigs.get(appIdentifier)\r\n const state = mockSimulationStates.get(appIdentifier)\r\n\r\n if (!config || !state) return\r\n\r\n const runIndex = state.activeRuns.findIndex((r: any) => r.id === runId)\r\n if (runIndex === -1) return\r\n\r\n const run = state.activeRuns[runIndex]\r\n const recipe = config.recipes?.[run.recipeId]\r\n\r\n if (!recipe) return\r\n\r\n // Calculate outputs\r\n const outputs: Record<string, any> = {}\r\n const rng = this.createSeededRandom(runId) // Use run ID as seed\r\n\r\n if (recipe.outputs) {\r\n for (const [entityId, value] of Object.entries(recipe.outputs)) {\r\n if (typeof value === 'number') {\r\n outputs[entityId] = value\r\n } else if (\r\n typeof value === 'object' &&\r\n value != null &&\r\n 'min' in value &&\r\n 'max' in value &&\r\n typeof value.min == 'number' &&\r\n typeof value.max === 'number'\r\n ) {\r\n outputs[entityId] =\r\n Math.floor(rng() * (value.max - value.min + 1)) + value.min\r\n }\r\n }\r\n }\r\n\r\n // Add outputs to inventory\r\n for (const [entityId, amount] of Object.entries(outputs)) {\r\n state.inventory[entityId] = (state.inventory[entityId] || 0) + amount\r\n }\r\n\r\n // Apply end effects\r\n if (recipe.endEffects) {\r\n this.applyEffects(state, recipe.endEffects)\r\n }\r\n\r\n // Update run\r\n run.status = 'completed'\r\n run.outputs = outputs\r\n\r\n // Remove from active runs\r\n state.activeRuns.splice(runIndex, 1)\r\n\r\n // Check for auto-restart (top level OR metadata)\r\n const isAutoRestart = recipe.autoRestart || recipe.metadata?.autoRestart\r\n if (isAutoRestart) {\r\n console.log(\r\n `[Venus Simulation Mock] Checking auto-restart for ${run.recipeId}`,\r\n {\r\n topLevelAutoRestart: recipe.autoRestart,\r\n metadataAutoRestart: recipe.metadata?.autoRestart,\r\n hasCondition: !!(\r\n recipe.maxRestartCondition || recipe.metadata?.maxRestartCondition\r\n ),\r\n },\r\n )\r\n\r\n const condition =\r\n recipe.maxRestartCondition || recipe.metadata?.maxRestartCondition\r\n if (condition) {\r\n const currentAmount = state.inventory[condition.entity] || 0\r\n if (currentAmount < condition.maxValue) {\r\n console.log(\r\n `[Venus Simulation Mock] Auto-restarting ${run.recipeId}`,\r\n {\r\n currentAmount,\r\n maxValue: condition.maxValue,\r\n entity: condition.entity,\r\n },\r\n )\r\n setTimeout(() => {\r\n this.executeRecipe(appIdentifier, run.recipeId, recipe.inputs || {})\r\n }, 1000)\r\n }\r\n } else {\r\n // No condition means always auto-restart (like building_income_tick)\r\n console.log(\r\n `[Venus Simulation Mock] Auto-restarting ${run.recipeId} (no condition)`,\r\n )\r\n setTimeout(() => {\r\n this.executeRecipe(appIdentifier, run.recipeId, recipe.inputs || {})\r\n }, 1000)\r\n }\r\n }\r\n\r\n console.log(\r\n `[Venus Simulation Mock] Completed run ${runId}, outputs:`,\r\n outputs,\r\n )\r\n }\r\n\r\n private createSeededRandom(seed: string) {\r\n let hash = 0\r\n for (let i = 0; i < seed.length; i++) {\r\n const char = seed.charCodeAt(i)\r\n hash = (hash << 5) - hash + char\r\n hash = hash & hash\r\n }\r\n\r\n return () => {\r\n hash = (hash * 9301 + 49297) % 233280\r\n return hash / 233280\r\n }\r\n }\r\n\r\n private applyEffects(state: any, effects: VenusSimulationEffect[]) {\r\n if (!effects || !Array.isArray(effects)) return\r\n\r\n for (const effect of effects) {\r\n switch (effect.type) {\r\n case 'set':\r\n state.inventory[effect.target] = effect.value\r\n console.log(\r\n `[Venus Simulation Mock] Effect: Set ${effect.target} = ${effect.value}`,\r\n )\r\n break\r\n case 'add':\r\n state.inventory[effect.target] =\r\n (state.inventory[effect.target] || 0) + effect.value\r\n console.log(\r\n `[Venus Simulation Mock] Effect: Add ${effect.value} to ${effect.target} (new value: ${state.inventory[effect.target]})`,\r\n )\r\n break\r\n case 'multiply':\r\n state.inventory[effect.target] =\r\n (state.inventory[effect.target] || 0) * effect.value\r\n console.log(\r\n `[Venus Simulation Mock] Effect: Multiply ${effect.target} by ${effect.value} (new value: ${state.inventory[effect.target]})`,\r\n )\r\n break\r\n case 'min':\r\n state.inventory[effect.target] = Math.max(\r\n state.inventory[effect.target] || 0,\r\n effect.value,\r\n )\r\n console.log(\r\n `[Venus Simulation Mock] Effect: Set ${effect.target} min ${effect.value} (new value: ${state.inventory[effect.target]})`,\r\n )\r\n break\r\n case 'max':\r\n state.inventory[effect.target] = Math.min(\r\n state.inventory[effect.target] || 0,\r\n effect.value,\r\n )\r\n console.log(\r\n `[Venus Simulation Mock] Effect: Set ${effect.target} max ${effect.value} (new value: ${state.inventory[effect.target]})`,\r\n )\r\n break\r\n case 'enable_recipe':\r\n if (state.disabledRecipes?.includes(effect.target)) {\r\n state.disabledRecipes = state.disabledRecipes.filter(\r\n (r: any) => r !== effect.target,\r\n )\r\n console.log(\r\n `[Venus Simulation Mock] Effect: Enabled recipe ${effect.target}`,\r\n )\r\n }\r\n break\r\n case 'disable_recipe':\r\n if (!state.disabledRecipes) state.disabledRecipes = []\r\n if (!state.disabledRecipes.includes(effect.target)) {\r\n state.disabledRecipes.push(effect.target)\r\n console.log(\r\n `[Venus Simulation Mock] Effect: Disabled recipe ${effect.target}`,\r\n )\r\n }\r\n break\r\n case 'trigger_recipe':\r\n // TODO: Implement recipe triggering if needed\r\n console.log(\r\n `[Venus Simulation Mock] Effect: Trigger recipe ${effect.target} (not implemented)`,\r\n )\r\n break\r\n default:\r\n console.warn(\r\n `[Venus Simulation Mock] Unknown effect type: ${effect.type}`,\r\n )\r\n }\r\n }\r\n }\r\n\r\n async getConfigAsync(): Promise<any> {\r\n console.log('[Venus Simulation Mock] getConfigAsync called')\r\n const appIdentifier = this.appId\r\n const mockSimulationConfigs = this.mockSimulationConfigs\r\n const config = mockSimulationConfigs.get(appIdentifier) || {\r\n version: '1.0',\r\n entities: {},\r\n recipes: {},\r\n }\r\n return config\r\n }\r\n\r\n async getStateAsync(roomId?: string): Promise<any> {\r\n this.log('getStateAsync called:', roomId)\r\n const appIdentifier = this.appId\r\n\r\n const mockSimulationStates = this.mockSimulationStates\r\n let state = mockSimulationStates.get(appIdentifier)\r\n if (!state) {\r\n state = await this.initializeSimulationState(appIdentifier)\r\n }\r\n\r\n const mockSimulationConfigs = this.mockSimulationConfigs\r\n return {\r\n ...state,\r\n roomId: roomId,\r\n configuration: mockSimulationConfigs.get(appIdentifier),\r\n }\r\n }\r\n\r\n async assignItemToSlotAsync(\r\n containerId: string,\r\n slotId: string,\r\n itemId: string,\r\n ): Promise<any> {\r\n this.log('assignItemToSlotAsync called:', {\r\n containerId,\r\n slotId,\r\n itemId,\r\n })\r\n return { success: true, message: 'Mock assignment successful' }\r\n }\r\n\r\n async removeItemFromSlotAsync(\r\n containerId: string,\r\n slotId: string,\r\n ): Promise<any> {\r\n this.log('removeItemFromSlotAsync called:', {\r\n containerId,\r\n slotId,\r\n })\r\n return { success: true, message: 'Mock removal successful' }\r\n }\r\n}\r\n","import { VenusAPI, VenusSimulationAPI } from '../venus-api/types'\r\nimport { Host } from '../Host'\r\n\r\nexport * from './SimulationApi'\r\nexport * from './RpcSimulationApi'\r\nexport * from './MockSimulationApi'\r\n\r\nexport function initializeSimulation(venusApi: VenusAPI, host: Host) {\r\n console.log('[Venus SDK] Initializing new Simulation Api')\r\n\r\n venusApi.simulation = {\r\n isEnabled: () => true,\r\n } as VenusSimulationAPI\r\n\r\n venusApi.simulation.getConfigAsync = () => {\r\n return host.simulation.getConfigAsync()\r\n }\r\n\r\n venusApi.simulation.getStateAsync = (options) => {\r\n return host.simulation.getStateAsync(options?.roomId)\r\n }\r\n\r\n venusApi.simulation.executeRecipeAsync = (recipeId, inputs, options) => {\r\n return host.simulation.executeRecipeAsync(recipeId, inputs, options)\r\n }\r\n\r\n venusApi.simulation.getActiveRunsAsync = () => {\r\n return host.simulation.getActiveRunsAsync()\r\n }\r\n\r\n venusApi.simulation.collectRecipeAsync = (runId: string) => {\r\n return host.simulation.collectRecipeAsync(runId)\r\n }\r\n\r\n venusApi.simulation.executeScopedRecipeAsync = (\r\n recipeId,\r\n entity,\r\n inputs,\r\n roomId,\r\n options,\r\n ) => {\r\n return host.simulation.executeScopedRecipeAsync(recipeId, entity, inputs, {\r\n roomId,\r\n ...options,\r\n })\r\n }\r\n\r\n venusApi.simulation.triggerRecipeChainAsync = (recipeId, context, roomId) => {\r\n return host.simulation.triggerRecipeChainAsync(recipeId, {\r\n context: context,\r\n roomId: roomId,\r\n })\r\n }\r\n\r\n venusApi.simulation.getAvailableRecipesAsync = async (\r\n roomId,\r\n includeActorRecipes,\r\n ) => {\r\n const result = await host.simulation.getAvailableRecipesAsync({\r\n roomId: roomId,\r\n includeActorRecipes: includeActorRecipes,\r\n })\r\n return result.recipes\r\n }\r\n\r\n venusApi.simulation.getRecipeRequirementsAsync = (\r\n recipeId,\r\n entity,\r\n amount,\r\n ) => {\r\n return host.simulation.getRecipeRequirementsAsync({\r\n recipeId: recipeId,\r\n entity: entity,\r\n batchAmount: amount,\r\n })\r\n }\r\n\r\n venusApi.simulation.getBatchRecipeRequirementsAsync = (recipes) => {\r\n return host.simulation.getBatchRecipeRequirementsAsync(recipes)\r\n }\r\n\r\n venusApi.simulation.resolveFieldValueAsync = (\r\n entityId,\r\n fieldPath,\r\n entity,\r\n ) => {\r\n return host.simulation.resolveFieldValueAsync(entityId, fieldPath, entity)\r\n }\r\n\r\n venusApi.simulation.getEntityMetadataAsync = (entityId) => {\r\n return host.simulation.getEntityMetadataAsync(entityId)\r\n }\r\n\r\n venusApi.simulation.getSlotAssignmentsAsync = (containerId) => {\r\n return host.simulation.getSlotAssignmentsAsync(containerId)\r\n }\r\n\r\n venusApi.simulation.getSlotContainersAsync = () => {\r\n return host.simulation.getSlotContainersAsync()\r\n }\r\n\r\n venusApi.simulation.assignItemToSlotAsync = (containerId, slotId, itemId) => {\r\n return host.simulation.assignItemToSlotAsync(containerId, slotId, itemId)\r\n }\r\n\r\n venusApi.simulation.removeItemFromSlotAsync = (containerId, slotId) => {\r\n return host.simulation.removeItemFromSlotAsync(containerId, slotId)\r\n }\r\n\r\n venusApi.simulation.getAvailableItemsAsync = (containerId, slotId) => {\r\n return host.simulation.getAvailableItemsAsync(containerId, slotId)\r\n }\r\n\r\n venusApi.simulation.calculatePowerPreviewAsync = (\r\n containerId: string,\r\n slotId: string,\r\n candidateItemId: string,\r\n ) => {\r\n return host.simulation.calculatePowerPreviewAsync(\r\n containerId,\r\n slotId,\r\n candidateItemId,\r\n )\r\n }\r\n\r\n venusApi.simulation.executeBatchOperationsAsync = (\r\n operations,\r\n validateOnly,\r\n ) => {\r\n return host.simulation.executeBatchOperationsAsync(operations, validateOnly)\r\n }\r\n\r\n venusApi.simulation.validateSlotAssignmentAsync = (\r\n containerId,\r\n slotId,\r\n itemId,\r\n ) => {\r\n return host.simulation.validateSlotAssignmentAsync(\r\n containerId,\r\n slotId,\r\n itemId,\r\n )\r\n }\r\n\r\n venusApi.simulation.sumContributions = (contributions) => {\r\n return host.simulation.sumContributions(contributions)\r\n }\r\n}\r\n","import { AnalyticsApi, MockAnalyticsApi } from './analytics'\r\nimport { Host, InitializationContext, InitializationOptions } 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, initializeRoomsApi } from './rooms'\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\nimport { LeaderboardApi, MockLeaderboardApi } from './leaderboard'\r\nimport { MockPreloaderApi, PreloaderApi } from './game-preloader'\r\nimport { SocialApi } from './social/SocialApi'\r\nimport { MockSocialApi } from './social/MockSocialApi'\r\n\r\nconst ROOMS_UNAVAILABLE_MESSAGE =\r\n '[Venus SDK] Rooms API is only available when running inside the Venus host environment.'\r\n\r\nfunction createUnavailableRoomsApi(): RoomsApi {\r\n const roomsUnavailableError = (): Error => new Error(ROOMS_UNAVAILABLE_MESSAGE)\r\n\r\n return {\r\n async createRoom(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n async joinOrCreateRoom(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n async getUserRooms(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n async joinRoomByCode(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n subscribe(): never {\r\n throw roomsUnavailableError()\r\n },\r\n async updateData(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n async getData(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n async sendMessage(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n async leave(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n async startGame(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n async proposeMove(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n async validateMove(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n }\r\n}\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 readonly leaderboard: LeaderboardApi\r\n readonly preloader: PreloaderApi\r\n readonly social: SocialApi\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 = createUnavailableRoomsApi()\r\n this.logging = new MockLoggingApi()\r\n this.iap = new MockIapApi()\r\n this.social = new MockSocialApi()\r\n this.leaderboard = new MockLeaderboardApi()\r\n\r\n initializeRoomsApi(this.venusApi, this)\r\n\r\n this.preloader = new MockPreloaderApi()\r\n venusApi.isMock = () => true\r\n this.venusApi.sharedAssets = new MockSharedAssetsApi(this.venusApi)\r\n }\r\n\r\n initialize(options?: InitializationOptions): Promise<InitializationContext> {\r\n this._isInitialized = true\r\n const controls = this.updateUiControls()\r\n return Promise.resolve({\r\n initializeAsleep: false,\r\n hudInsets: {\r\n top: controls.feedHeader.height,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n }\r\n })\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\r\n if (this.state === MockHostState.PLAYING) {\r\n this.triggerLifecycleEvent(VenusMessageId.PAUSE)\r\n this.state = MockHostState.PAUSED\r\n }\r\n\r\n const actionSheetItems: ActionSheetItem[] = []\r\n\r\n const awakeAction: ActionSheetItem = {\r\n label: '⏰ Awake',\r\n id: 'awakeAction',\r\n }\r\n\r\n const sleepAction: ActionSheetItem = {\r\n label: '💤 Sleep',\r\n id: 'sleepAction',\r\n }\r\n\r\n const quitAction: ActionSheetItem = {\r\n label: '🛑 Quit',\r\n id: 'quitAction',\r\n }\r\n\r\n const playAction: ActionSheetItem = {\r\n label: '▶️ Play',\r\n id: 'playAction',\r\n }\r\n\r\n if (this.state === MockHostState.PAUSED) {\r\n // Only add sleep action if we are paused\r\n actionSheetItems.push(sleepAction)\r\n } else if (this.state === MockHostState.SLEEPING) {\r\n // Only add awake action if we are sleeping\r\n actionSheetItems.push(awakeAction)\r\n }\r\n\r\n if (this.state !== MockHostState.TERMINATED) {\r\n // Add quit action if the game has not been terminated yet\r\n actionSheetItems.push(quitAction)\r\n } else if (this.state === MockHostState.TERMINATED) {\r\n // Add play action only if the game is terminated\r\n actionSheetItems.push(playAction)\r\n }\r\n\r\n const action = await this.showActionSheetOverlay(actionSheetItems)\r\n\r\n if (action === awakeAction.id) {\r\n this.tryAwake()\r\n } else if (action === sleepAction.id) {\r\n this.trySleep()\r\n } else if (action === playAction.id) {\r\n this.tryPlay()\r\n } else if (action === quitAction.id) {\r\n this.tryQuit()\r\n } else {\r\n this.tryResume()\r\n }\r\n }\r\n\r\n private tryAwake() {\r\n if (this.state === MockHostState.SLEEPING) {\r\n this.triggerLifecycleEvent(VenusMessageId.AWAKE)\r\n this.state = MockHostState.PAUSED\r\n }\r\n }\r\n\r\n private trySleep() {\r\n if (this.state === MockHostState.PAUSED) {\r\n this.triggerLifecycleEvent(VenusMessageId.SLEEP)\r\n this.state = MockHostState.SLEEPING\r\n }\r\n }\r\n\r\n private tryPlay() {\r\n if (this.state === MockHostState.TERMINATED) {\r\n this.triggerLifecycleEvent(VenusMessageId.AWAKE)\r\n this.state = MockHostState.PAUSED\r\n this.triggerLifecycleEvent(VenusMessageId.RESUME)\r\n this.state = MockHostState.PLAYING\r\n }\r\n }\r\n\r\n private tryQuit() {\r\n if (this.state === MockHostState.PLAYING) {\r\n this.triggerLifecycleEvent(VenusMessageId.PAUSE)\r\n this.state = MockHostState.PAUSED\r\n }\r\n\r\n if (this.state === MockHostState.PAUSED) {\r\n this.triggerLifecycleEvent(VenusMessageId.SLEEP)\r\n this.state = MockHostState.SLEEPING\r\n }\r\n\r\n if (this.state === MockHostState.SLEEPING){\r\n this.triggerLifecycleEvent(VenusMessageId.QUIT)\r\n this.state = MockHostState.TERMINATED\r\n }\r\n }\r\n\r\n private tryResume() {\r\n if (this.state === MockHostState.PAUSED) {\r\n this.triggerLifecycleEvent(VenusMessageId.RESUME)\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.PAUSE) {\r\n this._mockLifecyclesApi.triggerPauseCallbacks()\r\n } else if (name == VenusMessageId.RESUME) {\r\n this._mockLifecyclesApi.triggerResumeCallbacks()\r\n } else if (name == VenusMessageId.QUIT) {\r\n this._mockLifecyclesApi.triggerQuitCallbacks()\r\n } else if (name == VenusMessageId.AWAKE) {\r\n this._mockLifecyclesApi.triggerAwakeCallbacks()\r\n } else if (name == VenusMessageId.SLEEP) {\r\n this._mockLifecyclesApi.triggerSleepCallbacks()\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 { LoggingApi } from './LoggingApi'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\n\r\nexport class MockLoggingApi implements LoggingApi {\r\n logDebug(message?: any, ...args: any[]): void {\r\n console.log(`[Venus Mock] ${message}`, args)\r\n }\r\n\r\n logError(message: string, ...args: any[]): void {\r\n console.error(`[Venus Mock] ${message}`, args)\r\n }\r\n}\r\n","import { LoggingApi } from './LoggingApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport { Host } from '../Host'\r\n\r\nexport class RpcLoggingApi implements LoggingApi {\r\n private readonly host: Host\r\n private readonly rpcClient: RpcClient\r\n\r\n constructor(host: Host, rpcClient: RpcClient) {\r\n this.host = host\r\n this.rpcClient = rpcClient\r\n }\r\n\r\n logDebug(message: string, ...args: any[]): void {\r\n if (!this.host.isInitialized) {\r\n console.log(message, args)\r\n } else {\r\n message = this.buildMessage(message, ...args)\r\n this.rpcClient.call(VenusMessageId.DEBUG, { level: 'log', message })\r\n }\r\n }\r\n\r\n logError(message: string, ...args: any[]): void {\r\n if (!this.host.isInitialized) {\r\n console.log(message, ...args)\r\n } else {\r\n message = this.buildMessage(message, ...args)\r\n this.rpcClient.call(VenusMessageId.DEBUG, {\r\n level: 'error',\r\n message,\r\n })\r\n }\r\n }\r\n\r\n private buildMessage(message: string, ...args: any[]): string {\r\n // Handle multiple parameters like console.error\r\n if (args && args.length > 0) {\r\n const stringArgs: string[] = []\r\n for (const arg of args) {\r\n const argAsString = this.toStringArg(arg)\r\n if (argAsString) {\r\n stringArgs.push(argAsString)\r\n }\r\n }\r\n message += stringArgs.join(' ')\r\n }\r\n return message\r\n }\r\n\r\n private toStringArg(arg: any) {\r\n if (arg) {\r\n if (typeof arg === 'object') {\r\n try {\r\n return JSON.stringify(arg)\r\n } catch (e) {\r\n return String(arg)\r\n }\r\n }\r\n return String(arg)\r\n }\r\n return undefined\r\n }\r\n}\r\n","import { Host } from '../Host'\nimport { VenusAPI } from '../venus-api/types'\n\nexport * from './LoggingApi'\nexport * from './MockLoggingApi'\nexport * from './RpcLoggingApi'\n\nexport function initializeLoggingApi(venusApi: VenusAPI, host: Host): void {\n venusApi.log = (message, ...args: any[]) => {\n return host.logging.logDebug(message, ...args)\n }\n\n venusApi.error = (message, ...args: any[]) => {\n return host.logging.logError(message, ...args)\n }\n}\n","export const BurgerTimeAssetsCdnPath = 'burger-time/Core.stow'\r\nexport const CharacterAssetsCdnPath = 'burger-time/Character.stow'\r\n","import { SharedAssetsApi } from './SharedAssetsApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport { VenusAPI } from '../venus-api'\r\nimport { BurgerTimeAssetsCdnPath, CharacterAssetsCdnPath } from './consts'\r\n\r\nexport class RpcSharedAssetsApi implements SharedAssetsApi {\r\n private readonly venusApi: VenusAPI\r\n private readonly rpcClient: RpcClient\r\n\r\n constructor(rpcClient: RpcClient, venusApi: VenusAPI) {\r\n this.rpcClient = rpcClient\r\n this.venusApi = venusApi\r\n }\r\n\r\n async loadBurgerTimeAssetsBundle(): Promise<ArrayBuffer> {\r\n try {\r\n const response = await this.rpcClient.callT<\r\n LoadEmbeddedAssetsRequest,\r\n LoadEmbeddedAssetsResponse\r\n >(VenusMessageId.H5_LOAD_EMBEDDED_ASSET, {\r\n assetKey: 'burgerTimeCoreBundle',\r\n })\r\n return base64ToArrayBuffer(response.base64Data)\r\n } catch (err) {\r\n try {\r\n const blob = await this.venusApi.cdn.fetchBlob(BurgerTimeAssetsCdnPath)\r\n return await blob.arrayBuffer()\r\n } catch (e) {\r\n throw new Error('Failed to load burgerTimeAssetsBundle')\r\n }\r\n }\r\n }\r\n\r\n async loadCharactersBundle(): Promise<ArrayBuffer> {\r\n try {\r\n const response = await this.rpcClient.callT<\r\n LoadEmbeddedAssetsRequest,\r\n LoadEmbeddedAssetsResponse\r\n >(VenusMessageId.H5_LOAD_EMBEDDED_ASSET, {\r\n assetKey: 'characters',\r\n })\r\n return base64ToArrayBuffer(response.base64Data)\r\n } catch (err) {\r\n try {\r\n const blob = await this.venusApi.cdn.fetchBlob(CharacterAssetsCdnPath)\r\n return await blob.arrayBuffer()\r\n } catch (e) {\r\n throw new Error('Failed to load charactersBundle')\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport interface LoadEmbeddedAssetsRequest {\r\n assetKey: string\r\n}\r\n\r\nexport interface LoadEmbeddedAssetsResponse {\r\n base64Data: string\r\n}\r\n\r\nfunction base64ToArrayBuffer(base64: string): ArrayBuffer {\r\n // Decode base64 to raw binary string\r\n const binaryString = atob(base64)\r\n\r\n // Create a buffer with the same length\r\n const len = binaryString.length\r\n const bytes = new Uint8Array(len)\r\n\r\n // Fill the buffer with the char codes\r\n for (let i = 0; i < len; i++) {\r\n bytes[i] = binaryString.charCodeAt(i)\r\n }\r\n\r\n // Return the ArrayBuffer\r\n return bytes.buffer\r\n}\r\n","import { SharedAssetsApi } from './SharedAssetsApi'\r\nimport { VenusAPI } from '../venus-api/types'\r\nimport { BurgerTimeAssetsCdnPath, CharacterAssetsCdnPath } from './consts'\r\n\r\nexport class MockSharedAssetsApi implements SharedAssetsApi {\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 loadBurgerTimeAssetsBundle(): Promise<ArrayBuffer> {\r\n const blob = await this.venusApi.cdn.fetchBlob(BurgerTimeAssetsCdnPath)\r\n return await blob.arrayBuffer()\r\n }\r\n\r\n async loadCharactersBundle(): Promise<ArrayBuffer> {\r\n const blob = await this.venusApi.cdn.fetchBlob(CharacterAssetsCdnPath)\r\n return await blob.arrayBuffer()\r\n }\r\n}\r\n","import { PreloaderApi } from \"./PreloaderApi\"\r\n\r\nexport class MockPreloaderApi implements PreloaderApi {\r\n async showLoadScreen(): Promise<void> {\r\n console.log('showLoadScreen')\r\n }\r\n\r\n async hideLoadScreen(): Promise<void> {\r\n console.log('hideLoadScreen')\r\n }\r\n\r\n async setLoaderText(text: string): Promise<void> {\r\n console.log('setLoaderText', text)\r\n }\r\n\r\n async setLoaderProgress(progress: number): Promise<void> {\r\n console.log('setLoaderProgress', progress)\r\n }\r\n}","import { PreloaderApi } from './PreloaderApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\n\r\nexport class RpcPreloaderApi implements PreloaderApi {\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 showLoadScreen(): Promise<void> {\r\n await this.rpcClient.call(VenusMessageId.H5_SHOW_LOAD_SCREEN)\r\n }\r\n\r\n async hideLoadScreen(): Promise<void> {\r\n await this.rpcClient.call(VenusMessageId.H5_HIDE_LOAD_SCREEN)\r\n }\r\n\r\n async setLoaderText(text: string): Promise<void> {\r\n await this.rpcClient.call(VenusMessageId.H5_SET_LOADER_TEXT, { text })\r\n }\r\n\r\n async setLoaderProgress(progress: number): Promise<void> {\r\n await this.rpcClient.call(VenusMessageId.H5_SET_LOADER_PROGRESS, { progress })\r\n }\r\n}","import { VenusAPI } from '../venus-api/types'\r\nimport { Host } from '../Host'\r\n\r\nexport * from './PreloaderApi'\r\nexport * from './MockPreloaderApi'\r\nexport * from './RpcPreloaderApi'\r\n\r\nexport function initializePreloader(venusApi: VenusAPI, host: Host) {\r\n venusApi.preloader = host.preloader\r\n}","import {\r\n QRCodeResult,\r\n ShareLinkResult,\r\n SocialApi,\r\n SocialQRCodeOptions,\r\n} from './SocialApi';\r\n\r\nconst MOCK_QR_CODE =\r\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==';\r\n\r\nexport class MockSocialApi implements SocialApi {\r\n async shareLinkAsync(options: {\r\n launchParams: Record<string, string>;\r\n }): Promise<ShareLinkResult> {\r\n const shareUrl = this.createMockUrl(options.launchParams);\r\n\r\n if (typeof navigator !== 'undefined' && navigator.clipboard) {\r\n try {\r\n await navigator.clipboard.writeText(shareUrl);\r\n console.log('[Venus SDK] (mock) Copied share URL to clipboard');\r\n } catch (error) {\r\n console.warn(\r\n '[Venus SDK] (mock) Failed to copy share URL to clipboard',\r\n error,\r\n );\r\n }\r\n }\r\n\r\n return { shareUrl };\r\n }\r\n\r\n async createQRCodeAsync(options: {\r\n launchParams: Record<string, string>;\r\n qrOptions?: SocialQRCodeOptions;\r\n }): Promise<QRCodeResult> {\r\n const shareUrl = this.createMockUrl(options.launchParams);\r\n\r\n return {\r\n shareUrl,\r\n qrCode: MOCK_QR_CODE,\r\n };\r\n }\r\n\r\n private createMockUrl(launchParams: Record<string, string>): string {\r\n const params = new URLSearchParams(launchParams);\r\n return `https://mock-share.venus.test/share?${params.toString()}`;\r\n }\r\n}\r\n","import { RpcRequest } from './RpcRequest.ts'\r\nimport { RpcResponse } from './RpcResponse.ts'\r\nimport { RpcTransport } from './RpcTransport.ts'\r\nimport { RpcNotification } from './RpcNotification'\r\n\r\ninterface PendingCall {\r\n id: string\r\n resolve: (value: any) => void\r\n reject: (error: any) => void\r\n}\r\n\r\nexport interface Subscription {\r\n unsubscribe: () => void\r\n}\r\n\r\nexport class RpcClient {\r\n private readonly pendingCalls = new Map<string, PendingCall>()\r\n private readonly notificationCallbacks = new Map<string, Function>()\r\n\r\n private onResponseSub: Subscription | null = null\r\n private onNotificationSub: Subscription | null = null\r\n private transport: RpcTransport | null = null\r\n\r\n start(transport: RpcTransport) {\r\n this.transport = transport\r\n this.onResponseSub = transport.onResponse(async (response) => {\r\n return this.handleRpcResponse(response)\r\n })\r\n this.onNotificationSub = transport.onNotification(async (notification) => {\r\n return this.handleRpcNotification(notification)\r\n })\r\n }\r\n\r\n stop() {\r\n if (this.onResponseSub) {\r\n this.onResponseSub.unsubscribe()\r\n this.onResponseSub = null\r\n }\r\n\r\n if (this.onNotificationSub) {\r\n this.onNotificationSub.unsubscribe()\r\n this.onNotificationSub = null\r\n }\r\n\r\n this.transport = null\r\n }\r\n\r\n onNotification<TPayload>(\r\n id: string,\r\n callback: (payload: TPayload) => void,\r\n ): Subscription {\r\n this.notificationCallbacks.set(id, callback)\r\n return {\r\n unsubscribe: () => {\r\n this.notificationCallbacks.delete(id)\r\n },\r\n }\r\n }\r\n\r\n callT<TArgs, TResult>(\r\n method: string,\r\n args: TArgs,\r\n timeout: number = 5000,\r\n ): Promise<TResult> {\r\n return this.call(method, args, timeout)\r\n }\r\n\r\n async call<TResponse>(\r\n method: string,\r\n args?: any,\r\n timeout: number = 5000,\r\n ): Promise<TResponse> {\r\n // NOTE(Zee): Make this into options?\r\n return new Promise((resolve, reject) => {\r\n const id = this.generateId()\r\n this.addPendingCall(id, resolve, reject)\r\n\r\n const request: RpcRequest = {\r\n type: 'rpc-request',\r\n id,\r\n method,\r\n args: args,\r\n }\r\n\r\n if (this.transport) {\r\n this.transport.sendRequest(request)\r\n }\r\n\r\n // NOTE(Zee): This is dangerous. We REALLY need to rely on the host to send back a response, otherwise we may permanently hang here...\r\n if (timeout > 0) {\r\n setTimeout(() => {\r\n if (this.hasPendingCall(id)) {\r\n this.removePendingCall(id)\r\n reject(new Error(`RPC call ${method} timed out`))\r\n }\r\n }, timeout)\r\n }\r\n })\r\n }\r\n\r\n private hasPendingCall(id: string): boolean {\r\n return this.pendingCalls.has(id)\r\n }\r\n\r\n private addPendingCall(\r\n id: string,\r\n resolve: (v: any) => void,\r\n reject: (e: any) => void,\r\n ) {\r\n this.pendingCalls.set(id, {\r\n id: id,\r\n resolve: resolve,\r\n reject: reject,\r\n })\r\n }\r\n\r\n private removePendingCall(id: string) {\r\n this.pendingCalls.delete(id)\r\n }\r\n\r\n private getPendingCall(id: string) {\r\n return this.pendingCalls.get(id)\r\n }\r\n\r\n private generateId(): string {\r\n return `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`\r\n }\r\n\r\n private handleRpcResponse(response: RpcResponse): boolean {\r\n const pending = this.getPendingCall(response.id)\r\n if (!pending) {\r\n return false\r\n }\r\n this.removePendingCall(response.id)\r\n\r\n if (response.error) {\r\n pending.reject(new Error(response.error.message))\r\n return true\r\n }\r\n\r\n pending.resolve(response.result)\r\n return true\r\n }\r\n\r\n private handleRpcNotification(notification: RpcNotification): void {\r\n const callback = this.notificationCallbacks.get(notification.id)\r\n if (callback) {\r\n callback(notification.payload)\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 name?: string\r\n displayName?: string\r\n avatarUrl?: string | null\r\n isAnonymous?: boolean\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 profile?: {\r\n id?: string\r\n username?: string\r\n avatarUrl?: string | null\r\n name?: string\r\n displayName?: string\r\n isAnonymous?: boolean\r\n } | null\r\n _fetchFromCdn: (url: string) => Promise<string>\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.PAUSE ||\r\n message.type === VenusMessageId.RESUME ||\r\n message.type === VenusMessageId.AWAKE ||\r\n message.type === VenusMessageId.SLEEP ||\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 Host,\r\n InitializationContext,\r\n HudInsets,\r\n InitializationOptions,\r\n} from './Host.ts'\r\nimport { RpcClient } from './rpc'\r\nimport { 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, initializeRoomsApi } 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\nimport { LeaderboardApi, RpcLeaderboardApi } from './leaderboard'\r\nimport { PreloaderApi, RpcPreloaderApi } from './game-preloader'\r\nimport { SocialApi } from './social/SocialApi'\r\nimport { RpcSocialApi } from './social/RpcSocialApi'\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 readonly leaderboard: LeaderboardApi\r\n readonly preloader: PreloaderApi\r\n readonly social: SocialApi\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 this.leaderboard = new RpcLeaderboardApi(rpcClient)\r\n this.preloader = new RpcPreloaderApi(rpcClient)\r\n this.social = new RpcSocialApi(rpcClient)\r\n venusApi.isMock = () => false\r\n this.venusApi.sharedAssets = new RpcSharedAssetsApi(rpcClient, venusApi)\r\n\r\n initializeRoomsApi(this.venusApi, this)\r\n\r\n console.log('[Venus SDK] Remote host created')\r\n }\r\n\r\n async initialize(\r\n options?: InitializationOptions,\r\n ): Promise<InitializationContext> {\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 // Set up room notification routing in RpcRoomsApi\r\n const roomsApi = this.rooms as RpcRoomsApi\r\n roomsApi.setupNotifications(transport)\r\n\r\n const response = await this.rpcClient.call<InitResponse>(\r\n VenusMessageId.INIT_SDK,\r\n {},\r\n 5000,\r\n )\r\n\r\n transport.instanceId = response.instanceId\r\n this.log(`Remote Host Initialized with id: ${transport.instanceId}`)\r\n\r\n if (response.profile) {\r\n const profile = response.profile\r\n const sanitizedProfile = {\r\n id: profile.id,\r\n username: profile.username,\r\n avatarUrl: profile.avatarUrl ?? null,\r\n isAnonymous: Boolean(profile.isAnonymous),\r\n }\r\n\r\n // Ensure window.venus exists before setting profile\r\n if (typeof window !== 'undefined') {\r\n const globalWindow = window as any\r\n const venus = globalWindow.venus || (globalWindow.venus = {})\r\n\r\n venus.profile = sanitizedProfile\r\n if (venus._config) {\r\n venus._config.profile = sanitizedProfile\r\n }\r\n if (venus.config) {\r\n venus.config.profile = sanitizedProfile\r\n }\r\n }\r\n }\r\n\r\n this._isInitialized = true\r\n\r\n // Set launchParams directly on VenusAPI instance\r\n this.venusApi.launchParams = response.launchParams || {}\r\n\r\n await this.rpcClient.call(VenusMessageId.READY, {})\r\n\r\n const hudInsets = response.hudInsets\r\n if (hudInsets) {\r\n this.venusApi.config.ui.safeArea = hudInsets\r\n }\r\n\r\n return {\r\n hudInsets: hudInsets,\r\n initializeAsleep: response.initializeAsleep,\r\n }\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\nexport interface InitResponse {\r\n initializeAsleep: boolean\r\n instanceId: string\r\n profile?: {\r\n id: string\r\n username: string\r\n avatarUrl?: string | null\r\n isAnonymous?: boolean\r\n }\r\n hudInsets?: HudInsets\r\n launchParams?: Record<string, string>\r\n}\r\n","import {\r\n RoomsApi,\r\n CreateRoomOptions,\r\n JoinOrCreateResult,\r\n RoomSubscriptionOptions,\r\n ProposeMovePayload,\r\n ProposeMoveResult,\r\n ValidateMoveResult,\r\n} from './RoomsApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport { VenusRoom } from './VenusRoom'\r\n\r\ntype SubscriptionCallback = (payload: any) => void\r\ntype RoomSubscriptions = Record<string, SubscriptionCallback[]>\r\n\r\ninterface SubscriptionState {\r\n data: RoomSubscriptions\r\n messages: RoomSubscriptions\r\n gameEvents: RoomSubscriptions\r\n allEvents: RoomSubscriptions\r\n}\r\n\r\nexport class RpcRoomsApi implements RoomsApi {\r\n private readonly rpcClient: RpcClient\r\n private readonly subscriptions: SubscriptionState\r\n private transportSubscription: { unsubscribe: () => void } | null = null\r\n\r\n constructor(rpcClient: RpcClient) {\r\n this.rpcClient = rpcClient\r\n this.subscriptions = {\r\n data: {},\r\n messages: {},\r\n gameEvents: {},\r\n allEvents: {},\r\n }\r\n }\r\n\r\n /**\r\n * Get the subscription state for external access (used by setupRoomNotifications)\r\n */\r\n getSubscriptions(): SubscriptionState {\r\n return this.subscriptions\r\n }\r\n\r\n /**\r\n * Set up room notification routing from the transport\r\n */\r\n setupNotifications(transport: any): void {\r\n const { setupRoomNotifications } = require('./index')\r\n this.transportSubscription = setupRoomNotifications(\r\n transport,\r\n () => this.getSubscriptions(),\r\n )\r\n }\r\n\r\n /**\r\n * Clean up subscriptions and resources\r\n */\r\n dispose(): void {\r\n if (this.transportSubscription) {\r\n this.transportSubscription.unsubscribe()\r\n this.transportSubscription = null\r\n console.log('[Venus Rooms] Cleaned up room notification subscription')\r\n }\r\n }\r\n\r\n async createRoom(options: CreateRoomOptions): Promise<VenusRoom> {\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: CreateRoomOptions): Promise<JoinOrCreateResult> {\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 joinRoomByCode(roomCode: string): Promise<VenusRoom> {\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 === false) {\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(includeArchived = false): Promise<VenusRoom[]> {\r\n const response: any = await this.rpcClient.call(\r\n VenusMessageId.H5_ROOM_GET_USER_ROOMS,\r\n {\r\n includeArchived: includeArchived,\r\n },\r\n )\r\n if (response?.success === false) {\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 async updateData(room: VenusRoom, updates: Record<string, any>, merge = true): Promise<any> {\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 === false) {\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): Promise<any> {\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 === false) {\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): Promise<string> {\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 === false) {\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): Promise<any> {\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 === false) {\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: Record<string, any> = {}, turnOrder: string[] | null = null): Promise<any> {\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 === false) {\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: ProposeMovePayload): Promise<ProposeMoveResult> {\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 === false) {\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: string | null = null,\r\n validatorId: string | null = null,\r\n ): Promise<ValidateMoveResult> {\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 if (!this.subscriptions.gameEvents[room.id]) {\r\n this.subscriptions.gameEvents[room.id] = []\r\n }\r\n this.subscriptions.gameEvents[room.id].push(callback)\r\n }\r\n\r\n subscribe(room: VenusRoom, options: RoomSubscriptionOptions = {}): () => void {\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 (!this.subscriptions.data[roomId]) {\r\n this.subscriptions.data[roomId] = []\r\n }\r\n this.subscriptions.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 (!this.subscriptions.messages[roomId]) {\r\n this.subscriptions.messages[roomId] = []\r\n }\r\n this.subscriptions.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 if (handler) {\r\n const gameSubId =\r\n 'game_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\r\n\r\n if (!this.subscriptions.gameEvents[roomId]) {\r\n this.subscriptions.gameEvents[roomId] = []\r\n }\r\n this.subscriptions.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\r\n // Start the actual Firebase subscription if this is the first subscription\r\n const needsSubscription =\r\n subscriptionIds.length > 0 &&\r\n ((this.subscriptions.data[roomId]?.length ?? 0) <= 1) &&\r\n ((this.subscriptions.messages[roomId]?.length ?? 0) <= 1) &&\r\n ((this.subscriptions.gameEvents[roomId]?.length ?? 0) <= 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 bucket = this.subscriptions[sub.type as keyof SubscriptionState]\r\n const callbacks = (bucket && bucket[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 ((this.subscriptions.data[roomId]?.length ?? 0) === 0) &&\r\n ((this.subscriptions.messages[roomId]?.length ?? 0) === 0) &&\r\n ((this.subscriptions.gameEvents[roomId]?.length ?? 0) === 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 { RpcClient } from '../rpc';\r\nimport { VenusMessageId } from '../VenusMessageId';\r\nimport {\r\n QRCodeResult,\r\n ShareLinkResult,\r\n ShareMetadata,\r\n SocialApi,\r\n SocialQRCodeOptions,\r\n} from './SocialApi';\r\n\r\nexport class RpcSocialApi implements SocialApi {\r\n constructor(private readonly rpcClient: RpcClient) {}\r\n\r\n async shareLinkAsync(options: {\r\n launchParams: Record<string, string>;\r\n metadata?: ShareMetadata;\r\n }): Promise<ShareLinkResult> {\r\n const result = (await this.rpcClient.call(VenusMessageId.SHARE_LINK, {\r\n launchParams: options.launchParams,\r\n metadata: options.metadata ?? {},\r\n })) as { shareUrl: string };\r\n\r\n return {\r\n shareUrl: result.shareUrl,\r\n };\r\n }\r\n\r\n async createQRCodeAsync(options: {\r\n launchParams: Record<string, string>;\r\n metadata?: ShareMetadata;\r\n qrOptions?: SocialQRCodeOptions;\r\n }): Promise<QRCodeResult> {\r\n const result = (await this.rpcClient.call(\r\n VenusMessageId.CREATE_SHARE_QRCODE,\r\n {\r\n launchParams: options.launchParams,\r\n metadata: options.metadata ?? {},\r\n qrOptions: options.qrOptions ?? {},\r\n },\r\n )) as { shareUrl: string; qrCode: string };\r\n\r\n return {\r\n shareUrl: result.shareUrl,\r\n qrCode: result.qrCode,\r\n };\r\n }\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'\r\nimport { Avatar3dApi } from './avatar3d'\r\nimport { VenusAPI, VenusConfig } 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'\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\nimport { LeaderboardApi } from './leaderboard'\r\nimport { PreloaderApi } from './game-preloader'\r\nimport { SocialApi } from './social'\r\n\r\nexport interface HudInsets {\r\n left: number\r\n top: number\r\n right: number\r\n bottom: number\r\n}\r\n\r\nexport interface InitializationOptions {\r\n helpText?: string\r\n hardDisableMock?: boolean\r\n mock?: Record<string, any>\r\n usePreloader?: boolean\r\n}\r\n\r\nexport interface InitializationContext {\r\n hudInsets?: HudInsets\r\n initializeAsleep: boolean\r\n}\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 readonly leaderboard: LeaderboardApi\r\n readonly preloader: PreloaderApi\r\n readonly social: SocialApi\r\n readonly isInitialized: boolean\r\n readonly iap: IapApi\r\n\r\n initialize(options?: InitializationOptions): Promise<InitializationContext>\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","declare const __SDK_VERSION__: string\nexport const SDK_VERSION = __SDK_VERSION__\n","import { Host } from '../Host';\r\nimport { VenusAPI } from '../venus-api/types';\r\n\r\nexport * from './SocialApi';\r\nexport * from './RpcSocialApi';\r\nexport * from './MockSocialApi';\r\n\r\nexport function initializeSocial(venusApi: VenusAPI, host: Host): void {\r\n venusApi.social = host.social;\r\n\r\n // Provide getter method for launch parameters\r\n venusApi.getLaunchParams = () => {\r\n return venusApi.launchParams || {};\r\n };\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/venus-api/systems/core.js","../../src/rooms/RoomsApi.ts","../../src/rooms/VenusRoom.ts","../../src/rooms/index.ts","../../src/storage/MockStorageApi.ts","../../src/storage/RpcStorageApi.ts","../../src/storage/index.ts","../../src/ads/RpcAdsApi.ts","../../src/ads/MockAdsApi.ts","../../src/ads/index.ts","../../src/venus-api/systems/theme.js","../../src/popups/RpcPopupsApi.ts","../../src/popups/MockPopupsApi.ts","../../src/popups/index.ts","../../src/notifications/MockNotificationsApi.ts","../../src/notifications/RpcNotificationsApi.ts","../../src/notifications/index.ts","../../src/time/utils.ts","../../src/time/HostTimeApi.ts","../../src/time/MockTimeApi.ts","../../src/time/index.ts","../../src/avatar3d/MockAvatarApi.ts","../../src/avatar3d/RpcAvatarApi.ts","../../src/avatar3d/index.ts","../../src/navigation/MockNavigationApi.ts","../../src/navigation/RpcNavigationApi.ts","../../src/navigation/index.ts","../../src/ai/RpcAiApi.ts","../../src/ai/MockAiApi.ts","../../src/ai/index.ts","../../src/venus-api/systems/asset-loader.js","../../src/venus-api/lib/break_eternity.js","../../src/venus-api/systems/numbers.js","../../src/venus-api/index.js","../../src/analytics/MockAnalyticsApi.ts","../../src/analytics/RpcAnalyticsApi.ts","../../src/analytics/index.ts","../../src/iap/RpcIapApi.ts","../../src/iap/MockCurrencyIcon.ts","../../src/iap/MockIapApi.ts","../../src/iap/index.ts","../../src/leaderboard/RpcLeaderboardApi.ts","../../src/leaderboard/MockLeaderboardApi.ts","../../src/leaderboard/index.ts","../../src/profile/HostProfileApi.ts","../../src/profile/MockProfileApi.ts","../../src/profile/index.ts","../../src/cdn/HostCdnApi.ts","../../src/cdn/MockCdnApi.ts","../../src/cdn/index.ts","../../src/post/MockPostApi.ts","../../src/post/RpcPostApi.ts","../../src/post/index.ts","../../src/haptics/RpcHapticsApi.ts","../../src/haptics/MockHapticsApi.ts","../../src/haptics/index.ts","../../src/features/RpcFeaturesApi.ts","../../src/features/MockFeaturesApi.ts","../../src/features/index.ts","../../src/lifecycles/MockLifecycleApi.ts","../../src/lifecycles/RpcLifecycleApi.ts","../../src/lifecycles/index.ts","../../src/simulation/utils.ts","../../src/simulation/RpcSimulationApi.ts","../../src/simulation/MockSimulationApi.ts","../../src/simulation/index.ts","../../src/MockHost.ts","../../src/logging/MockLoggingApi.ts","../../src/logging/RpcLoggingApi.ts","../../src/logging/index.ts","../../src/shared-assets/consts.ts","../../src/shared-assets/RpcSharedAssetsApi.ts","../../src/shared-assets/MockSharedAssetsApi.ts","../../src/game-preloader/MockPreloaderApi.ts","../../src/game-preloader/RpcPreloaderApi.ts","../../src/game-preloader/index.ts","../../src/social/MockSocialApi.ts","../../src/rpc/RpcClient.ts","../../src/VenusTransport.ts","../../src/RemoteHost.ts","../../src/rooms/RpcRoomsApi.ts","../../src/social/RpcSocialApi.ts","../../src/Host.ts","../../src/version.ts","../../src/social/index.ts"],"names":["selectedAsset","r","createProxiedMethod","value","createProxiedObject","generateAppIdentifier","_","setupRoomNotifications","VenusAPI"],"mappings":"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","file":"index.cjs","sourcesContent":["// Core utility functions for the Venus API system\r\n// These functions are used across multiple modules to handle real vs mock API delegation\r\n\r\n// Helper function to create proxied methods that delegate to real API when available\r\nexport function createProxiedMethod(methodName, mockImpl) {\r\n return function (...args) {\r\n // For lifecycle handlers (methods that start with 'on'), store them locally\r\n if (methodName.startsWith('on') && typeof args[0] === 'function') {\r\n if (!this._bootstrap._localHandlers) {\r\n this._bootstrap._localHandlers = {}\r\n }\r\n\r\n // Store the handler locally\r\n this._bootstrap._localHandlers[methodName] = args[0]\r\n\r\n // If the real API is available, also register with it\r\n if (\r\n this._bootstrap.venus &&\r\n typeof this._bootstrap.venus[methodName] === 'function'\r\n ) {\r\n return this._bootstrap.venus[methodName](...args)\r\n }\r\n\r\n return true\r\n }\r\n\r\n // For all other methods, if the real API is available and has the method, use it\r\n if (\r\n this._bootstrap.venus &&\r\n typeof this._bootstrap.venus[methodName] === 'function'\r\n ) {\r\n return this._bootstrap.venus[methodName](...args)\r\n }\r\n\r\n // Otherwise, fall back to the mock implementation\r\n return mockImpl.apply(this, args)\r\n }\r\n}\r\n\r\n// Helper function to create proxied objects with methods and getters that delegate to real API\r\nexport function createProxiedObject(objectName, mockImpl) {\r\n const self = this // Store reference to 'this' for use in handlers\r\n\r\n // Helper to create recursive proxies\r\n function createNestedProxy(target, realApiPath) {\r\n const handler = {\r\n get: function (targetObj, prop, receiver) {\r\n // If the real API is available, use it\r\n if (self._bootstrap.venus && realApiPath) {\r\n // Navigate to the correct path in the real API\r\n let realApiValue = self._bootstrap.venus\r\n const pathParts = realApiPath.split('.')\r\n\r\n for (const part of pathParts) {\r\n if (realApiValue && realApiValue[part]) {\r\n realApiValue = realApiValue[part]\r\n } else {\r\n realApiValue = null\r\n break\r\n }\r\n }\r\n\r\n if (realApiValue && prop in realApiValue) {\r\n const realValue = Reflect.get(realApiValue, prop, receiver)\r\n\r\n // If the real value is an object (but not a function), create a nested proxy\r\n if (\r\n realValue &&\r\n typeof realValue === 'object' &&\r\n typeof realValue !== 'function'\r\n ) {\r\n return createNestedProxy(realValue, `${realApiPath}.${prop}`)\r\n }\r\n\r\n return realValue\r\n }\r\n }\r\n\r\n // Otherwise, get from the mock implementation\r\n const value = Reflect.get(targetObj, prop)\r\n\r\n // If it's a method, bind it to the VenusAPI instance\r\n if (typeof value === 'function') {\r\n return function (...args) {\r\n return value.apply(self, args)\r\n }\r\n }\r\n\r\n // If it's an object (but not null or array), create a nested proxy\r\n if (value && typeof value === 'object' && !Array.isArray(value)) {\r\n const nestedPath = realApiPath ? `${realApiPath}.${prop}` : prop\r\n return createNestedProxy(value, nestedPath)\r\n }\r\n\r\n return value\r\n },\r\n }\r\n\r\n return new Proxy(target, handler)\r\n }\r\n\r\n return createNestedProxy(mockImpl, objectName)\r\n}\r\n\r\n// Helper function to check if we're on web platform (for feature detection)\r\nexport function isWebPlatform() {\r\n return typeof window !== 'undefined' && !window.ReactNativeWebView\r\n}\r\n\r\n// Standard mock delay (100ms for most operations, 1000ms for longer ones like ads/AI)\r\nexport const MOCK_DELAYS = {\r\n short: 100, // Quick operations (get/set preferences, etc.)\r\n medium: 500, // Medium operations (network-like calls)\r\n long: 1000, // Long operations (ads, AI, etc.)\r\n}\r\n\r\n// Centralized mock delay function\r\nexport function createMockDelay(ms = MOCK_DELAYS.short) {\r\n return new Promise((resolve) => setTimeout(resolve, ms))\r\n}\r\n","import { VenusRoom } from './VenusRoom'\r\n\r\nexport interface CreateRoomOptions {\r\n maxPlayers?: number\r\n gameType?: string\r\n isPrivate?: boolean\r\n roomCode?: string\r\n name?: string\r\n description?: string\r\n customMetadata?: Record<string, any>\r\n}\r\n\r\nexport interface JoinOrCreateResult {\r\n action: 'created' | 'joined'\r\n room: VenusRoom\r\n playersJoined: number\r\n}\r\n\r\nexport interface RoomSubscriptionOptions {\r\n onData?: (roomData: any) => void\r\n onMessages?: (messagePayload: any) => void\r\n onMoves?: (movePayload: any) => void\r\n onGameEvents?: (eventPayload: any) => void\r\n}\r\n\r\nexport interface ProposeMovePayload {\r\n gameSpecificState: any\r\n moveType: string\r\n clientContext?: Record<string, any>\r\n clientProposalId?: string\r\n}\r\n\r\nexport interface ProposeMoveResult {\r\n proposedMoveId: string\r\n}\r\n\r\nexport interface ValidateMoveResult {\r\n success: boolean\r\n moveId: string\r\n isValid: boolean\r\n reason?: string | null\r\n}\r\n\r\nexport interface RoomsApi {\r\n // Core matchmaking (internal names, bound to clean namespace)\r\n createRoom(options: CreateRoomOptions): Promise<VenusRoom>\r\n joinOrCreateRoom(options: CreateRoomOptions): Promise<JoinOrCreateResult>\r\n joinRoomByCode?(roomCode: string): Promise<VenusRoom>\r\n getUserRooms?(includeArchived?: boolean): Promise<VenusRoom[]>\r\n\r\n // Subscriptions\r\n subscribe?(\r\n room: VenusRoom,\r\n options: RoomSubscriptionOptions,\r\n ): (() => void) | { unsubscribe(): void }\r\n\r\n // Room instance methods\r\n updateData?(room: VenusRoom, updates: Record<string, any>, merge?: boolean): Promise<any>\r\n getData?(room: VenusRoom): Promise<any>\r\n sendMessage?(room: VenusRoom, messageData: any): Promise<string>\r\n leave?(room: VenusRoom): Promise<any>\r\n startGame?(room: VenusRoom, gameConfig?: Record<string, any>, turnOrder?: string[] | null): Promise<any>\r\n proposeMove?(room: VenusRoom, proposalPayload: ProposeMovePayload): Promise<ProposeMoveResult>\r\n validateMove?(\r\n room: VenusRoom,\r\n moveId: string,\r\n isValid: boolean,\r\n reason?: string | null,\r\n validatorId?: string | null,\r\n ): Promise<ValidateMoveResult>\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}\r\n","import { VenusAPI } from '../venus-api/types'\r\nimport { Host } from '../Host'\r\nimport { RoomsApi } from './RoomsApi'\r\nimport { VenusTransport, VenusMessage } from '../VenusTransport'\r\nimport { Subscription } from '../rpc'\r\n\r\nexport * from './RoomsApi'\r\nexport { VenusRoom } from './VenusRoom'\r\n\r\ntype MutableVenusApi = VenusAPI & Record<string, any>\r\ntype MutableRoomsApi = RoomsApi & Record<string, any>\r\n\r\n// Type definitions for room notification payloads\r\ninterface RoomDataUpdatedPayload {\r\n roomId: string\r\n roomData: any\r\n timestamp?: number\r\n}\r\n\r\ninterface RoomMessagePayload {\r\n roomId: string\r\n message: any\r\n}\r\n\r\ninterface ProposedMoveValidationPayload {\r\n roomId: string\r\n proposedMoveData: any\r\n proposedMoveId?: string\r\n changeType?: string\r\n timestamp?: number\r\n}\r\n\r\nfunction bindMethod(\r\n target: Record<string, any>,\r\n targetKey: string,\r\n source: MutableRoomsApi,\r\n sourceKey?: string,\r\n) {\r\n const key = sourceKey ?? targetKey\r\n const fn = source?.[key]\r\n if (typeof fn === 'function') {\r\n target[targetKey] = fn.bind(source)\r\n return true\r\n }\r\n return false\r\n}\r\n\r\n/**\r\n * Set up room notification listeners using the transport's onVenusMessage hook.\r\n * This routes host-sent room notifications (H5_ROOM_DATA_UPDATED, etc.) to the\r\n * callbacks registered in the RoomsApi instance.\r\n * @param transport The Venus transport to listen for messages\r\n * @param getSubscriptions Function to retrieve subscription state from RoomsApi\r\n */\r\nexport function setupRoomNotifications(\r\n transport: VenusTransport,\r\n getSubscriptions: () => any,\r\n): Subscription {\r\n console.log('[Venus Rooms] Setting up room notification listeners')\r\n \r\n return transport.onVenusMessage((message: VenusMessage) => {\r\n const subscriptions = getSubscriptions()\r\n if (!subscriptions) {\r\n return\r\n }\r\n\r\n // Route H5_ROOM_DATA_UPDATED notifications to data callbacks\r\n if (message.type === 'H5_ROOM_DATA_UPDATED') {\r\n const messageData = message.data as RoomDataUpdatedPayload\r\n const { roomId, roomData } = messageData\r\n if (!roomId) return\r\n\r\n const callbacks = subscriptions.data?.[roomId] || []\r\n const allEventsCallbacks = subscriptions.allEvents?.[roomId] || []\r\n console.log(`[Venus Rooms] 🔔 Room data updated for ${roomId}, notifying ${callbacks.length} callbacks`, roomData)\r\n \r\n callbacks.forEach((callback: (data: any) => void) => {\r\n try {\r\n callback(roomData)\r\n } catch (error) {\r\n console.error('[Venus Rooms] Error in room data callback:', error)\r\n throw error // Fail loudly - rethrow after logging\r\n }\r\n })\r\n\r\n // Also notify allEvents listeners\r\n allEventsCallbacks.forEach((callback: (payload: any) => void) => {\r\n try {\r\n callback({ type: message.type, ...messageData })\r\n } catch (error) {\r\n console.error('[Venus Rooms] Error in allEvents callback:', error)\r\n throw error\r\n }\r\n })\r\n }\r\n\r\n // Route H5_ROOM_MESSAGE_* notifications to message callbacks\r\n if (\r\n message.type === 'H5_ROOM_MESSAGE_RECEIVED' ||\r\n message.type === 'H5_ROOM_MESSAGE_UPDATED' ||\r\n message.type === 'H5_ROOM_MESSAGE_DELETED'\r\n ) {\r\n const messageData = message.data as RoomMessagePayload\r\n const { roomId } = messageData\r\n if (!roomId) return\r\n\r\n const callbacks = subscriptions.messages?.[roomId] || []\r\n const allEventsCallbacks = subscriptions.allEvents?.[roomId] || []\r\n console.log(`[Venus Rooms] 🔔 Room message event for ${roomId}, notifying ${callbacks.length} callbacks`)\r\n \r\n // Forward full payload to preserve messageId for deletes and other metadata\r\n callbacks.forEach((callback: (payload: any) => void) => {\r\n try {\r\n callback(messageData)\r\n } catch (error) {\r\n console.error('[Venus Rooms] Error in room message callback:', error)\r\n throw error // Fail loudly - rethrow after logging\r\n }\r\n })\r\n\r\n // Also notify allEvents listeners\r\n allEventsCallbacks.forEach((callback: (payload: any) => void) => {\r\n try {\r\n callback({ type: message.type, ...messageData })\r\n } catch (error) {\r\n console.error('[Venus Rooms] Error in allEvents callback:', error)\r\n throw error\r\n }\r\n })\r\n }\r\n\r\n // Route H5_PROPOSED_MOVE_VALIDATION_UPDATED to game event callbacks\r\n if (message.type === 'app:h5:proposedMoveValidationUpdated') {\r\n const messageData = message.data as ProposedMoveValidationPayload\r\n const { roomId } = messageData\r\n if (!roomId) return\r\n\r\n const callbacks = subscriptions.gameEvents?.[roomId] || []\r\n const allEventsCallbacks = subscriptions.allEvents?.[roomId] || []\r\n console.log(`[Venus Rooms] 🔔 Proposed move validation updated for ${roomId}, notifying ${callbacks.length} callbacks`)\r\n \r\n // Forward full payload to preserve proposedMoveId, changeType, timestamp\r\n callbacks.forEach((callback: (payload: any) => void) => {\r\n try {\r\n callback(messageData)\r\n } catch (error) {\r\n console.error('[Venus Rooms] Error in game event callback:', error)\r\n throw error // Fail loudly - rethrow after logging\r\n }\r\n })\r\n\r\n // Also notify allEvents listeners\r\n allEventsCallbacks.forEach((callback: (payload: any) => void) => {\r\n try {\r\n callback({ type: message.type, ...messageData })\r\n } catch (error) {\r\n console.error('[Venus Rooms] Error in allEvents callback:', error)\r\n throw error\r\n }\r\n })\r\n }\r\n })\r\n}\r\n\r\nexport function initializeRoomsApi(venusApi: VenusAPI, host: Host) {\r\n const roomsApi = host?.rooms as MutableRoomsApi | undefined\r\n if (!roomsApi) {\r\n console.warn(\r\n '[Venus SDK] Host did not provide a rooms implementation. Rooms API will be unavailable.',\r\n )\r\n return\r\n }\r\n\r\n const venus = venusApi as MutableVenusApi\r\n const existingNamespace = (venus.rooms || {}) as Record<string, any>\r\n const roomsNamespace: Record<string, any> = Object.assign({}, existingNamespace)\r\n\r\n const namespaceBindings: Array<[string, string?]> = [\r\n ['create', 'createRoom'],\r\n ['joinOrCreate', 'joinOrCreateRoom'],\r\n ['joinByCode', 'joinRoomByCode'],\r\n ['list', 'getUserRooms'],\r\n ['subscribeToRoom', 'subscribe'],\r\n ['updateRoomData', 'updateData'],\r\n ['getRoomData', 'getData'],\r\n ['sendRoomMessage', 'sendMessage'],\r\n ['leaveRoom', 'leave'],\r\n ['startRoomGame', 'startGame'],\r\n ['proposeMove'],\r\n ['validateMove'],\r\n ]\r\n\r\n namespaceBindings.forEach(([targetKey, sourceKey]) => {\r\n bindMethod(roomsNamespace, targetKey, roomsApi, sourceKey)\r\n })\r\n\r\n venus.rooms = roomsNamespace as any\r\n}\r\n","import { StorageApi } from './StorageApi.ts'\r\n\r\nexport type StorageType = 'globalStorage' | 'deviceCache' | 'appStorage'\r\n\r\nexport function createMockStorageApi(\r\n storageType: StorageType,\r\n appUrl?: string,\r\n) {\r\n const appIdentifier = appUrl ? generateAppIdentifier(appUrl) : null\r\n\r\n let prefix\r\n let syncDelay = 0 // Simulate sync delay for cloud storage\r\n\r\n switch (storageType) {\r\n case 'deviceCache':\r\n prefix = 'venus:app' // Keep same prefix for backward compatibility\r\n syncDelay = 0 // No sync delay\r\n break\r\n case 'appStorage':\r\n prefix = 'venus:app' // Same prefix as deviceCache (both are app-specific)\r\n syncDelay = 100 // Simulate cloud sync delay\r\n break\r\n case 'globalStorage':\r\n prefix = 'venus:global' // Cross-app cloud storage\r\n syncDelay = 100 // Simulate cloud sync delay\r\n break\r\n default:\r\n throw new Error(`Unknown storage type: ${storageType}`)\r\n }\r\n\r\n prefix =\r\n storageType === 'globalStorage' || !appIdentifier\r\n ? `${prefix}:`\r\n : `${prefix}:${appIdentifier}:`\r\n\r\n return new MockStorageApi(prefix, syncDelay)\r\n}\r\n\r\nexport class MockStorageApi implements StorageApi {\r\n private readonly prefix: string\r\n private readonly syncDelay: number\r\n\r\n constructor(prefix: string, syncDelay: number) {\r\n this.prefix = prefix\r\n this.syncDelay = syncDelay\r\n }\r\n\r\n async clear(): Promise<void> {\r\n const fullLength = localStorage.length\r\n for (let i = 0; i < fullLength; i++) {\r\n const fullKey = localStorage.key(i)\r\n if (fullKey && fullKey.startsWith(this.prefix)) {\r\n localStorage.removeItem(fullKey)\r\n }\r\n }\r\n await this.simulateSyncDelay()\r\n }\r\n\r\n async getAllItems(): Promise<string[]> {\r\n const items = new Array<string>()\r\n const fullLength = localStorage.length\r\n for (let i = 0; i < fullLength; i++) {\r\n const fullKey = localStorage.key(i)\r\n if (fullKey && fullKey.startsWith(this.prefix)) {\r\n const item = localStorage.getItem(fullKey)\r\n if (item) {\r\n items.push(item)\r\n }\r\n }\r\n }\r\n return items\r\n }\r\n\r\n async getItem(key: string): Promise<string | null> {\r\n const fullKey = this.buildKey(key)\r\n await this.simulateSyncDelay()\r\n return localStorage.getItem(fullKey)\r\n }\r\n\r\n async key(index: number): Promise<string | null> {\r\n const keys = this.keys()\r\n if (index < 0 || index >= keys.length) {\r\n return null\r\n }\r\n await this.simulateSyncDelay()\r\n return keys[index]\r\n }\r\n\r\n async length(): Promise<number> {\r\n return this.keys().length\r\n }\r\n\r\n async removeItem(key: string): Promise<void> {\r\n const fullKey = this.buildKey(key)\r\n await this.simulateSyncDelay()\r\n localStorage.removeItem(fullKey)\r\n }\r\n\r\n async setItem(key: string, item: string): Promise<void> {\r\n const fullKey = this.buildKey(key)\r\n await this.simulateSyncDelay()\r\n localStorage.setItem(fullKey, item)\r\n }\r\n\r\n async setMultipleItems(\r\n entries: { key: string; value: string }[],\r\n ): Promise<void> {\r\n for (const entry of entries) {\r\n const fullKey = this.buildKey(entry.key)\r\n localStorage.setItem(fullKey, entry.value)\r\n }\r\n await this.simulateSyncDelay()\r\n }\r\n\r\n async removeMultipleItems(keys: string[]): Promise<void> {\r\n for (const key of keys) {\r\n const fullKey = this.buildKey(key)\r\n localStorage.removeItem(fullKey)\r\n }\r\n await this.simulateSyncDelay()\r\n }\r\n\r\n private buildKey(key: string): string {\r\n const prefix = this.prefix\r\n return `${prefix}${key}`\r\n }\r\n\r\n private extractKey(fullKey: string): string {\r\n const prefix = this.prefix\r\n return fullKey.substring(prefix.length)\r\n }\r\n\r\n private keys(): string[] {\r\n const keys = new Array<string>()\r\n let length = localStorage.length\r\n for (let i = 0; i < length; i++) {\r\n const fullKey = localStorage.key(i)\r\n if (fullKey && fullKey.startsWith(this.prefix)) {\r\n length++\r\n const key = this.extractKey(fullKey)\r\n keys.push(key)\r\n }\r\n }\r\n return keys\r\n }\r\n\r\n private async simulateSyncDelay() {\r\n const syncDelay = this.syncDelay\r\n if (syncDelay > 0) {\r\n await new Promise((resolve) => setTimeout(resolve, syncDelay))\r\n }\r\n }\r\n}\r\n\r\nfunction generateAppIdentifier(appUrl?: string) {\r\n if (!appUrl) appUrl = ''\r\n\r\n // First normalize to ensure we're hashing the same identifier regardless of format\r\n const normalizedId = normalizeAppIdentifier(appUrl)\r\n // Generating hash for normalized ID\r\n\r\n let hash = 0\r\n for (let i = 0; i < normalizedId.length; i++) {\r\n const char = normalizedId.charCodeAt(i)\r\n hash = (hash << 5) - hash + char // Same as real API - djb2 hash algorithm\r\n hash |= 0 // Convert to 32bit integer\r\n }\r\n\r\n // Convert to hex\r\n // Generated app identifier\r\n return Math.abs(hash).toString(16)\r\n}\r\n\r\nfunction normalizeAppIdentifier(input: string) {\r\n // Normalizing app identifier input\r\n\r\n // Handle full URLs\r\n if (input.startsWith('http')) {\r\n try {\r\n // For URLs like http://127.0.0.1:5000/H5/bird-flap/index.html?cacheBust=12345678\r\n // Extract the app ID part (bird-flap)\r\n const url = new URL(input)\r\n const pathParts = url.pathname.split('/')\r\n\r\n // Find the part after 'H5' in the path\r\n const h5Index = pathParts.findIndex((part) => part === 'H5')\r\n if (h5Index !== -1 && h5Index < pathParts.length - 1) {\r\n const appId = pathParts[h5Index + 1]\r\n // Extracted app ID from full URL path\r\n return appId\r\n }\r\n\r\n // If we couldn't extract from path, use the hostname as fallback\r\n // Could not extract app ID from URL path, using hostname\r\n return url.hostname\r\n } catch (error) {\r\n console.error(`[Venus Mock] Error parsing URL: ${error}`, { input })\r\n // If URL parsing fails, treat as a raw ID\r\n return input\r\n }\r\n }\r\n\r\n // Handle path-based URLs like '/H5/bird-flap/index.html'\r\n if (input.includes('/H5/')) {\r\n try {\r\n const pathParts = input.split('/')\r\n // Find the part after 'H5' in the path\r\n const h5Index = pathParts.findIndex((part) => part === 'H5')\r\n if (h5Index !== -1 && h5Index < pathParts.length - 1) {\r\n const appId = pathParts[h5Index + 1]\r\n // Extracted app ID from path-based URL\r\n return appId\r\n }\r\n } catch (error) {\r\n console.error(`[Venus Mock] Error parsing path-based URL: ${error}`, {\r\n input,\r\n })\r\n }\r\n }\r\n\r\n // Not a URL, just return as is\r\n // Input is not a URL, treating as raw app ID\r\n return input\r\n}\r\n","import { RpcClient } from '../rpc'\nimport { StorageApi } from './StorageApi.ts'\n\nexport interface MethodIds {\n clear: string\n getItem: string\n getKey: string\n length: string\n removeItem: string\n setItem: string\n getAllItems?: string\n removeMultipleItems?: string\n setMultipleItems?: string\n}\n\nexport class RpcStorageApi implements StorageApi {\n private readonly rpcClient: RpcClient\n private readonly methodIds: MethodIds\n\n constructor(rpcClient: RpcClient, methodIds: MethodIds) {\n this.rpcClient = rpcClient\n this.methodIds = methodIds\n }\n\n clear(): Promise<void> {\n return this.rpcClient.call(this.methodIds.clear)\n }\n\n getItem(key: string): Promise<string | null> {\n return this.rpcClient.call(this.methodIds.getItem, {\n key: key,\n })\n }\n\n setItem(key: string, value: string): Promise<void> {\n return this.rpcClient.call(this.methodIds.setItem, {\n key: key,\n value: value,\n })\n }\n\n key(index: number): Promise<string | null> {\n return this.rpcClient.call(this.methodIds.getKey, {\n index: index,\n })\n }\n\n length(): Promise<number> {\n return this.rpcClient.call(this.methodIds.length)\n }\n\n removeItem(key: string): Promise<void> {\n return this.rpcClient.call(this.methodIds.removeItem, {\n key: key,\n })\n }\n\n removeMultipleItems(keys: string[]): Promise<void> {\n if (!this.methodIds.removeMultipleItems) {\n throw new Error('Method not implemented')\n }\n return this.rpcClient.call(this.methodIds.removeMultipleItems, {\n keys: keys,\n })\n }\n\n getAllItems(): Promise<string[]> {\n if (!this.methodIds.getAllItems) {\n throw new Error('Method not implemented')\n }\n return this.rpcClient.call(this.methodIds.getAllItems)\n }\n\n setMultipleItems(items: { key: string; value: string }[]): Promise<void> {\n if (!this.methodIds.setMultipleItems) {\n throw new Error('Method not implemented')\n }\n return this.rpcClient.call(this.methodIds.setMultipleItems, {\n items: items,\n })\n }\n}\n","import { VenusAPI } from '../venus-api/types.ts'\nimport { Host } from '../Host.ts'\n\nexport * from './StorageApi'\nexport * from './MockStorageApi'\nexport * from './RpcStorageApi'\n\nexport function initializeStorage(venusApiInstance: VenusAPI, host: Host) {\n venusApiInstance.deviceCache = host.deviceCache\n venusApiInstance.appStorage = host.appStorage\n venusApiInstance.globalStorage = host.globalStorage\n}\n","import { AdsApi, ShowInterstitialAdOptions, ShowRewardedAdOptions } from './AdsApi.ts'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId.ts'\r\n\r\nexport class RpcAdsApi implements AdsApi {\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 showInterstitialAd(options?: ShowInterstitialAdOptions): Promise<boolean> {\r\n console.log(`[Venus SDK] [RpcAdsApi] showInterstitialAd`)\r\n const response = await this.rpcClient.call<ShowInterstitialAdResponse>(\r\n VenusMessageId.SHOW_INTERSTITIAL_AD,\r\n options || {},\r\n -1,\r\n )\r\n return response.shown\r\n }\r\n\r\n async isRewardedAdReadyAsync(): Promise<boolean> {\r\n console.log(`[Venus SDK] [RpcAdsApi] isRewardedAdReadyAsync`)\r\n const response = await this.rpcClient.call<IsRewardedAdReadyResponse>(\r\n VenusMessageId.IS_REWARDED_AD_READY,\r\n )\r\n return response.ready\r\n }\r\n\r\n async showRewardedAdAsync(options?: ShowRewardedAdOptions): Promise<boolean> {\r\n console.log('[Venus SDK] [RpcAdsApi] showRewardedAdAsync')\r\n const result = await this.rpcClient.call<ShowRewardedAdResponse>(\r\n VenusMessageId.SHOW_REWARDED_AD,\r\n options || {},\r\n -1,\r\n )\r\n const resultAsString = JSON.stringify(result, null, 2)\r\n console.log(\r\n `[Venus SDK] [RpcAdsApi] rewarded ad shown with result as JSON:\\n${resultAsString}`,\r\n )\r\n return result.rewardEarned\r\n }\r\n}\r\n\r\ninterface IsRewardedAdReadyResponse {\r\n ready: boolean\r\n adType: 'rewarded'\r\n}\r\n\r\ninterface ShowInterstitialAdResponse {\r\n shown: boolean\r\n adType: 'interstitial'\r\n}\r\n\r\ninterface ShowRewardedAdResponse {\r\n shown: boolean\r\n adType: string\r\n rewardEarned: boolean\r\n}\r\n","import { AdsApi, ShowInterstitialAdOptions, ShowRewardedAdOptions } from './AdsApi.ts'\r\nimport { createMockDelay, MOCK_DELAYS } from '../venus-api/systems/core'\r\nimport { MockOverlay } from '../MockOverlay'\r\n\r\nexport class MockAdsApi implements AdsApi {\r\n private mockOverlay: MockOverlay\r\n\r\n constructor(mockOverlay: MockOverlay) {\r\n this.mockOverlay = mockOverlay\r\n }\r\n\r\n async isRewardedAdReadyAsync(): Promise<boolean> {\r\n this.log('[MockAdsApi] isRewardedAdReadyAsync called')\r\n await createMockDelay(MOCK_DELAYS.short)\r\n return true\r\n }\r\n\r\n async showRewardedAdAsync(options?: ShowRewardedAdOptions): Promise<boolean> {\r\n this.log('[MockAdsApi] showRewardedAdAsync called')\r\n await this.mockOverlay.showAdOverlay(options)\r\n this.log('[MockAdsApi] Rewarded ad completed')\r\n return true\r\n }\r\n\r\n async showInterstitialAd(options?: ShowInterstitialAdOptions): Promise<boolean> {\r\n this.log(`[MockAdsApi] showInterstitialAd`)\r\n await this.mockOverlay.showAdOverlay(options)\r\n this.log('[MockAdsApi] interstitial ad shown')\r\n return true\r\n }\r\n\r\n private log(message: string, ...args: any[]): void {\r\n console.log(`[Venus SDK] ${message}`, ...args)\r\n }\r\n}\r\n","import { VenusAPI } from '../venus-api/types.ts'\nimport { Host } from '../Host.ts'\n\nexport * from './AdsApi.ts'\nexport * from './RpcAdsApi'\nexport * from './MockAdsApi'\n\n// Initialize ads functionality on a VenusAPI instance\nexport function initializeAds(venusApiInstance: VenusAPI, host: Host) {\n // Legacy\n venusApiInstance.isRewardedAdReadyAsync =\n host.ads.isRewardedAdReadyAsync.bind(host.ads)\n venusApiInstance.showRewardedAdAsync = host.ads.showRewardedAdAsync.bind(\n host.ads,\n )\n\n venusApiInstance.ads = host.ads\n}\n","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} ","import {\r\n ActionSheetItem,\r\n PopupsApi,\r\n ShowActionSheetOptions,\r\n ShowAlertOptions,\r\n ShowConfirmOptions,\r\n ShowToastOptions,\r\n} from './PopupsApi'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport { RpcClient } from '../rpc'\r\n\r\nexport class RpcPopupsApi implements PopupsApi {\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 showActionSheet(\r\n items: ActionSheetItem[],\r\n options?: ShowActionSheetOptions,\r\n ): Promise<string | number | null> {\r\n const result = await this.rpcClient.call<string | number>(\r\n VenusMessageId.ACTION_SHEET_SHOW,\r\n {\r\n title: options?.title || '',\r\n message: options?.message || '',\r\n options: items,\r\n cancelButtonText: options?.cancelButtonText || 'Cancel',\r\n },\r\n )\r\n return result\r\n }\r\n\r\n async showAlert(\r\n title: string,\r\n message: string,\r\n options?: ShowAlertOptions,\r\n ): Promise<void> {\r\n const buttonText = options?.buttonText || 'OK'\r\n await this.rpcClient.call(VenusMessageId.ALERT_DIALOG, {\r\n title,\r\n message,\r\n buttonText,\r\n })\r\n }\r\n\r\n async showConfirm(\r\n title: string,\r\n message: string,\r\n options?: ShowConfirmOptions,\r\n ): Promise<boolean> {\r\n const confirmText = options?.confirmText || 'OK'\r\n const cancelText = options?.cancelText || 'Cancel'\r\n\r\n const result = await this.rpcClient.call<boolean>(\r\n VenusMessageId.CONFIRM_DIALOG,\r\n {\r\n title,\r\n message,\r\n confirmText,\r\n cancelText,\r\n },\r\n )\r\n\r\n return result\r\n }\r\n\r\n async showToast(\r\n message: string,\r\n options?: ShowToastOptions,\r\n ): Promise<boolean> {\r\n const duration = options?.duration ?? 3000\r\n const variant = options?.variant ?? 'info'\r\n const response = await this.rpcClient.call<ShowToastResponse>(\r\n VenusMessageId.TOAST,\r\n {\r\n message,\r\n duration,\r\n variant,\r\n action: options?.action,\r\n },\r\n duration + 2000,\r\n )\r\n return response.actionTriggered\r\n }\r\n}\r\n\r\nexport interface ShowToastResponse {\r\n shown: boolean\r\n actionTriggered: boolean\r\n}\r\n","import {\r\n ActionSheetItem,\r\n PopupsApi,\r\n ShowActionSheetOptions,\r\n ShowAlertOptions,\r\n ShowConfirmOptions,\r\n ShowToastOptions,\r\n} from './PopupsApi'\r\nimport { MockOverlay } from '../MockOverlay'\r\n\r\nexport class MockPopupsApi implements PopupsApi {\r\n private readonly overlay: MockOverlay\r\n\r\n constructor(override: MockOverlay) {\r\n this.overlay = override\r\n }\r\n\r\n showActionSheet(\r\n items: ActionSheetItem[],\r\n options?: ShowActionSheetOptions,\r\n ): Promise<string | number | null> {\r\n console.log(\r\n `[Venus Mock] Show Action sheet, items: ${JSON.stringify(items, null, 2)}, options: ${JSON.stringify(options, null, 2)}`,\r\n )\r\n return this.overlay.showActionSheet(items, options)\r\n }\r\n\r\n async showAlert(\r\n title: string,\r\n message: string,\r\n options?: ShowAlertOptions,\r\n ): Promise<void> {\r\n window.alert(`${title}\\n${message}`)\r\n }\r\n\r\n async showConfirm(\r\n title: string,\r\n message: string,\r\n options?: ShowConfirmOptions,\r\n ): Promise<boolean> {\r\n const result = window.confirm(`${title || 'Confirm'}\\n${message}`)\r\n\r\n return result\r\n }\r\n\r\n async showToast(\r\n message: string,\r\n options?: ShowToastOptions,\r\n ): Promise<boolean> {\r\n const variant = options?.variant ?? 'info'\r\n const duration = options?.duration ?? 3000\r\n const action = options?.action\r\n\r\n console.log('[Venus Mock] Toast:', message, {\r\n variant,\r\n duration,\r\n hasAction: !!action,\r\n })\r\n\r\n // Handle action toasts vs simple toasts\r\n if (action) {\r\n // Action toast - show with action button simulation\r\n const actionResult = window.confirm(\r\n `${message}\\n\\n[${action.label}] or [Cancel]`,\r\n )\r\n\r\n if (actionResult) {\r\n console.log('[Venus Mock] Toast action triggered:', action.label)\r\n return true\r\n }\r\n }\r\n return false\r\n }\r\n}\r\n","import { VenusAPI } from '../venus-api/types'\r\nimport { Host } from '../Host'\r\n\r\nexport * from './PopupsApi'\r\nexport * from './RpcPopupsApi'\r\nexport * from './MockPopupsApi'\r\n\r\nexport function initializePopups(venusApi: VenusAPI, host: Host) {\r\n venusApi.showToast = async (input) => {\r\n if (typeof input === 'string') {\r\n return await host.popups.showToast(input)\r\n } else {\r\n return await host.popups.showToast(input.message, {\r\n duration: input.duration,\r\n action: input.action,\r\n variant: 'success',\r\n })\r\n }\r\n }\r\n\r\n venusApi.showAlert = async (input) => {\r\n await host.popups.showAlert(input.title, input.message, {\r\n buttonText: input.buttonText,\r\n })\r\n }\r\n\r\n venusApi.showConfirm = async (input) => {\r\n const confirmed = await host.popups.showConfirm(\r\n input.title,\r\n input.message,\r\n {\r\n confirmText: input.confirmText,\r\n cancelText: input.cancelText,\r\n },\r\n )\r\n return confirmed\r\n }\r\n\r\n venusApi.showActionSheet = async (input) => {\r\n return await host.popups.showActionSheet(input.options, {\r\n title: input.title,\r\n message: input.message,\r\n cancelButtonText: input.cancelButtonText,\r\n disableCancel: input.disableCancel,\r\n })\r\n }\r\n\r\n venusApi.popups = host.popups\r\n}\r\n","import {\r\n NotificationsApi,\r\n ScheduleLocalNotification,\r\n ScheduleNotificationOptions,\r\n} from './NotificationsApi'\r\nimport {\r\n createMockDelay,\r\n isWebPlatform,\r\n MOCK_DELAYS,\r\n} from '../venus-api/systems/core'\r\nimport { VenusAPI } from '../venus-api/types'\r\n\r\nexport class MockNotificationsApi implements NotificationsApi {\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 cancelNotification(notificationId: string): Promise<boolean> {\r\n const venusApi = this.venusApi\r\n\r\n // Check if notifications are supported on this platform\r\n if (isWebPlatform()) {\r\n console.log(\r\n '[Venus Mock] Cancel notification on web platform (simulated):',\r\n notificationId,\r\n )\r\n return true\r\n }\r\n\r\n console.log('[Venus Mock] Cancel local notification:', notificationId)\r\n\r\n // Simulate a delay\r\n await createMockDelay(MOCK_DELAYS.short)\r\n\r\n // Remove from mock storage\r\n if (\r\n venusApi._mock.scheduledNotifications &&\r\n venusApi._mock.scheduledNotifications[notificationId]\r\n ) {\r\n delete venusApi._mock.scheduledNotifications[notificationId]\r\n return true\r\n }\r\n\r\n return false\r\n }\r\n\r\n async getAllScheduledLocalNotifications(): Promise<\r\n ScheduleLocalNotification[]\r\n > {\r\n // Check if notifications are supported on this platform\r\n if (isWebPlatform()) {\r\n console.log(\r\n '[Venus Mock] Get notifications on web platform (returning empty list)',\r\n )\r\n // Return direct array (not wrapped in success object)\r\n return []\r\n }\r\n\r\n console.log('[Venus Mock] Get all scheduled local notifications')\r\n\r\n // Simulate a delay\r\n await createMockDelay(MOCK_DELAYS.short)\r\n\r\n const venusApi = this.venusApi\r\n\r\n // Return direct array of notifications (not wrapped in success object)\r\n const notifications = venusApi._mock.scheduledNotifications || {}\r\n return Object.values(notifications)\r\n }\r\n\r\n async isLocalNotificationsEnabled(): Promise<boolean> {\r\n // Check if notifications are supported on this platform\r\n if (isWebPlatform()) {\r\n console.log('[Venus Mock] Notifications not available on web platform')\r\n // Return direct boolean (not wrapped in success object)\r\n return false\r\n }\r\n\r\n console.log('[Venus Mock] Check if local notifications are enabled')\r\n\r\n // Simulate a delay\r\n await createMockDelay(MOCK_DELAYS.short)\r\n\r\n const venusApi = this.venusApi\r\n // Return direct boolean (not wrapped in success object)\r\n const isEnabled = venusApi._mock.notificationsEnabled !== false\r\n return isEnabled\r\n }\r\n\r\n async scheduleAsync(\r\n title: string,\r\n body: string,\r\n seconds: number,\r\n notificationId?: string,\r\n options?: ScheduleNotificationOptions\r\n ): Promise<string | null> {\r\n const { priority = 50, groupId, payload } = options || {}\r\n \r\n // Check if notifications are supported on this platform\r\n if (isWebPlatform()) {\r\n console.log(\r\n '[Venus Mock] Notifications not supported on web platform, simulating success',\r\n )\r\n\r\n // Provide helpful feedback to developers\r\n console.info(\r\n '🔔 [Venus Mock] Notification would be scheduled:',\r\n title || 'Untitled',\r\n '\\n Body:',\r\n body || 'No body',\r\n '\\n This is a simulation - real notifications require a native platform.',\r\n )\r\n\r\n // Return direct mock ID (not wrapped in success object)\r\n const mockId = `mock-web-notification-${Date.now()}`\r\n return mockId\r\n }\r\n\r\n console.log('[Venus Mock] Schedule local notification:', { title, body, seconds, options })\r\n\r\n const venusApi = this.venusApi\r\n // Initialize pendingRequests if it doesn't exist\r\n if (!venusApi._mock.pendingRequests) {\r\n console.log('[Venus Mock] Initializing pendingRequests')\r\n venusApi._mock.pendingRequests = {}\r\n }\r\n\r\n const requestId = Date.now().toString()\r\n console.log('[Venus Mock] Creating request with ID:', requestId)\r\n\r\n return new Promise((resolve) => {\r\n venusApi._mock.pendingRequests[requestId] = { resolve }\r\n\r\n // Generate a mock notification ID\r\n const id = notificationId || `mock-notification-${Date.now()}`\r\n\r\n // Store this notification in mock storage for later retrieval\r\n if (!venusApi._mock.scheduledNotifications) {\r\n venusApi._mock.scheduledNotifications = {}\r\n }\r\n\r\n venusApi._mock.scheduledNotifications[id] = {\r\n id,\r\n title,\r\n body,\r\n payload,\r\n seconds,\r\n }\r\n\r\n // Simulate a delay using standard timing\r\n setTimeout(() => {\r\n // Return direct notification ID (not wrapped in success object)\r\n resolve(id)\r\n }, MOCK_DELAYS.short)\r\n })\r\n }\r\n\r\n async setLocalNotificationsEnabled(enabled: boolean): Promise<boolean> {\r\n const venusApi = this.venusApi\r\n\r\n // Check if notifications are supported on this platform\r\n if (isWebPlatform()) {\r\n console.log(\r\n '[Venus Mock] Set notifications enabled on web platform (simulated):',\r\n enabled,\r\n )\r\n // Return void for successful setting (like the real API)\r\n return true\r\n }\r\n\r\n console.log('[Venus Mock] Set local notifications enabled:', enabled)\r\n\r\n // Simulate a delay\r\n await createMockDelay(MOCK_DELAYS.short)\r\n\r\n // Update mock storage\r\n venusApi._mock.notificationsEnabled = enabled\r\n return enabled\r\n }\r\n}\r\n","import {\r\n NotificationsApi,\r\n ScheduleLocalNotification,\r\n ScheduleNotificationOptions,\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 scheduleAsync(\r\n title: string,\r\n body: string,\r\n seconds: number,\r\n notificationId?: string,\r\n options?: ScheduleNotificationOptions\r\n ): Promise<string | null> {\r\n const { priority = 50, groupId, payload } = options || {}\r\n \r\n const request: ScheduleLocalNotificationRequest = {\r\n title,\r\n body,\r\n priority,\r\n key: groupId,\r\n data: payload,\r\n seconds,\r\n notificationId,\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 cancelNotification(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 priority: number\r\n key?: string // Optional key for grouping related notifications\r\n data?: Record<string, any>\r\n seconds?: number\r\n notificationId?: string\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","import { VenusAPI } from '../venus-api/types'\r\nimport { Host } from '../Host'\r\n\r\nexport * from './NotificationsApi'\r\nexport * from './MockNotificationsApi'\r\nexport * from './RpcNotificationsApi'\r\n\r\nexport function initializeLocalNotifications(venusApi: VenusAPI, host: Host) {\r\n venusApi.notifications = host.notifications\r\n}\r\n","export function isPacificDaylightTime(date: Date) {\n // US DST rules: Starts second Sunday in March, ends first Sunday in November\n const year = date.getFullYear()\n\n // Calculate second Sunday in March\n const marchStart = new Date(year, 2, 8) // March 8th\n const daysUntilSundayInMarch = (7 - marchStart.getDay()) % 7\n const dstStart = new Date(year, 2, 8 + daysUntilSundayInMarch)\n dstStart.setHours(2, 0, 0, 0) // 2am local time\n\n // Calculate first Sunday in November\n const novemberStart = new Date(year, 10, 1) // November 1st\n const daysUntilSundayInNov = (7 - novemberStart.getDay()) % 7\n const dstEnd = new Date(year, 10, 1 + daysUntilSundayInNov)\n dstEnd.setHours(2, 0, 0, 0) // 2am local time\n\n // Compare with current date\n return date >= dstStart && date < dstEnd\n}\n","import { GetFutureTimeOptions, ServerTimeData, TimeApi } from './TimeApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport { isPacificDaylightTime } from './utils'\r\n\r\nexport class HostTimeApi implements TimeApi {\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 requestTimeAsync(): Promise<ServerTimeData> {\r\n const response = await this.rpcClient.call<ServerTimeData>(\r\n VenusMessageId.REQUEST_SERVER_TIME,\r\n {},\r\n )\r\n return response\r\n }\r\n\r\n formatTime(timestamp: number, options?: any): string {\r\n // Get user locale from configuration\r\n let locale = 'en-US' // Default fallback locale\r\n\r\n const windowVenus = window.venus\r\n\r\n if (windowVenus._config.locale) {\r\n locale = windowVenus._config.locale\r\n } else if (\r\n windowVenus._config.environment &&\r\n windowVenus._config.environment.browserInfo &&\r\n windowVenus._config.environment.browserInfo.language\r\n ) {\r\n locale = windowVenus._config.environment.browserInfo.language\r\n }\r\n\r\n // Create a Date object from the timestamp\r\n const date = new Date(timestamp)\r\n\r\n // Format options\r\n const dateTimeOptions = {\r\n dateStyle: options.dateStyle || 'medium',\r\n timeStyle: options.timeStyle || 'medium',\r\n hour12: options.hour12 !== undefined ? options.hour12 : true,\r\n ...options,\r\n }\r\n\r\n return date.toLocaleString(locale, dateTimeOptions)\r\n }\r\n\r\n formatNumber(value: number, options?: Intl.NumberFormatOptions): string {\r\n try {\r\n // Get user locale from configuration\r\n let locale = 'en-US' // Default fallback locale\r\n const windowVenus = window.venus\r\n\r\n if (windowVenus._config.locale) {\r\n locale = windowVenus._config.locale\r\n } else if (\r\n windowVenus._config.environment &&\r\n windowVenus._config.environment.browserInfo &&\r\n windowVenus._config.environment.browserInfo.language\r\n ) {\r\n locale = windowVenus._config.environment.browserInfo.language\r\n }\r\n\r\n // Format options\r\n const numberOptions = {\r\n style: options?.style || 'decimal',\r\n minimumFractionDigits: options?.minimumFractionDigits || 0,\r\n maximumFractionDigits: options?.maximumFractionDigits || 2,\r\n ...options,\r\n }\r\n\r\n return value.toLocaleString(locale, numberOptions)\r\n } catch (error) {\r\n console.error('[Venus] Error formatting number:', error)\r\n // Fallback to basic formatting\r\n return String(value)\r\n }\r\n }\r\n\r\n async getFutureTimeAsync(options?: GetFutureTimeOptions): Promise<number> {\r\n // Get the current server time first\r\n const timeInfo = await this.requestTimeAsync()\r\n\r\n // Start with the server time\r\n const serverTime = new Date(timeInfo.serverTime)\r\n const result = new Date(serverTime)\r\n\r\n // Add days, hours, and minutes if specified\r\n if (options?.days) {\r\n result.setDate(result.getDate() + options.days)\r\n }\r\n\r\n if (options?.hours) {\r\n result.setHours(result.getHours() + options.hours)\r\n }\r\n\r\n if (options?.minutes) {\r\n result.setMinutes(result.getMinutes() + options.minutes)\r\n }\r\n\r\n // Set specific time of day if requested\r\n if (options?.timeOfDay) {\r\n const { hour = 0, minute = 0, second = 0 } = options.timeOfDay\r\n\r\n // If we're setting the time of day, we do it in the user's local timezone\r\n // Get timezone offset in minutes\r\n const timezoneOffset =\r\n timeInfo.timezoneOffset || new Date().getTimezoneOffset()\r\n\r\n // First set the UTC time that corresponds to the local time\r\n const localHour = hour\r\n\r\n // Reset hours, minutes, seconds\r\n result.setHours(localHour, minute, second, 0)\r\n }\r\n\r\n // For specific timezones, we need to convert\r\n if (options?.timezone) {\r\n switch (options.timezone.toUpperCase()) {\r\n case 'PT':\r\n case 'PST':\r\n case 'PDT': {\r\n // Handle Pacific Time conversion\r\n // First determine if date is in PDT\r\n const isPDT = isPacificDaylightTime(result)\r\n const ptOffset = isPDT ? -7 : -8 // PDT is UTC-7, PST is UTC-8\r\n\r\n // Reset time to midnight UTC\r\n result.setUTCHours(0, 0, 0, 0)\r\n\r\n // Add the specific time in PT (converting to UTC)\r\n const { hour = 0, minute = 0, second = 0 } = options.timeOfDay || {}\r\n\r\n // Convert PT time to UTC time\r\n // e.g., 9am PT = 16:00 or 17:00 UTC\r\n const utcHour = (hour - ptOffset) % 24\r\n result.setUTCHours(utcHour, minute, second, 0)\r\n break\r\n }\r\n // Add other timezone cases as needed\r\n default:\r\n console.warn(\r\n '[Venus] Timezone ' +\r\n options.timezone +\r\n ' not supported, using local time',\r\n )\r\n }\r\n }\r\n\r\n // Return direct timestamp number\r\n return result.getTime()\r\n }\r\n}\r\n","import { GetFutureTimeOptions, ServerTimeData, TimeApi } from './TimeApi'\nimport { createMockDelay, MOCK_DELAYS } from '../venus-api/systems/core'\nimport { VenusAPI } from '../venus-api/types'\nimport { isPacificDaylightTime } from './utils'\n\nexport class MockTimeApi implements TimeApi {\n private readonly venusApi: VenusAPI\n\n constructor(venusApi: VenusAPI) {\n this.venusApi = venusApi\n }\n\n formatNumber(value: number, options?: Intl.NumberFormatOptions): string {\n const locale = this.getLocale()\n\n // Format options\n const numberOptions = {\n style: options?.style || 'decimal',\n minimumFractionDigits: options?.minimumFractionDigits || 0,\n maximumFractionDigits: options?.maximumFractionDigits || 2,\n ...options,\n }\n\n console.log(`[Venus Mock] Formatting number ${value} with locale ${locale}`)\n return value.toLocaleString(locale, numberOptions)\n }\n\n formatTime(timestamp: number, options?: any): string {\n // Get user locale from configuration\n const locale = this.getLocale()\n\n // Create a Date object from the timestamp\n const date = new Date(timestamp)\n\n // Format options\n const dateTimeOptions = {\n dateStyle: options.dateStyle || 'medium',\n timeStyle: options.timeStyle || 'medium',\n hour12: options.hour12 !== undefined ? options.hour12 : true,\n ...options,\n }\n\n console.log(\n `[Venus Mock] Formatting time ${timestamp} with locale ${locale}`,\n )\n return date.toLocaleString(locale, dateTimeOptions)\n }\n\n async getFutureTimeAsync(options?: GetFutureTimeOptions): Promise<number> {\n console.log('[Venus Mock] Getting future time with options:', options)\n\n // Get the current server time first - now returns direct TimeInfo object\n const timeInfo = await this.requestTimeAsync()\n\n // Start with the server time\n const serverTime = new Date(timeInfo.serverTime)\n const result = new Date(serverTime)\n\n // Add days, hours, and minutes if specified\n if (options?.days) {\n result.setDate(result.getDate() + options.days)\n }\n\n if (options?.hours) {\n result.setHours(result.getHours() + options.hours)\n }\n\n if (options?.minutes) {\n result.setMinutes(result.getMinutes() + options.minutes)\n }\n\n // Set specific time of day if requested\n if (options?.timeOfDay) {\n const { hour = 0, minute = 0, second = 0 } = options.timeOfDay\n\n // If we're setting the time of day, we do it in the user's local timezone\n // Get timezone offset in minutes\n const timezoneOffset =\n timeInfo.timezoneOffset || new Date().getTimezoneOffset()\n\n // First set the UTC time that corresponds to the local time\n const localHour = hour\n\n // Reset hours, minutes, seconds\n result.setHours(localHour, minute, second, 0)\n }\n\n // For specific timezones, we need to convert\n if (options?.timezone) {\n switch (options?.timezone.toUpperCase()) {\n case 'PT':\n case 'PST':\n case 'PDT': {\n // Handle Pacific Time conversion\n // First determine if date is in PDT\n const isPDT = isPacificDaylightTime(result)\n const ptOffset = isPDT ? -7 : -8 // PDT is UTC-7, PST is UTC-8\n\n // Reset time to midnight UTC\n const utcDay = result.getUTCDate()\n const utcMonth = result.getUTCMonth()\n const utcYear = result.getUTCFullYear()\n result.setUTCHours(0, 0, 0, 0)\n\n // Add the specific time in PT (converting to UTC)\n const { hour = 0, minute = 0, second = 0 } = options.timeOfDay || {}\n\n // Convert PT time to UTC time\n // e.g., 9am PT = 16:00 or 17:00 UTC\n const utcHour = (hour - ptOffset) % 24\n result.setUTCHours(utcHour, minute, second, 0)\n break\n }\n // Add other timezone cases as needed\n default:\n console.warn(\n `[Venus Mock] Timezone ${options.timezone} not supported, using local time`,\n )\n }\n }\n\n // Return direct timestamp number to match real API\n return result.getTime()\n }\n\n async requestTimeAsync(): Promise<ServerTimeData> {\n console.log('[Venus Mock] Requesting time')\n await createMockDelay(MOCK_DELAYS.short)\n\n const venusApi = this.venusApi\n\n // In the mock, we'll simulate server-client time offset\n // This helps developers test time sync behavior\n\n // Simulate a small offset between server and client time\n // In production, this could be seconds or even minutes\n const mockOffset = venusApi._mock.serverTimeOffset || 2500 // Default 2.5 second offset\n const mockServerTime = Date.now() + mockOffset\n\n // Get timezone offset in minutes (positive for west of UTC, negative for east)\n const timezoneOffset = new Date().getTimezoneOffset()\n\n // Convert server time (UTC) to local time\n // Note: getTimezoneOffset() returns minutes WEST of UTC with reversed sign convention:\n // - For UTC-5 (e.g., Eastern Time): Returns +300 minutes (positive)\n // - For UTC+3 (e.g., Moscow): Returns -180 minutes (negative)\n // So we subtract the offset (which adds time for eastern timezones and subtracts for western)\n const localTime = mockServerTime - timezoneOffset * 60000\n\n // Return direct TimeInfo object (not wrapped in success object)\n const timeInfo = {\n serverTime: mockServerTime,\n localTime,\n timezoneOffset: timezoneOffset,\n formattedTime: new Date(localTime).toISOString(),\n locale: venusApi._mock.user?.locale || 'en-US',\n }\n\n console.log('[Venus Mock] Time response:', {\n serverTime: new Date(timeInfo.serverTime).toISOString(),\n localTime: new Date(timeInfo.localTime).toISOString(),\n timezoneOffset: timeInfo.timezoneOffset,\n })\n\n return timeInfo\n }\n\n private getLocale() {\n const venusApi = this.venusApi\n\n // Get user locale from configuration\n let locale = 'en-US' // Default fallback locale\n\n if (venusApi._mock.user && venusApi._mock.user.locale) {\n locale = venusApi._mock.user.locale\n } else if (\n venusApi._mock.environment &&\n venusApi._mock.environment.browserInfo.language\n ) {\n locale = venusApi._mock.environment.browserInfo.language\n }\n\n return locale\n }\n}\n","import { VenusAPI } from '../venus-api/types'\nimport { Host } from '../Host'\n\nexport * from './TimeApi'\nexport * from './HostTimeApi'\nexport * from './utils'\nexport * from './MockTimeApi'\n\nexport function initializeTime(venusApi: VenusAPI, host: Host) {\n venusApi.requestTimeAsync = () => {\n return host.time.requestTimeAsync()\n }\n\n venusApi.getFutureTimeAsync = (options?: {\n days?: number\n hours?: number\n minutes?: number\n timeOfDay?: any\n timezone?: string\n }) => {\n return host.time.getFutureTimeAsync(options)\n }\n\n venusApi.formatTime = (timestamp, options) => {\n return host.time.formatTime(timestamp, options)\n }\n\n venusApi.formatNumber = (value, options) => {\n return host.time.formatNumber(value, options)\n }\n}\n","import { Avatar3dApi, Avatar3dEdits, ShowEditorOptions } from './Avatar3dApi.ts'\r\nimport { VenusAPI } from '../venus-api/types.ts'\r\nimport { Avatar3dConfig } from './Avatar3dConfig.ts'\r\nimport { AssetManifest, Category } from './AssetManifest.ts'\r\nimport { createMockDelay, MOCK_DELAYS } from '../venus-api/systems/core'\r\n\r\ndeclare global {\r\n interface Window {\r\n VenusPrototyping?: {\r\n showAvatarEditorOverlay: (\r\n options: any,\r\n resolve: (args: any) => void,\r\n ) => Promise<void>\r\n }\r\n }\r\n}\r\n\r\nexport class MockAvatarApi implements Avatar3dApi {\r\n private readonly _venusApi: VenusAPI\r\n\r\n private cachedAssets: Record<string, Category> | null = null\r\n private cachedVersion: string = ''\r\n\r\n constructor(venusApi: VenusAPI) {\r\n this._venusApi = venusApi\r\n }\r\n downloadAssetPaths(): Promise<Record<string, string[]>> {\r\n console.log('[Venus Mock] Downloading avatar3d asset paths...')\r\n return this.getAllAssetPaths()\r\n }\r\n\r\n async deleteAvatar(): Promise<void> {\r\n console.log(`[Venus Mock] Deleting avatar3d config`)\r\n const venusApi = this._venusApi\r\n\r\n // Get current profile from Venus API context\r\n const currentProfile = venusApi.getCurrentProfile()\r\n const profileId = currentProfile?.id || 'default_profile'\r\n\r\n // Remove from localStorage\r\n localStorage.removeItem(`venus-mock-avatar3d-${profileId}`)\r\n\r\n console.log(\r\n `[Venus Mock] Avatar3d config deleted from localStorage for profile: ${profileId}`,\r\n )\r\n }\r\n\r\n async loadAvatar(avatar3dId?: string): Promise<Avatar3dConfig | null> {\r\n console.log(`[Venus Mock] Loading avatar3d`, { avatar3dId })\r\n const venusApi = this._venusApi\r\n let config\r\n\r\n if (avatar3dId) {\r\n // Mock shared avatar3d loading using deterministic selection\r\n console.log(`[Venus Mock] Loading shared avatar3d by ID: ${avatar3dId}`)\r\n config = await this.selectAvatarConfig(avatar3dId, false)\r\n } else {\r\n // Always return a valid avatar, even if no profile\r\n const currentProfile = venusApi.getCurrentProfile()\r\n const profileId = currentProfile?.id || 'default_profile'\r\n\r\n console.log(`[Venus Mock] Loading avatar3d for profile: ${profileId}`)\r\n\r\n // Always generate fresh avatar config with current CDN URLs\r\n // localStorage is only used for save persistence, not loading\r\n console.log(\r\n '[Venus Mock] Generating fresh avatar config with current CDN URLs',\r\n )\r\n if (profileId === 'default_profile') {\r\n // Use consistent defaults for the default profile\r\n config = await this.selectAvatarConfig(null, true)\r\n } else {\r\n // Use seeded random for other profiles\r\n config = await this.selectAvatarConfig(profileId, false)\r\n }\r\n }\r\n\r\n // Return direct config or null if not found\r\n return config || null\r\n }\r\n\r\n async saveAvatar(config: Avatar3dConfig): Promise<string> {\r\n console.log(`[Venus Mock] Saving avatar3d config:`, config)\r\n const venusApi = this._venusApi\r\n\r\n // Get current profile from Venus API context\r\n const currentProfile = venusApi.getCurrentProfile()\r\n const profileId = currentProfile?.id || 'default_profile'\r\n\r\n // Save to localStorage for mock persistence\r\n localStorage.setItem(\r\n `venus-mock-avatar3d-${profileId}`,\r\n JSON.stringify(config),\r\n )\r\n\r\n // Generate a mock avatar3dId\r\n const mockAvatar3dId = `mock_avatar3d_${profileId}_${Date.now()}`\r\n\r\n console.log(\r\n `[Venus Mock] Avatar3d config saved to localStorage with mock ID: ${mockAvatar3dId}`,\r\n )\r\n\r\n // Return direct avatar ID\r\n return mockAvatar3dId\r\n }\r\n\r\n downloadManifest(): Promise<AssetManifest> {\r\n return this.loadAssetsManifest()\r\n }\r\n\r\n async showEditor(options?: ShowEditorOptions): Promise<Avatar3dEdits> {\r\n console.log(\r\n `[Venus Mock] showAvatar3dEditorAsync called with options:`,\r\n options,\r\n )\r\n\r\n // Mock implementation - simulate opening avatar editor\r\n if (window.VenusPrototyping) {\r\n // If prototyping utilities are available, use them for a better experience\r\n return new Promise((resolve) => {\r\n window.VenusPrototyping!.showAvatarEditorOverlay(options, resolve)\r\n })\r\n }\r\n\r\n // Simple browser-based simulation\r\n console.log('[Venus Mock] Simulating avatar editor opening...')\r\n\r\n // Simulate delay for opening editor\r\n await createMockDelay(MOCK_DELAYS.medium)\r\n\r\n // Generate a mock avatar configuration\r\n const mockAvatarConfig = await this.selectAvatarConfig(null, false)\r\n\r\n // Simulate user interaction - 70% chance they save changes, 30% they cancel\r\n const userSavedChanges = Math.random() > 0.3\r\n\r\n console.log(\r\n '[Venus Mock] Avatar editor simulation complete - user would use requestPopOrQuit() with result data',\r\n )\r\n\r\n // Return direct editor result\r\n if (userSavedChanges) {\r\n const mockAvatarId = `mock_avatar_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`\r\n\r\n return {\r\n wasChanged: true,\r\n config: mockAvatarConfig,\r\n savedAvatarId: mockAvatarId,\r\n }\r\n } else {\r\n return {\r\n wasChanged: false,\r\n config: null,\r\n savedAvatarId: null,\r\n }\r\n }\r\n }\r\n\r\n private async getAssets() {\r\n let cachedAssets = this.cachedAssets\r\n if (!cachedAssets) {\r\n this.log('No cached assets found, loading new manifest...')\r\n cachedAssets = (await this.loadAssetsManifest()).categories\r\n }\r\n return cachedAssets\r\n }\r\n\r\n private async loadAssetsManifest() {\r\n this.log('Loading avatar3d assets manifest from CDN...')\r\n const venusApi = this._venusApi\r\n\r\n // Use the CDN base URL from Venus API configuration\r\n const baseManifestUrl = venusApi.resolveAvatarAssetUrl('assets.json')\r\n\r\n // Add cache busting to prevent CDN/browser cache issues\r\n const separator = baseManifestUrl.includes('?') ? '&' : '?'\r\n const manifestUrl = `${baseManifestUrl}${separator}v=${Date.now()}`\r\n\r\n console.log('[Venus Mock] Fetching manifest from URL:', manifestUrl)\r\n\r\n try {\r\n const response = await fetch(manifestUrl, {\r\n method: 'GET',\r\n headers: {\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json',\r\n },\r\n mode: 'cors',\r\n cache: 'no-cache',\r\n })\r\n\r\n console.log(\r\n '[Venus Mock] Fetch response status:',\r\n response.status,\r\n response.statusText,\r\n )\r\n console.log(\r\n '[Venus Mock] Response headers:',\r\n Object.fromEntries(response.headers.entries()),\r\n )\r\n\r\n if (!response.ok) {\r\n throw new Error(\r\n `Failed to fetch assets manifest: ${response.status} ${response.statusText}`,\r\n )\r\n }\r\n\r\n const manifest = (await response.json()) as AssetManifest\r\n console.log('[Venus Mock] Loaded assets manifest:', {\r\n version: manifest.version,\r\n generatedAt: manifest.generatedAt,\r\n categories: Object.keys(manifest.categories || {}),\r\n })\r\n\r\n // Cache the assets but not the raw JSON\r\n this.cachedAssets = manifest.categories || {}\r\n this.cachedVersion = manifest.version\r\n\r\n return manifest\r\n } catch (error) {\r\n console.error('[Venus Mock] Failed to load assets manifest:', error)\r\n\r\n // Return a fallback minimal manifest for development\r\n console.log(\r\n '[Venus Mock] Using fallback minimal manifest for development',\r\n )\r\n const fallbackManifest: AssetManifest = {\r\n version: 'dev-fallback',\r\n generatedAt: new Date().toISOString(),\r\n categories: {\r\n head: {\r\n type: 'mesh',\r\n assets: [\r\n {\r\n id: 'head_default',\r\n filename: 'head_default.glb',\r\n displayName: 'Default Head',\r\n },\r\n {\r\n id: 'head_variant1',\r\n filename: 'head_variant1.glb',\r\n displayName: 'Head Variant 1',\r\n },\r\n ],\r\n },\r\n outfit: {\r\n type: 'mesh',\r\n assets: [\r\n {\r\n id: 'outfit_default',\r\n filename: 'outfit_default.glb',\r\n displayName: 'Default Outfit',\r\n },\r\n {\r\n id: 'outfit_casual',\r\n filename: 'outfit_casual.glb',\r\n displayName: 'Casual Outfit',\r\n },\r\n ],\r\n },\r\n hat: {\r\n type: 'mesh',\r\n assets: [\r\n {\r\n id: 'hat_none',\r\n filename: 'hat_none.glb',\r\n displayName: 'No Hat',\r\n },\r\n {\r\n id: 'hat_cap',\r\n filename: 'hat_cap.glb',\r\n displayName: 'Baseball Cap',\r\n },\r\n ],\r\n },\r\n hair: {\r\n type: 'mesh',\r\n assets: [\r\n {\r\n id: 'hair_default',\r\n filename: 'hair_default.glb',\r\n displayName: 'Default Hair',\r\n },\r\n {\r\n id: 'hair_long',\r\n filename: 'hair_long.glb',\r\n displayName: 'Long Hair',\r\n },\r\n ],\r\n },\r\n 'face-accessory': {\r\n type: 'mesh',\r\n assets: [\r\n {\r\n id: 'glasses_none',\r\n filename: 'glasses_none.glb',\r\n displayName: 'No Glasses',\r\n },\r\n {\r\n id: 'glasses_regular',\r\n filename: 'glasses_regular.glb',\r\n displayName: 'Regular Glasses',\r\n },\r\n ],\r\n },\r\n animation: {\r\n type: 'mesh',\r\n assets: [\r\n {\r\n id: 'idle_default',\r\n filename: 'idle_default.glb',\r\n displayName: 'Default Idle',\r\n },\r\n {\r\n id: 'wave',\r\n filename: 'wave.glb',\r\n displayName: 'Wave Animation',\r\n },\r\n ],\r\n },\r\n },\r\n }\r\n\r\n this.cachedAssets = fallbackManifest.categories\r\n this.cachedVersion = fallbackManifest.version\r\n\r\n return fallbackManifest\r\n }\r\n }\r\n\r\n private async selectAvatarConfig(\r\n avatarId: string | null = null,\r\n useDefaults = false,\r\n ): Promise<Avatar3dConfig> {\r\n const categories = await this.getAssets()\r\n this.log(`Manifest ${JSON.stringify(categories, null, 2)}`)\r\n\r\n const rng = avatarId ? this.seededRandom(avatarId) : () => Math.random()\r\n\r\n const headAsset = this.selectAsset(\r\n categories,\r\n 'head',\r\n rng,\r\n avatarId,\r\n useDefaults,\r\n )\r\n\r\n const outfitAsset = this.selectAsset(\r\n categories,\r\n 'outfit',\r\n rng,\r\n avatarId,\r\n useDefaults,\r\n )\r\n const hatAsset = this.selectAsset(\r\n categories,\r\n 'hat',\r\n rng,\r\n avatarId,\r\n useDefaults,\r\n )\r\n const hairAsset = this.selectAsset(\r\n categories,\r\n 'hair',\r\n rng,\r\n avatarId,\r\n useDefaults,\r\n )\r\n const faceAccessoryAsset = this.selectAsset(\r\n categories,\r\n 'face-accessory',\r\n rng,\r\n avatarId,\r\n useDefaults,\r\n )\r\n const animationAsset = this.selectAsset(\r\n categories,\r\n 'animation',\r\n rng,\r\n avatarId,\r\n useDefaults,\r\n )\r\n\r\n const config: Avatar3dConfig = {\r\n headAsset: headAsset.filename,\r\n outfitAsset: outfitAsset.filename,\r\n animationAsset: animationAsset.filename,\r\n faceAccessoryAsset: faceAccessoryAsset.filename,\r\n hairAsset: hairAsset.filename,\r\n hatAsset: hatAsset.filename,\r\n skinColor: null, // NOTE(Zee): This was not selected anywhere?\r\n }\r\n\r\n console.log(\r\n `[Venus Mock] Selected avatar config for ${avatarId || 'default'}:`,\r\n config,\r\n )\r\n return config\r\n }\r\n\r\n private selectAsset(\r\n manifest: Record<string, Category>,\r\n categoryId: string,\r\n rng: () => number,\r\n avatarId: string | null,\r\n useDefaults = false,\r\n ) {\r\n const categoryAssets = manifest[categoryId].assets\r\n\r\n if (useDefaults) {\r\n // Always use the first asset for default avatar (consistent)\r\n const selectedAsset = categoryAssets[0]\r\n console.log(\r\n `[Venus Mock] Using default asset for ${categoryId}:`,\r\n selectedAsset.id,\r\n )\r\n return selectedAsset\r\n }\r\n\r\n if (avatarId) {\r\n // Use seeded random for deterministic selection based on ID\r\n const index = Math.floor(rng() * categoryAssets.length)\r\n const selectedAsset = categoryAssets[index]\r\n console.log(\r\n `[Venus Mock] Seeded selection for ${avatarId} ${categoryId}:`,\r\n selectedAsset.id,\r\n `(index ${index}/${categoryAssets.length})`,\r\n )\r\n return selectedAsset\r\n }\r\n\r\n // Fallback to first asset if no ID\r\n const selectedAsset = categoryAssets[0]\r\n this.log(`Fallback to first asset for ${categoryId}:`, selectedAsset.id)\r\n\r\n return selectedAsset\r\n }\r\n\r\n private seededRandom(seed: string) {\r\n const hash = this.simpleHash(seed)\r\n let state = hash\r\n return function () {\r\n state = (state * 1664525 + 1013904223) % 4294967296\r\n return state / 4294967296\r\n }\r\n }\r\n\r\n private simpleHash(str: string) {\r\n let hash = 0\r\n for (let i = 0; i < str.length; i++) {\r\n const char = str.charCodeAt(i)\r\n hash = (hash << 5) - hash + char\r\n hash = hash & hash // Convert to 32-bit integer\r\n }\r\n return Math.abs(hash)\r\n }\r\n\r\n private async getAllAssetPaths() {\r\n const venusApi = this._venusApi\r\n const assets = await this.getAssets()\r\n const allPaths: Record<string, string[]> = {}\r\n\r\n for (const [category, categoryData] of Object.entries(assets)) {\r\n allPaths[category] = (categoryData?.assets || []).map((asset) =>\r\n venusApi.resolveAvatarAssetUrl(`${category}/${asset.filename}`),\r\n )\r\n }\r\n\r\n this.log('All available asset paths:', allPaths)\r\n return allPaths\r\n }\r\n\r\n private log(message: string, ...args: any[]) {\r\n console.log(`\"[Venus Mock] ${message}`, args)\r\n }\r\n}\r\n","import { Avatar3dApi, Avatar3dEdits, ShowEditorOptions } from './Avatar3dApi.ts'\r\nimport { Avatar3dConfig } from './Avatar3dConfig.ts'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId.ts'\r\nimport { Asset, AssetManifest } from './AssetManifest.ts'\r\nimport { VenusAPI } from '../venus-api/types.ts'\r\n\r\nexport class RpcAvatarApi implements Avatar3dApi {\r\n private readonly venusApi: VenusAPI\r\n private readonly rpcClient: RpcClient\r\n\r\n constructor(rpcClient: RpcClient, venusApi: VenusAPI) {\r\n this.rpcClient = rpcClient\r\n this.venusApi = venusApi\r\n }\r\n\r\n async downloadAssetPaths(): Promise<Record<string, string[]>> {\r\n const venusApi = this.venusApi\r\n console.log('[Venus] Downloading avatar3d asset paths...')\r\n\r\n const manifestUrl = venusApi.resolveAvatarAssetUrl('assets.json')\r\n console.log('[Venus] 🔍 Manifest URL resolved to:', manifestUrl)\r\n\r\n const manifest = await this.fetchFromCdn(manifestUrl)\r\n console.log('[Venus] 📦 Manifest loaded successfully:', {\r\n version: manifest.version,\r\n categories: Object.keys(manifest.categories || {}),\r\n totalAssets: Object.values(manifest.categories || {}).reduce(function (\r\n sum,\r\n cat,\r\n ) {\r\n return sum + (cat.assets?.length || 0)\r\n }, 0),\r\n })\r\n\r\n const categories = manifest.categories || {}\r\n\r\n // Process into asset paths with full URLs\r\n const assetPaths: Record<string, string[]> = {}\r\n for (const categoryKey in categories) {\r\n const categoryData = categories[categoryKey]\r\n const categoryPath = categoryKey\r\n const assetUrls = (categoryData?.assets || []).map((asset: Asset) => {\r\n const url = venusApi.resolveAvatarAssetUrl(\r\n categoryPath + '/' + asset.filename,\r\n )\r\n console.log('[Venus] 🎨 Asset URL:', asset.filename, '->', url)\r\n return url\r\n })\r\n assetPaths[categoryKey] = assetUrls\r\n console.log(\r\n '[Venus] 📁 Category',\r\n categoryKey,\r\n 'has',\r\n assetUrls.length,\r\n 'assets',\r\n )\r\n }\r\n\r\n console.log('[Venus] Avatar3d asset paths downloaded successfully')\r\n\r\n // Return direct asset paths\r\n return assetPaths\r\n }\r\n\r\n async downloadManifest(): Promise<AssetManifest> {\r\n console.log('[Venus] Downloading avatar3d manifest...')\r\n const venusApi = this.venusApi\r\n\r\n // Use shared CDN fetch utility\r\n const manifestUrl = venusApi.resolveAvatarAssetUrl('assets.json')\r\n const manifest = await this.fetchFromCdn(manifestUrl)\r\n\r\n console.log('[Venus] Avatar3d manifest downloaded successfully')\r\n\r\n // Return direct manifest\r\n return manifest\r\n }\r\n\r\n async loadAvatar(avatarId?: string): Promise<Avatar3dConfig | null> {\r\n const result = await this.rpcClient.call(VenusMessageId.AVATAR3D_LOAD, {\r\n avatar3dId: avatarId,\r\n })\r\n this.log(\r\n `Avatar loaded with the following result:\\n${JSON.stringify(result, null, 2)}`,\r\n )\r\n return result as Avatar3dConfig\r\n }\r\n\r\n saveAvatar(config: Avatar3dConfig): Promise<string> {\r\n return this.rpcClient.call(VenusMessageId.AVATAR3D_SAVE, {\r\n config: config,\r\n })\r\n }\r\n\r\n deleteAvatar(): Promise<void> {\r\n return this.rpcClient.call(VenusMessageId.AVATAR3D_DELETE)\r\n }\r\n\r\n async showEditor(options?: ShowEditorOptions): Promise<Avatar3dEdits> {\r\n const rpcClient = this.rpcClient\r\n\r\n console.log(\r\n '[Venus] 🎨 showAvatar3dEditorAsync called with options:',\r\n options,\r\n )\r\n\r\n console.log(\r\n '[Venus] 📤 Sending H5_STACK_PUSH_REQUEST for avatar3d using _sendRequest...',\r\n )\r\n\r\n // Use _sendRequest to get the final result when the editor closes\r\n const rawResult = await rpcClient.call<Avatar3dEdits>(\r\n VenusMessageId.H5_STACK_PUSH_REQUEST,\r\n {\r\n targetAppId: 'AVATAR3D',\r\n contextData: options?.contextData || {},\r\n appParams: {\r\n currentAvatar: options?.currentAvatar,\r\n onSave: options?.onSave,\r\n onCancel: options?.onCancel,\r\n },\r\n },\r\n )\r\n\r\n console.log(\r\n '[Venus] ✅ Avatar editor completed with raw result:',\r\n rawResult,\r\n )\r\n\r\n // Return direct editor result\r\n return {\r\n wasChanged: rawResult.wasChanged || false,\r\n config: rawResult.config || null,\r\n savedAvatarId: rawResult.savedAvatarId || null,\r\n }\r\n }\r\n\r\n private async fetchFromCdn(url: string): Promise<AssetManifest> {\r\n const response = await fetch(url, {\r\n method: 'GET',\r\n headers: {\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json',\r\n },\r\n mode: 'cors',\r\n cache: 'no-cache',\r\n })\r\n\r\n if (!response.ok) {\r\n throw new Error(\r\n `CDN fetch failed: ${response.status} ${response.statusText}`,\r\n )\r\n }\r\n\r\n return (await response.json()) as AssetManifest\r\n }\r\n\r\n private log(message: string, ...options: any[]): void {\r\n console.log(`[Venus] ${message}`, options)\r\n }\r\n}\r\n","import { VenusAPI } from '../venus-api/types.ts'\nimport { Host } from '../Host.ts'\n\nexport * from './Avatar3dApi'\nexport * from './Avatar3dConfig'\nexport * from './AssetManifest'\nexport * from './MockAvatarApi'\nexport * from './RpcAvatarApi'\n\nexport function initializeAvatar3d(venusApi: VenusAPI, host: Host) {\n venusApi.loadAvatar3dAsync = host.avatar3d.loadAvatar.bind(host.avatar3d)\n venusApi.saveAvatar3dAsync = host.avatar3d.saveAvatar.bind(host.avatar3d)\n venusApi.deleteAvatar3dAsync = host.avatar3d.deleteAvatar.bind(host.avatar3d)\n venusApi.downloadAvatar3dManifestAsync = host.avatar3d.downloadManifest.bind(\n host.avatar3d,\n )\n venusApi.showAvatar3dEditorAsync = host.avatar3d.showEditor.bind(\n host.avatar3d,\n )\n venusApi.downloadAvatar3dAssetPathsAsync =\n host.avatar3d.downloadAssetPaths.bind(host.avatar3d)\n}\n","import {\n NavigationApi,\n NavigationStackInfo,\n PushAppOptions,\n QuitOptions,\n} from './NavigationApi'\nimport { VenusAPI } from '../venus-api/types'\nimport { createMockDelay, MOCK_DELAYS } from '../venus-api/systems/core'\n\nexport class MockNavigationApi implements NavigationApi {\n private readonly venusApi: VenusAPI\n\n constructor(venusApi: VenusAPI) {\n this.venusApi = venusApi\n }\n async requestPopOrQuit(options?: QuitOptions): Promise<boolean> {\n return true\n }\n\n getStackInfo(): NavigationStackInfo {\n const venusApi = this.venusApi\n const info: NavigationStackInfo = {\n isInStack: venusApi._mock.stackState.isInStack,\n stackPosition: venusApi._mock.stackState.stackPosition,\n isTopOfStack: venusApi._mock.stackState.isTopOfStack,\n stackDepth: venusApi._mock.stackState.stackDepth,\n parentInstanceId: venusApi._mock.stackState.parentInstanceId,\n }\n return info\n }\n\n async popApp(): Promise<void> {\n const venusApi = this.venusApi\n // Check if we can pop\n if (venusApi._mock.stackState.stackDepth <= 1) {\n console.warn('[Venus Mock] Cannot pop - at base of stack or not in stack')\n return\n }\n\n // Simulate delay\n await createMockDelay(MOCK_DELAYS.short)\n\n // Pop from history\n const poppedApp = venusApi._mock.stackState.stackHistory.pop()\n venusApi._mock.stackState.stackDepth--\n venusApi._mock.stackState.stackPosition = Math.max(\n 0,\n venusApi._mock.stackState.stackDepth - 1,\n )\n\n // Update stack state\n if (venusApi._mock.stackState.stackDepth === 0) {\n venusApi._mock.stackState.isInStack = false\n venusApi._mock.stackState.isTopOfStack = false\n venusApi._mock.stackState.parentInstanceId = null\n }\n\n this.log('App popped: ', poppedApp)\n }\n\n async pushApp(appId: string, options?: PushAppOptions): Promise<void> {\n const venusApi = this.venusApi\n\n // Simulate delay for mock\n await createMockDelay(MOCK_DELAYS.medium)\n\n // Update mock stack state\n venusApi._mock.stackState.stackHistory.push({\n appId,\n pushedAt: Date.now(),\n contextData: options?.contextData,\n appParams: options?.appParams,\n })\n\n venusApi._mock.stackState.isInStack = true\n venusApi._mock.stackState.stackDepth++\n venusApi._mock.stackState.stackPosition =\n venusApi._mock.stackState.stackDepth - 1\n venusApi._mock.stackState.isTopOfStack = true\n\n const pushedInstanceId = `mock-stack-${appId}-${Date.now()}`\n this.log('PushedInstanceId: ', pushedInstanceId)\n }\n\n private log(message: string, ...args: any[]) {\n console.log(`[Venus Mock] ${message}`, ...args)\n }\n}\n","import {\r\n NavigationApi,\r\n NavigationStackInfo,\r\n PushAppOptions,\r\n QuitOptions,\r\n} from './NavigationApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport { VenusAPI } from '../venus-api/types'\r\n\r\nexport class RpcNavigationApi implements NavigationApi {\r\n private readonly venusApi: VenusAPI\r\n private readonly rpcClient: RpcClient\r\n\r\n constructor(rpcClient: RpcClient, venusApi: VenusAPI) {\r\n this.rpcClient = rpcClient\r\n this.venusApi = venusApi\r\n }\r\n async requestPopOrQuit(options?: QuitOptions): Promise<boolean> {\r\n const result = await this.rpcClient.call<PopOrQuitResponse>(\r\n VenusMessageId.QUIT,\r\n options,\r\n )\r\n return result.success\r\n }\r\n\r\n getStackInfo(): NavigationStackInfo {\r\n const venusApi = this.venusApi\r\n console.log('[Venus] getStackInfo called')\r\n const config = window.venus._config\r\n const stackInfo = config.context?.stack || {\r\n isInStack: false,\r\n stackPosition: 0,\r\n parentInstanceId: null,\r\n appType: 'standalone',\r\n }\r\n return stackInfo\r\n }\r\n\r\n popApp(): Promise<void> {\r\n const rpcClient = this.rpcClient\r\n console.log('[Venus] popAppAsync called')\r\n return rpcClient.call(VenusMessageId.H5_STACK_POP_REQUEST)\r\n }\r\n\r\n pushApp(appId: string, options?: PushAppOptions): Promise<void> {\r\n const rpcClient = this.rpcClient\r\n console.log('[Venus] pushAppAsync called', { appId, options })\r\n return rpcClient.call(VenusMessageId.H5_STACK_PUSH_REQUEST, {\r\n targetAppId: appId,\r\n contextData: options?.contextData,\r\n appParams: options?.appParams,\r\n })\r\n }\r\n}\r\n\r\ninterface PopOrQuitResponse {\r\n success: boolean\r\n action: 'popped_from_stack'\r\n quitReason: string\r\n timestamp: number\r\n}\r\n","import { VenusAPI } from '../venus-api/types'\nimport { Host } from '../Host'\n\nexport * from './NavigationApi'\nexport * from './MockNavigationApi'\nexport * from './RpcNavigationApi'\n\nexport function initializeStackNavigation(venusApi: VenusAPI, host: Host) {\n venusApi._mock.stackState = {\n isInStack: false,\n stackPosition: 0,\n stackDepth: 0,\n isTopOfStack: false,\n parentInstanceId: null,\n stackHistory: [], // Track navigation history for mock\n }\n\n venusApi.pushAppAsync = host.navigation.pushApp.bind(host.navigation)\n venusApi.popAppAsync = host.navigation.popApp.bind(host.navigation)\n venusApi.getStackInfo = host.navigation.getStackInfo.bind(host.navigation)\n venusApi.requestPopOrQuit = (options) => {\n return host.navigation.requestPopOrQuit(options)\n }\n}\n","import { AiApi, AiChatCompletionRequest, AiChatCompletionData } from './AiApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\n\r\nexport class RpcAiApi implements AiApi {\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 requestChatCompletionAsync(\r\n request: AiChatCompletionRequest,\r\n ): Promise<AiChatCompletionData> {\r\n const response = await this.rpcClient.call<AiChatCompletionData>(\r\n VenusMessageId.AI_CHAT_COMPLETION,\r\n {\r\n request: (() => {\r\n const { apiKey, ...requestWithoutApiKey } = request\r\n return requestWithoutApiKey\r\n })(),\r\n },\r\n )\r\n // Return direct response data\r\n return response\r\n }\r\n\r\n async getAvailableCompletionModels(): Promise<Array<string>> {\r\n const response = await this.rpcClient.call<Array<string>>(\r\n VenusMessageId.AI_GET_AVAILABLE_MODELS,\r\n )\r\n return response\r\n }\r\n}\r\n","import { AiApi, AiChatCompletionData, AiChatCompletionRequest } from './AiApi'\r\n\r\nexport class MockAiApi implements AiApi {\r\n async requestChatCompletionAsync(\r\n request: AiChatCompletionRequest,\r\n ): Promise<AiChatCompletionData> {\r\n const { apiKey, ...requestBody } = request\r\n \r\n if (!apiKey) {\r\n throw new Error('An API key is required for a chat completion request when developing locally.')\r\n }\r\n\r\n const response = await fetch('https://series.ullm.rho.live/api/v1/completions', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${apiKey}`,\r\n },\r\n body: JSON.stringify(requestBody),\r\n })\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`)\r\n }\r\n\r\n const data: AiChatCompletionData = await response.json()\r\n return data\r\n }\r\n\r\n async getAvailableCompletionModels(): Promise<Array<string>> {\r\n const response = await fetch('https://series.ullm.rho.live/api/v1/models', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`)\r\n }\r\n\r\n const data: Array<string> = await response.json()\r\n return data\r\n }\r\n}\r\n","import { Host } from '../Host'\r\nimport { VenusAPI } from '../venus-api/types'\r\nimport { AiChatCompletionRequest } from './AiApi'\r\n\r\nexport * from './AiApi'\r\nexport * from './RpcAiApi'\r\nexport * from './MockAiApi'\r\n\r\nexport function initializeAi(venusApi: VenusAPI, host: Host) {\r\n venusApi.ai = host.ai\r\n}\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 { 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 { 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 { initializeLeaderboard } from '../leaderboard'\r\nimport { createHost } from '../Host'\r\nimport { initializeRoomsApi } from '../rooms'\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\nimport { initializePreloader } from '../game-preloader'\r\nimport { initializeSocial } from '../social'\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 // Note: Profile is now separate from config and accessed via getCurrentProfile()\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 this.launchParams = {}\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 // Note: Profile is no longer in config - use getCurrentProfile() instead\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 // Room subscriptions are now managed by RpcRoomsApi class instance\r\n // No need to initialize global state\r\n\r\n // Initialize storage functionality (renamed from localStorage)\r\n initializeStorage(this, host)\r\n initializeRoomsApi(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 leaderboard functionality\r\n initializeLeaderboard(this, host)\r\n\r\n // Initialize local notifications functionality\r\n initializeLocalNotifications(this, host)\r\n\r\n // Initialize preloader\r\n initializePreloader(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 simulation functionality (unified crafting, slots, actors)\r\n initializeSimulation(this, host)\r\n\r\n // Initialize social distribution APIs (share links + QR codes)\r\n initializeSocial(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 if (this._mock.roomsData) {\r\n console.warn(\r\n '[Venus Mock] Rooms mock data is no longer supported. Rooms functionality requires the Venus host environment.',\r\n )\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 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, reject) => {\r\n try {\r\n const result = await this.host.initialize(options)\r\n this._shared.initialized = true\r\n\r\n // If usePreloader is false (default), hide the client's load screen\r\n if (!options || !options.usePreloader) {\r\n // NOTE(Zee): No awaiting this\r\n this.host.preloader.hideLoadScreen()\r\n }\r\n resolve(result)\r\n } catch (err) {\r\n reject(err)\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","import { AnalyticsApi } from './AnalyticsApi.ts'\r\nimport { createMockDelay, MOCK_DELAYS } from '../venus-api/systems/core'\r\n\r\nexport class MockAnalyticsApi implements AnalyticsApi {\r\n async recordCustomEvent(\r\n eventName: string,\r\n payload: Record<string, any>,\r\n ): Promise<void> {\r\n console.log(\r\n `[Venus Mock] Logging event with ${eventName}, params ${payload}`,\r\n )\r\n await createMockDelay(MOCK_DELAYS.short)\r\n }\r\n\r\n async trackFunnelStep(stepNumber: number, stepName: string, funnelName?: string): Promise<void> {\r\n console.log(`[Venus Mock] tracking funnel step ${stepName} (step ${stepNumber}) for funnel ${funnelName ?? 'game'}`);\r\n await createMockDelay(MOCK_DELAYS.short)\r\n }\r\n}\r\n","import { AnalyticsApi } from './AnalyticsApi.ts'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId.ts'\r\n\r\nexport class RpcAnalyticsApi implements AnalyticsApi {\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 recordCustomEvent(\r\n eventName: string,\r\n payload: Record<string, any>,\r\n ): Promise<void> {\r\n console.log(\r\n `[Venus SDK] [RpcAnalyticsApi] recordCustomEvent: ${eventName} payload:\\n${JSON.stringify(payload, null, 2)}`,\r\n )\r\n await this.rpcClient.call(VenusMessageId.LOG_ANALYTICS_EVENT, {\r\n eventName: eventName,\r\n params: payload,\r\n })\r\n }\r\n\r\n async trackFunnelStep(stepNumber: number, stepName: string, funnelName?: string): Promise<void> {\r\n console.log(\r\n `[Venus SDK] [RpcAnalyticsApi] trackFunnelStep: stepNumber: ${stepNumber} stepName: ${stepName} funnelName: ${funnelName}`,\r\n )\r\n await this.rpcClient.call(VenusMessageId.TRACK_FUNNEL_STEP, {\r\n stepNumber,\r\n stepName,\r\n funnelName,\r\n })\r\n }\r\n}\r\n","import { VenusAPI } from '../venus-api/types.ts'\r\nimport { Host } from '../Host.ts'\r\n\r\nexport * from './AnalyticsApi'\r\nexport * from './MockAnalyticsApi'\r\nexport * from './RpcAnalyticsApi'\r\n\r\nexport function initializeAnalytics(venusApiInstance: VenusAPI, host: Host) {\r\n venusApiInstance.logCustomEvent = async (options) => {\r\n const result = await host.analytics.recordCustomEvent(\r\n options.eventName,\r\n options.params,\r\n )\r\n }\r\n\r\n venusApiInstance.analytics = host.analytics\r\n}\r\n","// packages/api/src/iap/RpcIapApi.ts\r\nimport { IapApi, SpendCurrencyOptions } from './IapApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport { LoadEmbeddedAssetsResponse } from '../shared-assets/RpcSharedAssetsApi'\r\n\r\nexport class RpcIapApi implements IapApi {\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 getHardCurrencyBalance(): Promise<number> {\r\n const response = await this.rpcClient.call<number>(\r\n VenusMessageId.H5_IAP_GET_WALLET,\r\n )\r\n return response\r\n }\r\n\r\n async spendCurrency(\r\n productId: string,\r\n cost: number,\r\n options?: SpendCurrencyOptions,\r\n ): Promise<void> {\r\n const result = await this.rpcClient.callT<\r\n IapSpendCurrencyRequest,\r\n IapSpendCurrencyResult\r\n >(VenusMessageId.H5_IAP_SPEND_CURRENCY, {\r\n amount: cost,\r\n productId: productId,\r\n screenName: options?.screenName,\r\n })\r\n if (!result.success) {\r\n throw new Error(result.error)\r\n }\r\n }\r\n\r\n async openStore(): Promise<void> {\r\n await this.rpcClient.call(VenusMessageId.H5_IAP_OPEN_STORE)\r\n }\r\n\r\n async getCurrencyIcon(): Promise<LoadEmbeddedAssetsResponse> {\r\n return await this.rpcClient.call(VenusMessageId.H5_IAP_GET_CURRENCY_ICON)\r\n }\r\n}\r\n\r\ninterface IapSpendCurrencyRequest {\r\n amount: number // Required: amount to spend\r\n productId: string // Required: unique identifier for the item being purchased\r\n screenName?: string // Optional: screen/route name where purchase occurred\r\n}\r\n\r\ninterface IapSpendCurrencyResult {\r\n success?: boolean\r\n error?: string\r\n}\r\n","export const mockCurrencyIconBase64 = \"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\";\r\n","import { LoadEmbeddedAssetsResponse } from '../shared-assets'\r\nimport { IapApi, SpendCurrencyOptions } from './IapApi'\r\nimport { mockCurrencyIconBase64 } from './MockCurrencyIcon'\r\n\r\nexport class MockIapApi implements IapApi {\r\n private _hardCurrency: number = 100\r\n\r\n get hardCurrency(): number {\r\n return this._hardCurrency\r\n }\r\n\r\n set hardCurrency(value: number) {\r\n this._hardCurrency = value\r\n }\r\n\r\n async spendCurrency(\r\n productId: string,\r\n cost: number,\r\n options?: SpendCurrencyOptions,\r\n ): Promise<void> {\r\n console.log(`[Mock IAP] Spending ${cost} on ${productId})`)\r\n const remainingHardCurrency = this._hardCurrency - cost\r\n if (remainingHardCurrency < 0) {\r\n throw new Error(\r\n `Not enough hard currency. Expected ${cost}, found ${this._hardCurrency}`,\r\n )\r\n }\r\n this._hardCurrency = remainingHardCurrency\r\n }\r\n\r\n async getHardCurrencyBalance(): Promise<number> {\r\n console.log('[Mock IAP] get hard currency called')\r\n return this._hardCurrency\r\n }\r\n\r\n async openStore(): Promise<void> {\r\n console.log('[Mock IAP] open store called')\r\n }\r\n\r\n async getCurrencyIcon(): Promise<LoadEmbeddedAssetsResponse> {\r\n console.log('[Mock IAP] get currency icon called')\r\n return {\r\n base64Data: mockCurrencyIconBase64,\r\n }\r\n }\r\n}\r\n","import { VenusAPI } from '../venus-api/types.ts'\nimport { Host } from '../Host.ts'\n\nexport * from './IapApi'\nexport * from './RpcIapApi'\nexport * from './MockIapApi'\n\nexport function initializeIap(venusApiInstance: VenusAPI, host: Host) {\n venusApiInstance.iap = host.iap\n}\n","import { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport {\r\n GetLeaderboardOptions,\r\n LeaderboardApi,\r\n LeaderboardResponse,\r\n LeaderboardHighlightOptions,\r\n LeaderboardHighlightResponse,\r\n PlayerStats,\r\n PlayerStatsOptions,\r\n StartRunResult,\r\n SubmitScoreOptions,\r\n SubmitScoreResult,\r\n} from './LeaderboardApi'\r\n\r\nexport class RpcLeaderboardApi implements LeaderboardApi {\r\n private readonly rpcClient: RpcClient\r\n\r\n constructor(rpcClient: RpcClient) {\r\n this.rpcClient = rpcClient\r\n }\r\n\r\n startRun(mode?: string): Promise<StartRunResult> {\r\n return this.rpcClient.call<StartRunResult>(\r\n VenusMessageId.H5_LEADERBOARD_START_RUN,\r\n mode ? { mode } : {},\r\n )\r\n }\r\n\r\n submitScore(\r\n sessionId: string,\r\n score: number,\r\n durationSec: number,\r\n options?: SubmitScoreOptions,\r\n ): Promise<SubmitScoreResult> {\r\n return this.rpcClient.call<SubmitScoreResult>(\r\n VenusMessageId.H5_LEADERBOARD_SUBMIT_SCORE,\r\n {\r\n sessionId,\r\n score,\r\n durationSec,\r\n mode: options?.mode,\r\n telemetry: options?.telemetry,\r\n metadata: options?.metadata,\r\n hash: options?.hash,\r\n },\r\n )\r\n }\r\n\r\n getLeaderboard(options?: GetLeaderboardOptions): Promise<LeaderboardResponse> {\r\n return this.rpcClient.call<LeaderboardResponse>(\r\n VenusMessageId.H5_LEADERBOARD_GET,\r\n options ?? {},\r\n )\r\n }\r\n\r\n getPlayerStats(options?: PlayerStatsOptions): Promise<PlayerStats> {\r\n return this.rpcClient.call<PlayerStats>(\r\n VenusMessageId.H5_LEADERBOARD_GET_PLAYER_STATS,\r\n options ?? {},\r\n )\r\n }\r\n\r\n getLeaderboardHighlight(options?: LeaderboardHighlightOptions): Promise<LeaderboardHighlightResponse> {\r\n return this.rpcClient.call<LeaderboardHighlightResponse>(\r\n VenusMessageId.H5_LEADERBOARD_GET_HIGHLIGHT,\r\n options ?? {},\r\n )\r\n }\r\n}\r\n","import {\r\n GetLeaderboardOptions,\r\n LeaderboardApi,\r\n LeaderboardEntry,\r\n LeaderboardResponse,\r\n LeaderboardHighlightOptions,\r\n LeaderboardHighlightResponse,\r\n PlayerStats,\r\n PlayerStatsOptions,\r\n StartRunResult,\r\n SubmitScoreOptions,\r\n SubmitScoreResult,\r\n} from './LeaderboardApi'\r\n\r\ninterface MockSession {\r\n id: string\r\n expiresAt: number\r\n mode: string\r\n hashNonce: string | null\r\n used: boolean\r\n}\r\n\r\nexport class MockLeaderboardApi implements LeaderboardApi {\r\n private sessions: Map<string, MockSession> = new Map()\r\n private entriesByMode: Map<string, LeaderboardEntry[]> = new Map()\r\n private sessionCounter = 0\r\n private requiresHash = false\r\n\r\n constructor(options?: { requiresHash?: boolean }) {\r\n if (options?.requiresHash) {\r\n this.requiresHash = true\r\n }\r\n }\r\n\r\n configure(options: { requiresHash?: boolean }): void {\r\n if (typeof options.requiresHash === 'boolean') {\r\n this.requiresHash = options.requiresHash\r\n }\r\n }\r\n\r\n private generateNonce(): string {\r\n return (\r\n Math.random().toString(36).slice(2) +\r\n Math.random().toString(36).slice(2)\r\n ).slice(0, 64)\r\n }\r\n\r\n private getModeKey(mode: string): string {\r\n const normalizedMode = mode || 'default'\r\n return `${normalizedMode}`\r\n }\r\n\r\n private getEntriesForMode(mode: string): LeaderboardEntry[] {\r\n const key = this.getModeKey(mode)\r\n if (!this.entriesByMode.has(key)) {\r\n this.entriesByMode.set(key, [])\r\n }\r\n return this.entriesByMode.get(key)!\r\n }\r\n\r\n async startRun(mode?: string): Promise<StartRunResult> {\r\n const sessionId = `mock_session_${++this.sessionCounter}`\r\n const startTime = Date.now()\r\n const expiresAt = startTime + 3_600_000\r\n const resolvedMode = mode || 'default'\r\n const hashNonce = this.requiresHash ? this.generateNonce() : null\r\n\r\n this.sessions.set(sessionId, {\r\n id: sessionId,\r\n expiresAt,\r\n mode: resolvedMode,\r\n hashNonce,\r\n used: false,\r\n })\r\n\r\n return {\r\n sessionId,\r\n startTime,\r\n expiresAt,\r\n hashNonce,\r\n mode: resolvedMode,\r\n }\r\n }\r\n\r\n async submitScore(\r\n sessionId: string,\r\n score: number,\r\n durationSec: number,\r\n options?: SubmitScoreOptions,\r\n ): Promise<SubmitScoreResult> {\r\n const session = this.sessions.get(sessionId)\r\n if (!session) {\r\n throw new Error('Invalid leaderboard session')\r\n }\r\n\r\n if (session.expiresAt < Date.now()) {\r\n throw new Error('Invalid or expired leaderboard session')\r\n }\r\n\r\n if (session.used) {\r\n throw new Error('Leaderboard session already used')\r\n }\r\n\r\n if (options?.mode && options.mode !== session.mode) {\r\n throw new Error('Submission mode does not match session mode')\r\n }\r\n\r\n if (session.hashNonce && !options?.hash) {\r\n throw new Error('Score hash is required for sealed leaderboard submissions')\r\n }\r\n\r\n const submittedAt = Date.now()\r\n const entry: LeaderboardEntry = {\r\n profileId: `mock_profile`,\r\n username: 'Mock Player',\r\n avatarUrl: null,\r\n score,\r\n durationSec,\r\n submittedAt,\r\n sessionId,\r\n rank: null,\r\n zScore: null,\r\n isAnomaly: false,\r\n trustScore: 50,\r\n metadata: options?.metadata ?? null,\r\n isSeed: false,\r\n }\r\n\r\n const modeEntries = this.getEntriesForMode(session.mode)\r\n modeEntries.push(entry)\r\n modeEntries.sort((a, b) => {\r\n if (b.score !== a.score) {\r\n return b.score - a.score\r\n }\r\n return a.submittedAt - b.submittedAt\r\n })\r\n\r\n modeEntries.forEach((e, index) => {\r\n modeEntries[index] = {\r\n ...e,\r\n rank: index + 1,\r\n }\r\n })\r\n\r\n session.used = true\r\n session.hashNonce = null\r\n\r\n const inserted = modeEntries.find((e) => e.sessionId === sessionId && e.submittedAt === submittedAt)\r\n\r\n return {\r\n accepted: true,\r\n rank: inserted?.rank ?? null,\r\n }\r\n }\r\n\r\n async getLeaderboard(options?: GetLeaderboardOptions): Promise<LeaderboardResponse> {\r\n const limit = options?.limit ?? 10\r\n const mode = options?.mode ?? 'default'\r\n const modeEntries = [...this.getEntriesForMode(mode)]\r\n\r\n const entries = modeEntries.slice(0, limit).map((entry) => ({\r\n ...entry,\r\n }))\r\n\r\n return {\r\n variant: 'standard',\r\n entries,\r\n totalEntries: modeEntries.length,\r\n nextCursor: null,\r\n playerRank: null,\r\n periodInstance: options?.period ?? 'alltime',\r\n }\r\n }\r\n\r\n async getPlayerStats(_options?: PlayerStatsOptions): Promise<PlayerStats> {\r\n const mode = _options?.mode ?? 'default'\r\n const modeEntries = this.getEntriesForMode(mode)\r\n const playerEntry = modeEntries[0] ?? null\r\n\r\n return {\r\n rank: playerEntry?.rank ?? null,\r\n score: playerEntry?.score,\r\n totalPlayers: modeEntries.length,\r\n percentile: playerEntry\r\n ? Math.max(0, 1 - ((playerEntry.rank ?? 1) - 1) / Math.max(modeEntries.length, 1))\r\n : undefined,\r\n trustScore: 50,\r\n periodInstance: _options?.period ?? 'alltime',\r\n }\r\n }\r\n\r\n async getLeaderboardHighlight(options?: LeaderboardHighlightOptions): Promise<LeaderboardHighlightResponse> {\r\n const mode = options?.mode ?? 'default'\r\n const modeEntries = [...this.getEntriesForMode(mode)]\r\n\r\n const topCount = Math.max(1, Math.min(options?.topCount ?? 3, 10))\r\n const aheadCount = Math.max(0, Math.min(options?.contextAhead ?? 4, 10))\r\n const behindCount = Math.max(0, Math.min(options?.contextBehind ?? 2, 10))\r\n\r\n const topEntries = modeEntries.slice(0, topCount)\r\n const playerEntry = modeEntries[0] ?? null\r\n const totalEntries = modeEntries.length\r\n\r\n let playerRank = playerEntry?.rank ?? null\r\n let beforePlayer: LeaderboardEntry[] = []\r\n let afterPlayer: LeaderboardEntry[] = []\r\n let totalBefore = playerRank ? playerRank - 1 : 0\r\n let totalAfter = playerRank ? Math.max(totalEntries - playerRank, 0) : 0\r\n let omittedBefore = totalBefore\r\n let omittedAfter = totalAfter\r\n\r\n if (playerRank && playerRank > 0) {\r\n const beforeStart = Math.max(playerRank - aheadCount - 1, 0)\r\n beforePlayer = modeEntries.slice(beforeStart, playerRank - 1)\r\n const afterEnd = Math.min(playerRank + behindCount, totalEntries)\r\n afterPlayer = modeEntries.slice(playerRank, afterEnd)\r\n\r\n const shownTopAhead = topEntries.filter((entry) => (entry.rank ?? 0) > 0 && (entry.rank ?? 0) < playerRank!).length\r\n omittedBefore = Math.max(totalBefore - (beforePlayer.length + shownTopAhead), 0)\r\n omittedAfter = Math.max(totalAfter - afterPlayer.length, 0)\r\n }\r\n\r\n return {\r\n variant: 'highlight',\r\n entries: topEntries,\r\n totalEntries,\r\n nextCursor: null,\r\n playerRank: playerRank ?? null,\r\n periodInstance: options?.period ?? 'alltime',\r\n context: {\r\n topEntries,\r\n beforePlayer,\r\n playerEntry: playerEntry ?? null,\r\n afterPlayer,\r\n totalBefore,\r\n totalAfter,\r\n omittedBefore,\r\n omittedAfter,\r\n },\r\n }\r\n }\r\n}\r\n","import { Host } from '../Host'\r\nimport { VenusAPI } from '../venus-api/types'\r\n\r\nexport * from './LeaderboardApi'\r\nexport { RpcLeaderboardApi } from './RpcLeaderboardApi'\r\nexport { MockLeaderboardApi } from './MockLeaderboardApi'\r\n\r\nexport function initializeLeaderboard(venusApiInstance: VenusAPI, host: Host) {\r\n venusApiInstance.leaderboard = host.leaderboard\r\n}\r\n","import { ProfileApi } from './ProfileApi'\r\nimport { Profile } from '../venus-api/types'\r\n\r\nexport class HostProfileApi implements ProfileApi {\r\n getCurrentProfile(): Profile {\r\n // Return profile from dedicated profile storage\r\n const profile = window.venus?.profile\r\n \r\n if (!profile) {\r\n throw new Error(\r\n '[Venus SDK] Host profile handshake did not complete. Await VenusAPI.initializeAsync() so INIT_SDK can deliver the profile before calling profile APIs.',\r\n )\r\n }\r\n\r\n // Profile is already sanitized by RemoteHost.initNew()\r\n // Validate required fields\r\n if (!profile.id || !profile.username) {\r\n throw new Error(\r\n '[Venus SDK] INIT_SDK returned an incomplete profile (missing id/username). The host must supply real credentials before rooms APIs are used.',\r\n )\r\n }\r\n\r\n return {\r\n id: profile.id,\r\n username: profile.username,\r\n avatarUrl: profile.avatarUrl,\r\n isAnonymous: profile.isAnonymous,\r\n }\r\n }\r\n}\r\n","import { ProfileApi } from './ProfileApi'\r\nimport { Profile } from '../venus-api/types'\r\n\r\nexport class MockProfileApi implements ProfileApi {\r\n getCurrentProfile(): Profile {\r\n return {\r\n id: 'mock_profile_123',\r\n name: 'Mock User',\r\n username: 'mockuser',\r\n isAnonymous: false,\r\n }\r\n }\r\n}\r\n","import { VenusAPI } from '../venus-api/types.ts'\nimport { Host } from '../Host'\n\nexport * from './ProfileApi'\nexport * from './HostProfileApi'\nexport * from './MockProfileApi'\n\nexport function initializeProfile(venusApi: VenusAPI, host: Host) {\n venusApi.getCurrentProfile = () => {\n return host.profile.getCurrentProfile()\n }\n}\n","import { CdnApi, FetchBlobOptions, SubPath } from './CdnApi'\r\n\r\nexport class HostCdnApi implements CdnApi {\r\n private readonly baseUrl: string\r\n\r\n constructor(baseUrl: string) {\r\n this.baseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl\r\n }\r\n\r\n async fetchBlob(path: SubPath, options?: FetchBlobOptions): Promise<Blob> {\r\n const controller = new AbortController()\r\n const timeoutId = setTimeout(\r\n () => controller.abort(),\r\n options?.timeout ?? 30000,\r\n )\r\n\r\n try {\r\n const url = this.resolveAssetUrl(path)\r\n const response = await fetch(url, {\r\n mode: 'cors',\r\n credentials: 'omit',\r\n headers: { Accept: '/*' },\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 return await response.blob()\r\n } catch (error) {\r\n clearTimeout(timeoutId)\r\n throw error\r\n }\r\n }\r\n\r\n async fetchFromCdn(url: string, request?: RequestInit): Promise<Response> {\r\n const response = await fetch(url, {\r\n method: 'GET',\r\n headers: {\r\n Accept: 'application/json, text/plain, */*',\r\n 'Content-Type': 'application/json',\r\n },\r\n mode: 'cors',\r\n cache: 'no-cache',\r\n })\r\n\r\n if (!response.ok) {\r\n throw new Error(\r\n `CDN fetch failed: \\${response.status} \\${response.statusText}`,\r\n )\r\n }\r\n\r\n return response\r\n }\r\n\r\n getAssetCdnBaseUrl(): string {\r\n return this.baseUrl\r\n }\r\n\r\n resolveAssetUrl(subPath: string): string {\r\n // Clean up the subPath (remove leading slash if present)\r\n const cleanSubPath = subPath.startsWith('/') ? subPath.slice(1) : subPath\r\n\r\n // Split path into directory and filename parts, encode only filename to preserve directory structure\r\n const pathParts = cleanSubPath.split('/')\r\n const encodedParts = pathParts.map((part, index) => {\r\n // Only encode the filename (last part), keep directory names as-is for URL structure\r\n return index === pathParts.length - 1 ? encodeURIComponent(part) : part\r\n })\r\n const encodedSubPath = encodedParts.join('/')\r\n\r\n const fullUrl = this.baseUrl + '/' + encodedSubPath\r\n return fullUrl\r\n }\r\n\r\n resolveAvatarAssetUrl(subPath: string): string {\r\n // Prepend 'avatar3d/' to the subPath and resolve using the base method\r\n const avatarSubPath = 'avatar3d/' + subPath\r\n return this.resolveAssetUrl(avatarSubPath)\r\n }\r\n\r\n resolveSharedLibUrl(subPath: string): string {\r\n // Prepend 'libs/' to the subPath and resolve using the base method\r\n const libSubPath = 'libs/' + subPath\r\n return this.resolveAssetUrl(libSubPath)\r\n }\r\n}\r\n","import { CdnApi, FetchBlobOptions, SubPath } from './CdnApi'\r\n\r\nexport class MockCdnApi implements CdnApi {\r\n private readonly baseUrl: string\r\n\r\n constructor() {\r\n this.baseUrl = 'https://venus-static-01293ak.web.app/'\r\n }\r\n\r\n async fetchBlob(path: SubPath, options?: FetchBlobOptions): Promise<Blob> {\r\n const controller = new AbortController()\r\n const timeoutId = setTimeout(\r\n () => controller.abort(),\r\n options?.timeout ?? 30000,\r\n )\r\n\r\n try {\r\n const url = this.resolveAssetUrl(path)\r\n const response = await fetch(url, {\r\n mode: 'cors',\r\n credentials: 'omit',\r\n headers: { Accept: '/*' },\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 return await response.blob()\r\n } catch (error) {\r\n clearTimeout(timeoutId)\r\n throw error\r\n }\r\n }\r\n\r\n getAssetCdnBaseUrl(): string {\r\n return this.baseUrl\r\n }\r\n\r\n resolveAssetUrl(subPath: string): string {\r\n // If subPath is already a full URL, return it as-is\r\n if (subPath.startsWith('http://') || subPath.startsWith('https://')) {\r\n // Input is already a full URL\r\n return subPath\r\n }\r\n\r\n if (subPath.startsWith('cdn/')) {\r\n return subPath\r\n }\r\n\r\n // Clean up the subPath (remove leading slash if present)\r\n const cleanSubPath = subPath.startsWith('/') ? subPath.slice(1) : subPath\r\n\r\n // Split path into directory and filename parts, encode only filename to preserve directory structure\r\n const pathParts = cleanSubPath.split('/')\r\n const encodedParts = pathParts.map((part, index) => {\r\n // Only encode the filename (last part), keep directory names as-is for URL structure\r\n return index === pathParts.length - 1 ? encodeURIComponent(part) : part\r\n })\r\n const encodedSubPath = encodedParts.join('/')\r\n\r\n const cacheBust = Date.now()\r\n\r\n // Construct the full URL\r\n const fullUrl = `${this.baseUrl}${encodedSubPath}?cacheBust=${cacheBust}`\r\n\r\n // Resolved asset URL\r\n return fullUrl\r\n }\r\n\r\n resolveAvatarAssetUrl(subPath: string): string {\r\n // If subPath is already a full URL, return it as-is\r\n if (subPath.startsWith('http://') || subPath.startsWith('https://')) {\r\n // Avatar asset input is already a full URL\r\n return subPath\r\n }\r\n\r\n // Prepend 'avatar3d/' to the subPath and resolve using the base method\r\n const avatarSubPath = `avatar3d/${subPath}`\r\n return this.resolveAssetUrl(avatarSubPath)\r\n }\r\n\r\n resolveSharedLibUrl(subPath: string): string {\r\n // If subPath is already a full URL, return it as-is\r\n if (subPath.startsWith('http://') || subPath.startsWith('https://')) {\r\n // Shared lib input is already a full URL\r\n return subPath\r\n }\r\n\r\n // Prepend 'libs/' to the subPath and resolve using the base method\r\n const libSubPath = `libs/${subPath}`\r\n return this.resolveAssetUrl(libSubPath)\r\n }\r\n\r\n async fetchFromCdn(url: string, options?: RequestInit): Promise<Response> {\r\n // Fetching from network\r\n\r\n // Security validation - only allow trusted CDN domains\r\n const allowedDomains = [\r\n 'venus-static-01293ak.web.app',\r\n 'firebasestorage.googleapis.com',\r\n 'cdn.venusapp.com',\r\n 'storage.googleapis.com',\r\n ]\r\n let urlObj: URL | null = null\r\n\r\n try {\r\n let isAllowed = true\r\n\r\n if (url.startsWith('http://') || url.startsWith('https://')) {\r\n urlObj = new URL(url)\r\n isAllowed = allowedDomains.some(\r\n (domain) =>\r\n urlObj!.hostname === domain ||\r\n urlObj!.hostname.endsWith('.' + domain),\r\n )\r\n\r\n if (!isAllowed) {\r\n const error = `Domain not allowed: ${urlObj.hostname}. Allowed domains: ${allowedDomains.join(', ')}`\r\n console.error('[Venus Network Mock] Security error:', error)\r\n throw new Error(error)\r\n }\r\n } else {\r\n // In development mode, let relative URLs be handled naturally by the browser/dev server\r\n // Using relative URL as-is in development mode\r\n // Don't convert to absolute URL - let fetch handle the relative URL\r\n urlObj = null // We'll use the original URL directly\r\n }\r\n\r\n const fetchUrl = urlObj ? urlObj.href : url\r\n // Making request\r\n\r\n const response = await fetch(fetchUrl, {\r\n method: options?.method || 'GET',\r\n headers: {\r\n Accept: 'text/plain, application/octet-stream, application/json, */*',\r\n ...options?.headers,\r\n },\r\n cache: options?.cache || 'default',\r\n mode: 'cors',\r\n })\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP ${response.status}: ${response.statusText}`)\r\n }\r\n\r\n // Fetch successful\r\n return response\r\n } catch (error) {\r\n // CORS Fallback for mock\r\n if (\r\n error instanceof Error &&\r\n error.message &&\r\n (error.message.includes('CORS') ||\r\n error.message.includes('preflight') ||\r\n error.message.includes('Access-Control') ||\r\n error.message.includes('cache-control'))\r\n ) {\r\n // CORS error detected, trying minimal fetch\r\n\r\n try {\r\n const fallbackUrl = urlObj ? urlObj.href : url\r\n const fallbackResponse = await fetch(fallbackUrl, {\r\n method: 'GET',\r\n mode: 'cors',\r\n cache: 'default',\r\n })\r\n\r\n if (!fallbackResponse.ok) {\r\n throw new Error(\r\n `HTTP ${fallbackResponse.status}: ${fallbackResponse.statusText}`,\r\n )\r\n }\r\n\r\n const fallbackText = await fallbackResponse.text()\r\n\r\n // CORS fallback fetch successful\r\n return fallbackResponse\r\n } catch (fallbackError) {\r\n console.error(\r\n '[Venus Network Mock] CORS fallback also failed (from network.js):',\r\n {\r\n url,\r\n originalError: error.message,\r\n fallbackError: fallbackError,\r\n timestamp: new Date().toISOString(),\r\n },\r\n )\r\n throw new Error(\r\n `CORS error: ${error.message}. Fallback also failed: ${fallbackError}`,\r\n )\r\n }\r\n }\r\n\r\n console.error('[Venus Network Mock] Fetch failed (from network.js):', {\r\n url,\r\n error: error,\r\n timestamp: new Date().toISOString(),\r\n })\r\n throw error\r\n }\r\n }\r\n}\r\n","import { VenusAPI } from '../venus-api/types'\r\nimport { Host } from '../Host'\r\n\r\nexport * from './CdnApi'\r\nexport * from './HostCdnApi'\r\nexport * from './MockCdnApi'\r\n\r\nexport function initializeCdn(venusApi: VenusAPI, host: Host) {\r\n // Core asset URL resolver\r\n venusApi.resolveAssetUrl = function (subPath) {\r\n return host.cdn.resolveAssetUrl(subPath)\r\n }\r\n\r\n // Avatar-specific asset URL resolver that prepends 'avatar3d/' to the subPath\r\n venusApi.resolveAvatarAssetUrl = function (subPath) {\r\n return host.cdn.resolveAvatarAssetUrl(subPath)\r\n }\r\n\r\n // Shared library URL resolver that prepends 'libs/' to the subPath\r\n venusApi.resolveSharedLibUrl = function (subPath) {\r\n return host.cdn.resolveSharedLibUrl(subPath)\r\n }\r\n\r\n // Helper method to get the base CDN URL\r\n venusApi.getAssetCdnBaseUrl = function () {\r\n return host.cdn.getAssetCdnBaseUrl()\r\n }\r\n\r\n venusApi.fetchFromCdn = (url: string, options?: RequestInit) => {\r\n return host.cdn.fetchFromCdn(url, options)\r\n }\r\n\r\n venusApi.cdn = host.cdn\r\n}\r\n","import {\r\n OpenCommentsResult,\r\n PostApi,\r\n PostInfo,\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 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 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 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.openCommentsAsync = async () => {\r\n await host.post.openCommentsAsync()\r\n }\r\n}\r\n","import { HapticFeedbackStyle, HapticsApi } from './HapticsApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\n\r\nexport class RpcHapticsApi implements HapticsApi {\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 triggerHapticAsync(style: HapticFeedbackStyle): Promise<void> {\r\n await this.rpcClient.call(VenusMessageId.TRIGGER_HAPTIC, {\r\n style: style,\r\n })\r\n }\r\n}\r\n","import { HapticFeedbackStyle, HapticsApi } from './HapticsApi'\nimport { VenusAPI } from '../venus-api/types'\n\nexport class MockHapticsApi implements HapticsApi {\n private readonly venusApi: VenusAPI\n\n constructor(venusApi: VenusAPI) {\n this.venusApi = venusApi\n }\n\n async triggerHapticAsync(style: HapticFeedbackStyle): Promise<void> {\n const venusApi = this.venusApi\n // Check if device supports haptics\n if (!venusApi._mock.device.supportsHaptics) {\n return\n }\n }\n}\n","import { VenusAPI } from '../venus-api/types'\nimport { Host } from '../Host'\n\nexport * from './HapticsApi'\nexport * from './RpcHapticsApi'\nexport * from './MockHapticsApi'\n\nexport function initializeHaptics(venusApi: VenusAPI, host: Host) {\n venusApi.triggerHapticAsync = (style) => {\n return host.haptics.triggerHapticAsync(style)\n }\n}\n","import { Experiment, FeaturesApi } from './FeaturesApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\n\r\nexport class RpcFeaturesApi implements FeaturesApi {\r\n private readonly rpcClient: RpcClient\r\n\r\n constructor(rcpClient: RpcClient) {\r\n this.rpcClient = rcpClient\r\n }\r\n\r\n async getExperiment(experimentName: string): Promise<Experiment | null> {\r\n console.log('[Venus] Getting Experiment', experimentName)\r\n return await this.rpcClient.call(VenusMessageId.GET_EXPERIMENT, {\r\n experimentName: experimentName,\r\n })\r\n }\r\n\r\n async getFeatureFlag(flagName: string): Promise<boolean> {\r\n console.log('[Venus] Getting Feature Flag', flagName)\r\n return await this.rpcClient.call(VenusMessageId.GET_FEATURE_FLAG, {\r\n flagName: flagName,\r\n })\r\n }\r\n\r\n async getFeatureGate(gateName: string): Promise<boolean> {\r\n console.log('[Venus] Getting Feature Gate', gateName)\r\n return await this.rpcClient.call(VenusMessageId.GET_FEATURE_GATE, {\r\n gateName: gateName,\r\n })\r\n }\r\n}\r\n","import { Experiment, FeaturesApi } from './FeaturesApi'\n\nexport class MockFeaturesApi implements FeaturesApi {\n async getExperiment(experimentName: string): Promise<Experiment | null> {\n return null\n }\n\n async getFeatureFlag(flagName: string): Promise<boolean> {\n return Promise.resolve(false)\n }\n\n getFeatureGate(gateName: string): Promise<boolean> {\n return Promise.resolve(false)\n }\n}\n","import { VenusAPI } from '../venus-api/types'\nimport { Host } from '../Host'\n\nexport * from './FeaturesApi'\nexport * from './RpcFeaturesApi'\nexport * from './MockFeaturesApi'\n\nexport function initializeFeaturesApi(venusApi: VenusAPI, host: Host) {\n venusApi.getExperiment = (options) => {\n return host.features.getExperiment(options.experimentName)\n }\n\n venusApi.getFeatureGate = (options) => {\n return host.features.getFeatureGate(options.gateName)\n }\n\n venusApi.getFeatureFlag = (options) => {\n return host.features.getFeatureFlag(options.flagName)\n }\n}\n","import {\r\n AwakeCallback,\r\n QuitCallback,\r\n LifecycleApi,\r\n PauseCallback,\r\n ResumeCallback,\r\n SleepCallback,\r\n} from './LifecycleApi'\r\nimport { Subscription } from '../rpc'\r\n\r\nexport class MockLifecycleApi implements LifecycleApi {\r\n private pauseCallbacks: Set<PauseCallback> = new Set<PauseCallback>()\r\n private resumeCallbacks: Set<ResumeCallback> = new Set<PauseCallback>()\r\n private awakeCallbacks = new Set<AwakeCallback>()\r\n private sleepCallbacks = new Set<SleepCallback>()\r\n private quitCallbacks = new Set<QuitCallback>()\r\n\r\n onSleep(callback: SleepCallback): Subscription {\r\n this.sleepCallbacks.add(callback)\r\n return {\r\n unsubscribe: () => {\r\n this.sleepCallbacks.delete(callback)\r\n },\r\n }\r\n }\r\n\r\n onAwake(callback: AwakeCallback): Subscription {\r\n this.awakeCallbacks.add(callback)\r\n return {\r\n unsubscribe: () => {\r\n this.awakeCallbacks.delete(callback)\r\n },\r\n }\r\n }\r\n\r\n onPause(callback: PauseCallback): Subscription {\r\n this.pauseCallbacks.add(callback)\r\n return {\r\n unsubscribe: () => {\r\n this.pauseCallbacks.delete(callback)\r\n },\r\n }\r\n }\r\n\r\n onResume(callback: ResumeCallback): Subscription {\r\n this.resumeCallbacks.add(callback)\r\n return {\r\n unsubscribe: () => {\r\n this.resumeCallbacks.delete(callback)\r\n },\r\n }\r\n }\r\n\r\n onQuit(callback: QuitCallback): Subscription {\r\n this.quitCallbacks.add(callback)\r\n return {\r\n unsubscribe: () => {\r\n this.quitCallbacks.delete(callback)\r\n },\r\n }\r\n }\r\n\r\n triggerPauseCallbacks() {\r\n for (const callback of this.pauseCallbacks) {\r\n callback()\r\n }\r\n }\r\n\r\n triggerResumeCallbacks() {\r\n for (const callback of this.resumeCallbacks) {\r\n callback()\r\n }\r\n }\r\n\r\n triggerAwakeCallbacks() {\r\n for (const callback of this.awakeCallbacks) {\r\n callback()\r\n }\r\n }\r\n\r\n triggerSleepCallbacks() {\r\n for (const callback of this.sleepCallbacks) {\r\n callback()\r\n }\r\n }\r\n\r\n triggerQuitCallbacks() {\r\n for (const callback of this.quitCallbacks) {\r\n callback()\r\n }\r\n }\r\n}\r\n","import {\r\n AwakeCallback,\r\n LifecycleApi,\r\n PauseCallback,\r\n QuitCallback,\r\n ResumeCallback,\r\n SleepCallback,\r\n} from './LifecycleApi'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport { RpcClient, Subscription } from '../rpc'\r\n\r\nexport class RpcLifecycleApi implements LifecycleApi {\r\n private readonly rpcClient: RpcClient\r\n\r\n constructor(rpcClient: RpcClient) {\r\n this.rpcClient = rpcClient\r\n }\r\n\r\n onQuit(callback: QuitCallback): Subscription {\r\n return this.rpcClient.onNotification(VenusMessageId.QUIT, callback)\r\n }\r\n\r\n onSleep(callback: SleepCallback): Subscription {\r\n return this.rpcClient.onNotification(VenusMessageId.SLEEP, callback)\r\n }\r\n\r\n onAwake(callback: AwakeCallback): Subscription {\r\n return this.rpcClient.onNotification(VenusMessageId.AWAKE, callback)\r\n }\r\n\r\n onResume(callback: ResumeCallback): Subscription {\r\n return this.rpcClient.onNotification(VenusMessageId.RESUME, callback)\r\n }\r\n\r\n onPause(callback: PauseCallback): Subscription {\r\n return this.rpcClient.onNotification(VenusMessageId.PAUSE, callback)\r\n }\r\n}\r\n","import { VenusAPI } from '../venus-api/types'\r\nimport { Host } from '../Host'\r\n\r\nexport * from './LifecycleApi'\r\nexport * from './MockLifecycleApi'\r\nexport * from './RpcLifecycleApi'\r\n\r\nexport function initializeLifecycleApi(venusApi: VenusAPI, host: Host) {\r\n venusApi.lifecycles = host.lifecycle\r\n}\r\n","export function sumContributions(\n contributions: Record<string, any>,\n): Record<string, number> {\n const totals: Record<string, number> = {}\n for (const profileId in contributions) {\n for (const entityId in contributions[profileId]) {\n const amount = contributions[profileId][entityId] || 0\n totals[entityId] = (totals[entityId] || 0) + amount\n }\n }\n return totals\n}\n","import {\r\n CollectRecipeResult,\r\n ExecuteRecipeOptions,\r\n ExecuteScopedRecipeResult,\r\n GetActiveRunsOptions,\r\n GetAvailableRecipesOptions,\r\n GetAvailableRecipesResult,\r\n GetBatchRecipeRequirements,\r\n Recipe,\r\n SimulationApi,\r\n TriggerRecipeChainOptions,\r\n} from './SimulationApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport { VenusSimulationConfig } from '../venus-api/types'\r\nimport { sumContributions } from './utils'\r\n\r\nexport class RpcSimulationApi implements SimulationApi {\r\n private readonly rpcClient: RpcClient\r\n private _simulationConfig: VenusSimulationConfig | null = null\r\n\r\n constructor(rpcClient: RpcClient) {\r\n this.rpcClient = rpcClient\r\n }\r\n async validateSlotAssignmentAsync(\r\n containerId: string,\r\n slotId: string,\r\n itemId: string,\r\n ): Promise<any> {\r\n return this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_VALIDATE_ASSIGNMENT,\r\n {\r\n containerId,\r\n slotId,\r\n itemId,\r\n },\r\n )\r\n }\r\n\r\n sumContributions(contributions: Record<string, any>): Record<string, number> {\r\n return sumContributions(contributions)\r\n }\r\n\r\n executeBatchOperationsAsync(\r\n operations: Array<any>,\r\n validateOnly?: boolean,\r\n ): Promise<any> {\r\n return this.rpcClient.call(VenusMessageId.H5_SIMULATION_BATCH_OPERATIONS, {\r\n operations,\r\n validateOnly,\r\n })\r\n }\r\n async getAvailableItemsAsync(\r\n containerId: string,\r\n slotId: string,\r\n ): Promise<Array<any>> {\r\n const response = await this.rpcClient.call<any>(\r\n VenusMessageId.H5_SIMULATION_GET_AVAILABLE_ITEMS,\r\n {\r\n containerId,\r\n slotId,\r\n },\r\n )\r\n return response.availableItems || []\r\n }\r\n calculatePowerPreviewAsync(\r\n containerId: string,\r\n slotId: string,\r\n candidateItemId: string,\r\n ): Promise<any> {\r\n return this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_CALCULATE_POWER_PREVIEW,\r\n {\r\n containerId,\r\n slotId,\r\n candidateItemId,\r\n },\r\n )\r\n }\r\n assignItemToSlotAsync(\r\n containerId: string,\r\n slotId: string,\r\n itemId: string,\r\n ): Promise<any> {\r\n return this.rpcClient.call(VenusMessageId.H5_SIMULATION_ASSIGN_ITEM, {\r\n containerId,\r\n slotId,\r\n itemId,\r\n })\r\n }\r\n\r\n removeItemFromSlotAsync(containerId: string, slotId: string): Promise<any> {\r\n return this.rpcClient.call(VenusMessageId.H5_SIMULATION_REMOVE_ITEM, {\r\n containerId,\r\n slotId,\r\n })\r\n }\r\n\r\n async getSlotContainersAsync(): Promise<any> {\r\n const response: any = await this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_GET_CONTAINERS,\r\n {},\r\n )\r\n return response.containers || []\r\n }\r\n\r\n async getSlotAssignmentsAsync(containerId: string): Promise<any> {\r\n const response: any = await this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_GET_ASSIGNMENTS,\r\n {\r\n containerId,\r\n },\r\n )\r\n // Server returns raw array, not wrapped in .assignments property\r\n return Array.isArray(response) ? response : response.assignments || []\r\n }\r\n\r\n async getStateAsync(roomId?: string): Promise<any> {\r\n const response = await this.rpcClient.call<any>(\r\n VenusMessageId.H5_SIMULATION_GET_STATE,\r\n {\r\n roomId: roomId,\r\n },\r\n )\r\n\r\n console.log('[Venus SDK] getStateAsync', response)\r\n // Cache configuration if included in response\r\n if (response.configuration) {\r\n this._simulationConfig = response.configuration\r\n }\r\n return response\r\n }\r\n\r\n async getConfigAsync(roomId?: string): Promise<VenusSimulationConfig> {\r\n if (this._simulationConfig) {\r\n return this._simulationConfig\r\n }\r\n\r\n // Fetch configuration directly\r\n const config = await this.rpcClient.call<VenusSimulationConfig>(\r\n VenusMessageId.H5_SIMULATION_GET_CONFIG,\r\n {},\r\n )\r\n console.log('[Venus SDK] getConfigAsync', config)\r\n if (config) {\r\n this._simulationConfig = config\r\n return config\r\n }\r\n\r\n throw new Error('No simulation configuration available')\r\n }\r\n\r\n executeRecipeAsync(\r\n recipeId: string,\r\n inputs?: any,\r\n options?: ExecuteRecipeOptions,\r\n ): Promise<any> {\r\n return this.rpcClient.call(VenusMessageId.H5_SIMULATION_EXECUTE_RECIPE, {\r\n recipeId: recipeId,\r\n inputs: inputs,\r\n roomId: options?.roomId,\r\n batchAmount: options?.batchAmount,\r\n allowPartialBatch: options?.allowPartialBatch,\r\n entity: options?.entity,\r\n })\r\n }\r\n\r\n collectRecipeAsync(runId: string): Promise<CollectRecipeResult> {\r\n return this.rpcClient.call(VenusMessageId.H5_SIMULATION_COLLECT_RECIPE, {\r\n runId: runId,\r\n })\r\n }\r\n\r\n getActiveRunsAsync(options?: GetActiveRunsOptions): Promise<any> {\r\n return this.rpcClient.call(VenusMessageId.H5_SIMULATION_GET_ACTIVE_RUNS, {\r\n roomId: options?.roomId,\r\n })\r\n }\r\n\r\n executeScopedRecipeAsync(\r\n recipeId: string,\r\n entity: string,\r\n inputs?: any,\r\n options?: any,\r\n ): Promise<ExecuteScopedRecipeResult> {\r\n return this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_EXECUTE_SCOPED_RECIPE,\r\n {\r\n recipeId: recipeId,\r\n entity: entity,\r\n inputs: inputs,\r\n roomId: options?.roomId ?? null,\r\n options,\r\n },\r\n )\r\n }\r\n\r\n getAvailableRecipesAsync(\r\n options?: GetAvailableRecipesOptions,\r\n ): Promise<GetAvailableRecipesResult> {\r\n return this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_GET_AVAILABLE_RECIPES,\r\n {\r\n roomId: options?.roomId || null,\r\n includeActorRecipes: options?.includeActorRecipes || false,\r\n },\r\n )\r\n }\r\n\r\n getRecipeRequirementsAsync(recipe: Recipe): Promise<any> {\r\n return this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_GET_RECIPE_REQUIREMENTS,\r\n {\r\n recipeId: recipe.recipeId,\r\n entity: recipe.entity,\r\n batchAmount: recipe.batchAmount,\r\n },\r\n )\r\n }\r\n\r\n getBatchRecipeRequirementsAsync(\r\n recipes: Recipe[],\r\n ): Promise<GetBatchRecipeRequirements> {\r\n return this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_GET_BATCH_RECIPE_REQUIREMENTS,\r\n {\r\n recipes,\r\n },\r\n )\r\n }\r\n\r\n triggerRecipeChainAsync(\r\n recipeId: string,\r\n options?: TriggerRecipeChainOptions,\r\n ): Promise<any> {\r\n return this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_TRIGGER_RECIPE_CHAIN,\r\n {\r\n triggerRecipeId: recipeId,\r\n context: options?.context,\r\n roomId: options?.roomId,\r\n },\r\n )\r\n }\r\n\r\n getEntityMetadataAsync(entityId: string): Promise<any> {\r\n return this.rpcClient.call(\r\n VenusMessageId.H5_SIMULATION_GET_ENTITY_METADATA,\r\n {\r\n entityId,\r\n },\r\n )\r\n }\r\n\r\n async resolveFieldValueAsync(\r\n entityId: string,\r\n fieldPath: string,\r\n entity?: string,\r\n ): Promise<any> {\r\n const response = await this.rpcClient.call<ResolveFieldValueResponse>(\r\n VenusMessageId.H5_SIMULATION_RESOLVE_VALUE,\r\n {\r\n entityId,\r\n fieldPath,\r\n entity,\r\n },\r\n )\r\n // Extract primitive value from server response wrapper\r\n return response.value\r\n }\r\n}\r\n\r\ninterface ResolveFieldValueResponse {\r\n value: any\r\n}\r\n","import {\r\n CollectRecipeResult,\r\n ExecuteRecipeOptions,\r\n ExecuteScopedRecipeResult,\r\n GetActiveRunsOptions,\r\n GetAvailableRecipesOptions,\r\n GetAvailableRecipesResult,\r\n GetBatchRecipeRequirements,\r\n Recipe,\r\n SimulationApi,\r\n TriggerRecipeChainOptions,\r\n} from './SimulationApi'\r\nimport {\r\n RecipeRequirementResult,\r\n VenusSimulationConfig,\r\n VenusSimulationEffect,\r\n VenusSimulationState,\r\n} from '../venus-api/types'\r\nimport { sumContributions } from './utils'\r\n\r\nfunction generateAppIdentifier() {\r\n if (typeof window === 'undefined') return 'unknown-app'\r\n\r\n const url = window.location.href\r\n // Extract app ID from URL path like /H5/farming-game/index.html\r\n const match = url.match(/\\/H5\\/([^\\/]+)/)\r\n return match ? match[1] : 'unknown-app'\r\n}\r\n\r\nexport class MockSimulationApi implements SimulationApi {\r\n private readonly mockSimulationConfigs = new Map<\r\n string,\r\n VenusSimulationConfig\r\n >() // appIdentifier -> config\r\n private readonly mockSimulationStates = new Map<\r\n string,\r\n VenusSimulationState\r\n >() // appIdentifier -> config\r\n private readonly mockActiveTimers = new Map() // appIdentifier -> timers[]\r\n private readonly appId: string\r\n private readonly providedSimulationConfig: VenusSimulationConfig | null\r\n\r\n constructor(simulationConfig: VenusSimulationConfig | null = null) {\r\n this.appId = generateAppIdentifier()\r\n this.providedSimulationConfig = simulationConfig\r\n }\r\n\r\n sumContributions(contributions: Record<string, any>): Record<string, number> {\r\n return sumContributions(contributions)\r\n }\r\n\r\n async validateSlotAssignmentAsync(\r\n containerId: string,\r\n slotId: string,\r\n itemId: string,\r\n ): Promise<any> {\r\n this.log('validateSlotAssignmentAsync called:', {\r\n containerId,\r\n slotId,\r\n itemId,\r\n })\r\n return { valid: true, message: 'Mock validation successful' }\r\n }\r\n async executeBatchOperationsAsync(\r\n operations: Array<any>,\r\n validateOnly?: boolean,\r\n ): Promise<any> {\r\n this.log('executeBatchOperationsAsync called:', {\r\n operations,\r\n validateOnly,\r\n })\r\n return {\r\n success: true,\r\n results: operations.map(() => ({ success: true })),\r\n }\r\n }\r\n async getAvailableItemsAsync(\r\n containerId: string,\r\n slotId: string,\r\n ): Promise<Array<any>> {\r\n console.log('[Venus Simulation Mock] getAvailableItemsAsync called:', {\r\n containerId,\r\n slotId,\r\n })\r\n const appIdentifier = generateAppIdentifier()\r\n const mockSimulationConfigs = this.mockSimulationConfigs\r\n const config = mockSimulationConfigs.get(appIdentifier) || {\r\n entities: {},\r\n }\r\n\r\n // Mock: return some available items based on config\r\n const availableItems = Object.entries(config.entities)\r\n .slice(0, 3) // Mock: limit to first 3 entities\r\n .map(([entityId, entity]) => ({\r\n entityId,\r\n quantity: 1,\r\n metadata: entity.metadata,\r\n powerPreview: 100, // Mock power value\r\n }))\r\n\r\n return availableItems\r\n }\r\n async calculatePowerPreviewAsync(\r\n containerId: string,\r\n slotId: string,\r\n candidateItemId: string,\r\n ): Promise<any> {\r\n this.log('calculatePowerPreviewAsync called:', {\r\n containerId,\r\n slotId,\r\n candidateItemId,\r\n })\r\n return {\r\n currentPower: 1000,\r\n previewPower: 1200,\r\n powerDelta: 200,\r\n breakdown: { base: 800, weapon: 200, armor: 200 },\r\n }\r\n }\r\n\r\n async getSlotContainersAsync(): Promise<any> {\r\n this.log('getSlotContainersAsync called')\r\n const appIdentifier = this.appId\r\n const mockSimulationConfigs = this.mockSimulationConfigs\r\n const config = mockSimulationConfigs.get(appIdentifier) || {\r\n entities: {},\r\n }\r\n\r\n // Find entities with slot definitions\r\n const containers = Object.entries(config.entities)\r\n .filter(([_, entity]) => entity.metadata?.slots)\r\n .map(([entityId, entity]) => ({\r\n entityId,\r\n slots: entity.metadata?.slots,\r\n isOwned: true, // Mock: assume all containers are owned\r\n }))\r\n\r\n return containers\r\n }\r\n async getSlotAssignmentsAsync(containerId: string): Promise<any> {\r\n this.log('getSlotAssignmentsAsync called for:', containerId)\r\n // Mock: return empty assignments\r\n return []\r\n }\r\n async resolveFieldValueAsync(\r\n entityId: string,\r\n fieldPath: string,\r\n entity?: string,\r\n ): Promise<any> {\r\n this.log('resolveFieldValueAsync called:', {\r\n entityId,\r\n fieldPath,\r\n entity,\r\n })\r\n\r\n // Mock: return some reasonable field values\r\n const mockValues: Record<string, number> = {\r\n basePower: 850,\r\n weaponPower: 300,\r\n armorPower: 150,\r\n total_power: 1300,\r\n total_defense_power: 5000,\r\n }\r\n\r\n return mockValues[fieldPath] || 100\r\n }\r\n async getEntityMetadataAsync(entityId: string): Promise<any> {\r\n this.log('getEntityMetadataAsync called for:', entityId)\r\n const mockSimulationConfigs = this.mockSimulationConfigs\r\n const appIdentifier = this.appId\r\n const config: VenusSimulationConfig = mockSimulationConfigs.get(\r\n appIdentifier,\r\n ) || {\r\n entities: {},\r\n recipes: {},\r\n fieldResolution: {},\r\n version: '0.0.0',\r\n matchmaking: {},\r\n }\r\n\r\n const entity = config.entities[entityId]\r\n return entity?.metadata || {}\r\n }\r\n\r\n async collectRecipeAsync(runId: string): Promise<CollectRecipeResult> {\r\n this.log('collectRecipeAsync called:', { runId })\r\n\r\n // Mock successful collection with sample rewards\r\n const mockRewards = {\r\n cash: Math.floor(Math.random() * 1000) + 500,\r\n experience: Math.floor(Math.random() * 50) + 25,\r\n }\r\n\r\n return {\r\n success: true,\r\n runId: runId,\r\n rewards: mockRewards,\r\n message: 'Rewards collected successfully',\r\n }\r\n }\r\n\r\n executeRecipeAsync(\r\n recipeId: string,\r\n inputs?: any,\r\n options?: ExecuteRecipeOptions,\r\n ): Promise<any> {\r\n this.log('executeRecipeAsync called:', {\r\n recipeId,\r\n inputs,\r\n options,\r\n })\r\n const appIdentifier = this.appId\r\n return this.executeRecipe(appIdentifier, recipeId, inputs)\r\n }\r\n\r\n async executeScopedRecipeAsync(\r\n recipeId: string,\r\n entity: string,\r\n inputs?: any,\r\n options?: any,\r\n ): Promise<ExecuteScopedRecipeResult> {\r\n this.log('executeScopedRecipeAsync called:', {\r\n recipeId,\r\n entity,\r\n inputs,\r\n roomId: options?.roomId,\r\n options,\r\n })\r\n return {\r\n success: true,\r\n message: 'Mock scoped recipe execution successful',\r\n }\r\n }\r\n\r\n async getActiveRunsAsync(options?: GetActiveRunsOptions): Promise<any> {\r\n this.log('getActiveRunsAsync called:', options)\r\n const appIdentifier = this.appId\r\n\r\n let state = this.mockSimulationStates.get(appIdentifier)\r\n if (!state) {\r\n state = await this.initializeSimulationState(appIdentifier)\r\n }\r\n\r\n return state.activeRuns || []\r\n }\r\n\r\n async getAvailableRecipesAsync(\r\n options?: GetAvailableRecipesOptions,\r\n ): Promise<GetAvailableRecipesResult> {\r\n this.log('getAvailableRecipesAsync called:', options)\r\n\r\n // Mock available recipes based on context\r\n const baseRecipes = [\r\n { id: 'collect_resources', scope: 'player', clientViewable: true },\r\n { id: 'upgrade_equipment', scope: 'player', clientViewable: true },\r\n ]\r\n\r\n if (options?.roomId) {\r\n baseRecipes.push(\r\n { id: 'room_upgrade', scope: 'room', clientViewable: true },\r\n { id: 'cooperative_project', scope: 'room', clientViewable: true },\r\n )\r\n }\r\n\r\n if (options?.includeActorRecipes && options?.roomId) {\r\n baseRecipes.push(\r\n { id: 'trade_with_npc', scope: 'actor', clientViewable: true },\r\n { id: 'attack_monster', scope: 'actor', clientViewable: true },\r\n )\r\n }\r\n\r\n return { success: true, recipes: baseRecipes }\r\n }\r\n\r\n async getBatchRecipeRequirementsAsync(\r\n recipes: Recipe[],\r\n ): Promise<GetBatchRecipeRequirements> {\r\n this.log('getBatchRecipeRequirementsAsync called:', {\r\n count: recipes?.length,\r\n })\r\n const results = (recipes || []).map((q) => ({\r\n recipeId: q.recipeId,\r\n entity: q.entity || null,\r\n amount: q.batchAmount || 1,\r\n inputs: { cash: 'BE:0' },\r\n canAfford: true,\r\n disabled: false,\r\n }))\r\n return { success: true, results: results }\r\n }\r\n\r\n async getRecipeRequirementsAsync(\r\n recipe: Recipe,\r\n ): Promise<RecipeRequirementResult> {\r\n this.log('getRecipeRequirementsAsync called:', recipe)\r\n // Return minimal structure similar to server response for single\r\n return {\r\n recipeId: recipe.recipeId,\r\n entity: recipe.entity || null,\r\n amount: recipe.batchAmount,\r\n inputs: { cash: 'BE:0' },\r\n canAfford: true,\r\n disabled: false,\r\n }\r\n }\r\n\r\n async triggerRecipeChainAsync(\r\n recipeId: string,\r\n options?: TriggerRecipeChainOptions,\r\n ): Promise<any> {\r\n this.log('triggerRecipeChainAsync called:', { recipeId, ...options })\r\n return {\r\n success: true,\r\n message: 'Mock recipe chain triggered successfully',\r\n }\r\n }\r\n\r\n private log(message: string, ...args: any): void {\r\n console.log(`[Venus Sim Mock] ${message}`, args)\r\n }\r\n\r\n private async executeRecipe(\r\n appIdentifier: string,\r\n recipeId: string,\r\n inputs: any,\r\n ) {\r\n this.log(`Executing recipe ${recipeId} for ${appIdentifier}`, inputs)\r\n\r\n const mockSimulationConfigs = this.mockSimulationConfigs\r\n const mockSimulationStates = this.mockSimulationStates\r\n\r\n let config = mockSimulationConfigs.get(appIdentifier)\r\n let state = mockSimulationStates.get(appIdentifier)\r\n\r\n // Initialize if not exists\r\n if (!config || !state) {\r\n state = await this.initializeSimulationState(appIdentifier)\r\n\r\n // NOTE(Zee): Config still can be null here\r\n config = mockSimulationConfigs.get(appIdentifier)\r\n if (!config) {\r\n throw new Error('Failed to initialize simulation config')\r\n }\r\n }\r\n\r\n const recipe = config.recipes?.[recipeId]\r\n if (!recipe) {\r\n throw new Error(`Recipe ${recipeId} not found`)\r\n }\r\n\r\n // Check if recipe is disabled\r\n if (state.disabledRecipes?.includes(recipeId)) {\r\n throw new Error(`Recipe ${recipeId} is disabled`)\r\n }\r\n\r\n // Validate inputs\r\n if (recipe.inputs) {\r\n for (const [entityId, required] of Object.entries(recipe.inputs)) {\r\n const available = state.inventory[entityId] || 0\r\n if (available < required) {\r\n throw new Error(\r\n `Insufficient ${entityId}: required ${required}, available ${available}`,\r\n )\r\n }\r\n }\r\n }\r\n\r\n // Consume inputs\r\n if (recipe.inputs) {\r\n for (const [entityId, input] of Object.entries(recipe.inputs)) {\r\n const inventoryValue = state.inventory[entityId] || 0\r\n if (typeof input === 'number' && typeof inventoryValue === 'number') {\r\n state.inventory[entityId] = inventoryValue - input\r\n }\r\n }\r\n }\r\n\r\n // Apply begin effects immediately\r\n if (recipe.beginEffects) {\r\n this.applyEffects(state, recipe.beginEffects)\r\n }\r\n\r\n // Create simulation run\r\n const runId = this.generateRunId()\r\n const now = Date.now()\r\n const expiresAt = now + (recipe.duration || 0)\r\n\r\n const run = {\r\n id: runId,\r\n recipeId,\r\n status: 'running',\r\n startTime: now,\r\n expiresAt,\r\n inputs: recipe.inputs || {},\r\n }\r\n\r\n state.activeRuns.push(run)\r\n\r\n if (recipe.duration === 0) {\r\n // Instant recipe\r\n this.completeRun(appIdentifier, runId)\r\n return { status: 'completed', runId }\r\n } else {\r\n const mockActiveTimers = this.mockActiveTimers\r\n\r\n // Timed recipe\r\n const timer = setTimeout(() => {\r\n this.completeRun(appIdentifier, runId)\r\n }, recipe.duration)\r\n\r\n const timers = mockActiveTimers.get(appIdentifier) || []\r\n timers.push(timer)\r\n mockActiveTimers.set(appIdentifier, timers)\r\n\r\n return {\r\n status: 'running',\r\n runId,\r\n expiresAt: new Date(expiresAt).toISOString(),\r\n }\r\n }\r\n }\r\n\r\n private async initializeSimulationState(appIdentifier: string) {\r\n this.log(`Initializing simulation state for ${appIdentifier}`)\r\n\r\n const providedSimulationConfig = this.providedSimulationConfig\r\n const mockSimulationConfigs = this.mockSimulationConfigs\r\n const mockSimulationStates = this.mockSimulationStates\r\n const mockActiveTimers = this.mockActiveTimers\r\n\r\n // Get configuration - use provided config or empty config\r\n const config: VenusSimulationConfig = providedSimulationConfig || {\r\n version: '1.0',\r\n entities: {},\r\n recipes: {},\r\n }\r\n mockSimulationConfigs.set(appIdentifier, config)\r\n\r\n // Initialize empty inventory\r\n const initialInventory: Record<string, any> = {}\r\n\r\n // If a config was provided, initialize starting inventory based on it\r\n if (providedSimulationConfig && config.entities) {\r\n // You can customize initial amounts here based on your needs\r\n // This is just an example that gives a small amount of each entity\r\n Object.keys(config.entities).forEach((entityId) => {\r\n initialInventory[entityId] = 0 // Start with 0, let the app set initial values\r\n })\r\n }\r\n\r\n const state = {\r\n inventory: initialInventory,\r\n activeRuns: [],\r\n disabledRecipes: new Array<string>(),\r\n }\r\n\r\n // Check for recipes that start disabled\r\n if (config.recipes) {\r\n Object.entries(config.recipes).forEach(([recipeId, recipe]) => {\r\n if (recipe.metadata?.startsDisabled) {\r\n state.disabledRecipes.push(recipeId)\r\n }\r\n })\r\n }\r\n\r\n mockSimulationStates.set(appIdentifier, state)\r\n mockActiveTimers.set(appIdentifier, [])\r\n\r\n console.log(\r\n `[Venus Simulation Mock] Initialized state for ${appIdentifier}:`,\r\n state,\r\n )\r\n\r\n // Auto-start any auto-restart recipes if configured\r\n if (config.recipes) {\r\n Object.entries(config.recipes).forEach(([recipeId, recipe]) => {\r\n // Check for autoRestart at top level OR in metadata\r\n const isAutoRestart = recipe.autoRestart || recipe.metadata?.autoRestart\r\n if (isAutoRestart && recipe.outputs) {\r\n this.log(`Found auto-restart recipe: ${recipeId}`, {\r\n topLevelAutoRestart: recipe.autoRestart,\r\n metadataAutoRestart: recipe.metadata?.autoRestart,\r\n hasOutputs: !!recipe.outputs,\r\n duration: recipe.duration,\r\n })\r\n\r\n // Check if this recipe should auto-start based on its condition\r\n const condition =\r\n recipe.maxRestartCondition || recipe.metadata?.maxRestartCondition\r\n if (condition && condition.entity) {\r\n const currentAmount = initialInventory[condition.entity] || 0\r\n if (currentAmount < condition.maxValue) {\r\n console.log(\r\n `[Venus Simulation Mock] Auto-starting ${recipeId} at initialization`,\r\n {\r\n currentAmount,\r\n maxValue: condition.maxValue,\r\n entity: condition.entity,\r\n },\r\n )\r\n setTimeout(() => {\r\n this.executeRecipe(appIdentifier, recipeId, {})\r\n }, 1000)\r\n }\r\n } else {\r\n // No condition means always auto-start (like building_income_tick)\r\n console.log(\r\n `[Venus Simulation Mock] Auto-starting ${recipeId} at initialization (no condition)`,\r\n )\r\n setTimeout(() => {\r\n this.executeRecipe(appIdentifier, recipeId, {})\r\n }, 1000)\r\n }\r\n }\r\n })\r\n }\r\n\r\n return state\r\n }\r\n\r\n private generateRunId() {\r\n return 'run_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\r\n }\r\n\r\n private completeRun(appIdentifier: string, runId: string) {\r\n this.log(`Completing run ${runId} for ${appIdentifier}`)\r\n\r\n const mockSimulationConfigs = this.mockSimulationConfigs\r\n const mockSimulationStates = this.mockSimulationStates\r\n\r\n const config = mockSimulationConfigs.get(appIdentifier)\r\n const state = mockSimulationStates.get(appIdentifier)\r\n\r\n if (!config || !state) return\r\n\r\n const runIndex = state.activeRuns.findIndex((r: any) => r.id === runId)\r\n if (runIndex === -1) return\r\n\r\n const run = state.activeRuns[runIndex]\r\n const recipe = config.recipes?.[run.recipeId]\r\n\r\n if (!recipe) return\r\n\r\n // Calculate outputs\r\n const outputs: Record<string, any> = {}\r\n const rng = this.createSeededRandom(runId) // Use run ID as seed\r\n\r\n if (recipe.outputs) {\r\n for (const [entityId, value] of Object.entries(recipe.outputs)) {\r\n if (typeof value === 'number') {\r\n outputs[entityId] = value\r\n } else if (\r\n typeof value === 'object' &&\r\n value != null &&\r\n 'min' in value &&\r\n 'max' in value &&\r\n typeof value.min == 'number' &&\r\n typeof value.max === 'number'\r\n ) {\r\n outputs[entityId] =\r\n Math.floor(rng() * (value.max - value.min + 1)) + value.min\r\n }\r\n }\r\n }\r\n\r\n // Add outputs to inventory\r\n for (const [entityId, amount] of Object.entries(outputs)) {\r\n state.inventory[entityId] = (state.inventory[entityId] || 0) + amount\r\n }\r\n\r\n // Apply end effects\r\n if (recipe.endEffects) {\r\n this.applyEffects(state, recipe.endEffects)\r\n }\r\n\r\n // Update run\r\n run.status = 'completed'\r\n run.outputs = outputs\r\n\r\n // Remove from active runs\r\n state.activeRuns.splice(runIndex, 1)\r\n\r\n // Check for auto-restart (top level OR metadata)\r\n const isAutoRestart = recipe.autoRestart || recipe.metadata?.autoRestart\r\n if (isAutoRestart) {\r\n console.log(\r\n `[Venus Simulation Mock] Checking auto-restart for ${run.recipeId}`,\r\n {\r\n topLevelAutoRestart: recipe.autoRestart,\r\n metadataAutoRestart: recipe.metadata?.autoRestart,\r\n hasCondition: !!(\r\n recipe.maxRestartCondition || recipe.metadata?.maxRestartCondition\r\n ),\r\n },\r\n )\r\n\r\n const condition =\r\n recipe.maxRestartCondition || recipe.metadata?.maxRestartCondition\r\n if (condition) {\r\n const currentAmount = state.inventory[condition.entity] || 0\r\n if (currentAmount < condition.maxValue) {\r\n console.log(\r\n `[Venus Simulation Mock] Auto-restarting ${run.recipeId}`,\r\n {\r\n currentAmount,\r\n maxValue: condition.maxValue,\r\n entity: condition.entity,\r\n },\r\n )\r\n setTimeout(() => {\r\n this.executeRecipe(appIdentifier, run.recipeId, recipe.inputs || {})\r\n }, 1000)\r\n }\r\n } else {\r\n // No condition means always auto-restart (like building_income_tick)\r\n console.log(\r\n `[Venus Simulation Mock] Auto-restarting ${run.recipeId} (no condition)`,\r\n )\r\n setTimeout(() => {\r\n this.executeRecipe(appIdentifier, run.recipeId, recipe.inputs || {})\r\n }, 1000)\r\n }\r\n }\r\n\r\n console.log(\r\n `[Venus Simulation Mock] Completed run ${runId}, outputs:`,\r\n outputs,\r\n )\r\n }\r\n\r\n private createSeededRandom(seed: string) {\r\n let hash = 0\r\n for (let i = 0; i < seed.length; i++) {\r\n const char = seed.charCodeAt(i)\r\n hash = (hash << 5) - hash + char\r\n hash = hash & hash\r\n }\r\n\r\n return () => {\r\n hash = (hash * 9301 + 49297) % 233280\r\n return hash / 233280\r\n }\r\n }\r\n\r\n private applyEffects(state: any, effects: VenusSimulationEffect[]) {\r\n if (!effects || !Array.isArray(effects)) return\r\n\r\n for (const effect of effects) {\r\n switch (effect.type) {\r\n case 'set':\r\n state.inventory[effect.target] = effect.value\r\n console.log(\r\n `[Venus Simulation Mock] Effect: Set ${effect.target} = ${effect.value}`,\r\n )\r\n break\r\n case 'add':\r\n state.inventory[effect.target] =\r\n (state.inventory[effect.target] || 0) + effect.value\r\n console.log(\r\n `[Venus Simulation Mock] Effect: Add ${effect.value} to ${effect.target} (new value: ${state.inventory[effect.target]})`,\r\n )\r\n break\r\n case 'multiply':\r\n state.inventory[effect.target] =\r\n (state.inventory[effect.target] || 0) * effect.value\r\n console.log(\r\n `[Venus Simulation Mock] Effect: Multiply ${effect.target} by ${effect.value} (new value: ${state.inventory[effect.target]})`,\r\n )\r\n break\r\n case 'min':\r\n state.inventory[effect.target] = Math.max(\r\n state.inventory[effect.target] || 0,\r\n effect.value,\r\n )\r\n console.log(\r\n `[Venus Simulation Mock] Effect: Set ${effect.target} min ${effect.value} (new value: ${state.inventory[effect.target]})`,\r\n )\r\n break\r\n case 'max':\r\n state.inventory[effect.target] = Math.min(\r\n state.inventory[effect.target] || 0,\r\n effect.value,\r\n )\r\n console.log(\r\n `[Venus Simulation Mock] Effect: Set ${effect.target} max ${effect.value} (new value: ${state.inventory[effect.target]})`,\r\n )\r\n break\r\n case 'enable_recipe':\r\n if (state.disabledRecipes?.includes(effect.target)) {\r\n state.disabledRecipes = state.disabledRecipes.filter(\r\n (r: any) => r !== effect.target,\r\n )\r\n console.log(\r\n `[Venus Simulation Mock] Effect: Enabled recipe ${effect.target}`,\r\n )\r\n }\r\n break\r\n case 'disable_recipe':\r\n if (!state.disabledRecipes) state.disabledRecipes = []\r\n if (!state.disabledRecipes.includes(effect.target)) {\r\n state.disabledRecipes.push(effect.target)\r\n console.log(\r\n `[Venus Simulation Mock] Effect: Disabled recipe ${effect.target}`,\r\n )\r\n }\r\n break\r\n case 'trigger_recipe':\r\n // TODO: Implement recipe triggering if needed\r\n console.log(\r\n `[Venus Simulation Mock] Effect: Trigger recipe ${effect.target} (not implemented)`,\r\n )\r\n break\r\n default:\r\n console.warn(\r\n `[Venus Simulation Mock] Unknown effect type: ${effect.type}`,\r\n )\r\n }\r\n }\r\n }\r\n\r\n async getConfigAsync(): Promise<any> {\r\n console.log('[Venus Simulation Mock] getConfigAsync called')\r\n const appIdentifier = this.appId\r\n const mockSimulationConfigs = this.mockSimulationConfigs\r\n const config = mockSimulationConfigs.get(appIdentifier) || {\r\n version: '1.0',\r\n entities: {},\r\n recipes: {},\r\n }\r\n return config\r\n }\r\n\r\n async getStateAsync(roomId?: string): Promise<any> {\r\n this.log('getStateAsync called:', roomId)\r\n const appIdentifier = this.appId\r\n\r\n const mockSimulationStates = this.mockSimulationStates\r\n let state = mockSimulationStates.get(appIdentifier)\r\n if (!state) {\r\n state = await this.initializeSimulationState(appIdentifier)\r\n }\r\n\r\n const mockSimulationConfigs = this.mockSimulationConfigs\r\n return {\r\n ...state,\r\n roomId: roomId,\r\n configuration: mockSimulationConfigs.get(appIdentifier),\r\n }\r\n }\r\n\r\n async assignItemToSlotAsync(\r\n containerId: string,\r\n slotId: string,\r\n itemId: string,\r\n ): Promise<any> {\r\n this.log('assignItemToSlotAsync called:', {\r\n containerId,\r\n slotId,\r\n itemId,\r\n })\r\n return { success: true, message: 'Mock assignment successful' }\r\n }\r\n\r\n async removeItemFromSlotAsync(\r\n containerId: string,\r\n slotId: string,\r\n ): Promise<any> {\r\n this.log('removeItemFromSlotAsync called:', {\r\n containerId,\r\n slotId,\r\n })\r\n return { success: true, message: 'Mock removal successful' }\r\n }\r\n}\r\n","import { VenusAPI, VenusSimulationAPI } from '../venus-api/types'\r\nimport { Host } from '../Host'\r\n\r\nexport * from './SimulationApi'\r\nexport * from './RpcSimulationApi'\r\nexport * from './MockSimulationApi'\r\n\r\nexport function initializeSimulation(venusApi: VenusAPI, host: Host) {\r\n console.log('[Venus SDK] Initializing new Simulation Api')\r\n\r\n venusApi.simulation = {\r\n isEnabled: () => true,\r\n } as VenusSimulationAPI\r\n\r\n venusApi.simulation.getConfigAsync = () => {\r\n return host.simulation.getConfigAsync()\r\n }\r\n\r\n venusApi.simulation.getStateAsync = (options) => {\r\n return host.simulation.getStateAsync(options?.roomId)\r\n }\r\n\r\n venusApi.simulation.executeRecipeAsync = (recipeId, inputs, options) => {\r\n return host.simulation.executeRecipeAsync(recipeId, inputs, options)\r\n }\r\n\r\n venusApi.simulation.getActiveRunsAsync = () => {\r\n return host.simulation.getActiveRunsAsync()\r\n }\r\n\r\n venusApi.simulation.collectRecipeAsync = (runId: string) => {\r\n return host.simulation.collectRecipeAsync(runId)\r\n }\r\n\r\n venusApi.simulation.executeScopedRecipeAsync = (\r\n recipeId,\r\n entity,\r\n inputs,\r\n roomId,\r\n options,\r\n ) => {\r\n return host.simulation.executeScopedRecipeAsync(recipeId, entity, inputs, {\r\n roomId,\r\n ...options,\r\n })\r\n }\r\n\r\n venusApi.simulation.triggerRecipeChainAsync = (recipeId, context, roomId) => {\r\n return host.simulation.triggerRecipeChainAsync(recipeId, {\r\n context: context,\r\n roomId: roomId,\r\n })\r\n }\r\n\r\n venusApi.simulation.getAvailableRecipesAsync = async (\r\n roomId,\r\n includeActorRecipes,\r\n ) => {\r\n const result = await host.simulation.getAvailableRecipesAsync({\r\n roomId: roomId,\r\n includeActorRecipes: includeActorRecipes,\r\n })\r\n return result.recipes\r\n }\r\n\r\n venusApi.simulation.getRecipeRequirementsAsync = (\r\n recipeId,\r\n entity,\r\n amount,\r\n ) => {\r\n return host.simulation.getRecipeRequirementsAsync({\r\n recipeId: recipeId,\r\n entity: entity,\r\n batchAmount: amount,\r\n })\r\n }\r\n\r\n venusApi.simulation.getBatchRecipeRequirementsAsync = (recipes) => {\r\n return host.simulation.getBatchRecipeRequirementsAsync(recipes)\r\n }\r\n\r\n venusApi.simulation.resolveFieldValueAsync = (\r\n entityId,\r\n fieldPath,\r\n entity,\r\n ) => {\r\n return host.simulation.resolveFieldValueAsync(entityId, fieldPath, entity)\r\n }\r\n\r\n venusApi.simulation.getEntityMetadataAsync = (entityId) => {\r\n return host.simulation.getEntityMetadataAsync(entityId)\r\n }\r\n\r\n venusApi.simulation.getSlotAssignmentsAsync = (containerId) => {\r\n return host.simulation.getSlotAssignmentsAsync(containerId)\r\n }\r\n\r\n venusApi.simulation.getSlotContainersAsync = () => {\r\n return host.simulation.getSlotContainersAsync()\r\n }\r\n\r\n venusApi.simulation.assignItemToSlotAsync = (containerId, slotId, itemId) => {\r\n return host.simulation.assignItemToSlotAsync(containerId, slotId, itemId)\r\n }\r\n\r\n venusApi.simulation.removeItemFromSlotAsync = (containerId, slotId) => {\r\n return host.simulation.removeItemFromSlotAsync(containerId, slotId)\r\n }\r\n\r\n venusApi.simulation.getAvailableItemsAsync = (containerId, slotId) => {\r\n return host.simulation.getAvailableItemsAsync(containerId, slotId)\r\n }\r\n\r\n venusApi.simulation.calculatePowerPreviewAsync = (\r\n containerId: string,\r\n slotId: string,\r\n candidateItemId: string,\r\n ) => {\r\n return host.simulation.calculatePowerPreviewAsync(\r\n containerId,\r\n slotId,\r\n candidateItemId,\r\n )\r\n }\r\n\r\n venusApi.simulation.executeBatchOperationsAsync = (\r\n operations,\r\n validateOnly,\r\n ) => {\r\n return host.simulation.executeBatchOperationsAsync(operations, validateOnly)\r\n }\r\n\r\n venusApi.simulation.validateSlotAssignmentAsync = (\r\n containerId,\r\n slotId,\r\n itemId,\r\n ) => {\r\n return host.simulation.validateSlotAssignmentAsync(\r\n containerId,\r\n slotId,\r\n itemId,\r\n )\r\n }\r\n\r\n venusApi.simulation.sumContributions = (contributions) => {\r\n return host.simulation.sumContributions(contributions)\r\n }\r\n}\r\n","import { AnalyticsApi, MockAnalyticsApi } from './analytics'\r\nimport { Host, InitializationContext, InitializationOptions } 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, initializeRoomsApi } from './rooms'\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\nimport { LeaderboardApi, MockLeaderboardApi } from './leaderboard'\r\nimport { MockPreloaderApi, PreloaderApi } from './game-preloader'\r\nimport { SocialApi } from './social/SocialApi'\r\nimport { MockSocialApi } from './social/MockSocialApi'\r\n\r\nconst ROOMS_UNAVAILABLE_MESSAGE =\r\n '[Venus SDK] Rooms API is only available when running inside the Venus host environment.'\r\n\r\nfunction createUnavailableRoomsApi(): RoomsApi {\r\n const roomsUnavailableError = (): Error => new Error(ROOMS_UNAVAILABLE_MESSAGE)\r\n\r\n return {\r\n async createRoom(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n async joinOrCreateRoom(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n async getUserRooms(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n async joinRoomByCode(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n subscribe(): never {\r\n throw roomsUnavailableError()\r\n },\r\n async updateData(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n async getData(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n async sendMessage(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n async leave(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n async startGame(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n async proposeMove(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n async validateMove(): Promise<never> {\r\n throw roomsUnavailableError()\r\n },\r\n }\r\n}\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 readonly leaderboard: LeaderboardApi\r\n readonly preloader: PreloaderApi\r\n readonly social: SocialApi\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 = createUnavailableRoomsApi()\r\n this.logging = new MockLoggingApi()\r\n this.iap = new MockIapApi()\r\n this.social = new MockSocialApi()\r\n this.leaderboard = new MockLeaderboardApi()\r\n\r\n initializeRoomsApi(this.venusApi, this)\r\n\r\n this.preloader = new MockPreloaderApi()\r\n venusApi.isMock = () => true\r\n this.venusApi.sharedAssets = new MockSharedAssetsApi(this.venusApi)\r\n }\r\n\r\n initialize(options?: InitializationOptions): Promise<InitializationContext> {\r\n this._isInitialized = true\r\n const controls = this.updateUiControls()\r\n return Promise.resolve({\r\n initializeAsleep: false,\r\n hudInsets: {\r\n top: controls.feedHeader.height,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n }\r\n })\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\r\n if (this.state === MockHostState.PLAYING) {\r\n this.triggerLifecycleEvent(VenusMessageId.PAUSE)\r\n this.state = MockHostState.PAUSED\r\n }\r\n\r\n const actionSheetItems: ActionSheetItem[] = []\r\n\r\n const awakeAction: ActionSheetItem = {\r\n label: '⏰ Awake',\r\n id: 'awakeAction',\r\n }\r\n\r\n const sleepAction: ActionSheetItem = {\r\n label: '💤 Sleep',\r\n id: 'sleepAction',\r\n }\r\n\r\n const quitAction: ActionSheetItem = {\r\n label: '🛑 Quit',\r\n id: 'quitAction',\r\n }\r\n\r\n const playAction: ActionSheetItem = {\r\n label: '▶️ Play',\r\n id: 'playAction',\r\n }\r\n\r\n if (this.state === MockHostState.PAUSED) {\r\n // Only add sleep action if we are paused\r\n actionSheetItems.push(sleepAction)\r\n } else if (this.state === MockHostState.SLEEPING) {\r\n // Only add awake action if we are sleeping\r\n actionSheetItems.push(awakeAction)\r\n }\r\n\r\n if (this.state !== MockHostState.TERMINATED) {\r\n // Add quit action if the game has not been terminated yet\r\n actionSheetItems.push(quitAction)\r\n } else if (this.state === MockHostState.TERMINATED) {\r\n // Add play action only if the game is terminated\r\n actionSheetItems.push(playAction)\r\n }\r\n\r\n const action = await this.showActionSheetOverlay(actionSheetItems)\r\n\r\n if (action === awakeAction.id) {\r\n this.tryAwake()\r\n } else if (action === sleepAction.id) {\r\n this.trySleep()\r\n } else if (action === playAction.id) {\r\n this.tryPlay()\r\n } else if (action === quitAction.id) {\r\n this.tryQuit()\r\n } else {\r\n this.tryResume()\r\n }\r\n }\r\n\r\n private tryAwake() {\r\n if (this.state === MockHostState.SLEEPING) {\r\n this.triggerLifecycleEvent(VenusMessageId.AWAKE)\r\n this.state = MockHostState.PAUSED\r\n }\r\n }\r\n\r\n private trySleep() {\r\n if (this.state === MockHostState.PAUSED) {\r\n this.triggerLifecycleEvent(VenusMessageId.SLEEP)\r\n this.state = MockHostState.SLEEPING\r\n }\r\n }\r\n\r\n private tryPlay() {\r\n if (this.state === MockHostState.TERMINATED) {\r\n this.triggerLifecycleEvent(VenusMessageId.AWAKE)\r\n this.state = MockHostState.PAUSED\r\n this.triggerLifecycleEvent(VenusMessageId.RESUME)\r\n this.state = MockHostState.PLAYING\r\n }\r\n }\r\n\r\n private tryQuit() {\r\n if (this.state === MockHostState.PLAYING) {\r\n this.triggerLifecycleEvent(VenusMessageId.PAUSE)\r\n this.state = MockHostState.PAUSED\r\n }\r\n\r\n if (this.state === MockHostState.PAUSED) {\r\n this.triggerLifecycleEvent(VenusMessageId.SLEEP)\r\n this.state = MockHostState.SLEEPING\r\n }\r\n\r\n if (this.state === MockHostState.SLEEPING){\r\n this.triggerLifecycleEvent(VenusMessageId.QUIT)\r\n this.state = MockHostState.TERMINATED\r\n }\r\n }\r\n\r\n private tryResume() {\r\n if (this.state === MockHostState.PAUSED) {\r\n this.triggerLifecycleEvent(VenusMessageId.RESUME)\r\n this.state = MockHostState.PLAYING\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.PAUSE) {\r\n this._mockLifecyclesApi.triggerPauseCallbacks()\r\n } else if (name == VenusMessageId.RESUME) {\r\n this._mockLifecyclesApi.triggerResumeCallbacks()\r\n } else if (name == VenusMessageId.QUIT) {\r\n this._mockLifecyclesApi.triggerQuitCallbacks()\r\n } else if (name == VenusMessageId.AWAKE) {\r\n this._mockLifecyclesApi.triggerAwakeCallbacks()\r\n } else if (name == VenusMessageId.SLEEP) {\r\n this._mockLifecyclesApi.triggerSleepCallbacks()\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 { LoggingApi } from './LoggingApi'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\n\r\nexport class MockLoggingApi implements LoggingApi {\r\n logDebug(message?: any, ...args: any[]): void {\r\n console.log(`[Venus Mock] ${message}`, ...args)\r\n }\r\n\r\n logError(message: string, ...args: any[]): void {\r\n console.error(`[Venus Mock] ${message}`, ...args)\r\n }\r\n}\r\n","import { LoggingApi } from './LoggingApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport { Host } from '../Host'\r\n\r\nexport class RpcLoggingApi implements LoggingApi {\r\n private readonly host: Host\r\n private readonly rpcClient: RpcClient\r\n\r\n constructor(host: Host, rpcClient: RpcClient) {\r\n this.host = host\r\n this.rpcClient = rpcClient\r\n }\r\n\r\n logDebug(message: string, ...args: any[]): void {\r\n if (!this.host.isInitialized) {\r\n console.log(message, args)\r\n } else {\r\n message = this.buildMessage(message, ...args)\r\n this.rpcClient.call(VenusMessageId.DEBUG, { level: 'log', message })\r\n }\r\n }\r\n\r\n logError(message: string, ...args: any[]): void {\r\n if (!this.host.isInitialized) {\r\n console.log(message, ...args)\r\n } else {\r\n message = this.buildMessage(message, ...args)\r\n this.rpcClient.call(VenusMessageId.DEBUG, {\r\n level: 'error',\r\n message,\r\n })\r\n }\r\n }\r\n\r\n private buildMessage(message: string, ...args: any[]): string {\r\n // Handle multiple parameters like console.error\r\n if (args && args.length > 0) {\r\n const stringArgs: string[] = []\r\n for (const arg of args) {\r\n const argAsString = this.toStringArg(arg)\r\n if (argAsString) {\r\n stringArgs.push(argAsString)\r\n }\r\n }\r\n message += stringArgs.join(' ')\r\n }\r\n return message\r\n }\r\n\r\n private toStringArg(arg: any) {\r\n if (arg) {\r\n if (typeof arg === 'object') {\r\n try {\r\n return JSON.stringify(arg)\r\n } catch (e) {\r\n return String(arg)\r\n }\r\n }\r\n return String(arg)\r\n }\r\n return undefined\r\n }\r\n}\r\n","import { Host } from '../Host'\nimport { VenusAPI } from '../venus-api/types'\n\nexport * from './LoggingApi'\nexport * from './MockLoggingApi'\nexport * from './RpcLoggingApi'\n\nexport function initializeLoggingApi(venusApi: VenusAPI, host: Host): void {\n venusApi.log = (message, ...args: any[]) => {\n return host.logging.logDebug(message, ...args)\n }\n\n venusApi.error = (message, ...args: any[]) => {\n return host.logging.logError(message, ...args)\n }\n}\n","export const BurgerTimeAssetsCdnPath = 'burger-time/Core.stow'\r\nexport const CharacterAssetsCdnPath = 'burger-time/Character.stow'\r\n","import { SharedAssetsApi } from './SharedAssetsApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport { VenusAPI } from '../venus-api'\r\nimport { BurgerTimeAssetsCdnPath, CharacterAssetsCdnPath } from './consts'\r\n\r\nexport class RpcSharedAssetsApi implements SharedAssetsApi {\r\n private readonly venusApi: VenusAPI\r\n private readonly rpcClient: RpcClient\r\n\r\n constructor(rpcClient: RpcClient, venusApi: VenusAPI) {\r\n this.rpcClient = rpcClient\r\n this.venusApi = venusApi\r\n }\r\n\r\n async loadBurgerTimeAssetsBundle(): Promise<ArrayBuffer> {\r\n try {\r\n const response = await this.rpcClient.callT<\r\n LoadEmbeddedAssetsRequest,\r\n LoadEmbeddedAssetsResponse\r\n >(VenusMessageId.H5_LOAD_EMBEDDED_ASSET, {\r\n assetKey: 'burgerTimeCoreBundle',\r\n })\r\n return base64ToArrayBuffer(response.base64Data)\r\n } catch (err) {\r\n try {\r\n const blob = await this.venusApi.cdn.fetchBlob(BurgerTimeAssetsCdnPath)\r\n return await blob.arrayBuffer()\r\n } catch (e) {\r\n throw new Error('Failed to load burgerTimeAssetsBundle')\r\n }\r\n }\r\n }\r\n\r\n async loadCharactersBundle(): Promise<ArrayBuffer> {\r\n try {\r\n const response = await this.rpcClient.callT<\r\n LoadEmbeddedAssetsRequest,\r\n LoadEmbeddedAssetsResponse\r\n >(VenusMessageId.H5_LOAD_EMBEDDED_ASSET, {\r\n assetKey: 'characters',\r\n })\r\n return base64ToArrayBuffer(response.base64Data)\r\n } catch (err) {\r\n try {\r\n const blob = await this.venusApi.cdn.fetchBlob(CharacterAssetsCdnPath)\r\n return await blob.arrayBuffer()\r\n } catch (e) {\r\n throw new Error('Failed to load charactersBundle')\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport interface LoadEmbeddedAssetsRequest {\r\n assetKey: string\r\n}\r\n\r\nexport interface LoadEmbeddedAssetsResponse {\r\n base64Data: string\r\n}\r\n\r\nfunction base64ToArrayBuffer(base64: string): ArrayBuffer {\r\n // Decode base64 to raw binary string\r\n const binaryString = atob(base64)\r\n\r\n // Create a buffer with the same length\r\n const len = binaryString.length\r\n const bytes = new Uint8Array(len)\r\n\r\n // Fill the buffer with the char codes\r\n for (let i = 0; i < len; i++) {\r\n bytes[i] = binaryString.charCodeAt(i)\r\n }\r\n\r\n // Return the ArrayBuffer\r\n return bytes.buffer\r\n}\r\n","import { SharedAssetsApi } from './SharedAssetsApi'\r\nimport { VenusAPI } from '../venus-api/types'\r\nimport { BurgerTimeAssetsCdnPath, CharacterAssetsCdnPath } from './consts'\r\n\r\nexport class MockSharedAssetsApi implements SharedAssetsApi {\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 loadBurgerTimeAssetsBundle(): Promise<ArrayBuffer> {\r\n const blob = await this.venusApi.cdn.fetchBlob(BurgerTimeAssetsCdnPath)\r\n return await blob.arrayBuffer()\r\n }\r\n\r\n async loadCharactersBundle(): Promise<ArrayBuffer> {\r\n const blob = await this.venusApi.cdn.fetchBlob(CharacterAssetsCdnPath)\r\n return await blob.arrayBuffer()\r\n }\r\n}\r\n","import { PreloaderApi } from \"./PreloaderApi\"\r\n\r\nexport class MockPreloaderApi implements PreloaderApi {\r\n async showLoadScreen(): Promise<void> {\r\n console.log('showLoadScreen')\r\n }\r\n\r\n async hideLoadScreen(): Promise<void> {\r\n console.log('hideLoadScreen')\r\n }\r\n\r\n async setLoaderText(text: string): Promise<void> {\r\n console.log('setLoaderText', text)\r\n }\r\n\r\n async setLoaderProgress(progress: number): Promise<void> {\r\n console.log('setLoaderProgress', progress)\r\n }\r\n}","import { PreloaderApi } from './PreloaderApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\n\r\nexport class RpcPreloaderApi implements PreloaderApi {\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 showLoadScreen(): Promise<void> {\r\n await this.rpcClient.call(VenusMessageId.H5_SHOW_LOAD_SCREEN)\r\n }\r\n\r\n async hideLoadScreen(): Promise<void> {\r\n await this.rpcClient.call(VenusMessageId.H5_HIDE_LOAD_SCREEN)\r\n }\r\n\r\n async setLoaderText(text: string): Promise<void> {\r\n await this.rpcClient.call(VenusMessageId.H5_SET_LOADER_TEXT, { text })\r\n }\r\n\r\n async setLoaderProgress(progress: number): Promise<void> {\r\n await this.rpcClient.call(VenusMessageId.H5_SET_LOADER_PROGRESS, { progress })\r\n }\r\n}","import { VenusAPI } from '../venus-api/types'\r\nimport { Host } from '../Host'\r\n\r\nexport * from './PreloaderApi'\r\nexport * from './MockPreloaderApi'\r\nexport * from './RpcPreloaderApi'\r\n\r\nexport function initializePreloader(venusApi: VenusAPI, host: Host) {\r\n venusApi.preloader = host.preloader\r\n}","import {\r\n QRCodeResult,\r\n ShareLinkResult,\r\n SocialApi,\r\n SocialQRCodeOptions,\r\n} from './SocialApi';\r\n\r\nconst MOCK_QR_CODE =\r\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==';\r\n\r\nexport class MockSocialApi implements SocialApi {\r\n async shareLinkAsync(options: {\r\n launchParams: Record<string, string>;\r\n }): Promise<ShareLinkResult> {\r\n const shareUrl = this.createMockUrl(options.launchParams);\r\n\r\n if (typeof navigator !== 'undefined' && navigator.clipboard) {\r\n try {\r\n await navigator.clipboard.writeText(shareUrl);\r\n console.log('[Venus SDK] (mock) Copied share URL to clipboard');\r\n } catch (error) {\r\n console.warn(\r\n '[Venus SDK] (mock) Failed to copy share URL to clipboard',\r\n error,\r\n );\r\n }\r\n }\r\n\r\n return { shareUrl };\r\n }\r\n\r\n async createQRCodeAsync(options: {\r\n launchParams: Record<string, string>;\r\n qrOptions?: SocialQRCodeOptions;\r\n }): Promise<QRCodeResult> {\r\n const shareUrl = this.createMockUrl(options.launchParams);\r\n\r\n return {\r\n shareUrl,\r\n qrCode: MOCK_QR_CODE,\r\n };\r\n }\r\n\r\n private createMockUrl(launchParams: Record<string, string>): string {\r\n const params = new URLSearchParams(launchParams);\r\n return `https://mock-share.venus.test/share?${params.toString()}`;\r\n }\r\n}\r\n","import { RpcRequest } from './RpcRequest.ts'\r\nimport { RpcResponse } from './RpcResponse.ts'\r\nimport { RpcTransport } from './RpcTransport.ts'\r\nimport { RpcNotification } from './RpcNotification'\r\n\r\ninterface PendingCall {\r\n id: string\r\n resolve: (value: any) => void\r\n reject: (error: any) => void\r\n}\r\n\r\nexport interface Subscription {\r\n unsubscribe: () => void\r\n}\r\n\r\nexport class RpcClient {\r\n private readonly pendingCalls = new Map<string, PendingCall>()\r\n private readonly notificationCallbacks = new Map<string, Function>()\r\n\r\n private onResponseSub: Subscription | null = null\r\n private onNotificationSub: Subscription | null = null\r\n private transport: RpcTransport | null = null\r\n\r\n start(transport: RpcTransport) {\r\n this.transport = transport\r\n this.onResponseSub = transport.onResponse(async (response) => {\r\n return this.handleRpcResponse(response)\r\n })\r\n this.onNotificationSub = transport.onNotification(async (notification) => {\r\n return this.handleRpcNotification(notification)\r\n })\r\n }\r\n\r\n stop() {\r\n if (this.onResponseSub) {\r\n this.onResponseSub.unsubscribe()\r\n this.onResponseSub = null\r\n }\r\n\r\n if (this.onNotificationSub) {\r\n this.onNotificationSub.unsubscribe()\r\n this.onNotificationSub = null\r\n }\r\n\r\n this.transport = null\r\n }\r\n\r\n onNotification<TPayload>(\r\n id: string,\r\n callback: (payload: TPayload) => void,\r\n ): Subscription {\r\n this.notificationCallbacks.set(id, callback)\r\n return {\r\n unsubscribe: () => {\r\n this.notificationCallbacks.delete(id)\r\n },\r\n }\r\n }\r\n\r\n callT<TArgs, TResult>(\r\n method: string,\r\n args: TArgs,\r\n timeout: number = 5000,\r\n ): Promise<TResult> {\r\n return this.call(method, args, timeout)\r\n }\r\n\r\n async call<TResponse>(\r\n method: string,\r\n args?: any,\r\n timeout: number = 5000,\r\n ): Promise<TResponse> {\r\n // NOTE(Zee): Make this into options?\r\n return new Promise((resolve, reject) => {\r\n const id = this.generateId()\r\n this.addPendingCall(id, resolve, reject)\r\n\r\n const request: RpcRequest = {\r\n type: 'rpc-request',\r\n id,\r\n method,\r\n args: args,\r\n }\r\n\r\n if (this.transport) {\r\n this.transport.sendRequest(request)\r\n }\r\n\r\n // NOTE(Zee): This is dangerous. We REALLY need to rely on the host to send back a response, otherwise we may permanently hang here...\r\n if (timeout > 0) {\r\n setTimeout(() => {\r\n if (this.hasPendingCall(id)) {\r\n this.removePendingCall(id)\r\n reject(new Error(`RPC call ${method} timed out`))\r\n }\r\n }, timeout)\r\n }\r\n })\r\n }\r\n\r\n private hasPendingCall(id: string): boolean {\r\n return this.pendingCalls.has(id)\r\n }\r\n\r\n private addPendingCall(\r\n id: string,\r\n resolve: (v: any) => void,\r\n reject: (e: any) => void,\r\n ) {\r\n this.pendingCalls.set(id, {\r\n id: id,\r\n resolve: resolve,\r\n reject: reject,\r\n })\r\n }\r\n\r\n private removePendingCall(id: string) {\r\n this.pendingCalls.delete(id)\r\n }\r\n\r\n private getPendingCall(id: string) {\r\n return this.pendingCalls.get(id)\r\n }\r\n\r\n private generateId(): string {\r\n return `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`\r\n }\r\n\r\n private handleRpcResponse(response: RpcResponse): boolean {\r\n const pending = this.getPendingCall(response.id)\r\n if (!pending) {\r\n return false\r\n }\r\n this.removePendingCall(response.id)\r\n\r\n if (response.error) {\r\n pending.reject(new Error(response.error.message))\r\n return true\r\n }\r\n\r\n pending.resolve(response.result)\r\n return true\r\n }\r\n\r\n private handleRpcNotification(notification: RpcNotification): void {\r\n const callback = this.notificationCallbacks.get(notification.id)\r\n if (callback) {\r\n callback(notification.payload)\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 name?: string\r\n displayName?: string\r\n avatarUrl?: string | null\r\n isAnonymous?: boolean\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 profile?: {\r\n id?: string\r\n username?: string\r\n avatarUrl?: string | null\r\n name?: string\r\n displayName?: string\r\n isAnonymous?: boolean\r\n } | null\r\n _fetchFromCdn: (url: string) => Promise<string>\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.PAUSE ||\r\n message.type === VenusMessageId.RESUME ||\r\n message.type === VenusMessageId.AWAKE ||\r\n message.type === VenusMessageId.SLEEP ||\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 Host,\r\n InitializationContext,\r\n HudInsets,\r\n InitializationOptions,\r\n} from './Host.ts'\r\nimport { RpcClient } from './rpc'\r\nimport { 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, initializeRoomsApi } 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\nimport { LeaderboardApi, RpcLeaderboardApi } from './leaderboard'\r\nimport { PreloaderApi, RpcPreloaderApi } from './game-preloader'\r\nimport { SocialApi } from './social/SocialApi'\r\nimport { RpcSocialApi } from './social/RpcSocialApi'\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 readonly leaderboard: LeaderboardApi\r\n readonly preloader: PreloaderApi\r\n readonly social: SocialApi\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 this.leaderboard = new RpcLeaderboardApi(rpcClient)\r\n this.preloader = new RpcPreloaderApi(rpcClient)\r\n this.social = new RpcSocialApi(rpcClient)\r\n venusApi.isMock = () => false\r\n this.venusApi.sharedAssets = new RpcSharedAssetsApi(rpcClient, venusApi)\r\n\r\n initializeRoomsApi(this.venusApi, this)\r\n\r\n console.log('[Venus SDK] Remote host created')\r\n }\r\n\r\n async initialize(\r\n options?: InitializationOptions,\r\n ): Promise<InitializationContext> {\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 // Set up room notification routing in RpcRoomsApi\r\n const roomsApi = this.rooms as RpcRoomsApi\r\n roomsApi.setupNotifications(transport)\r\n\r\n const response = await this.rpcClient.call<InitResponse>(\r\n VenusMessageId.INIT_SDK,\r\n {},\r\n 5000,\r\n )\r\n\r\n transport.instanceId = response.instanceId\r\n this.log(`Remote Host Initialized with id: ${transport.instanceId}`)\r\n\r\n if (response.profile) {\r\n const profile = response.profile\r\n const sanitizedProfile = {\r\n id: profile.id,\r\n username: profile.username,\r\n avatarUrl: profile.avatarUrl ?? null,\r\n isAnonymous: Boolean(profile.isAnonymous),\r\n }\r\n\r\n // Ensure window.venus exists before setting profile\r\n if (typeof window !== 'undefined') {\r\n const globalWindow = window as any\r\n const venus = globalWindow.venus || (globalWindow.venus = {})\r\n\r\n venus.profile = sanitizedProfile\r\n if (venus._config) {\r\n venus._config.profile = sanitizedProfile\r\n }\r\n if (venus.config) {\r\n venus.config.profile = sanitizedProfile\r\n }\r\n }\r\n }\r\n\r\n this._isInitialized = true\r\n\r\n // Set launchParams directly on VenusAPI instance\r\n this.venusApi.launchParams = response.launchParams || {}\r\n\r\n await this.rpcClient.call(VenusMessageId.READY, {})\r\n\r\n const hudInsets = response.hudInsets\r\n if (hudInsets) {\r\n this.venusApi.config.ui.safeArea = hudInsets\r\n }\r\n\r\n return {\r\n hudInsets: hudInsets,\r\n initializeAsleep: response.initializeAsleep,\r\n }\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\nexport interface InitResponse {\r\n initializeAsleep: boolean\r\n instanceId: string\r\n profile?: {\r\n id: string\r\n username: string\r\n avatarUrl?: string | null\r\n isAnonymous?: boolean\r\n }\r\n hudInsets?: HudInsets\r\n launchParams?: Record<string, string>\r\n}\r\n","import {\r\n RoomsApi,\r\n CreateRoomOptions,\r\n JoinOrCreateResult,\r\n RoomSubscriptionOptions,\r\n ProposeMovePayload,\r\n ProposeMoveResult,\r\n ValidateMoveResult,\r\n} from './RoomsApi'\r\nimport { RpcClient } from '../rpc'\r\nimport { VenusMessageId } from '../VenusMessageId'\r\nimport { VenusRoom } from './VenusRoom'\r\n\r\ntype SubscriptionCallback = (payload: any) => void\r\ntype RoomSubscriptions = Record<string, SubscriptionCallback[]>\r\n\r\ninterface SubscriptionState {\r\n data: RoomSubscriptions\r\n messages: RoomSubscriptions\r\n gameEvents: RoomSubscriptions\r\n allEvents: RoomSubscriptions\r\n}\r\n\r\nexport class RpcRoomsApi implements RoomsApi {\r\n private readonly rpcClient: RpcClient\r\n private readonly subscriptions: SubscriptionState\r\n private transportSubscription: { unsubscribe: () => void } | null = null\r\n\r\n constructor(rpcClient: RpcClient) {\r\n this.rpcClient = rpcClient\r\n this.subscriptions = {\r\n data: {},\r\n messages: {},\r\n gameEvents: {},\r\n allEvents: {},\r\n }\r\n }\r\n\r\n /**\r\n * Get the subscription state for external access (used by setupRoomNotifications)\r\n */\r\n getSubscriptions(): SubscriptionState {\r\n return this.subscriptions\r\n }\r\n\r\n /**\r\n * Set up room notification routing from the transport\r\n */\r\n setupNotifications(transport: any): void {\r\n const { setupRoomNotifications } = require('./index')\r\n this.transportSubscription = setupRoomNotifications(\r\n transport,\r\n () => this.getSubscriptions(),\r\n )\r\n }\r\n\r\n /**\r\n * Clean up subscriptions and resources\r\n */\r\n dispose(): void {\r\n if (this.transportSubscription) {\r\n this.transportSubscription.unsubscribe()\r\n this.transportSubscription = null\r\n console.log('[Venus Rooms] Cleaned up room notification subscription')\r\n }\r\n }\r\n\r\n async createRoom(options: CreateRoomOptions): Promise<VenusRoom> {\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: CreateRoomOptions): Promise<JoinOrCreateResult> {\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 joinRoomByCode(roomCode: string): Promise<VenusRoom> {\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 === false) {\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(includeArchived = false): Promise<VenusRoom[]> {\r\n const response: any = await this.rpcClient.call(\r\n VenusMessageId.H5_ROOM_GET_USER_ROOMS,\r\n {\r\n includeArchived: includeArchived,\r\n },\r\n )\r\n if (response?.success === false) {\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 async updateData(room: VenusRoom, updates: Record<string, any>, merge = true): Promise<any> {\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 === false) {\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): Promise<any> {\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 === false) {\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): Promise<string> {\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 === false) {\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): Promise<any> {\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 === false) {\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: Record<string, any> = {}, turnOrder: string[] | null = null): Promise<any> {\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 === false) {\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: ProposeMovePayload): Promise<ProposeMoveResult> {\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 === false) {\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: string | null = null,\r\n validatorId: string | null = null,\r\n ): Promise<ValidateMoveResult> {\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 if (!this.subscriptions.gameEvents[room.id]) {\r\n this.subscriptions.gameEvents[room.id] = []\r\n }\r\n this.subscriptions.gameEvents[room.id].push(callback)\r\n }\r\n\r\n subscribe(room: VenusRoom, options: RoomSubscriptionOptions = {}): () => void {\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 (!this.subscriptions.data[roomId]) {\r\n this.subscriptions.data[roomId] = []\r\n }\r\n this.subscriptions.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 (!this.subscriptions.messages[roomId]) {\r\n this.subscriptions.messages[roomId] = []\r\n }\r\n this.subscriptions.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 if (handler) {\r\n const gameSubId =\r\n 'game_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\r\n\r\n if (!this.subscriptions.gameEvents[roomId]) {\r\n this.subscriptions.gameEvents[roomId] = []\r\n }\r\n this.subscriptions.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\r\n // Start the actual Firebase subscription if this is the first subscription\r\n const needsSubscription =\r\n subscriptionIds.length > 0 &&\r\n ((this.subscriptions.data[roomId]?.length ?? 0) <= 1) &&\r\n ((this.subscriptions.messages[roomId]?.length ?? 0) <= 1) &&\r\n ((this.subscriptions.gameEvents[roomId]?.length ?? 0) <= 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 bucket = this.subscriptions[sub.type as keyof SubscriptionState]\r\n const callbacks = (bucket && bucket[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 ((this.subscriptions.data[roomId]?.length ?? 0) === 0) &&\r\n ((this.subscriptions.messages[roomId]?.length ?? 0) === 0) &&\r\n ((this.subscriptions.gameEvents[roomId]?.length ?? 0) === 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 { RpcClient } from '../rpc';\r\nimport { VenusMessageId } from '../VenusMessageId';\r\nimport {\r\n QRCodeResult,\r\n ShareLinkResult,\r\n ShareMetadata,\r\n SocialApi,\r\n SocialQRCodeOptions,\r\n} from './SocialApi';\r\n\r\nexport class RpcSocialApi implements SocialApi {\r\n constructor(private readonly rpcClient: RpcClient) {}\r\n\r\n async shareLinkAsync(options: {\r\n launchParams: Record<string, string>;\r\n metadata?: ShareMetadata;\r\n }): Promise<ShareLinkResult> {\r\n const result = (await this.rpcClient.call(VenusMessageId.SHARE_LINK, {\r\n launchParams: options.launchParams,\r\n metadata: options.metadata ?? {},\r\n })) as { shareUrl: string };\r\n\r\n return {\r\n shareUrl: result.shareUrl,\r\n };\r\n }\r\n\r\n async createQRCodeAsync(options: {\r\n launchParams: Record<string, string>;\r\n metadata?: ShareMetadata;\r\n qrOptions?: SocialQRCodeOptions;\r\n }): Promise<QRCodeResult> {\r\n const result = (await this.rpcClient.call(\r\n VenusMessageId.CREATE_SHARE_QRCODE,\r\n {\r\n launchParams: options.launchParams,\r\n metadata: options.metadata ?? {},\r\n qrOptions: options.qrOptions ?? {},\r\n },\r\n )) as { shareUrl: string; qrCode: string };\r\n\r\n return {\r\n shareUrl: result.shareUrl,\r\n qrCode: result.qrCode,\r\n };\r\n }\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'\r\nimport { Avatar3dApi } from './avatar3d'\r\nimport { VenusAPI, VenusConfig } 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'\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\nimport { LeaderboardApi } from './leaderboard'\r\nimport { PreloaderApi } from './game-preloader'\r\nimport { SocialApi } from './social'\r\n\r\nexport interface HudInsets {\r\n left: number\r\n top: number\r\n right: number\r\n bottom: number\r\n}\r\n\r\nexport interface InitializationOptions {\r\n helpText?: string\r\n hardDisableMock?: boolean\r\n mock?: Record<string, any>\r\n usePreloader?: boolean\r\n}\r\n\r\nexport interface InitializationContext {\r\n hudInsets?: HudInsets\r\n initializeAsleep: boolean\r\n}\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 readonly leaderboard: LeaderboardApi\r\n readonly preloader: PreloaderApi\r\n readonly social: SocialApi\r\n readonly isInitialized: boolean\r\n readonly iap: IapApi\r\n\r\n initialize(options?: InitializationOptions): Promise<InitializationContext>\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","declare const __SDK_VERSION__: string\nexport const SDK_VERSION = __SDK_VERSION__\n","import { Host } from '../Host';\r\nimport { VenusAPI } from '../venus-api/types';\r\n\r\nexport * from './SocialApi';\r\nexport * from './RpcSocialApi';\r\nexport * from './MockSocialApi';\r\n\r\nexport function initializeSocial(venusApi: VenusAPI, host: Host): void {\r\n venusApi.social = host.social;\r\n\r\n // Provide getter method for launch parameters\r\n venusApi.getLaunchParams = () => {\r\n return venusApi.launchParams || {};\r\n };\r\n}\r\n"]}
|