@series-inc/venus-sdk 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +716 -0
- package/dist/AdsApi-BbMHVPYM.d.mts +692 -0
- package/dist/AdsApi-BbMHVPYM.d.ts +692 -0
- package/dist/chunk-7KKRTPDL.mjs +3135 -0
- package/dist/chunk-7KKRTPDL.mjs.map +1 -0
- package/dist/chunk-D4JRVWNC.mjs +82 -0
- package/dist/chunk-D4JRVWNC.mjs.map +1 -0
- package/dist/core-BTXL5C6G.mjs +3 -0
- package/dist/core-BTXL5C6G.mjs.map +1 -0
- package/dist/index.cjs +3205 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.mts +702 -0
- package/dist/index.d.ts +702 -0
- package/dist/index.mjs +4 -0
- package/dist/index.mjs.map +1 -0
- package/dist/venus-api/index.cjs +8191 -0
- package/dist/venus-api/index.cjs.map +1 -0
- package/dist/venus-api/index.d.mts +15 -0
- package/dist/venus-api/index.d.ts +15 -0
- package/dist/venus-api/index.mjs +4961 -0
- package/dist/venus-api/index.mjs.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/venus-api/systems/core.js","../../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/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/rooms.js","../../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/MockIapApi.ts","../../src/iap/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/rooms/MockRoomsApi.ts","../../src/logging/MockLoggingApi.ts","../../src/logging/RpcLoggingApi.ts","../../src/logging/index.ts","../../src/MockHost.ts","../../src/rpc/RpcClient.ts","../../src/VenusTransport.ts","../../src/notifications/RpcNotificationsApi.ts","../../src/rooms/VenusRoom.ts","../../src/rooms/RpcRoomsApi.ts","../../src/RemoteHost.ts","../../src/Host.ts","../../src/version.ts"],"names":["selectedAsset","r","createProxiedMethod","value","createProxiedObject","generateAppIdentifier","_","VenusAPI"],"mappings":"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","file":"index.cjs","sourcesContent":["// Core utility functions for the Venus API system\n// These functions are used across multiple modules to handle real vs mock API delegation\n\n// Helper function to create proxied methods that delegate to real API when available\nexport function createProxiedMethod(methodName, mockImpl) {\n return function (...args) {\n // For lifecycle handlers (methods that start with 'on'), store them locally\n if (methodName.startsWith('on') && typeof args[0] === 'function') {\n if (!this._bootstrap._localHandlers) {\n this._bootstrap._localHandlers = {}\n }\n\n // Store the handler locally\n this._bootstrap._localHandlers[methodName] = args[0]\n\n // If the real API is available, also register with it\n if (\n this._bootstrap.venus &&\n typeof this._bootstrap.venus[methodName] === 'function'\n ) {\n return this._bootstrap.venus[methodName](...args)\n }\n\n return true\n }\n\n // For all other methods, if the real API is available and has the method, use it\n if (\n this._bootstrap.venus &&\n typeof this._bootstrap.venus[methodName] === 'function'\n ) {\n return this._bootstrap.venus[methodName](...args)\n }\n\n // Otherwise, fall back to the mock implementation\n return mockImpl.apply(this, args)\n }\n}\n\n// Helper function to create proxied objects with methods and getters that delegate to real API\nexport function createProxiedObject(objectName, mockImpl) {\n const self = this // Store reference to 'this' for use in handlers\n\n // Helper to create recursive proxies\n function createNestedProxy(target, realApiPath) {\n const handler = {\n get: function (targetObj, prop, receiver) {\n // If the real API is available, use it\n if (self._bootstrap.venus && realApiPath) {\n // Navigate to the correct path in the real API\n let realApiValue = self._bootstrap.venus\n const pathParts = realApiPath.split('.')\n\n for (const part of pathParts) {\n if (realApiValue && realApiValue[part]) {\n realApiValue = realApiValue[part]\n } else {\n realApiValue = null\n break\n }\n }\n\n if (realApiValue && prop in realApiValue) {\n const realValue = Reflect.get(realApiValue, prop, receiver)\n\n // If the real value is an object (but not a function), create a nested proxy\n if (\n realValue &&\n typeof realValue === 'object' &&\n typeof realValue !== 'function'\n ) {\n return createNestedProxy(realValue, `${realApiPath}.${prop}`)\n }\n\n return realValue\n }\n }\n\n // Otherwise, get from the mock implementation\n const value = Reflect.get(targetObj, prop)\n\n // If it's a method, bind it to the VenusAPI instance\n if (typeof value === 'function') {\n return function (...args) {\n return value.apply(self, args)\n }\n }\n\n // If it's an object (but not null or array), create a nested proxy\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n const nestedPath = realApiPath ? `${realApiPath}.${prop}` : prop\n return createNestedProxy(value, nestedPath)\n }\n\n return value\n },\n }\n\n return new Proxy(target, handler)\n }\n\n return createNestedProxy(mockImpl, objectName)\n}\n\n// Helper function to check if we're on web platform (for feature detection)\nexport function isWebPlatform() {\n return typeof window !== 'undefined' && !window.ReactNativeWebView\n}\n\n// Standard mock delay (100ms for most operations, 1000ms for longer ones like ads/AI)\nexport const MOCK_DELAYS = {\n short: 100, // Quick operations (get/set preferences, etc.)\n medium: 500, // Medium operations (network-like calls)\n long: 1000, // Long operations (ads, AI, etc.)\n}\n\n// Centralized mock delay function\nexport function createMockDelay(ms = MOCK_DELAYS.short) {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n","import { StorageApi } from './StorageApi.ts'\n\nexport type StorageType = 'globalStorage' | 'deviceCache' | 'appStorage'\n\nexport function createMockStorageApi(\n storageType: StorageType,\n appUrl?: string,\n) {\n const appIdentifier = appUrl ? generateAppIdentifier(appUrl) : null\n\n let prefix\n let syncDelay = 0 // Simulate sync delay for cloud storage\n\n switch (storageType) {\n case 'deviceCache':\n prefix = 'venus:app' // Keep same prefix for backward compatibility\n syncDelay = 0 // No sync delay\n break\n case 'appStorage':\n prefix = 'venus:app' // Same prefix as deviceCache (both are app-specific)\n syncDelay = 100 // Simulate cloud sync delay\n break\n case 'globalStorage':\n prefix = 'venus:global' // Cross-app cloud storage\n syncDelay = 100 // Simulate cloud sync delay\n break\n default:\n throw new Error(`Unknown storage type: ${storageType}`)\n }\n\n prefix =\n storageType === 'globalStorage' || !appIdentifier\n ? `${prefix}:`\n : `${prefix}:${appIdentifier}:`\n\n return new MockStorageApi(prefix, syncDelay)\n}\n\nexport class MockStorageApi implements StorageApi {\n private readonly prefix: string\n private readonly syncDelay: number\n\n constructor(prefix: string, syncDelay: number) {\n this.prefix = prefix\n this.syncDelay = syncDelay\n }\n\n async clear(): Promise<void> {\n const fullLength = localStorage.length\n for (let i = 0; i < fullLength; i++) {\n const fullKey = localStorage.key(i)\n if (fullKey && fullKey.startsWith(this.prefix)) {\n localStorage.removeItem(fullKey)\n }\n }\n await this.simulateSyncDelay()\n }\n\n async getAllItems(): Promise<string[]> {\n const items = new Array<string>()\n const fullLength = localStorage.length\n for (let i = 0; i < fullLength; i++) {\n const fullKey = localStorage.key(i)\n if (fullKey && fullKey.startsWith(this.prefix)) {\n const item = localStorage.getItem(fullKey)\n if (item) {\n items.push(item)\n }\n }\n }\n return items\n }\n\n async getItem(key: string): Promise<string | null> {\n const fullKey = this.buildKey(key)\n await this.simulateSyncDelay()\n return localStorage.getItem(fullKey)\n }\n\n async key(index: number): Promise<string | null> {\n const keys = this.keys()\n if (index < 0 || index >= keys.length) {\n return null\n }\n await this.simulateSyncDelay()\n return keys[index]\n }\n\n async length(): Promise<number> {\n return this.keys().length\n }\n\n async removeItem(key: string): Promise<void> {\n const fullKey = this.buildKey(key)\n await this.simulateSyncDelay()\n localStorage.removeItem(fullKey)\n }\n\n async setItem(key: string, item: string): Promise<void> {\n const fullKey = this.buildKey(key)\n await this.simulateSyncDelay()\n localStorage.setItem(fullKey, item)\n }\n\n async setMultipleItems(\n entries: { key: string; value: string }[],\n ): Promise<void> {\n for (const entry of entries) {\n const fullKey = this.buildKey(entry.key)\n localStorage.setItem(fullKey, entry.value)\n }\n await this.simulateSyncDelay()\n }\n\n async removeMultipleItems(keys: string[]): Promise<void> {\n for (const key of keys) {\n const fullKey = this.buildKey(key)\n localStorage.removeItem(fullKey)\n }\n await this.simulateSyncDelay()\n }\n\n private buildKey(key: string): string {\n const prefix = this.prefix\n return `${prefix}${key}`\n }\n\n private extractKey(fullKey: string): string {\n const prefix = this.prefix\n return fullKey.substring(prefix.length)\n }\n\n private keys(): string[] {\n const keys = new Array<string>()\n let length = localStorage.length\n for (let i = 0; i < length; i++) {\n const fullKey = localStorage.key(i)\n if (fullKey && fullKey.startsWith(this.prefix)) {\n length++\n const key = this.extractKey(fullKey)\n keys.push(key)\n }\n }\n return keys\n }\n\n private async simulateSyncDelay() {\n const syncDelay = this.syncDelay\n if (syncDelay > 0) {\n await new Promise((resolve) => setTimeout(resolve, syncDelay))\n }\n }\n}\n\nfunction generateAppIdentifier(appUrl?: string) {\n if (!appUrl) appUrl = ''\n\n // First normalize to ensure we're hashing the same identifier regardless of format\n const normalizedId = normalizeAppIdentifier(appUrl)\n // Generating hash for normalized ID\n\n let hash = 0\n for (let i = 0; i < normalizedId.length; i++) {\n const char = normalizedId.charCodeAt(i)\n hash = (hash << 5) - hash + char // Same as real API - djb2 hash algorithm\n hash |= 0 // Convert to 32bit integer\n }\n\n // Convert to hex\n // Generated app identifier\n return Math.abs(hash).toString(16)\n}\n\nfunction normalizeAppIdentifier(input: string) {\n // Normalizing app identifier input\n\n // Handle full URLs\n if (input.startsWith('http')) {\n try {\n // For URLs like http://127.0.0.1:5000/H5/bird-flap/index.html?cacheBust=12345678\n // Extract the app ID part (bird-flap)\n const url = new URL(input)\n const pathParts = url.pathname.split('/')\n\n // Find the part after 'H5' in the path\n const h5Index = pathParts.findIndex((part) => part === 'H5')\n if (h5Index !== -1 && h5Index < pathParts.length - 1) {\n const appId = pathParts[h5Index + 1]\n // Extracted app ID from full URL path\n return appId\n }\n\n // If we couldn't extract from path, use the hostname as fallback\n // Could not extract app ID from URL path, using hostname\n return url.hostname\n } catch (error) {\n console.error(`[Venus Mock] Error parsing URL: ${error}`, { input })\n // If URL parsing fails, treat as a raw ID\n return input\n }\n }\n\n // Handle path-based URLs like '/H5/bird-flap/index.html'\n if (input.includes('/H5/')) {\n try {\n const pathParts = input.split('/')\n // Find the part after 'H5' in the path\n const h5Index = pathParts.findIndex((part) => part === 'H5')\n if (h5Index !== -1 && h5Index < pathParts.length - 1) {\n const appId = pathParts[h5Index + 1]\n // Extracted app ID from path-based URL\n return appId\n }\n } catch (error) {\n console.error(`[Venus Mock] Error parsing path-based URL: ${error}`, {\n input,\n })\n }\n }\n\n // Not a URL, just return as is\n // Input is not a URL, treating as raw app ID\n return input\n}\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 } from './AdsApi.ts'\nimport { RpcClient } from '../rpc'\nimport { VenusMessageId } from '../VenusMessageId.ts'\n\ninterface ShowRewardedAdResult {\n shown: boolean\n adType: string\n rewardEarned: boolean\n}\n\nexport class RpcAdsApi implements AdsApi {\n private readonly rpcClient: RpcClient\n\n constructor(rpcClient: RpcClient) {\n this.rpcClient = rpcClient\n }\n\n async showInterstitialAd(): Promise<boolean> {\n console.log(`[Venus SDK] [RpcAdsApi] showInterstitialAd`)\n return await this.rpcClient.call<boolean>(\n VenusMessageId.SHOW_INTERSTITIAL_AD,\n )\n }\n\n async isRewardedAdReadyAsync(): Promise<boolean> {\n console.log(`[Venus SDK] [RpcAdsApi] isRewardedAdReadyAsync`)\n return await this.rpcClient.call<boolean>(\n VenusMessageId.IS_REWARDED_AD_READY,\n )\n }\n\n async showRewardedAdAsync(): Promise<boolean> {\n console.log('[Venus SDK] [RpcAdsApi] showRewardedAdAsync')\n const result = await this.rpcClient.call<ShowRewardedAdResult>(\n VenusMessageId.SHOW_REWARDED_AD,\n )\n const resultAsString = JSON.stringify(result, null, 2)\n console.log(\n `[Venus SDK] [RpcAdsApi] rewarded ad shown with result as JSON:\\n${resultAsString}`,\n )\n return result.rewardEarned\n }\n}\n","import { AdsApi } from './AdsApi.ts'\nimport { createMockDelay, MOCK_DELAYS } from '../venus-api/systems/core'\nimport { MockOverlay } from '../MockOverlay'\n\nexport class MockAdsApi implements AdsApi {\n private mockOverlay: MockOverlay\n\n constructor(mockOverlay: MockOverlay) {\n this.mockOverlay = mockOverlay\n }\n\n async isRewardedAdReadyAsync(): Promise<boolean> {\n this.log('[MockAdsApi] isRewardedAdReadyAsync called')\n await createMockDelay(MOCK_DELAYS.short)\n return true\n }\n\n async showRewardedAdAsync(): Promise<boolean> {\n this.log('[MockAdsApi] showRewardedAdAsync called')\n await this.mockOverlay.showAdOverlay()\n this.log('[MockAdsApi] Rewarded ad completed')\n return true\n }\n\n async showInterstitialAd(): Promise<boolean> {\n this.log(`[MockAdsApi] showInterstitialAd`)\n return true\n }\n\n private log(message: string, ...args: any[]): void {\n console.log(`[Venus SDK] ${message}`, ...args)\n }\n}\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';\n\n// Default typography settings that match our application\nconst DEFAULT_TYPOGRAPHY = {\n fontFamily: {\n base: 'Plus Jakarta Sans, Roboto, sans-serif',\n heading: 'Plus Jakarta Sans, Roboto, sans-serif',\n mono: 'monospace',\n },\n fontSize: {\n '2xs': '10px',\n xs: '12px',\n sm: '14px',\n md: '16px',\n lg: '18px',\n xl: '20px',\n '2xl': '24px',\n '3xl': '30px',\n '4xl': '36px',\n '5xl': '48px',\n '6xl': '60px',\n },\n fontWeight: {\n thin: '100',\n extralight: '200',\n light: '300',\n regular: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n extrablack: '950',\n },\n lineHeight: {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n },\n};\n\n// Default theme that matches H5ApiCore.ts DEFAULT_THEME\nconst DEFAULT_THEME = {\n background: {\n default: '#131419', // Dark background\n muted: '#1b1d25', // Mid-dark background\n dark: '#0d0e11', // Darker background\n },\n text: {\n primary: '#ffffff', // White\n muted: '#808080', // Gray\n inverted: '#000000', // Black\n },\n theme: {\n primary: '#f6c833', // Different yellow for testing (slightly lighter)\n secondary: '#6366f1', // Different secondary for testing (purple)\n background: '#131419', // Dark background\n border: '#262626', // Dark border\n card: '#1b1d25', // Dark card\n 'card-glass': 'rgba(27, 29, 37, 0.8)', // Translucent dark card\n },\n typography: DEFAULT_TYPOGRAPHY,\n};\n\n// Initialize theme functionality on a VenusAPI instance\nexport function initializeTheme(venusApiInstance) {\n // Add theme constants to the mock data\n if (!venusApiInstance._mock.theme) {\n venusApiInstance._mock.theme = DEFAULT_THEME;\n }\n\n // Add typography to mock data if not present\n if (!venusApiInstance._mock.typography) {\n venusApiInstance._mock.typography = DEFAULT_TYPOGRAPHY;\n }\n\n // Add safe area mock data\n if (!venusApiInstance._mock.safeArea) {\n venusApiInstance._mock.safeArea = { top: 0, bottom: 0, left: 0, right: 0 };\n }\n\n // NOTE: HUD insets are now provided dynamically via onShow/onPlay context\n // and should not be accessed from config\n\n // Apply theme colors from the Venus API to CSS variables\n venusApiInstance.applyVenusThemeToCSS = function(theme) {\n if (!theme) return;\n\n const root = document.documentElement;\n\n // Apply background colors\n if (theme.background) {\n if (theme.background.default)\n root.style.setProperty('--color-background', theme.background.default);\n if (theme.background.muted)\n root.style.setProperty(\n '--color-background-muted',\n theme.background.muted,\n );\n if (theme.background.dark)\n root.style.setProperty(\n '--color-background-dark',\n theme.background.dark,\n );\n }\n\n // Apply text colors\n if (theme.text) {\n if (theme.text.primary)\n root.style.setProperty('--color-text-primary', theme.text.primary);\n if (theme.text.muted)\n root.style.setProperty('--color-text-muted', theme.text.muted);\n }\n\n // Apply theme colors\n if (theme.theme) {\n if (theme.theme.primary)\n root.style.setProperty('--color-primary', theme.theme.primary);\n if (theme.theme.secondary)\n root.style.setProperty('--color-secondary', theme.theme.secondary);\n if (theme.theme.border)\n root.style.setProperty('--color-border', theme.theme.border);\n }\n\n // Apply typography if available\n if (theme.typography && theme.typography.fontFamily) {\n if (theme.typography.fontFamily.base) {\n root.style.setProperty(\n '--font-family',\n theme.typography.fontFamily.base,\n );\n }\n }\n\n // Apply the background color to body immediately\n document.body.style.backgroundColor = root.style.getPropertyValue(\n '--color-background-dark',\n );\n };\n\n // Apply theme method\n venusApiInstance.applyTheme = createProxiedMethod('applyTheme', function() {\n // Get theme from Venus API if available\n let apiTheme = null;\n apiTheme = this.config.theme;\n\n // Apply theme to the game\n if (apiTheme) {\n // Apply theme colors to CSS variables\n this.applyVenusThemeToCSS(apiTheme);\n\n // Set up colors for the game rendering\n this.colors = {\n primary: apiTheme.theme?.primary || '#FF2877',\n secondary: apiTheme.theme?.secondary || '#4755FF',\n dark: apiTheme.background?.dark || '#0D0E11',\n darkLight: apiTheme.background?.muted || '#1B1D25',\n darkLighter: apiTheme.background?.default || '#23252F',\n textPrimary: apiTheme.text?.primary || '#FFFFFF',\n textMuted: apiTheme.text?.muted || '#808080',\n border: apiTheme.theme?.border || '#262626',\n };\n } else {\n // Fallback colors\n this.colors = {\n primary: '#FF2877',\n secondary: '#4755FF',\n dark: '#0D0E11',\n darkLight: '#1B1D25',\n darkLighter: '#23252F',\n textPrimary: '#FFFFFF',\n textMuted: '#808080',\n border: '#262626',\n };\n }\n\n this.log('Theme applied successfully');\n });\n\n // Apply safe area method\n venusApiInstance.applySafeArea = createProxiedMethod('applySafeArea', function() {\n try {\n // Apply safe area insets if available\n const safeArea = this.config.ui.safeArea;\n\n if (safeArea) {\n this.log('Applying safe area insets: ' + JSON.stringify(safeArea));\n\n // You could apply safe area insets to your game container or canvas here\n // For example, adjusting the position of UI elements\n if (this.tapToStartScreen) {\n this.tapToStartScreen.style.marginTop = `${safeArea.top}px`;\n this.tapToStartScreen.style.marginBottom = `${safeArea.bottom}px`;\n }\n\n if (this.gameOverScreen) {\n this.gameOverScreen.style.marginTop = `${safeArea.top}px`;\n this.gameOverScreen.style.marginBottom = `${safeArea.bottom}px`;\n }\n\n // Apply safe area to max score container\n if (this.maxScoreContainer) {\n this.maxScoreContainer.style.marginTop = `${safeArea.top}px`;\n this.maxScoreContainer.style.marginRight = `${safeArea.right}px`;\n }\n }\n } catch (error) {\n this.error('Error applying safe area: ' + error.message);\n console.error('Error applying safe area:', error);\n }\n });\n\n // Export theme constants for use by other modules\n venusApiInstance.DEFAULT_THEME = DEFAULT_THEME;\n venusApiInstance.DEFAULT_TYPOGRAPHY = DEFAULT_TYPOGRAPHY;\n} ","import {\n ActionSheetItem,\n PopupsApi,\n ShowActionSheetOptions,\n ShowAlertOptions,\n ShowConfirmOptions,\n ShowToastOptions,\n} from './PopupsApi'\nimport { VenusMessageId } from '../VenusMessageId'\nimport { RpcClient } from '../rpc'\n\nexport class RpcPopupsApi implements PopupsApi {\n private readonly rpcClient: RpcClient\n\n constructor(rpcClient: RpcClient) {\n this.rpcClient = rpcClient\n }\n\n async showActionSheet(\n items: ActionSheetItem[],\n options?: ShowActionSheetOptions,\n ): Promise<string | number | null> {\n const result = await this.rpcClient.call<string | number>(\n VenusMessageId.ACTION_SHEET_SHOW,\n {\n title: options?.title || '',\n message: options?.message || '',\n options: items,\n cancelButtonText: options?.cancelButtonText || 'Cancel',\n },\n )\n return result\n }\n\n async showAlert(\n title: string,\n message: string,\n options?: ShowAlertOptions,\n ): Promise<void> {\n const buttonText = options?.buttonText || 'OK'\n await this.rpcClient.call(VenusMessageId.ALERT_DIALOG, {\n title,\n message,\n buttonText,\n })\n }\n\n async showConfirm(\n title: string,\n message: string,\n options?: ShowConfirmOptions,\n ): Promise<boolean> {\n const confirmText = options?.confirmText || 'OK'\n const cancelText = options?.cancelText || 'Cancel'\n\n const result = await this.rpcClient.call<boolean>(\n VenusMessageId.CONFIRM_DIALOG,\n {\n title,\n message,\n confirmText,\n cancelText,\n },\n )\n\n return result\n }\n\n async showToast(\n message: string,\n options?: ShowToastOptions,\n ): Promise<boolean> {\n const duration = options?.duration ?? 3000\n const variant = options?.variant ?? 'info'\n const response = await this.rpcClient.call<ShowToastResponse>(\n VenusMessageId.TOAST,\n {\n message,\n duration,\n variant,\n action: options?.action,\n },\n duration + 2000,\n )\n return response.actionTriggered\n }\n}\n\nexport interface ShowToastResponse {\n shown: boolean\n actionTriggered: boolean\n}\n","import {\n ActionSheetItem,\n PopupsApi,\n ShowActionSheetOptions,\n ShowAlertOptions,\n ShowConfirmOptions,\n ShowToastOptions,\n} from './PopupsApi'\nimport { MockOverlay } from '../MockOverlay'\n\nexport class MockPopupsApi implements PopupsApi {\n private readonly overlay: MockOverlay\n\n constructor(override: MockOverlay) {\n this.overlay = override\n }\n\n showActionSheet(\n items: ActionSheetItem[],\n options?: ShowActionSheetOptions,\n ): Promise<string | number | null> {\n console.log(\n `[Venus Mock] Show Action sheet, items: ${JSON.stringify(items, null, 2)}, options: ${JSON.stringify(options, null, 2)}`,\n )\n return this.overlay.showActionSheet(items, options)\n }\n\n async showAlert(\n title: string,\n message: string,\n options?: ShowAlertOptions,\n ): Promise<void> {\n window.alert(`${title}\\n${message}`)\n }\n\n async showConfirm(\n title: string,\n message: string,\n options?: ShowConfirmOptions,\n ): Promise<boolean> {\n const result = window.confirm(`${title || 'Confirm'}\\n${message}`)\n\n return result\n }\n\n async showToast(\n message: string,\n options?: ShowToastOptions,\n ): Promise<boolean> {\n const variant = options?.variant ?? 'info'\n const duration = options?.duration ?? 3000\n const action = options?.action\n\n console.log('[Venus Mock] Toast:', message, {\n variant,\n duration,\n hasAction: !!action,\n })\n\n // Handle action toasts vs simple toasts\n if (action) {\n // Action toast - show with action button simulation\n const actionResult = window.confirm(\n `${message}\\n\\n[${action.label}] or [Cancel]`,\n )\n\n if (actionResult) {\n console.log('[Venus Mock] Toast action triggered:', action.label)\n return true\n }\n }\n return false\n }\n}\n","import { VenusAPI } from '../venus-api/types'\nimport { Host } from '../Host'\n\nexport * from './PopupsApi'\nexport * from './RpcPopupsApi'\nexport * from './MockPopupsApi'\n\nexport function initializePopups(venusApi: VenusAPI, host: Host) {\n venusApi.showToast = async (input) => {\n if (typeof input === 'string') {\n return await host.popups.showToast(input)\n } else {\n return await host.popups.showToast(input.message, {\n duration: input.duration,\n action: input.action,\n variant: 'success',\n })\n }\n }\n\n venusApi.showAlert = async (input) => {\n await host.popups.showAlert(input.title, input.message, {\n buttonText: input.buttonText,\n })\n }\n\n venusApi.showConfirm = async (input) => {\n const confirmed = await host.popups.showConfirm(\n input.title,\n input.message,\n {\n confirmText: input.confirmText,\n cancelText: input.cancelText,\n },\n )\n return confirmed\n }\n\n venusApi.showActionSheet = async (input) => {\n return await host.popups.showActionSheet(input.options, {\n title: input.title,\n message: input.message,\n cancelButtonText: input.cancelButtonText,\n disableCancel: input.disableCancel,\n })\n }\n\n venusApi.popups = host.popups\n}\n","import {\n NotificationsApi,\n ScheduleLocalNotification,\n ScheduleLocalNotificationOptions,\n} from './NotificationsApi'\nimport {\n createMockDelay,\n isWebPlatform,\n MOCK_DELAYS,\n} from '../venus-api/systems/core'\nimport { VenusAPI } from '../venus-api/types'\n\nexport class MockNotificationsApi implements NotificationsApi {\n private readonly venusApi: VenusAPI\n\n constructor(venusApi: VenusAPI) {\n this.venusApi = venusApi\n }\n\n async cancelLocalNotification(notificationId: string): Promise<boolean> {\n const venusApi = this.venusApi\n\n // Check if notifications are supported on this platform\n if (isWebPlatform()) {\n console.log(\n '[Venus Mock] Cancel notification on web platform (simulated):',\n notificationId,\n )\n return true\n }\n\n console.log('[Venus Mock] Cancel local notification:', notificationId)\n\n // Simulate a delay\n await createMockDelay(MOCK_DELAYS.short)\n\n // Remove from mock storage\n if (\n venusApi._mock.scheduledNotifications &&\n venusApi._mock.scheduledNotifications[notificationId]\n ) {\n delete venusApi._mock.scheduledNotifications[notificationId]\n return true\n }\n\n return false\n }\n\n async getAllScheduledLocalNotifications(): Promise<\n ScheduleLocalNotification[]\n > {\n // Check if notifications are supported on this platform\n if (isWebPlatform()) {\n console.log(\n '[Venus Mock] Get notifications on web platform (returning empty list)',\n )\n // Return direct array (not wrapped in success object)\n return []\n }\n\n console.log('[Venus Mock] Get all scheduled local notifications')\n\n // Simulate a delay\n await createMockDelay(MOCK_DELAYS.short)\n\n const venusApi = this.venusApi\n\n // Return direct array of notifications (not wrapped in success object)\n const notifications = venusApi._mock.scheduledNotifications || {}\n return Object.values(notifications)\n }\n\n async isLocalNotificationsEnabled(): Promise<boolean> {\n // Check if notifications are supported on this platform\n if (isWebPlatform()) {\n console.log('[Venus Mock] Notifications not available on web platform')\n // Return direct boolean (not wrapped in success object)\n return false\n }\n\n console.log('[Venus Mock] Check if local notifications are enabled')\n\n // Simulate a delay\n await createMockDelay(MOCK_DELAYS.short)\n\n const venusApi = this.venusApi\n // Return direct boolean (not wrapped in success object)\n const isEnabled = venusApi._mock.notificationsEnabled !== false\n return isEnabled\n }\n\n async scheduleLocalNotification(\n title: string,\n body: string,\n options?: ScheduleLocalNotificationOptions,\n ): Promise<string | null> {\n // Check if notifications are supported on this platform\n if (isWebPlatform()) {\n console.log(\n '[Venus Mock] Notifications not supported on web platform, simulating success',\n )\n\n // Provide helpful feedback to developers\n console.info(\n '🔔 [Venus Mock] Notification would be scheduled:',\n title || 'Untitled',\n '\\n Body:',\n body || 'No body',\n '\\n This is a simulation - real notifications require a native platform.',\n )\n\n // Return direct mock ID (not wrapped in success object)\n const mockId = `mock-web-notification-${Date.now()}`\n return mockId\n }\n\n console.log('[Venus Mock] Schedule local notification:', options)\n\n const venusApi = this.venusApi\n // Initialize pendingRequests if it doesn't exist\n if (!venusApi._mock.pendingRequests) {\n console.log('[Venus Mock] Initializing pendingRequests')\n venusApi._mock.pendingRequests = {}\n }\n\n const requestId = Date.now().toString()\n console.log('[Venus Mock] Creating request with ID:', requestId)\n\n return new Promise((resolve) => {\n venusApi._mock.pendingRequests[requestId] = { resolve }\n\n // Generate a mock notification ID\n const notificationId = `mock-notification-${Date.now()}`\n\n // Store this notification in mock storage for later retrieval\n if (!venusApi._mock.scheduledNotifications) {\n venusApi._mock.scheduledNotifications = {}\n }\n\n venusApi._mock.scheduledNotifications[notificationId] = {\n ...options,\n id: notificationId,\n createdAt: Date.now(),\n }\n\n // Simulate a delay using standard timing\n setTimeout(() => {\n // Return direct notification ID (not wrapped in success object)\n resolve(notificationId)\n }, MOCK_DELAYS.short)\n })\n }\n\n async setLocalNotificationsEnabled(enabled: boolean): Promise<boolean> {\n const venusApi = this.venusApi\n\n // Check if notifications are supported on this platform\n if (isWebPlatform()) {\n console.log(\n '[Venus Mock] Set notifications enabled on web platform (simulated):',\n enabled,\n )\n // Return void for successful setting (like the real API)\n return true\n }\n\n console.log('[Venus Mock] Set local notifications enabled:', enabled)\n\n // Simulate a delay\n await createMockDelay(MOCK_DELAYS.short)\n\n // Update mock storage\n venusApi._mock.notificationsEnabled = enabled\n return enabled\n }\n}\n","import { VenusAPI } from '../venus-api/types'\nimport { Host } from '../Host'\n\nexport * from './NotificationsApi'\nexport * from './MockNotificationsApi'\nexport * from './MockNotificationsApi'\n\nexport function initializeLocalNotifications(venusApi: VenusAPI, host: Host) {\n venusApi.setLocalNotifEnabledAsync = async (enable: boolean) => {\n await host.notifications.setLocalNotificationsEnabled(enable)\n }\n\n venusApi.isLocalNotifEnabledAsync = async () => {\n return host.notifications.isLocalNotificationsEnabled()\n }\n\n venusApi.getAllLocalNotifsAsync = async () => {\n return host.notifications.getAllScheduledLocalNotifications()\n }\n\n venusApi.cancelLocalNotifAsync = async (notificationId: string) => {\n await host.notifications.cancelLocalNotification(notificationId)\n }\n\n venusApi.scheduleLocalNotifAsync = async (options) => {\n const id = await host.notifications.scheduleLocalNotification(\n options.title,\n options.body,\n )\n\n if (id) {\n return id\n }\n return ''\n }\n}\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'\nimport { RpcClient } from '../rpc'\nimport { VenusMessageId } from '../VenusMessageId'\nimport { isPacificDaylightTime } from './utils'\n\nexport class HostTimeApi implements TimeApi {\n private readonly rpcClient: RpcClient\n\n constructor(rpcClient: RpcClient) {\n this.rpcClient = rpcClient\n }\n\n async requestTimeAsync(): Promise<ServerTimeData> {\n const response = await this.rpcClient.call<ServerTimeData>(\n VenusMessageId.REQUEST_SERVER_TIME,\n {},\n )\n return response\n }\n\n formatTime(timestamp: number, options?: any): string {\n // Get user locale from configuration\n let locale = 'en-US' // Default fallback locale\n\n const windowVenus = window.venus\n\n if (windowVenus._config.locale) {\n locale = windowVenus._config.locale\n } else if (\n windowVenus._config.environment &&\n windowVenus._config.environment.browserInfo &&\n windowVenus._config.environment.browserInfo.language\n ) {\n locale = windowVenus._config.environment.browserInfo.language\n }\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 return date.toLocaleString(locale, dateTimeOptions)\n }\n\n formatNumber(value: number, options?: Intl.NumberFormatOptions): string {\n try {\n // Get user locale from configuration\n let locale = 'en-US' // Default fallback locale\n const windowVenus = window.venus\n\n if (windowVenus._config.locale) {\n locale = windowVenus._config.locale\n } else if (\n windowVenus._config.environment &&\n windowVenus._config.environment.browserInfo &&\n windowVenus._config.environment.browserInfo.language\n ) {\n locale = windowVenus._config.environment.browserInfo.language\n }\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 return value.toLocaleString(locale, numberOptions)\n } catch (error) {\n console.error('[Venus] Error formatting number:', error)\n // Fallback to basic formatting\n return String(value)\n }\n }\n\n async getFutureTimeAsync(options?: GetFutureTimeOptions): Promise<number> {\n // Get the current server time first\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 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] Timezone ' +\n options.timezone +\n ' not supported, using local time',\n )\n }\n }\n\n // Return direct timestamp number\n return result.getTime()\n }\n}\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'\nimport { VenusAPI } from '../venus-api/types.ts'\nimport { Avatar3dConfig } from './Avatar3dConfig.ts'\nimport { AssetManifest, Category } from './AssetManifest.ts'\nimport { createMockDelay, MOCK_DELAYS } from '../venus-api/systems/core'\n\ndeclare global {\n interface Window {\n VenusPrototyping?: {\n showAvatarEditorOverlay: (\n options: any,\n resolve: (args: any) => void,\n ) => Promise<void>\n }\n }\n}\n\nexport class MockAvatarApi implements Avatar3dApi {\n private readonly _venusApi: VenusAPI\n\n private cachedAssets: Record<string, Category> | null = null\n private cachedVersion: string = ''\n\n constructor(venusApi: VenusAPI) {\n this._venusApi = venusApi\n }\n downloadAssetPaths(): Promise<Record<string, string[]>> {\n console.log('[Venus Mock] Downloading avatar3d asset paths...')\n return this.getAllAssetPaths()\n }\n\n async deleteAvatar(): Promise<void> {\n console.log(`[Venus Mock] Deleting avatar3d config`)\n const venusApi = this._venusApi\n\n // Get current profile from Venus API context\n const currentProfile = venusApi.getCurrentProfile()\n const profileId = currentProfile?.id || 'default_profile'\n\n // Remove from localStorage\n localStorage.removeItem(`venus-mock-avatar3d-${profileId}`)\n\n console.log(\n `[Venus Mock] Avatar3d config deleted from localStorage for profile: ${profileId}`,\n )\n }\n\n async loadAvatar(avatar3dId?: string): Promise<Avatar3dConfig | null> {\n console.log(`[Venus Mock] Loading avatar3d`, { avatar3dId })\n const venusApi = this._venusApi\n let config\n\n if (avatar3dId) {\n // Mock shared avatar3d loading using deterministic selection\n console.log(`[Venus Mock] Loading shared avatar3d by ID: ${avatar3dId}`)\n config = await this.selectAvatarConfig(avatar3dId, false)\n } else {\n // Always return a valid avatar, even if no profile\n const currentProfile = venusApi.getCurrentProfile()\n const profileId = currentProfile?.id || 'default_profile'\n\n console.log(`[Venus Mock] Loading avatar3d for profile: ${profileId}`)\n\n // Always generate fresh avatar config with current CDN URLs\n // localStorage is only used for save persistence, not loading\n console.log(\n '[Venus Mock] Generating fresh avatar config with current CDN URLs',\n )\n if (profileId === 'default_profile') {\n // Use consistent defaults for the default profile\n config = await this.selectAvatarConfig(null, true)\n } else {\n // Use seeded random for other profiles\n config = await this.selectAvatarConfig(profileId, false)\n }\n }\n\n // Return direct config or null if not found\n return config || null\n }\n\n async saveAvatar(config: Avatar3dConfig): Promise<string> {\n console.log(`[Venus Mock] Saving avatar3d config:`, config)\n const venusApi = this._venusApi\n\n // Get current profile from Venus API context\n const currentProfile = venusApi.getCurrentProfile()\n const profileId = currentProfile?.id || 'default_profile'\n\n // Save to localStorage for mock persistence\n localStorage.setItem(\n `venus-mock-avatar3d-${profileId}`,\n JSON.stringify(config),\n )\n\n // Generate a mock avatar3dId\n const mockAvatar3dId = `mock_avatar3d_${profileId}_${Date.now()}`\n\n console.log(\n `[Venus Mock] Avatar3d config saved to localStorage with mock ID: ${mockAvatar3dId}`,\n )\n\n // Return direct avatar ID\n return mockAvatar3dId\n }\n\n downloadManifest(): Promise<AssetManifest> {\n return this.loadAssetsManifest()\n }\n\n async showEditor(options?: ShowEditorOptions): Promise<Avatar3dEdits> {\n console.log(\n `[Venus Mock] showAvatar3dEditorAsync called with options:`,\n options,\n )\n\n // Mock implementation - simulate opening avatar editor\n if (window.VenusPrototyping) {\n // If prototyping utilities are available, use them for a better experience\n return new Promise((resolve) => {\n window.VenusPrototyping!.showAvatarEditorOverlay(options, resolve)\n })\n }\n\n // Simple browser-based simulation\n console.log('[Venus Mock] Simulating avatar editor opening...')\n\n // Simulate delay for opening editor\n await createMockDelay(MOCK_DELAYS.medium)\n\n // Generate a mock avatar configuration\n const mockAvatarConfig = await this.selectAvatarConfig(null, false)\n\n // Simulate user interaction - 70% chance they save changes, 30% they cancel\n const userSavedChanges = Math.random() > 0.3\n\n console.log(\n '[Venus Mock] Avatar editor simulation complete - user would use requestPopOrQuit() with result data',\n )\n\n // Return direct editor result\n if (userSavedChanges) {\n const mockAvatarId = `mock_avatar_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`\n\n return {\n wasChanged: true,\n config: mockAvatarConfig,\n savedAvatarId: mockAvatarId,\n }\n } else {\n return {\n wasChanged: false,\n config: null,\n savedAvatarId: null,\n }\n }\n }\n\n private async getAssets() {\n let cachedAssets = this.cachedAssets\n if (!cachedAssets) {\n this.log('No cached assets found, loading new manifest...')\n cachedAssets = (await this.loadAssetsManifest()).categories\n }\n return cachedAssets\n }\n\n private async loadAssetsManifest() {\n this.log('Loading avatar3d assets manifest from CDN...')\n const venusApi = this._venusApi\n\n // Use the CDN base URL from Venus API configuration\n const baseManifestUrl = venusApi.resolveAvatarAssetUrl('assets.json')\n\n // Add cache busting to prevent CDN/browser cache issues\n const separator = baseManifestUrl.includes('?') ? '&' : '?'\n const manifestUrl = `${baseManifestUrl}${separator}v=${Date.now()}`\n\n console.log('[Venus Mock] Fetching manifest from URL:', manifestUrl)\n\n try {\n const response = await fetch(manifestUrl, {\n method: 'GET',\n headers: {\n Accept: 'application/json, text/plain, */*',\n 'Content-Type': 'application/json',\n },\n mode: 'cors',\n cache: 'no-cache',\n })\n\n console.log(\n '[Venus Mock] Fetch response status:',\n response.status,\n response.statusText,\n )\n console.log(\n '[Venus Mock] Response headers:',\n Object.fromEntries(response.headers.entries()),\n )\n\n if (!response.ok) {\n throw new Error(\n `Failed to fetch assets manifest: ${response.status} ${response.statusText}`,\n )\n }\n\n const manifest = (await response.json()) as AssetManifest\n console.log('[Venus Mock] Loaded assets manifest:', {\n version: manifest.version,\n generatedAt: manifest.generatedAt,\n categories: Object.keys(manifest.categories || {}),\n })\n\n // Cache the assets but not the raw JSON\n this.cachedAssets = manifest.categories || {}\n this.cachedVersion = manifest.version\n\n return manifest\n } catch (error) {\n console.error('[Venus Mock] Failed to load assets manifest:', error)\n\n // Return a fallback minimal manifest for development\n console.log(\n '[Venus Mock] Using fallback minimal manifest for development',\n )\n const fallbackManifest: AssetManifest = {\n version: 'dev-fallback',\n generatedAt: new Date().toISOString(),\n categories: {\n head: {\n type: 'mesh',\n assets: [\n {\n id: 'head_default',\n filename: 'head_default.glb',\n displayName: 'Default Head',\n },\n {\n id: 'head_variant1',\n filename: 'head_variant1.glb',\n displayName: 'Head Variant 1',\n },\n ],\n },\n outfit: {\n type: 'mesh',\n assets: [\n {\n id: 'outfit_default',\n filename: 'outfit_default.glb',\n displayName: 'Default Outfit',\n },\n {\n id: 'outfit_casual',\n filename: 'outfit_casual.glb',\n displayName: 'Casual Outfit',\n },\n ],\n },\n hat: {\n type: 'mesh',\n assets: [\n {\n id: 'hat_none',\n filename: 'hat_none.glb',\n displayName: 'No Hat',\n },\n {\n id: 'hat_cap',\n filename: 'hat_cap.glb',\n displayName: 'Baseball Cap',\n },\n ],\n },\n hair: {\n type: 'mesh',\n assets: [\n {\n id: 'hair_default',\n filename: 'hair_default.glb',\n displayName: 'Default Hair',\n },\n {\n id: 'hair_long',\n filename: 'hair_long.glb',\n displayName: 'Long Hair',\n },\n ],\n },\n 'face-accessory': {\n type: 'mesh',\n assets: [\n {\n id: 'glasses_none',\n filename: 'glasses_none.glb',\n displayName: 'No Glasses',\n },\n {\n id: 'glasses_regular',\n filename: 'glasses_regular.glb',\n displayName: 'Regular Glasses',\n },\n ],\n },\n animation: {\n type: 'mesh',\n assets: [\n {\n id: 'idle_default',\n filename: 'idle_default.glb',\n displayName: 'Default Idle',\n },\n {\n id: 'wave',\n filename: 'wave.glb',\n displayName: 'Wave Animation',\n },\n ],\n },\n },\n }\n\n this.cachedAssets = fallbackManifest.categories\n this.cachedVersion = fallbackManifest.version\n\n return fallbackManifest\n }\n }\n\n private async selectAvatarConfig(\n avatarId: string | null = null,\n useDefaults = false,\n ): Promise<Avatar3dConfig> {\n const categories = await this.getAssets()\n this.log(`Manifest ${JSON.stringify(categories, null, 2)}`)\n\n const rng = avatarId ? this.seededRandom(avatarId) : () => Math.random()\n\n const headAsset = this.selectAsset(\n categories,\n 'head',\n rng,\n avatarId,\n useDefaults,\n )\n\n const outfitAsset = this.selectAsset(\n categories,\n 'outfit',\n rng,\n avatarId,\n useDefaults,\n )\n const hatAsset = this.selectAsset(\n categories,\n 'hat',\n rng,\n avatarId,\n useDefaults,\n )\n const hairAsset = this.selectAsset(\n categories,\n 'hair',\n rng,\n avatarId,\n useDefaults,\n )\n const faceAccessoryAsset = this.selectAsset(\n categories,\n 'face-accessory',\n rng,\n avatarId,\n useDefaults,\n )\n const animationAsset = this.selectAsset(\n categories,\n 'animation',\n rng,\n avatarId,\n useDefaults,\n )\n\n const config: Avatar3dConfig = {\n headAsset: headAsset.filename,\n outfitAsset: outfitAsset.filename,\n animationAsset: animationAsset.filename,\n faceAccessoryAsset: faceAccessoryAsset.filename,\n hairAsset: hairAsset.filename,\n hatAsset: hatAsset.filename,\n skinColor: null, // NOTE(Zee): This was not selected anywhere?\n }\n\n console.log(\n `[Venus Mock] Selected avatar config for ${avatarId || 'default'}:`,\n config,\n )\n return config\n }\n\n private selectAsset(\n manifest: Record<string, Category>,\n categoryId: string,\n rng: () => number,\n avatarId: string | null,\n useDefaults = false,\n ) {\n const categoryAssets = manifest[categoryId].assets\n\n if (useDefaults) {\n // Always use the first asset for default avatar (consistent)\n const selectedAsset = categoryAssets[0]\n console.log(\n `[Venus Mock] Using default asset for ${categoryId}:`,\n selectedAsset.id,\n )\n return selectedAsset\n }\n\n if (avatarId) {\n // Use seeded random for deterministic selection based on ID\n const index = Math.floor(rng() * categoryAssets.length)\n const selectedAsset = categoryAssets[index]\n console.log(\n `[Venus Mock] Seeded selection for ${avatarId} ${categoryId}:`,\n selectedAsset.id,\n `(index ${index}/${categoryAssets.length})`,\n )\n return selectedAsset\n }\n\n // Fallback to first asset if no ID\n const selectedAsset = categoryAssets[0]\n this.log(`Fallback to first asset for ${categoryId}:`, selectedAsset.id)\n\n return selectedAsset\n }\n\n private seededRandom(seed: string) {\n const hash = this.simpleHash(seed)\n let state = hash\n return function () {\n state = (state * 1664525 + 1013904223) % 4294967296\n return state / 4294967296\n }\n }\n\n private simpleHash(str: string) {\n let hash = 0\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i)\n hash = (hash << 5) - hash + char\n hash = hash & hash // Convert to 32-bit integer\n }\n return Math.abs(hash)\n }\n\n private async getAllAssetPaths() {\n const venusApi = this._venusApi\n const assets = await this.getAssets()\n const allPaths: Record<string, string[]> = {}\n\n for (const [category, categoryData] of Object.entries(assets)) {\n allPaths[category] = (categoryData?.assets || []).map((asset) =>\n venusApi.resolveAvatarAssetUrl(`${category}/${asset.filename}`),\n )\n }\n\n this.log('All available asset paths:', allPaths)\n return allPaths\n }\n\n private log(message: string, ...args: any[]) {\n console.log(`\"[Venus Mock] ${message}`, args)\n }\n}\n","import { Avatar3dApi, Avatar3dEdits, ShowEditorOptions } from './Avatar3dApi.ts'\nimport { Avatar3dConfig } from './Avatar3dConfig.ts'\nimport { RpcClient } from '../rpc'\nimport { VenusMessageId } from '../VenusMessageId.ts'\nimport { Asset, AssetManifest } from './AssetManifest.ts'\nimport { VenusAPI } from '../venus-api/types.ts'\n\nexport class RpcAvatarApi implements Avatar3dApi {\n private readonly venusApi: VenusAPI\n private readonly rpcClient: RpcClient\n\n constructor(rpcClient: RpcClient, venusApi: VenusAPI) {\n this.rpcClient = rpcClient\n this.venusApi = venusApi\n }\n\n async downloadAssetPaths(): Promise<Record<string, string[]>> {\n const venusApi = this.venusApi\n console.log('[Venus] Downloading avatar3d asset paths...')\n\n const manifestUrl = venusApi.resolveAvatarAssetUrl('assets.json')\n console.log('[Venus] 🔍 Manifest URL resolved to:', manifestUrl)\n\n const manifest = await this.fetchFromCdn(manifestUrl)\n console.log('[Venus] 📦 Manifest loaded successfully:', {\n version: manifest.version,\n categories: Object.keys(manifest.categories || {}),\n totalAssets: Object.values(manifest.categories || {}).reduce(function (\n sum,\n cat,\n ) {\n return sum + (cat.assets?.length || 0)\n }, 0),\n })\n\n const categories = manifest.categories || {}\n\n // Process into asset paths with full URLs\n const assetPaths: Record<string, string[]> = {}\n for (const categoryKey in categories) {\n const categoryData = categories[categoryKey]\n const categoryPath = categoryKey\n const assetUrls = (categoryData?.assets || []).map((asset: Asset) => {\n const url = venusApi.resolveAvatarAssetUrl(\n categoryPath + '/' + asset.filename,\n )\n console.log('[Venus] 🎨 Asset URL:', asset.filename, '->', url)\n return url\n })\n assetPaths[categoryKey] = assetUrls\n console.log(\n '[Venus] 📁 Category',\n categoryKey,\n 'has',\n assetUrls.length,\n 'assets',\n )\n }\n\n console.log('[Venus] Avatar3d asset paths downloaded successfully')\n\n // Return direct asset paths\n return assetPaths\n }\n\n async downloadManifest(): Promise<AssetManifest> {\n console.log('[Venus] Downloading avatar3d manifest...')\n const venusApi = this.venusApi\n\n // Use shared CDN fetch utility\n const manifestUrl = venusApi.resolveAvatarAssetUrl('assets.json')\n const manifest = await this.fetchFromCdn(manifestUrl)\n\n console.log('[Venus] Avatar3d manifest downloaded successfully')\n\n // Return direct manifest\n return manifest\n }\n\n async loadAvatar(avatarId?: string): Promise<Avatar3dConfig | null> {\n const result = await this.rpcClient.call(VenusMessageId.AVATAR3D_LOAD, {\n avatar3dId: avatarId,\n })\n this.log(\n `Avatar loaded with the following result:\\n${JSON.stringify(result, null, 2)}`,\n )\n return result as Avatar3dConfig\n }\n\n saveAvatar(config: Avatar3dConfig): Promise<string> {\n return this.rpcClient.call(VenusMessageId.AVATAR3D_SAVE, {\n config: config,\n })\n }\n\n deleteAvatar(): Promise<void> {\n return this.rpcClient.call(VenusMessageId.AVATAR3D_DELETE)\n }\n\n async showEditor(options?: ShowEditorOptions): Promise<Avatar3dEdits> {\n const rpcClient = this.rpcClient\n\n console.log(\n '[Venus] 🎨 showAvatar3dEditorAsync called with options:',\n options,\n )\n\n console.log(\n '[Venus] 📤 Sending H5_STACK_PUSH_REQUEST for avatar3d using _sendRequest...',\n )\n\n // Use _sendRequest to get the final result when the editor closes\n const rawResult = await rpcClient.call<Avatar3dEdits>(\n VenusMessageId.H5_STACK_PUSH_REQUEST,\n {\n targetAppId: 'AVATAR3D',\n contextData: options?.contextData || {},\n appParams: {\n currentAvatar: options?.currentAvatar,\n onSave: options?.onSave,\n onCancel: options?.onCancel,\n },\n },\n )\n\n console.log(\n '[Venus] ✅ Avatar editor completed with raw result:',\n rawResult,\n )\n\n // Return direct editor result\n return {\n wasChanged: rawResult.wasChanged || false,\n config: rawResult.config || null,\n savedAvatarId: rawResult.savedAvatarId || null,\n }\n }\n\n private async fetchFromCdn(url: string): Promise<AssetManifest> {\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n Accept: 'application/json, text/plain, */*',\n 'Content-Type': 'application/json',\n },\n mode: 'cors',\n cache: 'no-cache',\n })\n\n if (!response.ok) {\n throw new Error(\n `CDN fetch failed: ${response.status} ${response.statusText}`,\n )\n }\n\n return (await response.json()) as AssetManifest\n }\n\n private log(message: string, ...options: any[]): void {\n console.log(`[Venus] ${message}`, options)\n }\n}\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 {\n NavigationApi,\n NavigationStackInfo,\n PushAppOptions,\n QuitOptions,\n} from './NavigationApi'\nimport { RpcClient } from '../rpc'\nimport { VenusMessageId } from '../VenusMessageId'\nimport { VenusAPI } from '../venus-api/types'\n\nexport class RpcNavigationApi implements NavigationApi {\n private readonly venusApi: VenusAPI\n private readonly rpcClient: RpcClient\n\n constructor(rpcClient: RpcClient, venusApi: VenusAPI) {\n this.rpcClient = rpcClient\n this.venusApi = venusApi\n }\n async requestPopOrQuit(options?: QuitOptions): Promise<boolean> {\n const result = await this.rpcClient.call<PopOrQuitResponse>(\n VenusMessageId.QUIT,\n options,\n )\n return result.success\n }\n\n getStackInfo(): NavigationStackInfo {\n const venusApi = this.venusApi\n console.log('[Venus] getStackInfo called')\n const config = window.venus._config\n const stackInfo = config.context?.stack || {\n isInStack: false,\n stackPosition: 0,\n parentInstanceId: null,\n appType: 'standalone',\n }\n return stackInfo\n }\n\n popApp(): Promise<void> {\n const rpcClient = this.rpcClient\n console.log('[Venus] popAppAsync called')\n return rpcClient.call(VenusMessageId.H5_STACK_POP_REQUEST)\n }\n\n pushApp(appId: string, options?: PushAppOptions): Promise<void> {\n const rpcClient = this.rpcClient\n console.log('[Venus] pushAppAsync called', { appId, options })\n return rpcClient.call(VenusMessageId.H5_STACK_PUSH_REQUEST, {\n targetAppId: appId,\n contextData: options?.contextData,\n appParams: options?.appParams,\n })\n }\n}\n\ninterface PopOrQuitResponse {\n success: boolean\n action: 'popped_from_stack'\n quitReason: string\n timestamp: number\n}\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'\nimport { RpcClient } from '../rpc'\nimport { VenusMessageId } from '../VenusMessageId'\n\nexport class RpcAiApi implements AiApi {\n private readonly rpcClient: RpcClient\n\n constructor(rpcClient: RpcClient) {\n this.rpcClient = rpcClient\n }\n\n async requestChatCompletionAsync(\n request: AiChatCompletionRequest,\n ): Promise<AiChatCompletionData> {\n const response = await this.rpcClient.call<AiChatCompletionData>(\n VenusMessageId.AI_CHAT_COMPLETION,\n {\n request: (() => {\n const { apiKey, ...requestWithoutApiKey } = request\n return requestWithoutApiKey\n })(),\n },\n )\n // Return direct response data\n return response\n }\n\n async getAvailableCompletionModels(): Promise<Array<string>> {\n const response = await this.rpcClient.call<Array<string>>(\n VenusMessageId.AI_GET_AVAILABLE_MODELS,\n )\n return response\n }\n}\n","import { AiApi, AiChatCompletionData, AiChatCompletionRequest } from './AiApi'\n\nexport class MockAiApi implements AiApi {\n async requestChatCompletionAsync(\n request: AiChatCompletionRequest,\n ): Promise<AiChatCompletionData> {\n const { apiKey, ...requestBody } = request\n \n if (!apiKey) {\n throw new Error('An API key is required for a chat completion request when developing locally.')\n }\n\n const response = await fetch('https://series.ullm.rho.live/api/v1/completions', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${apiKey}`,\n },\n body: JSON.stringify(requestBody),\n })\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`)\n }\n\n const data: AiChatCompletionData = await response.json()\n return data\n }\n\n async getAvailableCompletionModels(): Promise<Array<string>> {\n const response = await fetch('https://series.ullm.rho.live/api/v1/models', {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`)\n }\n\n const data: Array<string> = await response.json()\n return data\n }\n}\n","import { Host } from '../Host'\nimport { VenusAPI } from '../venus-api/types'\nimport { AiChatCompletionRequest } from './AiApi'\n\nexport * from './AiApi'\nexport * from './RpcAiApi'\nexport * from './MockAiApi'\n\nexport function initializeAi(venusApi: VenusAPI, host: Host) {\n venusApi.ai = host.ai\n}\n","// Mock room storage to simulate real-time rooms in development\nconst mockRooms = new Map();\nconst mockMessages = new Map(); // roomId -> messages[]\nconst mockRoomMoves = new Map(); // roomId -> moves[] \nconst mockSubscriptions = new Map(); // instanceId -> subscriptions\n\n// Helper to generate room IDs\nfunction generateRoomId() {\n return 'room_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n}\n\n// Helper to generate message IDs\nfunction generateMessageId() {\n return 'msg_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n}\n\n// Helper to generate room codes\nfunction generateRoomCode() {\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n let code = '';\n for (let i = 0; i < 6; i++) {\n code += characters.charAt(Math.floor(Math.random() * characters.length));\n }\n return code;\n}\n\n// Helper to simulate real-time events\nfunction broadcastEvent(roomId, eventType, eventData) {\n console.log(`[Venus Mock Rooms] Broadcasting ${eventType} for room ${roomId}:`, eventData);\n \n // Find all subscriptions for this room and trigger callbacks\n for (const [instanceId, subscriptions] of mockSubscriptions.entries()) {\n const roomSubscriptions = subscriptions.get(roomId);\n if (roomSubscriptions) {\n // Simulate real-time event delivery after a short delay\n setTimeout(() => {\n if (roomSubscriptions.onRoomDataUpdated && eventType === 'room_data_updated') {\n roomSubscriptions.onRoomDataUpdated(eventData);\n }\n if (roomSubscriptions.onMessageReceived && eventType === 'message_received') {\n roomSubscriptions.onMessageReceived(eventData);\n }\n if (roomSubscriptions.onPlayerJoined && eventType === 'player_joined') {\n roomSubscriptions.onPlayerJoined(eventData);\n }\n if (roomSubscriptions.onPlayerLeft && eventType === 'player_left') {\n roomSubscriptions.onPlayerLeft(eventData);\n }\n if (roomSubscriptions.onGameStarted && eventType === 'game_started') {\n roomSubscriptions.onGameStarted(eventData);\n }\n if (roomSubscriptions.onTurnChanged && eventType === 'turn_changed') {\n roomSubscriptions.onTurnChanged(eventData);\n }\n if (roomSubscriptions.onOptimisticGameStateUpdated && eventType === 'app:h5:optimisticGameStateUpdated') {\n roomSubscriptions.onOptimisticGameStateUpdated(eventData);\n }\n if (roomSubscriptions.onProposedMoveValidationUpdated && eventType === 'app:h5:proposedMoveValidationUpdated') {\n roomSubscriptions.onProposedMoveValidationUpdated(eventData);\n }\n }, 50); // 50ms delay to simulate network latency\n }\n }\n}\n\n// Import DRY utilities from core.js\nimport { createProxiedMethod, createProxiedObject } from './core.js';\n\n// Mock VenusRoom class that mimics the injected API VenusRoom\nclass MockVenusRoom {\n constructor(roomData) {\n // Use server's canonical ID field\n this.id = roomData.id;\n this.roomId = roomData.id; // Legacy alias for chess app\n this.name = roomData.name;\n this.players = roomData.currentPlayers || [];\n this.maxPlayers = roomData.maxPlayers;\n this.gameType = roomData.gameType;\n this._subscriptions = new Map();\n \n // Preserve complete server room data including game state\n this.appId = roomData.appId;\n this.type = roomData.type;\n this.createdBy = roomData.createdBy;\n this.createdAt = roomData.createdAt;\n this.updatedAt = roomData.updatedAt;\n this.isPrivate = roomData.isPrivate;\n this.currentPlayers = roomData.currentPlayers || [];\n this.status = roomData.status;\n this.customMetadata = roomData.customMetadata || {};\n this.admins = roomData.admins || [];\n this.roomCode = roomData.roomCode;\n this.description = roomData.description;\n this.data = roomData.data || {};\n this.version = roomData.version;\n \n console.log(`[Venus Mock VenusRoom] Created room object for ${this.id}`, {\n hasCustomMetadata: !!this.customMetadata,\n hasGameState: !!this.customMetadata?.rules?.gameState,\n gamePhase: this.customMetadata?.rules?.gameState?.phase,\n currentPlayer: this.customMetadata?.rules?.gameState?.currentPlayer\n });\n }\n\n // Update room data\n async updateData(updates, merge = true) {\n return roomsMock.updateRoomData(this.roomId, updates, merge);\n }\n\n // Get room data\n async getData() {\n return roomsMock.getRoomData(this.roomId);\n }\n\n // Send message\n async sendMessage(messageData) {\n return roomsMock.sendMessage(this.roomId, messageData);\n }\n\n // Subscribe to room data changes\n subscribeToData(callback) {\n return roomsMock.subscribeToRoom(this.roomId, {\n onRoomDataUpdated: callback\n });\n }\n\n // Subscribe to messages\n subscribeToMessages(callback) {\n return roomsMock.subscribeToRoom(this.roomId, {\n onMessageReceived: callback\n });\n }\n\n // Leave room\n async leave() {\n // Clean up all subscriptions\n this._subscriptions.forEach(sub => {\n if (sub.unsubscribe) sub.unsubscribe();\n });\n this._subscriptions.clear();\n \n return { success: true };\n }\n\n // Start game\n async startGame(gameConfig = {}, turnOrder = null) {\n return roomsMock.startGame(this.roomId, gameConfig);\n }\n\n // End game\n async endGame(winner = null, reason = null, gameResults = {}) {\n return roomsMock.endGame(this.roomId, winner, reason, gameResults);\n }\n\n // Propose move (for client-proposed state architecture)\n async proposeMove(proposalPayload) {\n return roomsMock.proposeMove(this.roomId, proposalPayload);\n }\n\n // Validate move\n async validateMove(moveId, isValid, reason = null, validatorId = null) {\n console.log(`[Venus Mock VenusRoom] Validating move ${moveId}: ${isValid}`);\n // For mock, just return success\n return { success: true, moveId, isValid, reason };\n }\n\n // Subscribe to game events\n subscribeToGameEvents(callback) {\n return roomsMock.subscribeToRoom(this.roomId, {\n onOptimisticGameStateUpdated: callback,\n onProposedMoveValidationUpdated: callback\n });\n }\n\n // Generic message handler for room-manager.js integration\n onMessage(callback) {\n // Subscribe to all events for this room\n return roomsMock.subscribeToRoom(this.roomId, {\n onRoomDataUpdated: callback,\n onMessageReceived: callback,\n onGameStarted: callback,\n onTurnChanged: callback,\n onOptimisticGameStateUpdated: callback,\n onProposedMoveValidationUpdated: callback\n });\n }\n\n // Unified subscription helper\n subscribe(options = {}) {\n const unsubFns = [];\n \n if (options.onData) {\n const sub = this.subscribeToData(options.onData);\n unsubFns.push(() => sub.unsubscribe());\n }\n \n if (options.onMessages) {\n const sub = this.subscribeToMessages(options.onMessages);\n unsubFns.push(() => sub.unsubscribe());\n }\n \n if (options.onMoves || options.onGameEvents) {\n const handler = options.onMoves || options.onGameEvents;\n const sub = this.subscribeToGameEvents(handler);\n unsubFns.push(() => sub.unsubscribe());\n }\n\n // Return composite unsubscribe\n let called = false;\n return () => {\n if (called) return;\n called = true;\n unsubFns.forEach(fn => {\n try { fn(); } catch (e) { console.error('Mock room subscribe teardown error', e); }\n });\n };\n }\n}\n\n// Mock room implementation\nconst roomsMock = {\n createRoom(options = {}) {\n try {\n console.log(`[Venus Mock Rooms] Creating room with options:`, options);\n \n const roomId = generateRoomId();\n const creatorId = options.userId || 'mock-user-creator'; // Simulate a creator ID\n const creatorDisplayName = options.userDisplayName || `Creator ${creatorId.slice(-4)}`;\n\n const initialGameState = {\n phase: 'waiting',\n currentPlayer: creatorId, // Creator might be the first player by default\n turnOrder: [creatorId],\n playerStates: {\n [creatorId]: {\n displayName: creatorDisplayName,\n status: 'active',\n role: 'admin', // Creator is admin\n joinedAt: new Date(),\n }\n },\n gameStartedAt: null,\n turnCount: 0,\n // other game-specific state can be added by the H5 app via customMetadata or startGame\n };\n\n const room = {\n id: roomId,\n appId: options.appId || 'mock-app',\n name: options.name || 'Mock Room',\n type: 'shared',\n createdBy: creatorId,\n createdAt: new Date(),\n updatedAt: new Date(),\n isPrivate: options.isPrivate || false,\n maxPlayers: options.maxPlayers || 4,\n currentPlayers: [creatorId],\n status: 'active',\n customMetadata: {\n ...(options.customMetadata || {}),\n rules: {\n ...(options.customMetadata?.rules || {}),\n // Default generic rules, can be overridden by H5 app's options\n ruleEngine: options.customMetadata?.rules?.ruleEngine || 'generic-v1',\n turnBased: options.customMetadata?.rules?.turnBased ?? true,\n minPlayers: options.customMetadata?.rules?.minPlayers || 1,\n maxPlayers: options.maxPlayers || 4,\n gameState: initialGameState,\n },\n },\n admins: [creatorId],\n roomCode: options.roomCode || (options.isPrivate ? generateRoomCode() : null),\n description: options.description,\n gameType: options.gameType,\n data: {}, // General purpose data, game state is in customMetadata.rules.gameState\n version: 1,\n };\n\n mockRooms.set(roomId, room);\n mockMessages.set(roomId, []);\n mockRoomMoves.set(roomId, []); // Initialize moves list for the room\n\n console.log(`[Venus Mock Rooms] Created room ${roomId} with initial state:`, room);\n \n // Return MockVenusRoom instance\n return Promise.resolve(new MockVenusRoom(room));\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error creating room:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to create room' });\n }\n },\n\n joinRoom(roomId, playerMetadata = {}) {\n try {\n console.log(`[Venus Mock Rooms] Joining room ${roomId}`);\n \n const room = mockRooms.get(roomId);\n if (!room) {\n return Promise.reject({ success: false, error: 'Room not found' });\n }\n\n const joiningPlayerId = playerMetadata.userId || 'mock-user-' + Math.random().toString(36).substr(2, 5);\n const joiningPlayerDisplayName = playerMetadata.displayName || `Player ${joiningPlayerId.slice(-4)}`;\n\n if (room.currentPlayers.includes(joiningPlayerId)) {\n console.log(`[Venus Mock Rooms] Player ${joiningPlayerId} already in room ${roomId}. Updating display name if needed.`);\n // Ensure playerState has display name\n if (room.customMetadata.rules.gameState.playerStates[joiningPlayerId]) {\n room.customMetadata.rules.gameState.playerStates[joiningPlayerId].displayName = joiningPlayerDisplayName;\n room.customMetadata.rules.gameState.playerStates[joiningPlayerId].status = 'active';\n } else {\n // This case should ideally not happen if player is in currentPlayers\n room.customMetadata.rules.gameState.playerStates[joiningPlayerId] = {\n displayName: joiningPlayerDisplayName,\n status: 'active',\n role: 'player',\n joinedAt: new Date(),\n };\n }\n room.updatedAt = new Date();\n room.version++;\n broadcastEvent(roomId, 'room_data_updated', { roomId: roomId, roomData: room, timestamp: Date.now() });\n return Promise.resolve(new MockVenusRoom(room)); // Return MockVenusRoom instance\n }\n\n if (room.currentPlayers.length >= room.maxPlayers) {\n return Promise.reject({ success: false, error: 'Room is full' });\n }\n \n room.currentPlayers.push(joiningPlayerId);\n room.customMetadata.rules.gameState.playerStates[joiningPlayerId] = {\n displayName: joiningPlayerDisplayName,\n status: 'active',\n role: 'player',\n joinedAt: new Date(),\n };\n // If turnOrder exists and game is waiting, add player to turnOrder\n if (room.customMetadata.rules.gameState.phase === 'waiting' && room.customMetadata.rules.gameState.turnOrder) {\n if (!room.customMetadata.rules.gameState.turnOrder.includes(joiningPlayerId)) {\n room.customMetadata.rules.gameState.turnOrder.push(joiningPlayerId);\n }\n }\n\n room.updatedAt = new Date();\n room.version++;\n\n broadcastEvent(roomId, 'player_joined', { roomId: roomId, player: { id: joiningPlayerId, displayName: joiningPlayerDisplayName } });\n broadcastEvent(roomId, 'room_data_updated', { roomId: roomId, roomData: room, timestamp: Date.now() });\n\n console.log(`[Venus Mock Rooms] Player ${joiningPlayerId} joined room ${roomId}. Current state:`, room);\n return Promise.resolve(new MockVenusRoom(room)); // Return MockVenusRoom instance\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error joining room:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to join room' });\n }\n },\n\n updateRoomData(roomId, updates, merge = true) {\n try {\n console.log(`[Venus Mock Rooms] Updating room ${roomId} data:`, updates);\n \n const room = mockRooms.get(roomId);\n if (!room) {\n throw new Error('Room not found');\n }\n\n if (merge) {\n room.data = { ...room.data, ...updates };\n } else {\n room.data = updates;\n }\n room.updatedAt = new Date();\n room.version++;\n\n // Broadcast room data updated event\n broadcastEvent(roomId, 'room_data_updated', {\n roomId: roomId,\n roomData: room,\n timestamp: Date.now()\n });\n\n return Promise.resolve({\n success: true,\n });\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error updating room data:`, error);\n return Promise.reject(new Error(error.message || 'Failed to update room data'));\n }\n },\n\n getRoomData(roomId) {\n try {\n console.log(`[Venus Mock Rooms] Getting room ${roomId} data`);\n \n const room = mockRooms.get(roomId);\n if (!room) {\n throw new Error('Room not found');\n }\n\n return Promise.resolve({\n success: true,\n data: room.data || {},\n });\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error getting room data:`, error);\n return Promise.reject(new Error(error.message || 'Failed to get room data'));\n }\n },\n\n sendMessage(roomId, message) {\n try {\n const room = mockRooms.get(roomId);\n if (!room) {\n return Promise.reject({ success: false, error: 'Room not found' });\n }\n\n if (message.type === 'chat') {\n console.log(`[Venus Mock Rooms] Sending CHAT message to room ${roomId}:`, message);\n const messageId = generateMessageId();\n const messageData = {\n id: messageId,\n roomId: roomId,\n senderId: message.senderId || 'mock-user-chatter', // H5 app should provide senderId\n content: message.content || '',\n type: 'chat',\n metadata: message.metadata || {},\n timestamp: new Date(),\n };\n const messages = mockMessages.get(roomId) || [];\n messages.push(messageData);\n mockMessages.set(roomId, messages);\n broadcastEvent(roomId, 'message_received', { roomId: roomId, message: messageData });\n return Promise.resolve({ success: true, messageId: messageId });\n } else {\n // All non-chat messages are now treated as game moves/actions\n console.log(`[Venus Mock Rooms] Sending GAME ACTION/MOVE to room ${roomId} via moves subcollection:`, message);\n \n const playerId = message.playerId || message.metadata?.playerId || 'mock-player-action'; // H5 must provide this\n if (!playerId) {\n return Promise.reject({ success: false, error: 'playerId is required for game actions.'});\n }\n\n const move = {\n playerId: playerId,\n moveData: message.moveData || message.content || message.metadata || { type: message.type }, // Ensure type is captured\n clientValidationHash: message.clientValidationHash,\n timestamp: new Date(), // client-side timestamp for the move proposal\n status: 'pending_mock_processing',\n };\n const roomMoves = mockRoomMoves.get(roomId) || [];\n roomMoves.push(move);\n mockRoomMoves.set(roomId, roomMoves);\n\n // Simulate server processing this move\n this._processMockMove(roomId, move, room); // Use the new helper\n\n return Promise.resolve({ success: true, moveId: 'mock-move-' + Date.now() }); \n }\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error sending message/move:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to send message/move' });\n }\n },\n\n subscribeToRoom(roomId, options = {}) {\n try {\n console.log(`[Venus Mock Rooms] Subscribing to room ${roomId}:`, options);\n \n const room = mockRooms.get(roomId);\n if (!room) {\n throw new Error('Room not found');\n }\n\n // Store subscription for mock event broadcasting\n const instanceId = 'mock-instance-' + Date.now();\n if (!mockSubscriptions.has(instanceId)) {\n mockSubscriptions.set(instanceId, new Map());\n }\n \n const subscriptions = mockSubscriptions.get(instanceId);\n subscriptions.set(roomId, {\n onRoomDataUpdated: options.onRoomDataUpdated,\n onMessageReceived: options.onMessageReceived,\n onPlayerJoined: options.onPlayerJoined,\n onPlayerLeft: options.onPlayerLeft,\n onGameStarted: options.onGameStarted,\n onTurnChanged: options.onTurnChanged,\n });\n\n return Promise.resolve({\n success: true,\n unsubscribe: () => {\n subscriptions.delete(roomId);\n console.log(`[Venus Mock Rooms] Unsubscribed from room ${roomId}`);\n }\n });\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error subscribing to room:`, error);\n return Promise.reject(new Error(error.message || 'Failed to subscribe to room'));\n }\n },\n\n listPublicRooms(gameType, limit = 20) {\n try {\n console.log(`[Venus Mock Rooms] Listing public rooms:`, { gameType, limit });\n \n let rooms = Array.from(mockRooms.values()).filter(room => \n !room.isPrivate && \n room.status === 'active' &&\n (!gameType || room.gameType === gameType)\n );\n \n rooms = rooms.slice(0, limit);\n\n return Promise.resolve({\n success: true,\n rooms: rooms,\n });\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error listing public rooms:`, error);\n return Promise.reject(new Error(error.message || 'Failed to list public rooms'));\n }\n },\n\n searchRooms(searchQuery, gameType, limit = 20) {\n try {\n console.log(`[Venus Mock Rooms] Searching rooms:`, { searchQuery, gameType, limit });\n \n let rooms = Array.from(mockRooms.values()).filter(room => \n !room.isPrivate && \n room.status === 'active' &&\n (!gameType || room.gameType === gameType) &&\n (!searchQuery || \n room.name.toLowerCase().includes(searchQuery.toLowerCase()) ||\n room.description?.toLowerCase().includes(searchQuery.toLowerCase()))\n );\n \n rooms = rooms.slice(0, limit);\n\n return Promise.resolve({\n success: true,\n rooms: rooms,\n });\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error searching rooms:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to search rooms' });\n }\n },\n\n // Smart matchmaking - join existing room or create new one\n joinOrCreateRoom(options = {}) {\n try {\n console.log(`[Venus Mock Rooms] Smart matchmaking with options:`, options);\n \n const { matchCriteria = {}, createOptions = {} } = options;\n \n // Try to find matching room first\n let matchingRoom = null;\n for (const room of mockRooms.values()) {\n // Check if room matches criteria\n const matchesGameType = !matchCriteria.gameType || room.gameType === matchCriteria.gameType;\n const matchesPrivacy = !matchCriteria.hasOwnProperty('isPrivate') || room.isPrivate === matchCriteria.isPrivate;\n const hasSpace = !matchCriteria.hasSpace || room.currentPlayers.length < room.maxPlayers;\n const isActive = room.status === 'active';\n const isWaiting = room.customMetadata?.rules?.gameState?.phase === 'waiting';\n \n if (matchesGameType && matchesPrivacy && hasSpace && isActive && isWaiting) {\n matchingRoom = room;\n console.log(`[Venus Mock Rooms] Found matching room: ${room.id}`);\n break;\n }\n }\n \n if (matchingRoom) {\n // Join existing room\n console.log(`[Venus Mock Rooms] Joining existing room: ${matchingRoom.id}`);\n \n const joiningPlayerId = createOptions.userId || options.userId || 'mock-user-joiner';\n const joiningPlayerDisplayName = createOptions.userDisplayName || options.userDisplayName || `Player ${joiningPlayerId.slice(-4)}`;\n \n // Check if already in room\n if (matchingRoom.currentPlayers.includes(joiningPlayerId)) {\n return Promise.resolve({\n action: 'joined',\n room: new MockVenusRoom(matchingRoom),\n playersJoined: 0\n });\n }\n \n // Add player to room\n matchingRoom.currentPlayers.push(joiningPlayerId);\n matchingRoom.customMetadata.rules.gameState.playerStates[joiningPlayerId] = {\n displayName: joiningPlayerDisplayName,\n status: 'active',\n role: 'player',\n joinedAt: new Date(),\n };\n \n // Add to turn order if game is waiting\n if (matchingRoom.customMetadata.rules.gameState.phase === 'waiting' && \n matchingRoom.customMetadata.rules.gameState.turnOrder) {\n if (!matchingRoom.customMetadata.rules.gameState.turnOrder.includes(joiningPlayerId)) {\n matchingRoom.customMetadata.rules.gameState.turnOrder.push(joiningPlayerId);\n }\n }\n \n matchingRoom.updatedAt = new Date();\n matchingRoom.version++;\n \n // Auto-start game if room is full\n if (matchingRoom.currentPlayers.length >= matchingRoom.maxPlayers) {\n console.log(`[Venus Mock Rooms] Room ${matchingRoom.id} is full, auto-starting game`);\n const gameState = matchingRoom.customMetadata.rules.gameState;\n gameState.phase = 'playing';\n gameState.gameStartedAt = new Date();\n \n // Set up turn order and assign chess colors\n let turnOrder = [...matchingRoom.currentPlayers];\n if (matchingRoom.customMetadata.rules.randomizePlayerOrder) {\n for (let i = turnOrder.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [turnOrder[i], turnOrder[j]] = [turnOrder[j], turnOrder[i]];\n }\n }\n gameState.turnOrder = turnOrder;\n gameState.currentPlayer = turnOrder[0] || null;\n \n // Assign chess colors\n if (matchingRoom.gameType === 'chess' && turnOrder.length >= 2) {\n gameState.playerStates[turnOrder[0]].gameRole = 'white';\n gameState.playerStates[turnOrder[1]].gameRole = 'black';\n }\n \n broadcastEvent(matchingRoom.id, 'game_started', { \n roomId: matchingRoom.id, \n gameState: gameState, \n turnOrder: gameState.turnOrder, \n currentPlayer: gameState.currentPlayer \n });\n }\n \n broadcastEvent(matchingRoom.id, 'player_joined', { \n roomId: matchingRoom.id, \n player: { id: joiningPlayerId, displayName: joiningPlayerDisplayName } \n });\n broadcastEvent(matchingRoom.id, 'room_data_updated', { \n roomId: matchingRoom.id, \n roomData: matchingRoom, \n timestamp: Date.now() \n });\n \n return Promise.resolve({\n action: 'joined',\n room: new MockVenusRoom(matchingRoom),\n playersJoined: 1\n });\n \n } else {\n // Create new room\n console.log(`[Venus Mock Rooms] No matching room found, creating new room`);\n \n const roomCreationOptions = {\n ...createOptions,\n userId: createOptions.userId || options.userId || 'mock-user-creator',\n userDisplayName: createOptions.userDisplayName || options.userDisplayName || 'Creator',\n };\n \n const createResult = this.createRoom(roomCreationOptions);\n \n return createResult.then(room => ({\n action: 'created',\n room: room, // createRoom already returns MockVenusRoom instance\n playersJoined: 1\n }));\n }\n \n } catch (error) {\n console.error(`[Venus Mock Rooms] Error in joinOrCreateRoom:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to join or create room' });\n }\n },\n\n joinRoomByCode(roomCode, playerMetadata = {}) {\n try {\n console.log(`[Venus Mock Rooms] Joining room by code ${roomCode}`);\n \n // Find room by code\n let foundRoom = null;\n for (const [roomId, room] of mockRooms.entries()) {\n if (room.roomCode === roomCode && room.status === 'active') {\n foundRoom = room;\n break;\n }\n }\n \n if (!foundRoom) {\n return Promise.reject({ success: false, error: `Room not found with code: ${roomCode}` });\n }\n \n // Use existing joinRoom method\n return this.joinRoom(foundRoom.id, playerMetadata);\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error joining room by code:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to join room by code' });\n }\n },\n\n // Stage 2: Enhanced game features\n startGame(roomId, gameConfig = {}, requestingUserId = 'mock-admin-user') {\n try {\n console.log(`[Venus Mock Rooms] Starting game in room ${roomId} by ${requestingUserId}`);\n const room = mockRooms.get(roomId);\n if (!room) {\n return Promise.reject({ success: false, error: 'Room not found' });\n }\n\n // Basic validation (mocking server-side checks)\n if (!room.admins.includes(requestingUserId) && room.createdBy !== requestingUserId) {\n return Promise.reject({ success: false, error: 'Only admin or creator can start game' });\n }\n if (room.customMetadata.rules.gameState.phase === 'playing') {\n return Promise.reject({ success: false, error: 'Game already in progress' });\n }\n const minPlayers = room.customMetadata.rules.minPlayers || 1;\n if (room.currentPlayers.length < minPlayers) {\n return Promise.reject({ success: false, error: `Not enough players. Needs ${minPlayers}` });\n }\n\n // Update game state for start\n const gameState = room.customMetadata.rules.gameState;\n gameState.phase = 'playing';\n gameState.gameStartedAt = new Date();\n\n // Ensure turn order and current player\n let turnOrder = [...room.currentPlayers]; // Default to current players array\n if (room.customMetadata.rules.randomizePlayerOrder) {\n for (let i = turnOrder.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [turnOrder[i], turnOrder[j]] = [turnOrder[j], turnOrder[i]];\n }\n }\n gameState.turnOrder = turnOrder;\n gameState.currentPlayer = turnOrder[0] || null;\n\n // Ensure all players in turnOrder have displayNames in playerStates\n turnOrder.forEach(playerId => {\n if (!gameState.playerStates[playerId]) {\n gameState.playerStates[playerId] = { displayName: `Player ${playerId.slice(-4)}`, status: 'active', role: 'player' };\n } else {\n gameState.playerStates[playerId].status = 'active'; // Ensure active\n if (!gameState.playerStates[playerId].displayName) {\n gameState.playerStates[playerId].displayName = `Player ${playerId.slice(-4)}`;\n }\n }\n });\n \n room.updatedAt = new Date();\n room.version++;\n\n console.log(`[Venus Mock Rooms] Game started in room ${roomId}. New state:`, room);\n broadcastEvent(roomId, 'game_started', { roomId: roomId, gameState: gameState, turnOrder: gameState.turnOrder, currentPlayer: gameState.currentPlayer });\n broadcastEvent(roomId, 'room_data_updated', { roomId: roomId, roomData: room, timestamp: Date.now() });\n \n // Simulate server returning the updated room object\n return Promise.resolve({ success: true, ...room }); \n } catch (error) {\n console.error(`[Venus Mock Rooms] Error starting game:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to start game' });\n }\n },\n\n endGame(roomId, winner = null, reason = null, gameResults = {}) {\n try {\n console.log(`[Venus Mock Rooms] Player requesting to end game in room ${roomId}`);\n const room = mockRooms.get(roomId);\n if (!room) return Promise.reject({ success: false, error: 'Room not found' });\n\n const playerId = gameResults.endedBy || 'mock-player-ender'; // H5 should provide who is ending\n\n const move = {\n playerId: playerId,\n moveData: {\n type: 'end_game',\n winner,\n reason,\n gameResults,\n },\n timestamp: new Date(),\n status: 'pending_mock_processing',\n };\n const roomMoves = mockRoomMoves.get(roomId) || [];\n roomMoves.push(move);\n mockRoomMoves.set(roomId, roomMoves);\n\n // Simulate server processing this move\n this._processMockMove(roomId, move, room);\n \n return Promise.resolve({ success: true, moveId: 'mock-move-' + Date.now() });\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error ending game:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to end game' });\n }\n },\n\n // NEW: Propose move (client-proposed state architecture)\n proposeMove(roomId, proposalPayload, proposerId = 'mock-proposer') {\n try {\n console.log(`[Venus Mock Rooms] Player ${proposerId} proposing move in room ${roomId}:`, proposalPayload);\n const room = mockRooms.get(roomId);\n if (!room) return Promise.reject({ success: false, error: 'Room not found' });\n\n const proposedMoveId = `prop_move_${Date.now()}_${Math.random().toString(36).substr(2, 5)}`;\n \n // Create proposed move document (mock version)\n const proposedMove = {\n id: proposedMoveId,\n proposerProfileId: proposerId,\n timestamp: new Date(),\n gameSpecificState: proposalPayload.gameSpecificState,\n moveType: proposalPayload.moveType,\n clientContext: proposalPayload.clientContext,\n clientProposalId: proposalPayload.clientProposalId,\n serverGenericValidationStatus: 'pending',\n serverCustomValidationStatus: 'pending',\n clientConsensusStatus: 'pending',\n ...(proposalPayload.resignedBy && { resignedBy: proposalPayload.resignedBy }),\n ...(proposalPayload.winner && { winner: proposalPayload.winner }),\n };\n\n // Store in mock proposed moves\n if (!mockRoomMoves.has(roomId + '_proposed')) {\n mockRoomMoves.set(roomId + '_proposed', []);\n }\n mockRoomMoves.get(roomId + '_proposed').push(proposedMove);\n\n // Update room with optimistic state\n if (proposalPayload.gameSpecificState) {\n room.optimisticGameState = proposalPayload.gameSpecificState;\n room.lastProposedMoveId = proposedMoveId;\n room.lastProposedMoveBy = proposerId;\n room.lastProposedMoveAt = new Date();\n room.updatedAt = new Date();\n room.version++;\n }\n\n // Simulate server processing after short delay\n setTimeout(() => {\n this._processMockProposedMove(roomId, proposedMoveId, proposedMove, room);\n }, 100);\n\n // Broadcast optimistic update immediately\n broadcastEvent(roomId, 'room_data_updated', {\n roomId: roomId,\n roomData: room,\n timestamp: Date.now()\n });\n\n // Also broadcast optimistic game state update\n if (proposalPayload.gameSpecificState) {\n broadcastEvent(roomId, 'app:h5:optimisticGameStateUpdated', {\n roomId: roomId,\n optimisticGameState: proposalPayload.gameSpecificState\n });\n }\n\n return Promise.resolve({ \n success: true, \n proposedMoveId: proposedMoveId,\n optimisticGameState: proposalPayload.gameSpecificState\n });\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error proposing move:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to propose move' });\n }\n },\n\n // NEW internal helper to simulate server-side move processing for mock API\n _processMockMove(roomId, move, room) {\n console.log('[Venus Mock Rooms] Simulating server processing for move:', move);\n move.id = 'processed-mock-move-' + Date.now(); // Give it a mock processed ID\n setTimeout(() => {\n const currentRoomState = mockRooms.get(roomId);\n if (!currentRoomState) return;\n\n const { rules, gameState } = currentRoomState.customMetadata;\n const { playerId, moveData } = move;\n let isValidMove = true;\n let validationError = null;\n\n // Mock Generic Validation\n if (rules.turnBased && gameState.currentPlayer !== playerId) {\n isValidMove = false;\n validationError = 'Not current player\\'s turn.';\n console.warn(`[Venus Mock Rooms] Invalid move by ${playerId}: Not their turn. Current: ${gameState.currentPlayer}`);\n }\n \n // Further mock validation based on moveData.type if H5 provides it\n const moveType = moveData?.type;\n if (isValidMove && moveType && rules.allowedMessageTypes?.[gameState.phase]?.[moveType]) {\n const ruleForMoveType = rules.allowedMessageTypes[gameState.phase][moveType];\n if (ruleForMoveType.requiredFields) {\n for (const field of ruleForMoveType.requiredFields) {\n if (!(field in moveData)) {\n isValidMove = false;\n validationError = `Missing required field: ${field} for move type ${moveType}.`;\n console.warn(`[Venus Mock Rooms] Invalid move by ${playerId}: ${validationError}`);\n break;\n }\n }\n }\n } else if (isValidMove && moveType && !rules.allowedMessageTypes?.[gameState.phase]?.[moveType]) {\n // If moveType is specified but no rule allows it (could be a warning or error in real server)\n console.warn(`[Venus Mock Rooms] Move type \"${moveType}\" not defined in allowedMessageTypes for phase \"${gameState.phase}\". Processing by default.`);\n }\n\n if (isValidMove) {\n console.log('[Venus Mock Rooms] Move considered valid by mock server. Updating game state.');\n move.status = 'mock_valid';\n // Apply mock game state updates based on the move\n gameState.lastMoveBy = playerId;\n gameState.lastMoveTimestamp = new Date();\n\n if (moveData.type === 'end_game') {\n gameState.phase = 'ended';\n gameState.endedAt = new Date();\n currentRoomState.status = 'archived'; // Mock archiving room on game end\n console.log('[Venus Mock Rooms] Mock: Game ended.');\n } else if (moveData.type === 'force_update_state') {\n Object.assign(gameState, moveData.payload); // Directly apply payload to gameState\n console.log('[Venus Mock Rooms] Mock: Game state forcibly updated with:', moveData.payload);\n }\n\n // Common logic for advancing turn if applicable (and not an end_game or specific state-setting move)\n const nonTurnAdvancingMoves = ['end_game', 'force_update_state'];\n if (rules.turnBased && gameState.turnOrder && gameState.turnOrder.length > 0 && !nonTurnAdvancingMoves.includes(moveData.type)) {\n const currentPlayerIndex = gameState.turnOrder.indexOf(gameState.currentPlayer || '');\n if (currentPlayerIndex !== -1) {\n const nextPlayerIndex = (currentPlayerIndex + 1) % gameState.turnOrder.length;\n gameState.currentPlayer = gameState.turnOrder[nextPlayerIndex];\n gameState.turnCount = (gameState.turnCount || 0) + 1;\n console.log(`[Venus Mock Rooms] Mock: Turn advanced to ${gameState.currentPlayer}`);\n broadcastEvent(roomId, 'turn_changed', {\n roomId: roomId,\n currentPlayer: gameState.currentPlayer,\n previousPlayer: playerId, // The one who just moved\n turnCount: gameState.turnCount\n });\n }\n }\n currentRoomState.updatedAt = new Date();\n currentRoomState.version++;\n broadcastEvent(roomId, 'room_data_updated', { roomId: roomId, roomData: currentRoomState, timestamp: Date.now() });\n } else {\n console.warn('[Venus Mock Rooms] Move considered invalid by mock server. No game state change.', { validationError });\n move.status = 'mock_invalid';\n move.error = validationError;\n // Optionally, send a system message or specific event for invalid move\n }\n console.log('[Venus Mock Rooms] Finished mock processing for move:', move);\n }, 100); // Simulate processing delay\n },\n\n // NEW: Process proposed move for mock API\n _processMockProposedMove(roomId, proposedMoveId, proposedMove, room) {\n console.log('[Venus Mock Rooms] Simulating server processing for proposed move:', proposedMoveId);\n \n const { rules, gameState } = room.customMetadata;\n const { proposerProfileId, gameSpecificState, moveType } = proposedMove;\n \n // Mock generic validation\n let isGenericValid = true;\n let genericValidationReason = '';\n \n // 🛡️ SECURITY: Special handling for resignation moves (matching real server)\n if (moveType === 'resignation') {\n // Check for resignedBy in multiple possible locations (matching server fix)\n const resignedBy = proposedMove.resignedBy || gameSpecificState?.resignedBy;\n \n if (!resignedBy) {\n isGenericValid = false;\n genericValidationReason = 'Security violation: Resignation move must specify who is resigning (resignedBy field required).';\n } else if (resignedBy !== proposerProfileId) {\n isGenericValid = false;\n genericValidationReason = `Security violation: Player ${proposerProfileId} cannot resign on behalf of player ${resignedBy}. Players can only resign themselves.`;\n } else if (!gameState.playerStates || !gameState.playerStates[proposerProfileId]) {\n isGenericValid = false;\n genericValidationReason = `Security violation: Player ${proposerProfileId} is not in this game and cannot resign.`;\n } else {\n console.log(`[Venus Mock Rooms] ✅ Resignation move validated: ${proposerProfileId} is resigning themselves`);\n }\n } else {\n // Normal turn validation for non-resignation moves\n if (rules.turnBased && gameState.currentPlayer !== proposerProfileId) {\n isGenericValid = false;\n genericValidationReason = `Not player's turn. Current: ${gameState.currentPlayer}`;\n }\n }\n \n // Field requirements validation\n if (isGenericValid && moveType && rules.allowedMessageTypes?.[gameState.phase]?.[moveType]) {\n const ruleForMoveType = rules.allowedMessageTypes[gameState.phase][moveType];\n if (ruleForMoveType.requiredFields) {\n for (const field of ruleForMoveType.requiredFields) {\n // For resignation, check both top-level and gameSpecificState\n const hasField = moveType === 'resignation' ? \n (proposedMove[field] !== undefined || gameSpecificState[field] !== undefined) :\n (gameSpecificState[field] !== undefined);\n \n if (!hasField) {\n isGenericValid = false;\n genericValidationReason = `Missing required field: ${field}`;\n break;\n }\n }\n }\n }\n \n // Update proposed move status\n proposedMove.serverGenericValidationStatus = isGenericValid ? 'valid' : 'invalid';\n proposedMove.serverGenericValidationReason = genericValidationReason;\n proposedMove.serverCustomValidationStatus = 'not_applicable'; // Mock: no custom validation\n proposedMove.clientConsensusStatus = 'valid'; // Mock: assume consensus\n \n if (isGenericValid) {\n // Apply game state updates from gameSpecificState\n Object.assign(gameState, gameSpecificState);\n \n // Check if game ended (generic game-agnostic detection)\n if (gameSpecificState.isGameOver === true) {\n gameState.phase = 'ended';\n gameState.winner = gameSpecificState.winner || null;\n gameState.endReason = gameSpecificState.gameStatus || 'completed';\n gameState.endedAt = new Date();\n gameState.currentPlayer = null; // Clear current player since game is over\n console.log(`[Venus Mock Rooms] 🏁 Game ended in room ${roomId}: ${gameState.endReason}, winner: ${gameState.winner || 'draw'}`);\n } else {\n // Advance turn if applicable and game is not over\n if (rules.turnBased && gameState.turnOrder && gameState.turnOrder.length > 0) {\n const currentPlayerIndex = gameState.turnOrder.indexOf(gameState.currentPlayer || '');\n if (currentPlayerIndex !== -1) {\n const nextPlayerIndex = (currentPlayerIndex + 1) % gameState.turnOrder.length;\n gameState.currentPlayer = gameState.turnOrder[nextPlayerIndex];\n gameState.turnCount = (gameState.turnCount || 0) + 1;\n }\n }\n }\n \n gameState.lastMoveBy = proposerProfileId;\n gameState.lastMoveTimestamp = new Date();\n room.updatedAt = new Date();\n room.version++;\n \n console.log(`[Venus Mock Rooms] Proposed move ${proposedMoveId} validated and applied`);\n } else {\n console.log(`[Venus Mock Rooms] Proposed move ${proposedMoveId} validation failed: ${genericValidationReason}`);\n }\n \n // Broadcast validation update\n broadcastEvent(roomId, 'app:h5:proposedMoveValidationUpdated', {\n roomId: roomId,\n proposedMoveId: proposedMoveId,\n proposedMoveData: proposedMove\n });\n \n // If valid, broadcast final room update\n if (isGenericValid) {\n broadcastEvent(roomId, 'room_data_updated', {\n roomId: roomId,\n roomData: room,\n timestamp: Date.now()\n });\n }\n },\n\n getUserRooms(appId, includeArchived = false) {\n try {\n console.log(`[Venus Mock Rooms] Getting user rooms:`, { appId, includeArchived });\n \n const userId = 'mock-user'; // Could be enhanced to support multiple users\n \n let rooms = Array.from(mockRooms.values()).filter(room => \n room.currentPlayers.includes(userId) &&\n (!appId || room.appId === appId) &&\n (includeArchived || room.status === 'active')\n );\n\n // Sort by most recent activity\n rooms.sort((a, b) => new Date(b.updatedAt) - new Date(a.updatedAt));\n\n return Promise.resolve({\n success: true,\n rooms: rooms,\n });\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error getting user rooms:`, error);\n return Promise.reject(new Error(error.message || 'Failed to get user rooms'));\n }\n },\n\n getGameState(roomId) {\n try {\n console.log(`[Venus Mock Rooms] Getting game state for room ${roomId}`);\n \n const room = mockRooms.get(roomId);\n if (!room) {\n return Promise.reject({ success: false, error: 'Room not found'});\n }\n\n const gameState = room.customMetadata?.rules?.gameState || {};\n\n return Promise.resolve({\n success: true,\n data: gameState, // Return the authoritative game state from the mock room\n });\n } catch (error) {\n console.error(`[Venus Mock Rooms] Error getting game state:`, error);\n return Promise.reject({ success: false, error: error.message || 'Failed to get game state' });\n }\n },\n};\n\n// Initialize rooms functionality on a VenusAPI instance\nexport function initializeRooms(venusApiInstance, mockData = null) {\n // Initializing room system mock\n\n // Initialize with default mock data if provided\n if (mockData && Array.isArray(mockData.rooms)) {\n mockData.rooms.forEach(room => {\n mockRooms.set(room.id, room);\n mockMessages.set(room.id, []);\n mockPlayers.set(room.id, room.currentPlayers.map(playerId => ({\n id: playerId,\n roomId: room.id,\n joinedAt: new Date(),\n lastActive: new Date(),\n status: 'active',\n customData: {},\n role: playerId === room.createdBy ? 'owner' : 'member',\n })));\n });\n // Initialized with default rooms\n }\n\n // Create proxied objects that will delegate to real API when available\n venusApiInstance.rooms = createProxiedObject.call(venusApiInstance, 'rooms', roomsMock);\n\n // Expose room methods directly on venus for compatibility with venus-rooms.ts\n venusApiInstance.getUserRooms = createProxiedMethod('getUserRooms', roomsMock.getUserRooms);\n venusApiInstance.createRoom = createProxiedMethod('createRoom', roomsMock.createRoom);\n venusApiInstance.joinRoom = createProxiedMethod('joinRoom', roomsMock.joinRoom);\n venusApiInstance.joinOrCreateRoom = createProxiedMethod('joinOrCreateRoom', roomsMock.joinOrCreateRoom);\n venusApiInstance.joinRoomByCode = createProxiedMethod('joinRoomByCode', roomsMock.joinRoomByCode);\n venusApiInstance.listPublicRooms = createProxiedMethod('listPublicRooms', roomsMock.listPublicRooms);\n venusApiInstance.searchRooms = createProxiedMethod('searchRooms', roomsMock.searchRooms);\n venusApiInstance.subscribeToRoom = createProxiedMethod('subscribeToRoom', roomsMock.subscribeToRoom);\n\n // Add feature detection\n venusApiInstance.isRoomSystemEnabled = function() {\n return true; // Always enabled in mock for development\n };\n\n // Room system mock initialized successfully\n} ","/**\n * Venus Asset Loader - Unified asset loading for all H5 apps\n * Simplifies complex asset loading with automatic WebView handling, streaming support, and caching\n */\n\nclass VenusAssetLoader {\n constructor() {\n this.cache = new Map();\n this.blobUrls = new Map();\n // Will be set during initialization when VenusAPI is available\n this.isWebView = false;\n this.venusAPI = null;\n }\n\n // Set the VenusAPI reference during initialization\n setVenusAPI(api) {\n this.venusAPI = api;\n // Use VenusAPI's platform detection\n this.isWebView = !api.isWeb || !api.isWeb();\n }\n\n /**\n * Load any asset with automatic optimization\n * @param {string} url - Asset URL\n * @param {Object} options - Loading options\n * @returns {Promise<string>} - URL to use (original, blob, or object URL)\n */\n async loadAsset(url, options = {}) {\n const {\n type = 'auto', // 'image', 'audio', 'video', 'text', 'json', 'auto'\n cache = true, // Use cache\n timeout = 30000,\n isOptional = false // New option to suppress error logging for optional assets\n } = options;\n\n // Resolve the URL to ensure it has proper CDN prefix if needed\n // Use the public resolveAssetUrl if available (which adds CDN prefix)\n const resolvedUrl = (this.venusAPI && this.venusAPI.resolveAssetUrl) \n ? this.venusAPI.resolveAssetUrl(url)\n : this._resolveAssetUrl(url);\n\n // Check cache first\n if (cache && this.cache.has(resolvedUrl)) {\n return this.cache.get(resolvedUrl);\n }\n\n // Auto-detect type if needed\n const assetType = type === 'auto' ? this._detectType(resolvedUrl) : type;\n\n try {\n let resultUrl = resolvedUrl;\n\n // Text/JSON always fetched directly\n if (assetType === 'text' || assetType === 'json') {\n const content = await this._fetchText(resolvedUrl, timeout);\n this.cache.set(resolvedUrl, content);\n return content;\n }\n\n // Skip blob loading in mock mode (development)\n const isMockMode = this.venusAPI && this.venusAPI.isMock && this.venusAPI.isMock();\n \n // For media assets in WebView (but not mock mode), decide between streaming and blob\n if (this.isWebView && !isMockMode && ['image', 'audio', 'video'].includes(assetType)) {\n // Always use blob loading for videos in WebView to avoid streaming issues\n if (assetType === 'video') {\n resultUrl = await this._loadAsBlob(resolvedUrl, assetType);\n // Skip verification for blob videos - they're already verified during blob creation\n if (cache) {\n this.cache.set(resolvedUrl, resultUrl);\n }\n return resultUrl;\n } else if (assetType === 'audio') {\n // Audio also uses blob loading in WebView\n resultUrl = await this._loadAsBlob(resolvedUrl, assetType);\n } else {\n // Images use blob loading in WebView\n resultUrl = await this._loadAsBlob(resolvedUrl, assetType);\n }\n }\n\n // Verify the asset can be loaded (skip for WebView videos handled above)\n if (!(this.isWebView && !isMockMode && assetType === 'video')) {\n await this._verifyAsset(resultUrl, assetType);\n }\n\n if (cache) {\n this.cache.set(resolvedUrl, resultUrl);\n }\n\n return resultUrl;\n } catch (error) {\n // Only log errors for required assets\n if (!isOptional) {\n console.error(`[VenusAssetLoader] Failed to load ${resolvedUrl}:`, error);\n }\n throw error;\n }\n }\n\n async _fetchText(url, timeout) {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n try {\n // Use VenusAPI.fetchFromCdn if available\n const response = typeof VenusAPI !== 'undefined' && VenusAPI.fetchFromCdn\n ? await VenusAPI.fetchFromCdn(url, { signal: controller.signal })\n : await fetch(url, { signal: controller.signal });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n\n return await response.text();\n } catch (error) {\n clearTimeout(timeoutId);\n throw error;\n }\n }\n\n async _loadAsBlob(url, type) {\n // Check if we already have a blob URL for this asset\n if (this.blobUrls.has(url)) {\n return this.blobUrls.get(url);\n }\n\n const mimeType = {\n image: 'image/*',\n audio: 'audio/*',\n video: 'video/*'\n }[type] || '*/*';\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), 30000);\n\n try {\n // Always use native fetch for blob loading since VenusAPI doesn't support blob()\n const response = await fetch(url, {\n mode: 'cors',\n credentials: 'omit',\n headers: { Accept: mimeType },\n signal: controller.signal\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n\n const blob = await response.blob();\n const blobUrl = URL.createObjectURL(blob);\n \n // Track blob URL for cleanup\n this.blobUrls.set(url, blobUrl);\n \n return blobUrl;\n } catch (error) {\n clearTimeout(timeoutId);\n throw error;\n }\n }\n\n async _checkStreamingSupport(url) {\n try {\n // Use VenusAPI.fetchFromCdn if available\n const response = typeof VenusAPI !== 'undefined' && VenusAPI.fetchFromCdn\n ? await VenusAPI.fetchFromCdn(url, { method: 'HEAD' })\n : await fetch(url, { method: 'HEAD' });\n\n const acceptRanges = response.headers.get('Accept-Ranges') === 'bytes';\n const contentLength = response.headers.get('Content-Length');\n \n return acceptRanges && !!contentLength;\n } catch {\n return false;\n }\n }\n\n async _verifyAsset(url, type) {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject(new Error(`Verification timeout for ${type} asset`));\n }, 10000);\n\n if (type === 'image') {\n const img = new Image();\n console.log(`🖼️ [Asset Verification] Verifying image: ${url}`);\n img.onload = () => {\n console.log(`✅ [Asset Verification] Image verified successfully: ${url}`);\n clearTimeout(timeout);\n resolve();\n };\n img.onerror = (error) => {\n console.log(`❌ [Asset Verification] Image verification failed: ${url}`, error);\n clearTimeout(timeout);\n reject(new Error('Failed to load image'));\n };\n img.src = url;\n } else if (type === 'audio') {\n const audio = new Audio();\n audio.oncanplaythrough = () => {\n clearTimeout(timeout);\n resolve();\n };\n audio.onerror = () => {\n clearTimeout(timeout);\n reject(new Error('Failed to load audio'));\n };\n audio.src = url;\n audio.load();\n } else if (type === 'video') {\n const video = document.createElement('video');\n video.onloadedmetadata = () => {\n clearTimeout(timeout);\n video.src = ''; // Clean up\n resolve();\n };\n video.onerror = () => {\n clearTimeout(timeout);\n reject(new Error('Failed to load video'));\n };\n video.src = url;\n } else {\n clearTimeout(timeout);\n resolve(); // No verification needed for other types\n }\n });\n }\n\n _detectType(url) {\n const ext = url.split('.').pop()?.toLowerCase();\n if (['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg'].includes(ext)) return 'image';\n if (['mp3', 'wav', 'ogg', 'm4a', 'aac'].includes(ext)) return 'audio';\n if (['mp4', 'webm', 'mov', 'm4v'].includes(ext)) return 'video';\n if (['json'].includes(ext)) return 'json';\n return 'text';\n }\n\n _resolveAssetUrl(url) {\n // If already a full URL, return as-is\n if (url.startsWith('http://') || url.startsWith('https://')) {\n return url;\n }\n\n // Check if forceRemoteCdn is enabled\n const forceRemoteCdn = this.venusAPI && this.venusAPI._mock && this.venusAPI._mock.forceRemoteCdn;\n \n if (forceRemoteCdn) {\n // Force remote CDN usage - construct full CDN URL\n const CDN_BASE_URL = 'https://venus-static-01293ak.web.app/';\n const cleanUrl = url.startsWith('/') ? url.slice(1) : url;\n const fullUrl = CDN_BASE_URL + cleanUrl;\n console.log(`🌐 [Asset Loader] Force remote CDN: ${url} -> ${fullUrl}`);\n return fullUrl;\n }\n\n // In mock/development mode with relative paths, ensure they work correctly\n if (this.venusAPI && this.venusAPI.isMock && this.venusAPI.isMock()) {\n // In mock mode, paths starting with / are relative to the server root\n return url;\n }\n\n // In production, paths might need CDN prefix (handled by fetchFromCdn)\n return url;\n }\n\n /**\n * Preload multiple assets in parallel\n * @param {(string|{url: string, isOptional?: boolean})[]} urls - Array of URLs or URL objects with optional metadata\n * @param {Object} options - Loading options\n */\n async preloadAssets(urls, options = {}) {\n const { onProgress } = options;\n let loaded = 0;\n const total = urls.length;\n\n // Normalize input to always work with objects internally\n const normalizedUrls = urls.map(item => {\n if (typeof item === 'string') {\n return { url: item, isOptional: false };\n }\n return { \n url: item.url, \n isOptional: item.isOptional || false \n };\n });\n\n const results = await Promise.allSettled(\n normalizedUrls.map(async (item) => {\n try {\n // Pass isOptional flag to loadAsset\n const result = await this.loadAsset(item.url, { ...options, isOptional: item.isOptional });\n loaded++;\n if (onProgress) {\n onProgress(loaded / total, { loaded, total, current: item.url });\n }\n return { url: item.url, result, success: true, isOptional: item.isOptional };\n } catch (error) {\n loaded++;\n \n // loadAsset now handles logging based on isOptional flag\n if (onProgress) {\n onProgress(loaded / total, { loaded, total, current: item.url, error });\n }\n return { url: item.url, error, success: false, isOptional: item.isOptional };\n }\n })\n );\n\n // Only count/warn about required assets that failed\n const failedRequired = results.filter(r => \n (r.status === 'rejected' || !r.value?.success) && !r.value?.isOptional\n );\n \n if (failedRequired.length > 0) {\n console.warn(`[VenusAssetLoader] ${failedRequired.length} required assets failed to load`);\n // Log the URLs of failed required assets for debugging\n failedRequired.forEach(r => {\n console.warn(`[VenusAssetLoader] Failed required asset: ${r.value?.url}`);\n });\n }\n\n // Log optional failures at info level for debugging\n const failedOptional = results.filter(r => \n (r.status === 'rejected' || !r.value?.success) && r.value?.isOptional\n );\n \n if (failedOptional.length > 0) {\n console.info(`[VenusAssetLoader] ${failedOptional.length} optional assets were not found (this is OK)`);\n }\n\n return results.map(r => r.value);\n }\n\n /**\n * Clean up blob URLs to prevent memory leaks\n */\n cleanup() {\n for (const blobUrl of this.blobUrls.values()) {\n URL.revokeObjectURL(blobUrl);\n }\n this.blobUrls.clear();\n this.cache.clear();\n }\n\n /**\n * Get a cached asset URL if available\n */\n getCached(url) {\n // Use the public resolveAssetUrl if available (which adds CDN prefix)\n const resolvedUrl = (this.venusAPI && this.venusAPI.resolveAssetUrl) \n ? this.venusAPI.resolveAssetUrl(url)\n : this._resolveAssetUrl(url);\n return this.cache.get(resolvedUrl);\n }\n}\n\n// Export as part of VenusAPI\nif (typeof VenusAPI !== 'undefined') {\n VenusAPI.assetLoader = new VenusAssetLoader();\n \n // Convenience methods\n VenusAPI.loadAsset = (url, options) => VenusAPI.assetLoader.loadAsset(url, options);\n VenusAPI.preloadAssets = (urls, options) => VenusAPI.assetLoader.preloadAssets(urls, options);\n VenusAPI.cleanupAssets = () => VenusAPI.assetLoader.cleanup();\n}\n\n// Export initialization function for Venus API\nexport function initializeAssetLoader(api, createProxiedMethod) {\n // Create the asset loader instance\n const assetLoader = new VenusAssetLoader();\n \n // Set the VenusAPI reference for platform detection\n assetLoader.setVenusAPI(api);\n \n // Add the instance to the API (not proxied)\n api._assetLoader = assetLoader;\n \n // Also expose as public assetLoader property as documented in the API\n api.assetLoader = assetLoader;\n \n // Add convenience methods using createProxiedMethod if available\n if (createProxiedMethod) {\n api.loadAsset = createProxiedMethod('loadAsset', function(url, options) {\n return assetLoader.loadAsset(url, options);\n });\n \n api.preloadAssets = createProxiedMethod('preloadAssets', function(urls, options) {\n return assetLoader.preloadAssets(urls, options);\n });\n \n api.cleanupAssets = createProxiedMethod('cleanupAssets', function() {\n return assetLoader.cleanup();\n });\n } else {\n // Fallback for environments without createProxiedMethod\n api.loadAsset = function(url, options) {\n return assetLoader.loadAsset(url, options);\n };\n \n api.preloadAssets = function(urls, options) {\n return assetLoader.preloadAssets(urls, options);\n };\n \n api.cleanupAssets = function() {\n return assetLoader.cleanup();\n };\n }\n \n // Also expose on global VenusAPI for backward compatibility\n if (typeof window !== 'undefined' && window.VenusAPI) {\n window.VenusAPI.loadAsset = api.loadAsset;\n window.VenusAPI.preloadAssets = api.preloadAssets;\n window.VenusAPI.cleanupAssets = api.cleanupAssets;\n }\n} ","/* esm.sh - break_eternity.js@2.1.2 */\nfunction se(r,n){if(!(r instanceof n))throw new TypeError(\"Cannot call a class as a function\")}function le(r,n){for(var e=0;e<n.length;e++){var t=n[e];t.enumerable=t.enumerable||!1,t.configurable=!0,\"value\"in t&&(t.writable=!0),Object.defineProperty(r,t.key,t)}}function ue(r,n,e){return n&&le(r.prototype,n),e&&le(r,e),Object.defineProperty(r,\"prototype\",{writable:!1}),r}var me=function(){function r(n){se(this,r),this.map=new Map,this.first=void 0,this.last=void 0,this.maxSize=n}return ue(r,[{key:\"size\",get:function(){return this.map.size}},{key:\"get\",value:function(e){var t=this.map.get(e);if(t!==void 0)return t!==this.first&&(t===this.last?(this.last=t.prev,this.last.next=void 0):(t.prev.next=t.next,t.next.prev=t.prev),t.next=this.first,this.first.prev=t,this.first=t),t.value}},{key:\"set\",value:function(e,t){if(!(this.maxSize<1)){if(this.map.has(e))throw new Error(\"Cannot update existing keys in the cache\");var i=new ge(e,t);for(this.first===void 0?(this.first=i,this.last=i):(i.next=this.first,this.first.prev=i,this.first=i),this.map.set(e,i);this.map.size>this.maxSize;){var a=this.last;this.map.delete(a.key),this.last=a.prev,this.last.next=void 0}}}}]),r}(),ge=ue(function r(n,e){se(this,r),this.next=void 0,this.prev=void 0,this.key=n,this.value=e}),ne=17,T=9e15,ce=Math.log10(9e15),$=1/9e15,ve=308,ye=-324,fe=5,de=1023,Ne=function(){for(var r=[],n=ye+1;n<=ve;n++)r.push(+(\"1e\"+n));var e=323;return function(t){return r[t+e]}}(),_=[2,Math.E,3,4,5,6,7,8,9,10],be=[[1,1.0891180521811203,1.1789767925673957,1.2701455431742086,1.3632090180450092,1.4587818160364217,1.5575237916251419,1.6601571006859253,1.767485818836978,1.8804192098842727,2],[1,1.1121114330934079,1.231038924931609,1.3583836963111375,1.4960519303993531,1.6463542337511945,1.8121385357018724,1.996971324618307,2.2053895545527546,2.4432574483385254,Math.E],[1,1.1187738849693603,1.2464963939368214,1.38527004705667,1.5376664685821402,1.7068895236551784,1.897001227148399,2.1132403089001035,2.362480153784171,2.6539010333870774,3],[1,1.1367350847096405,1.2889510672956703,1.4606478703324786,1.6570295196661111,1.8850062585672889,2.1539465047453485,2.476829779693097,2.872061932789197,3.3664204535587183,4],[1,1.1494592900767588,1.319708228183931,1.5166291280087583,1.748171114438024,2.0253263297298045,2.3636668498288547,2.7858359149579424,3.3257226212448145,4.035730287722532,5],[1,1.159225940787673,1.343712473580932,1.5611293155111927,1.8221199554561318,2.14183924486326,2.542468319282638,3.0574682501653316,3.7390572020926873,4.6719550537360774,6],[1,1.1670905356972596,1.3632807444991446,1.5979222279405536,1.8842640123816674,2.2416069644878687,2.69893426559423,3.3012632110403577,4.121250340630164,5.281493033448316,7],[1,1.1736630594087796,1.379783782386201,1.6292821855668218,1.9378971836180754,2.3289975651071977,2.8384347394720835,3.5232708454565906,4.478242031114584,5.868592169644505,8],[1,1.1793017514670474,1.394054150657457,1.65664127441059,1.985170999970283,2.4069682290577457,2.9647310119960752,3.7278665320924946,4.814462547283592,6.436522247411611,9],[1,1.1840100246247336,1.4061375836156955,1.6802272208863964,2.026757028388619,2.4770056063449646,3.080525271755482,3.9191964192627284,5.135152840833187,6.989961179534715,10]],we=[[-1,-.9194161097107025,-.8335625019330468,-.7425599821143978,-.6466611521029437,-.5462617907227869,-.4419033816638769,-.3342645487554494,-.224140440909962,-.11241087890006762,0],[-1,-.90603157029014,-.80786507256596,-.7064666939634,-.60294836853664,-.49849837513117,-.39430303318768,-.29147201034755,-.19097820800866,-.09361896280296,0],[-1,-.9021579584316141,-.8005762598234203,-.6964780623319391,-.5911906810998454,-.486050182576545,-.3823089430815083,-.28106046722897615,-.1831906535795894,-.08935809204418144,0],[-1,-.8917227442365535,-.781258746326964,-.6705130326902455,-.5612813129406509,-.4551067709033134,-.35319256652135966,-.2563741554088552,-.1651412821106526,-.0796919581982668,0],[-1,-.8843387974366064,-.7678744063886243,-.6529563724510552,-.5415870994657841,-.4352842206588936,-.33504449124791424,-.24138853420685147,-.15445285440944467,-.07409659641336663,0],[-1,-.8786709358426346,-.7577735191184886,-.6399546189952064,-.527284921869926,-.4211627631006314,-.3223479611761232,-.23107655627789858,-.1472057700818259,-.07035171210706326,0],[-1,-.8740862815291583,-.7497032990976209,-.6297119746181752,-.5161838335958787,-.41036238255751956,-.31277212146489963,-.2233976621705518,-.1418697367979619,-.06762117662323441,0],[-1,-.8702632331800649,-.7430366914122081,-.6213373075161548,-.5072025698095242,-.40171437727184167,-.30517930701410456,-.21736343968190863,-.137710238299109,-.06550774483471955,0],[-1,-.8670016295947213,-.7373984232432306,-.6143173985094293,-.49973884395492807,-.394584953527678,-.2989649949848695,-.21245647317021688,-.13434688362382652,-.0638072667348083,0],[-1,-.8641642839543857,-.732534623168535,-.6083127477059322,-.4934049257184696,-.3885773075899922,-.29376029055315767,-.2083678561173622,-.13155653399373268,-.062401588652553186,0]],s=function(n){return k.fromValue_noAlloc(n)},m=function(n,e,t){return k.fromComponents(n,e,t)},c=function(n,e,t){return k.fromComponents_noNormalize(n,e,t)},K=function(n,e){var t=e+1,i=Math.ceil(Math.log10(Math.abs(n))),a=Math.round(n*Math.pow(10,t-i))*Math.pow(10,i-t);return parseFloat(a.toFixed(Math.max(t-i,0)))},ie=function(n){return Math.sign(n)*Math.log10(Math.abs(n))},ke=function(n){if(!isFinite(n))return n;if(n<-50)return n===Math.trunc(n)?Number.NEGATIVE_INFINITY:0;for(var e=1;n<10;)e=e*n,++n;n-=1;var t=.9189385332046727;t=t+(n+.5)*Math.log(n),t=t-n;var i=n*n,a=n;return t=t+1/(12*a),a=a*i,t=t-1/(360*a),a=a*i,t=t+1/(1260*a),a=a*i,t=t-1/(1680*a),a=a*i,t=t+1/(1188*a),a=a*i,t=t-691/(360360*a),a=a*i,t=t+7/(1092*a),a=a*i,t=t-3617/(122400*a),Math.exp(t)/e},Me=.36787944117144233,oe=.5671432904097838,ae=function(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e-10,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,i,a;if(!Number.isFinite(n))return n;if(t){if(n===0)return n;if(n===1)return oe;n<10?i=0:i=Math.log(n)-Math.log(Math.log(n))}else{if(n===0)return-1/0;n<=-.1?i=-2:i=Math.log(-n)-Math.log(-Math.log(-n))}for(var l=0;l<100;++l){if(a=(n*Math.exp(-i)+i*i)/(i+1),Math.abs(a-i)<e*Math.abs(a))return a;i=a}throw Error(\"Iteration failed to converge: \".concat(n.toString()))};function he(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e-10,e=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,t,i,a,l;if(!Number.isFinite(r.mag))return new k(r);if(e){if(r.eq(k.dZero))return c(0,0,0);if(r.eq(k.dOne))return k.fromNumber(oe);t=k.ln(r)}else{if(r.eq(k.dZero))return new k(k.dNegInf);t=k.ln(r.neg())}for(var f=0;f<100;++f){if(i=t.neg().exp(),a=t.sub(r.mul(i)),l=t.sub(a.div(t.add(1).sub(t.add(2).mul(a).div(k.mul(2,t).add(2))))),k.abs(l.sub(t)).lt(k.abs(l).mul(n)))return l;t=l}throw Error(\"Iteration failed to converge: \".concat(r.toString()))}var k=function(){function r(n){se(this,r),this.sign=0,this.mag=0,this.layer=0,n instanceof r?this.fromDecimal(n):typeof n==\"number\"?this.fromNumber(n):typeof n==\"string\"&&this.fromString(n)}return ue(r,[{key:\"m\",get:function(){if(this.sign===0)return 0;if(this.layer===0){var e=Math.floor(Math.log10(this.mag)),t;return this.mag===5e-324?t=5:t=this.mag/Ne(e),this.sign*t}else if(this.layer===1){var i=this.mag-Math.floor(this.mag);return this.sign*Math.pow(10,i)}else return this.sign},set:function(e){this.layer<=2?this.fromMantissaExponent(e,this.e):(this.sign=Math.sign(e),this.sign===0&&(this.layer=0,this.exponent=0))}},{key:\"e\",get:function(){return this.sign===0?0:this.layer===0?Math.floor(Math.log10(this.mag)):this.layer===1?Math.floor(this.mag):this.layer===2?Math.floor(Math.sign(this.mag)*Math.pow(10,Math.abs(this.mag))):this.mag*Number.POSITIVE_INFINITY},set:function(e){this.fromMantissaExponent(this.m,e)}},{key:\"s\",get:function(){return this.sign},set:function(e){e===0?(this.sign=0,this.layer=0,this.mag=0):this.sign=e}},{key:\"mantissa\",get:function(){return this.m},set:function(e){this.m=e}},{key:\"exponent\",get:function(){return this.e},set:function(e){this.e=e}},{key:\"normalize\",value:function(){if(this.sign===0||this.mag===0&&this.layer===0||this.mag===Number.NEGATIVE_INFINITY&&this.layer>0&&Number.isFinite(this.layer))return this.sign=0,this.mag=0,this.layer=0,this;if(this.layer===0&&this.mag<0&&(this.mag=-this.mag,this.sign=-this.sign),this.mag===Number.POSITIVE_INFINITY||this.layer===Number.POSITIVE_INFINITY||this.mag===Number.NEGATIVE_INFINITY||this.layer===Number.NEGATIVE_INFINITY)return this.mag=Number.POSITIVE_INFINITY,this.layer=Number.POSITIVE_INFINITY,this;if(this.layer===0&&this.mag<$)return this.layer+=1,this.mag=Math.log10(this.mag),this;var e=Math.abs(this.mag),t=Math.sign(this.mag);if(e>=T)return this.layer+=1,this.mag=t*Math.log10(e),this;for(;e<ce&&this.layer>0;)this.layer-=1,this.layer===0?this.mag=Math.pow(10,this.mag):(this.mag=t*Math.pow(10,e),e=Math.abs(this.mag),t=Math.sign(this.mag));return this.layer===0&&(this.mag<0?(this.mag=-this.mag,this.sign=-this.sign):this.mag===0&&(this.sign=0)),(Number.isNaN(this.sign)||Number.isNaN(this.layer)||Number.isNaN(this.mag))&&(this.sign=Number.NaN,this.layer=Number.NaN,this.mag=Number.NaN),this}},{key:\"fromComponents\",value:function(e,t,i){return this.sign=e,this.layer=t,this.mag=i,this.normalize(),this}},{key:\"fromComponents_noNormalize\",value:function(e,t,i){return this.sign=e,this.layer=t,this.mag=i,this}},{key:\"fromMantissaExponent\",value:function(e,t){return this.layer=1,this.sign=Math.sign(e),e=Math.abs(e),this.mag=t+Math.log10(e),this.normalize(),this}},{key:\"fromMantissaExponent_noNormalize\",value:function(e,t){return this.fromMantissaExponent(e,t),this}},{key:\"fromDecimal\",value:function(e){return this.sign=e.sign,this.layer=e.layer,this.mag=e.mag,this}},{key:\"fromNumber\",value:function(e){return this.mag=Math.abs(e),this.sign=Math.sign(e),this.layer=0,this.normalize(),this}},{key:\"fromString\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i=e,a=r.fromStringCache.get(i);if(a!==void 0)return this.fromDecimal(a);e=e.replace(\",\",\"\");var l=e.split(\"^^^\");if(l.length===2){var f=parseFloat(l[0]),g=parseFloat(l[1]),h=l[1].split(\";\"),v=1;if(h.length===2&&(v=parseFloat(h[1]),isFinite(v)||(v=1)),isFinite(f)&&isFinite(g)){var u=r.pentate(f,g,v,t);return this.sign=u.sign,this.layer=u.layer,this.mag=u.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}}var M=e.split(\"^^\");if(M.length===2){var x=parseFloat(M[0]),w=parseFloat(M[1]),o=M[1].split(\";\"),F=1;if(o.length===2&&(F=parseFloat(o[1]),isFinite(F)||(F=1)),isFinite(x)&&isFinite(w)){var A=r.tetrate(x,w,F,t);return this.sign=A.sign,this.layer=A.layer,this.mag=A.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}}var d=e.split(\"^\");if(d.length===2){var S=parseFloat(d[0]),p=parseFloat(d[1]);if(isFinite(S)&&isFinite(p)){var q=r.pow(S,p);return this.sign=q.sign,this.layer=q.layer,this.mag=q.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}}e=e.trim().toLowerCase();var I,N,y=e.split(\"pt\");if(y.length===2){I=10;var V=!1;y[0][0]==\"-\"&&(V=!0,y[0]=y[0].slice(1)),N=parseFloat(y[0]),y[1]=y[1].replace(\"(\",\"\"),y[1]=y[1].replace(\")\",\"\");var C=parseFloat(y[1]);if(isFinite(C)||(C=1),isFinite(I)&&isFinite(N)){var D=r.tetrate(I,N,C,t);return this.sign=D.sign,this.layer=D.layer,this.mag=D.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),V&&(this.sign*=-1),this}}if(y=e.split(\"p\"),y.length===2){I=10;var Y=!1;y[0][0]==\"-\"&&(Y=!0,y[0]=y[0].slice(1)),N=parseFloat(y[0]),y[1]=y[1].replace(\"(\",\"\"),y[1]=y[1].replace(\")\",\"\");var L=parseFloat(y[1]);if(isFinite(L)||(L=1),isFinite(I)&&isFinite(N)){var G=r.tetrate(I,N,L,t);return this.sign=G.sign,this.layer=G.layer,this.mag=G.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),Y&&(this.sign*=-1),this}}if(y=e.split(\"f\"),y.length===2){I=10;var E=!1;y[0][0]==\"-\"&&(E=!0,y[0]=y[0].slice(1)),y[0]=y[0].replace(\"(\",\"\"),y[0]=y[0].replace(\")\",\"\");var X=parseFloat(y[0]);if(y[1]=y[1].replace(\"(\",\"\"),y[1]=y[1].replace(\")\",\"\"),N=parseFloat(y[1]),isFinite(X)||(X=1),isFinite(I)&&isFinite(N)){var Q=r.tetrate(I,N,X,t);return this.sign=Q.sign,this.layer=Q.layer,this.mag=Q.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),E&&(this.sign*=-1),this}}var J=e.split(\"e\"),Z=J.length-1;if(Z===0){var re=parseFloat(e);if(isFinite(re))return this.fromNumber(re),r.fromStringCache.size>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}else if(Z===1){var W=parseFloat(e);if(isFinite(W)&&Math.abs(W)>1e-307)return this.fromNumber(W),r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}var H=e.split(\"e^\");if(H.length===2){this.sign=1,H[0].charAt(0)==\"-\"&&(this.sign=-1);for(var te=\"\",U=0;U<H[1].length;++U){var P=H[1].charCodeAt(U);if(P>=43&&P<=57||P===101)te+=H[1].charAt(U);else{if(this.layer=parseFloat(te),this.mag=parseFloat(H[1].substr(U+1)),this.layer<0||this.layer%1!=0){var B=r.tetrate(10,this.layer,this.mag,t);this.sign=B.sign,this.layer=B.layer,this.mag=B.mag}return this.normalize(),r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}}}if(Z<1)return this.sign=0,this.layer=0,this.mag=0,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this;var z=parseFloat(J[0]);if(z===0)return this.sign=0,this.layer=0,this.mag=0,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this;var R=parseFloat(J[J.length-1]);if(Z>=2){var ee=parseFloat(J[J.length-2]);isFinite(ee)&&(R*=Math.sign(ee),R+=ie(ee))}if(!isFinite(z))this.sign=J[0]===\"-\"?-1:1,this.layer=Z,this.mag=R;else if(Z===1)this.sign=Math.sign(z),this.layer=1,this.mag=R+Math.log10(Math.abs(z));else if(this.sign=Math.sign(z),this.layer=Z,Z===2){var j=r.mul(m(1,2,R),s(z));return this.sign=j.sign,this.layer=j.layer,this.mag=j.mag,r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}else this.mag=R;return this.normalize(),r.fromStringCache.maxSize>=1&&r.fromStringCache.set(i,r.fromDecimal(this)),this}},{key:\"fromValue\",value:function(e){return e instanceof r?this.fromDecimal(e):typeof e==\"number\"?this.fromNumber(e):typeof e==\"string\"?this.fromString(e):(this.sign=0,this.layer=0,this.mag=0,this)}},{key:\"toNumber\",value:function(){return this.mag===Number.POSITIVE_INFINITY&&this.layer===Number.POSITIVE_INFINITY&&this.sign===1?Number.POSITIVE_INFINITY:this.mag===Number.POSITIVE_INFINITY&&this.layer===Number.POSITIVE_INFINITY&&this.sign===-1?Number.NEGATIVE_INFINITY:Number.isFinite(this.layer)?this.layer===0?this.sign*this.mag:this.layer===1?this.sign*Math.pow(10,this.mag):this.mag>0?this.sign>0?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:0:Number.NaN}},{key:\"mantissaWithDecimalPlaces\",value:function(e){return isNaN(this.m)?Number.NaN:this.m===0?0:K(this.m,e)}},{key:\"magnitudeWithDecimalPlaces\",value:function(e){return isNaN(this.mag)?Number.NaN:this.mag===0?0:K(this.mag,e)}},{key:\"toString\",value:function(){return isNaN(this.layer)||isNaN(this.sign)||isNaN(this.mag)?\"NaN\":this.mag===Number.POSITIVE_INFINITY||this.layer===Number.POSITIVE_INFINITY?this.sign===1?\"Infinity\":\"-Infinity\":this.layer===0?this.mag<1e21&&this.mag>1e-7||this.mag===0?(this.sign*this.mag).toString():this.m+\"e\"+this.e:this.layer===1?this.m+\"e\"+this.e:this.layer<=fe?(this.sign===-1?\"-\":\"\")+\"e\".repeat(this.layer)+this.mag:(this.sign===-1?\"-\":\"\")+\"(e^\"+this.layer+\")\"+this.mag}},{key:\"toExponential\",value:function(e){return this.layer===0?(this.sign*this.mag).toExponential(e):this.toStringWithDecimalPlaces(e)}},{key:\"toFixed\",value:function(e){return this.layer===0?(this.sign*this.mag).toFixed(e):this.toStringWithDecimalPlaces(e)}},{key:\"toPrecision\",value:function(e){return this.e<=-7?this.toExponential(e-1):e>this.e?this.toFixed(e-this.exponent-1):this.toExponential(e-1)}},{key:\"valueOf\",value:function(){return this.toString()}},{key:\"toJSON\",value:function(){return this.toString()}},{key:\"toStringWithDecimalPlaces\",value:function(e){return this.layer===0?this.mag<1e21&&this.mag>1e-7||this.mag===0?(this.sign*this.mag).toFixed(e):K(this.m,e)+\"e\"+K(this.e,e):this.layer===1?K(this.m,e)+\"e\"+K(this.e,e):this.layer<=fe?(this.sign===-1?\"-\":\"\")+\"e\".repeat(this.layer)+K(this.mag,e):(this.sign===-1?\"-\":\"\")+\"(e^\"+this.layer+\")\"+K(this.mag,e)}},{key:\"abs\",value:function(){return c(this.sign===0?0:1,this.layer,this.mag)}},{key:\"neg\",value:function(){return c(-this.sign,this.layer,this.mag)}},{key:\"negate\",value:function(){return this.neg()}},{key:\"negated\",value:function(){return this.neg()}},{key:\"sgn\",value:function(){return this.sign}},{key:\"round\",value:function(){return this.mag<0?c(0,0,0):this.layer===0?m(this.sign,0,Math.round(this.mag)):new r(this)}},{key:\"floor\",value:function(){return this.mag<0?this.sign===-1?c(-1,0,1):c(0,0,0):this.sign===-1?this.neg().ceil().neg():this.layer===0?m(this.sign,0,Math.floor(this.mag)):new r(this)}},{key:\"ceil\",value:function(){return this.mag<0?this.sign===1?c(1,0,1):c(0,0,0):this.sign===-1?this.neg().floor().neg():this.layer===0?m(this.sign,0,Math.ceil(this.mag)):new r(this)}},{key:\"trunc\",value:function(){return this.mag<0?c(0,0,0):this.layer===0?m(this.sign,0,Math.trunc(this.mag)):new r(this)}},{key:\"add\",value:function(e){var t=s(e);if(this.eq(r.dInf)&&t.eq(r.dNegInf)||this.eq(r.dNegInf)&&t.eq(r.dInf))return new r(r.dNaN);if(!Number.isFinite(this.layer))return new r(this);if(!Number.isFinite(t.layer))return new r(t);if(this.sign===0)return new r(t);if(t.sign===0)return new r(this);if(this.sign===-t.sign&&this.layer===t.layer&&this.mag===t.mag)return c(0,0,0);var i,a;if(this.layer>=2||t.layer>=2)return this.maxabs(t);if(r.cmpabs(this,t)>0?(i=new r(this),a=new r(t)):(i=new r(t),a=new r(this)),i.layer===0&&a.layer===0)return r.fromNumber(i.sign*i.mag+a.sign*a.mag);var l=i.layer*Math.sign(i.mag),f=a.layer*Math.sign(a.mag);if(l-f>=2)return i;if(l===0&&f===-1){if(Math.abs(a.mag-Math.log10(i.mag))>ne)return i;var g=Math.pow(10,Math.log10(i.mag)-a.mag),h=a.sign+i.sign*g;return m(Math.sign(h),1,a.mag+Math.log10(Math.abs(h)))}if(l===1&&f===0){if(Math.abs(i.mag-Math.log10(a.mag))>ne)return i;var v=Math.pow(10,i.mag-Math.log10(a.mag)),u=a.sign+i.sign*v;return m(Math.sign(u),1,Math.log10(a.mag)+Math.log10(Math.abs(u)))}if(Math.abs(i.mag-a.mag)>ne)return i;var M=Math.pow(10,i.mag-a.mag),x=a.sign+i.sign*M;return m(Math.sign(x),1,a.mag+Math.log10(Math.abs(x)))}},{key:\"plus\",value:function(e){return this.add(e)}},{key:\"sub\",value:function(e){return this.add(s(e).neg())}},{key:\"subtract\",value:function(e){return this.sub(e)}},{key:\"minus\",value:function(e){return this.sub(e)}},{key:\"mul\",value:function(e){var t=s(e);if(this.eq(r.dInf)&&t.eq(r.dNegInf)||this.eq(r.dNegInf)&&t.eq(r.dInf))return new r(r.dNegInf);if(this.mag==Number.POSITIVE_INFINITY&&t.eq(r.dZero)||this.eq(r.dZero)&&this.mag==Number.POSITIVE_INFINITY)return new r(r.dNaN);if(this.eq(r.dNegInf)&&t.eq(r.dNegInf))return new r(r.dInf);if(!Number.isFinite(this.layer))return new r(this);if(!Number.isFinite(t.layer))return new r(t);if(this.sign===0||t.sign===0)return c(0,0,0);if(this.layer===t.layer&&this.mag===-t.mag)return c(this.sign*t.sign,0,1);var i,a;if(this.layer>t.layer||this.layer==t.layer&&Math.abs(this.mag)>Math.abs(t.mag)?(i=new r(this),a=new r(t)):(i=new r(t),a=new r(this)),i.layer===0&&a.layer===0)return r.fromNumber(i.sign*a.sign*i.mag*a.mag);if(i.layer>=3||i.layer-a.layer>=2)return m(i.sign*a.sign,i.layer,i.mag);if(i.layer===1&&a.layer===0)return m(i.sign*a.sign,1,i.mag+Math.log10(a.mag));if(i.layer===1&&a.layer===1)return m(i.sign*a.sign,1,i.mag+a.mag);if(i.layer===2&&a.layer===1){var l=m(Math.sign(i.mag),i.layer-1,Math.abs(i.mag)).add(m(Math.sign(a.mag),a.layer-1,Math.abs(a.mag)));return m(i.sign*a.sign,l.layer+1,l.sign*l.mag)}if(i.layer===2&&a.layer===2){var f=m(Math.sign(i.mag),i.layer-1,Math.abs(i.mag)).add(m(Math.sign(a.mag),a.layer-1,Math.abs(a.mag)));return m(i.sign*a.sign,f.layer+1,f.sign*f.mag)}throw Error(\"Bad arguments to mul: \"+this+\", \"+e)}},{key:\"multiply\",value:function(e){return this.mul(e)}},{key:\"times\",value:function(e){return this.mul(e)}},{key:\"div\",value:function(e){var t=s(e);return this.mul(t.recip())}},{key:\"divide\",value:function(e){return this.div(e)}},{key:\"divideBy\",value:function(e){return this.div(e)}},{key:\"dividedBy\",value:function(e){return this.div(e)}},{key:\"recip\",value:function(){return this.mag===0?new r(r.dNaN):this.mag===Number.POSITIVE_INFINITY?c(0,0,0):this.layer===0?m(this.sign,0,1/this.mag):m(this.sign,this.layer,-this.mag)}},{key:\"reciprocal\",value:function(){return this.recip()}},{key:\"reciprocate\",value:function(){return this.recip()}},{key:\"mod\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i=s(e),a=i.abs();if(this.eq(r.dZero)||a.eq(r.dZero))return c(0,0,0);if(t){var l=this.abs().mod(a);return this.sign==-1!=(i.sign==-1)&&(l=i.abs().sub(l)),l.mul(i.sign)}var f=this.toNumber(),g=a.toNumber();return isFinite(f)&&isFinite(g)&&f!=0&&g!=0?new r(f%g):this.sub(a).eq(this)?c(0,0,0):a.sub(this).eq(a)?new r(this):this.sign==-1?this.abs().mod(a).neg():this.sub(this.div(a).floor().mul(a))}},{key:\"modulo\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return this.mod(e,t)}},{key:\"modular\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return this.mod(e,t)}},{key:\"cmp\",value:function(e){var t=s(e);return this.sign>t.sign?1:this.sign<t.sign?-1:this.sign*this.cmpabs(e)}},{key:\"cmpabs\",value:function(e){var t=s(e),i=this.mag>0?this.layer:-this.layer,a=t.mag>0?t.layer:-t.layer;return i>a?1:i<a?-1:this.mag>t.mag?1:this.mag<t.mag?-1:0}},{key:\"compare\",value:function(e){return this.cmp(e)}},{key:\"isNan\",value:function(){return isNaN(this.sign)||isNaN(this.layer)||isNaN(this.mag)}},{key:\"isFinite\",value:function(n){function e(){return n.apply(this,arguments)}return e.toString=function(){return n.toString()},e}(function(){return isFinite(this.sign)&&isFinite(this.layer)&&isFinite(this.mag)})},{key:\"eq\",value:function(e){var t=s(e);return this.sign===t.sign&&this.layer===t.layer&&this.mag===t.mag}},{key:\"equals\",value:function(e){return this.eq(e)}},{key:\"neq\",value:function(e){return!this.eq(e)}},{key:\"notEquals\",value:function(e){return this.neq(e)}},{key:\"lt\",value:function(e){return this.cmp(e)===-1}},{key:\"lte\",value:function(e){return!this.gt(e)}},{key:\"gt\",value:function(e){return this.cmp(e)===1}},{key:\"gte\",value:function(e){return!this.lt(e)}},{key:\"max\",value:function(e){var t=s(e);return this.lt(t)?new r(t):new r(this)}},{key:\"min\",value:function(e){var t=s(e);return this.gt(t)?new r(t):new r(this)}},{key:\"maxabs\",value:function(e){var t=s(e);return this.cmpabs(t)<0?new r(t):new r(this)}},{key:\"minabs\",value:function(e){var t=s(e);return this.cmpabs(t)>0?new r(t):new r(this)}},{key:\"clamp\",value:function(e,t){return this.max(e).min(t)}},{key:\"clampMin\",value:function(e){return this.max(e)}},{key:\"clampMax\",value:function(e){return this.min(e)}},{key:\"cmp_tolerance\",value:function(e,t){var i=s(e);return this.eq_tolerance(i,t)?0:this.cmp(i)}},{key:\"compare_tolerance\",value:function(e,t){return this.cmp_tolerance(e,t)}},{key:\"eq_tolerance\",value:function(e,t){var i=s(e);if(t==null&&(t=1e-7),this.sign!==i.sign||Math.abs(this.layer-i.layer)>1)return!1;var a=this.mag,l=i.mag;return this.layer>i.layer&&(l=ie(l)),this.layer<i.layer&&(a=ie(a)),Math.abs(a-l)<=t*Math.max(Math.abs(a),Math.abs(l))}},{key:\"equals_tolerance\",value:function(e,t){return this.eq_tolerance(e,t)}},{key:\"neq_tolerance\",value:function(e,t){return!this.eq_tolerance(e,t)}},{key:\"notEquals_tolerance\",value:function(e,t){return this.neq_tolerance(e,t)}},{key:\"lt_tolerance\",value:function(e,t){var i=s(e);return!this.eq_tolerance(i,t)&&this.lt(i)}},{key:\"lte_tolerance\",value:function(e,t){var i=s(e);return this.eq_tolerance(i,t)||this.lt(i)}},{key:\"gt_tolerance\",value:function(e,t){var i=s(e);return!this.eq_tolerance(i,t)&&this.gt(i)}},{key:\"gte_tolerance\",value:function(e,t){var i=s(e);return this.eq_tolerance(i,t)||this.gt(i)}},{key:\"pLog10\",value:function(){return this.lt(r.dZero)?c(0,0,0):this.log10()}},{key:\"absLog10\",value:function(){return this.sign===0?new r(r.dNaN):this.layer>0?m(Math.sign(this.mag),this.layer-1,Math.abs(this.mag)):m(1,0,Math.log10(this.mag))}},{key:\"log10\",value:function(){return this.sign<=0?new r(r.dNaN):this.layer>0?m(Math.sign(this.mag),this.layer-1,Math.abs(this.mag)):m(this.sign,0,Math.log10(this.mag))}},{key:\"log\",value:function(e){return e=s(e),this.sign<=0?new r(r.dNaN):e.sign<=0?new r(r.dNaN):e.sign===1&&e.layer===0&&e.mag===1?new r(r.dNaN):this.layer===0&&e.layer===0?m(this.sign,0,Math.log(this.mag)/Math.log(e.mag)):r.div(this.log10(),e.log10())}},{key:\"log2\",value:function(){return this.sign<=0?new r(r.dNaN):this.layer===0?m(this.sign,0,Math.log2(this.mag)):this.layer===1?m(Math.sign(this.mag),0,Math.abs(this.mag)*3.321928094887362):this.layer===2?m(Math.sign(this.mag),1,Math.abs(this.mag)+.5213902276543247):m(Math.sign(this.mag),this.layer-1,Math.abs(this.mag))}},{key:\"ln\",value:function(){return this.sign<=0?new r(r.dNaN):this.layer===0?m(this.sign,0,Math.log(this.mag)):this.layer===1?m(Math.sign(this.mag),0,Math.abs(this.mag)*2.302585092994046):this.layer===2?m(Math.sign(this.mag),1,Math.abs(this.mag)+.36221568869946325):m(Math.sign(this.mag),this.layer-1,Math.abs(this.mag))}},{key:\"logarithm\",value:function(e){return this.log(e)}},{key:\"pow\",value:function(e){var t=s(e),i=new r(this),a=new r(t);if(i.sign===0)return a.eq(0)?c(1,0,1):i;if(i.sign===1&&i.layer===0&&i.mag===1)return i;if(a.sign===0)return c(1,0,1);if(a.sign===1&&a.layer===0&&a.mag===1)return i;var l=i.absLog10().mul(a).pow10();return this.sign===-1?Math.abs(a.toNumber()%2)%2===1?l.neg():Math.abs(a.toNumber()%2)%2===0?l:new r(r.dNaN):l}},{key:\"pow10\",value:function(){if(this.eq(r.dInf))return new r(r.dInf);if(this.eq(r.dNegInf))return c(0,0,0);if(!Number.isFinite(this.layer)||!Number.isFinite(this.mag))return new r(r.dNaN);var e=new r(this);if(e.layer===0){var t=Math.pow(10,e.sign*e.mag);if(Number.isFinite(t)&&Math.abs(t)>=.1)return m(1,0,t);if(e.sign===0)return c(1,0,1);e=c(e.sign,e.layer+1,Math.log10(e.mag))}return e.sign>0&&e.mag>=0?m(e.sign,e.layer+1,e.mag):e.sign<0&&e.mag>=0?m(-e.sign,e.layer+1,-e.mag):c(1,0,1)}},{key:\"pow_base\",value:function(e){return s(e).pow(this)}},{key:\"root\",value:function(e){var t=s(e);return this.lt(0)&&t.mod(2,!0).eq(1)?this.neg().root(t).neg():this.pow(t.recip())}},{key:\"factorial\",value:function(){return this.mag<0?this.add(1).gamma():this.layer===0?this.add(1).gamma():this.layer===1?r.exp(r.mul(this,r.ln(this).sub(1))):r.exp(this)}},{key:\"gamma\",value:function(){if(this.mag<0)return this.recip();if(this.layer===0){if(this.lt(c(1,0,24)))return r.fromNumber(ke(this.sign*this.mag));var e=this.mag-1,t=.9189385332046727;t=t+(e+.5)*Math.log(e),t=t-e;var i=e*e,a=e,l=12*a,f=1/l,g=t+f;if(g===t||(t=g,a=a*i,l=360*a,f=1/l,g=t-f,g===t))return r.exp(t);t=g,a=a*i,l=1260*a;var h=1/l;return t=t+h,a=a*i,l=1680*a,h=1/l,t=t-h,r.exp(t)}else return this.layer===1?r.exp(r.mul(this,r.ln(this).sub(1))):r.exp(this)}},{key:\"lngamma\",value:function(){return this.gamma().ln()}},{key:\"exp\",value:function(){return this.mag<0?c(1,0,1):this.layer===0&&this.mag<=709.7?r.fromNumber(Math.exp(this.sign*this.mag)):this.layer===0?m(1,1,this.sign*Math.log10(Math.E)*this.mag):this.layer===1?m(1,2,this.sign*(Math.log10(.4342944819032518)+this.mag)):m(1,this.layer+1,this.sign*this.mag)}},{key:\"sqr\",value:function(){return this.pow(2)}},{key:\"sqrt\",value:function(){if(this.layer===0)return r.fromNumber(Math.sqrt(this.sign*this.mag));if(this.layer===1)return m(1,2,Math.log10(this.mag)-.3010299956639812);var e=r.div(c(this.sign,this.layer-1,this.mag),c(1,0,2));return e.layer+=1,e.normalize(),e}},{key:\"cube\",value:function(){return this.pow(3)}},{key:\"cbrt\",value:function(){return this.lt(0)?this.neg().pow(1/3).neg():this.pow(1/3)}},{key:\"tetrate\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c(1,0,1),i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(e===1)return r.pow(this,t);if(e===0)return new r(t);if(this.eq(r.dOne))return c(1,0,1);if(this.eq(-1))return r.pow(this,t);if(e===Number.POSITIVE_INFINITY){var a=this.toNumber();if(a<=1.444667861009766&&a>=.06598803584531254){var l=r.ln(this).neg(),f=l.lambertw().div(l);if(a<1)return f;var g=l.lambertw(!1).div(l);return a>1.444667861009099&&(f=g=r.fromNumber(Math.E)),t=s(t),t.eq(g)?g:t.lt(g)?f:new r(r.dInf)}else return a>1.444667861009766?new r(r.dInf):new r(r.dNaN)}if(this.eq(r.dZero)){var h=Math.abs((e+1)%2);return h>1&&(h=2-h),r.fromNumber(h)}if(e<0)return r.iteratedlog(t,this,-e,i);t=new r(t);var v=e;e=Math.trunc(e);var u=v-e;if(this.gt(r.dZero)&&(this.lt(1)||this.lte(1.444667861009766)&&t.lte(r.ln(this).neg().lambertw(!1).div(r.ln(this).neg())))&&(v>1e4||!i)){var M=Math.min(1e4,e);t.eq(r.dOne)?t=this.pow(u):this.lt(1)?t=t.pow(1-u).mul(this.pow(t).pow(u)):t=t.layeradd(u,this);for(var x=0;x<M;++x){var w=t;if(t=this.pow(t),w.eq(t))return t}return v>1e4&&Math.ceil(v)%2==1?this.pow(t):t}u!==0&&(t.eq(r.dOne)?this.gt(10)||i?t=this.pow(u):(t=r.fromNumber(r.tetrate_critical(this.toNumber(),u)),this.lt(2)&&(t=t.sub(1).mul(this.minus(1)).plus(1))):this.eq(10)?t=t.layeradd10(u,i):this.lt(1)?t=t.pow(1-u).mul(this.pow(t).pow(u)):t=t.layeradd(u,this,i));for(var o=0;o<e;++o){if(t=this.pow(t),!isFinite(t.layer)||!isFinite(t.mag))return t.normalize();if(t.layer-this.layer>3)return c(t.sign,t.layer+(e-o-1),t.mag);if(o>1e4)return t}return t}},{key:\"iteratedexp\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c(1,0,1),i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return this.tetrate(e,t,i)}},{key:\"iteratedlog\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:10,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(t<0)return r.tetrate(e,-t,this,i);e=s(e);var a=r.fromDecimal(this),l=t;t=Math.trunc(t);var f=l-t;if(a.layer-e.layer>3){var g=Math.min(t,a.layer-e.layer-3);t-=g,a.layer-=g}for(var h=0;h<t;++h){if(a=a.log(e),!isFinite(a.layer)||!isFinite(a.mag))return a.normalize();if(h>1e4)return a}return f>0&&f<1&&(e.eq(10)?a=a.layeradd10(-f,i):a=a.layeradd(-f,e,i)),a}},{key:\"slog\",value:function(){for(var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:10,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:100,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,a=.001,l=!1,f=!1,g=this.slog_internal(e,i).toNumber(),h=1;h<t;++h){var v=new r(e).tetrate(g,r.dOne,i),u=v.gt(this);if(h>1&&f!=u&&(l=!0),f=u,l?a/=2:a*=2,a=Math.abs(a)*(u?-1:1),g+=a,a===0)break}return r.fromNumber(g)}},{key:\"slog_internal\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:10,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(e=s(e),e.lte(r.dZero))return new r(r.dNaN);if(e.eq(r.dOne))return new r(r.dNaN);if(e.lt(r.dOne))return this.eq(r.dOne)?c(0,0,0):this.eq(r.dZero)?c(-1,0,1):new r(r.dNaN);if(this.mag<0||this.eq(r.dZero))return c(-1,0,1);if(e.lt(1.444667861009766)){var i=r.ln(e).neg(),a=i.lambertw().div(i);if(this.eq(a))return new r(r.dInf);if(this.gt(a))return new r(r.dNaN)}var l=0,f=r.fromDecimal(this);if(f.layer-e.layer>3){var g=f.layer-e.layer-3;l+=g,f.layer-=g}for(var h=0;h<100;++h)if(f.lt(r.dZero))f=r.pow(e,f),l-=1;else{if(f.lte(r.dOne))return t?r.fromNumber(l+f.toNumber()-1):r.fromNumber(l+r.slog_critical(e.toNumber(),f.toNumber()));l+=1,f=r.log(f,e)}return r.fromNumber(l)}},{key:\"layeradd10\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;e=r.fromValue_noAlloc(e).toNumber();var i=r.fromDecimal(this);if(e>=1){i.mag<0&&i.layer>0?(i.sign=0,i.mag=0,i.layer=0):i.sign===-1&&i.layer==0&&(i.sign=1,i.mag=-i.mag);var a=Math.trunc(e);e-=a,i.layer+=a}if(e<=-1){var l=Math.trunc(e);if(e-=l,i.layer+=l,i.layer<0)for(var f=0;f<100;++f){if(i.layer++,i.mag=Math.log10(i.mag),!isFinite(i.mag))return i.sign===0&&(i.sign=1),i.layer<0&&(i.layer=0),i.normalize();if(i.layer>=0)break}}for(;i.layer<0;)i.layer++,i.mag=Math.log10(i.mag);return i.sign===0&&(i.sign=1,i.mag===0&&i.layer>=1&&(i.layer-=1,i.mag=1)),i.normalize(),e!==0?i.layeradd(e,10,t):i}},{key:\"layeradd\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,a=s(t);if(a.gt(1)&&a.lte(1.444667861009766)){var l=r.excess_slog(this,t,i),f=l[0].toNumber(),g=l[1],h=f+e,v=r.ln(t).neg(),u=v.lambertw().div(v),M=v.lambertw(!1).div(v),x=r.dOne;g==1?x=u.mul(M).sqrt():g==2&&(x=M.mul(2));var w=a.pow(x),o=Math.floor(h),F=h-o,A=x.pow(1-F).mul(w.pow(F));return r.tetrate(a,o,A,i)}var d=this.slog(t,100,i).toNumber(),S=d+e;return S>=0?r.tetrate(t,S,r.dOne,i):Number.isFinite(S)?S>=-1?r.log(r.tetrate(t,S+1,r.dOne,i),t):r.log(r.log(r.tetrate(t,S+2,r.dOne,i),t),t):new r(r.dNaN)}},{key:\"lambertw\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return this.lt(-.3678794411710499)?new r(r.dNaN):e?this.abs().lt(\"1e-300\")?new r(this):this.mag<0?r.fromNumber(ae(this.toNumber())):this.layer===0?r.fromNumber(ae(this.sign*this.mag)):this.lt(\"eee15\")?he(this):this.ln():this.sign===1?new r(r.dNaN):this.layer===0?r.fromNumber(ae(this.sign*this.mag,1e-10,!1)):this.layer==1?he(this,1e-10,!1):this.neg().recip().lambertw().neg()}},{key:\"ssqrt\",value:function(){return this.linear_sroot(2)}},{key:\"linear_sroot\",value:function(e){if(e==1)return this;if(this.eq(r.dInf))return new r(r.dInf);if(!this.isFinite())return new r(r.dNaN);if(e>0&&e<1)return this.root(e);if(e>-2&&e<-1)return r.fromNumber(e).add(2).pow(this.recip());if(e<=0)return new r(r.dNaN);if(e==Number.POSITIVE_INFINITY){var t=this.toNumber();return t<Math.E&&t>Me?this.pow(this.recip()):new r(r.dNaN)}if(this.eq(1))return c(1,0,1);if(this.lt(0))return new r(r.dNaN);if(this.lte(\"1ee-16\"))return e%2==1?new r(this):new r(r.dNaN);if(this.gt(1)){var i=r.dTen;this.gte(r.tetrate(10,e,1,!0))&&(i=this.iteratedlog(10,e-1,!0)),e<=1&&(i=this.root(e));for(var a=r.dZero,l=i.layer,f=i.iteratedlog(10,l,!0),g=f,h=f.div(2),v=!0;v;)h=a.add(f).div(2),r.iteratedexp(10,l,h,!0).tetrate(e,1,!0).gt(this)?f=h:a=h,h.eq(g)?v=!1:g=h;return r.iteratedexp(10,l,h,!0)}else{for(var u=1,M=m(1,10,1),x=m(1,10,1),w=m(1,10,1),o=m(1,1,-16),F=r.dZero,A=m(1,10,1),d=o.pow10().recip(),S=r.dZero,p=d,q=d,I=Math.ceil(e)%2==0,N=0,y=m(1,10,1),V=!1,C=r.dZero,D=!1;u<4;){if(u==2){if(I)break;w=m(1,10,1),o=M,u=3,A=m(1,10,1),y=m(1,10,1)}for(V=!1;o.neq(w);){if(C=o,o.pow10().recip().tetrate(e,1,!0).eq(1)&&o.pow10().recip().lt(.4))d=o.pow10().recip(),p=o.pow10().recip(),q=o.pow10().recip(),S=r.dZero,N=-1,u==3&&(y=o);else if(o.pow10().recip().tetrate(e,1,!0).eq(o.pow10().recip())&&!I&&o.pow10().recip().lt(.4))d=o.pow10().recip(),p=o.pow10().recip(),q=o.pow10().recip(),S=r.dZero,N=0;else if(o.pow10().recip().tetrate(e,1,!0).eq(o.pow10().recip().mul(2).tetrate(e,1,!0)))d=o.pow10().recip(),p=r.dZero,q=d.mul(2),S=d,I?N=-1:N=0;else{for(F=o.mul(12e-17),d=o.pow10().recip(),p=o.add(F).pow10().recip(),S=d.sub(p),q=d.add(S);p.tetrate(e,1,!0).eq(d.tetrate(e,1,!0))||q.tetrate(e,1,!0).eq(d.tetrate(e,1,!0))||p.gte(d)||q.lte(d);)F=F.mul(2),p=o.add(F).pow10().recip(),S=d.sub(p),q=d.add(S);if((u==1&&q.tetrate(e,1,!0).gt(d.tetrate(e,1,!0))&&p.tetrate(e,1,!0).gt(d.tetrate(e,1,!0))||u==3&&q.tetrate(e,1,!0).lt(d.tetrate(e,1,!0))&&p.tetrate(e,1,!0).lt(d.tetrate(e,1,!0)))&&(y=o),q.tetrate(e,1,!0).lt(d.tetrate(e,1,!0)))N=-1;else if(I)N=1;else if(u==3&&o.gt_tolerance(M,1e-8))N=0;else{for(;p.tetrate(e,1,!0).eq_tolerance(d.tetrate(e,1,!0),1e-8)||q.tetrate(e,1,!0).eq_tolerance(d.tetrate(e,1,!0),1e-8)||p.gte(d)||q.lte(d);)F=F.mul(2),p=o.add(F).pow10().recip(),S=d.sub(p),q=d.add(S);q.tetrate(e,1,!0).sub(d.tetrate(e,1,!0)).lt(d.tetrate(e,1,!0).sub(p.tetrate(e,1,!0)))?N=0:N=1}}if(N==-1&&(D=!0),u==1&&N==1||u==3&&N!=0)if(w.eq(m(1,10,1)))o=o.mul(2);else{var Y=!1;if(V&&(N==1&&u==1||N==-1&&u==3)&&(Y=!0),o=o.add(w).div(2),Y)break}else if(w.eq(m(1,10,1)))w=o,o=o.div(2);else{var L=!1;if(V&&(N==1&&u==1||N==-1&&u==3)&&(L=!0),w=w.sub(A),o=o.sub(A),L)break}if(w.sub(o).div(2).abs().gt(A.mul(1.5))&&(V=!0),A=w.sub(o).div(2).abs(),o.gt(\"1e18\")||o.eq(C))break}if(o.gt(\"1e18\")||!D||y==m(1,10,1))break;u==1?M=y:u==3&&(x=y),u++}w=M,o=m(1,1,-18);for(var G=o,E=r.dZero,X=!0;X;)if(w.eq(m(1,10,1))?E=o.mul(2):E=w.add(o).div(2),r.pow(10,E).recip().tetrate(e,1,!0).gt(this)?o=E:w=E,E.eq(G)?X=!1:G=E,o.gt(\"1e18\"))return new r(r.dNaN);if(E.eq_tolerance(M,1e-15)){if(x.eq(m(1,10,1)))return new r(r.dNaN);for(w=m(1,10,1),o=x,G=o,E=r.dZero,X=!0;X;)if(w.eq(m(1,10,1))?E=o.mul(2):E=w.add(o).div(2),r.pow(10,E).recip().tetrate(e,1,!0).gt(this)?o=E:w=E,E.eq(G)?X=!1:G=E,o.gt(\"1e18\"))return new r(r.dNaN);return E.pow10().recip()}else return E.pow10().recip()}}},{key:\"pentate\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:2,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c(1,0,1),i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;t=new r(t);var a=e;e=Math.floor(e);var l=a-e,f=r.dZero,g=r.dZero;if(l!==0)if(t.eq(r.dOne))++e,t=r.fromNumber(l);else return this.pentate(t.penta_log(this,void 0,i).plus(a).toNumber(),1,i);if(e>0)for(var h=0;h<e;){if(g=f,f=t,t=this.tetrate(t.toNumber(),r.dOne,i),++h,this.gt(0)&&this.lte(1)&&t.gt(0)&&t.lte(1))return this.tetrate(e-h,t,i);if(t.eq(f)||t.eq(g)&&h%2==e%2||!isFinite(t.layer)||!isFinite(t.mag))return t.normalize();if(h>1e4)return t}else for(var v=0;v<-e;++v){if(f=t,t=t.slog(this,void 0,i),t.eq(f)||!isFinite(t.layer)||!isFinite(t.mag))return t.normalize();if(v>100)return t}return t}},{key:\"penta_log\",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:10,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:100,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(e=new r(e),e.lte(1))return new r(r.dNaN);if(this.eq(1))return c(0,0,0);if(this.eq(r.dInf))return new r(r.dInf);var a=new r(1),l=0,f=1;if(this.lt(-1)){if(this.lte(-2))return new r(r.dNaN);var g=e.tetrate(this.toNumber(),1,i);if(this.eq(g))return new r(r.dNegInf);if(this.gt(g))return new r(r.dNaN)}if(this.gt(1)){for(;a.lt(this);)if(l++,a=r.tetrate(e,a.toNumber(),1,i),l>1e3)return new r(r.dNaN)}else for(;a.gt(this);)if(l--,a=r.slog(a,e,i),l>100)return new r(r.dNaN);for(var h=1;h<t;++h){var v=e.pentate(l,r.dOne,i);if(v.eq(this))break;var u=v.gt(this);if(f=Math.abs(f)*(u?-1:1),l+=f,f/=2,f===0)break}return r.fromNumber(l)}},{key:\"linear_penta_root\",value:function(e){return e==1?this:e<0?new r(r.dNaN):this.eq(r.dInf)?new r(r.dInf):this.isFinite()?e>0&&e<1?this.root(e):this.eq(1)?c(1,0,1):this.lt(0)?new r(r.dNaN):this.lt(1)?this.linear_sroot(e):r.increasingInverse(function(t){return r.pentate(t,e,1,!0)})(this):new r(r.dNaN)}},{key:\"sin\",value:function(){return this.mag<0?new r(this):this.layer===0?r.fromNumber(Math.sin(this.sign*this.mag)):c(0,0,0)}},{key:\"cos\",value:function(){return this.mag<0?c(1,0,1):this.layer===0?r.fromNumber(Math.cos(this.sign*this.mag)):c(0,0,0)}},{key:\"tan\",value:function(){return this.mag<0?new r(this):this.layer===0?r.fromNumber(Math.tan(this.sign*this.mag)):c(0,0,0)}},{key:\"asin\",value:function(){return this.mag<0?new r(this):this.layer===0?r.fromNumber(Math.asin(this.sign*this.mag)):new r(r.dNaN)}},{key:\"acos\",value:function(){return this.mag<0?r.fromNumber(Math.acos(this.toNumber())):this.layer===0?r.fromNumber(Math.acos(this.sign*this.mag)):new r(r.dNaN)}},{key:\"atan\",value:function(){return this.mag<0?new r(this):this.layer===0?r.fromNumber(Math.atan(this.sign*this.mag)):r.fromNumber(Math.atan(this.sign*(1/0)))}},{key:\"sinh\",value:function(){return this.exp().sub(this.negate().exp()).div(2)}},{key:\"cosh\",value:function(){return this.exp().add(this.negate().exp()).div(2)}},{key:\"tanh\",value:function(){return this.sinh().div(this.cosh())}},{key:\"asinh\",value:function(){return r.ln(this.add(this.sqr().add(1).sqrt()))}},{key:\"acosh\",value:function(){return r.ln(this.add(this.sqr().sub(1).sqrt()))}},{key:\"atanh\",value:function(){return this.abs().gte(1)?new r(r.dNaN):r.ln(this.add(1).div(r.fromNumber(1).sub(this))).div(2)}},{key:\"ascensionPenalty\",value:function(e){return e===0?new r(this):this.root(r.pow(10,e))}},{key:\"egg\",value:function(){return this.add(9)}},{key:\"lessThanOrEqualTo\",value:function(e){return this.cmp(e)<1}},{key:\"lessThan\",value:function(e){return this.cmp(e)<0}},{key:\"greaterThanOrEqualTo\",value:function(e){return this.cmp(e)>-1}},{key:\"greaterThan\",value:function(e){return this.cmp(e)>0}}],[{key:\"fromComponents\",value:function(e,t,i){return new r().fromComponents(e,t,i)}},{key:\"fromComponents_noNormalize\",value:function(e,t,i){return new r().fromComponents_noNormalize(e,t,i)}},{key:\"fromMantissaExponent\",value:function(e,t){return new r().fromMantissaExponent(e,t)}},{key:\"fromMantissaExponent_noNormalize\",value:function(e,t){return new r().fromMantissaExponent_noNormalize(e,t)}},{key:\"fromDecimal\",value:function(e){return new r().fromDecimal(e)}},{key:\"fromNumber\",value:function(e){return new r().fromNumber(e)}},{key:\"fromString\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return new r().fromString(e,t)}},{key:\"fromValue\",value:function(e){return new r().fromValue(e)}},{key:\"fromValue_noAlloc\",value:function(e){if(e instanceof r)return e;if(typeof e==\"string\"){var t=r.fromStringCache.get(e);return t!==void 0?t:r.fromString(e)}else return typeof e==\"number\"?r.fromNumber(e):c(0,0,0)}},{key:\"abs\",value:function(e){return s(e).abs()}},{key:\"neg\",value:function(e){return s(e).neg()}},{key:\"negate\",value:function(e){return s(e).neg()}},{key:\"negated\",value:function(e){return s(e).neg()}},{key:\"sign\",value:function(e){return s(e).sign}},{key:\"sgn\",value:function(e){return s(e).sign}},{key:\"round\",value:function(e){return s(e).round()}},{key:\"floor\",value:function(e){return s(e).floor()}},{key:\"ceil\",value:function(e){return s(e).ceil()}},{key:\"trunc\",value:function(e){return s(e).trunc()}},{key:\"add\",value:function(e,t){return s(e).add(t)}},{key:\"plus\",value:function(e,t){return s(e).add(t)}},{key:\"sub\",value:function(e,t){return s(e).sub(t)}},{key:\"subtract\",value:function(e,t){return s(e).sub(t)}},{key:\"minus\",value:function(e,t){return s(e).sub(t)}},{key:\"mul\",value:function(e,t){return s(e).mul(t)}},{key:\"multiply\",value:function(e,t){return s(e).mul(t)}},{key:\"times\",value:function(e,t){return s(e).mul(t)}},{key:\"div\",value:function(e,t){return s(e).div(t)}},{key:\"divide\",value:function(e,t){return s(e).div(t)}},{key:\"recip\",value:function(e){return s(e).recip()}},{key:\"reciprocal\",value:function(e){return s(e).recip()}},{key:\"reciprocate\",value:function(e){return s(e).reciprocate()}},{key:\"mod\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return s(e).mod(t,i)}},{key:\"modulo\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return s(e).modulo(t,i)}},{key:\"modular\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return s(e).modular(t,i)}},{key:\"cmp\",value:function(e,t){return s(e).cmp(t)}},{key:\"cmpabs\",value:function(e,t){return s(e).cmpabs(t)}},{key:\"compare\",value:function(e,t){return s(e).cmp(t)}},{key:\"isNaN\",value:function(n){function e(t){return n.apply(this,arguments)}return e.toString=function(){return n.toString()},e}(function(n){return n=s(n),isNaN(n.sign)||isNaN(n.layer)||isNaN(n.mag)})},{key:\"isFinite\",value:function(n){function e(t){return n.apply(this,arguments)}return e.toString=function(){return n.toString()},e}(function(n){return n=s(n),isFinite(n.sign)&&isFinite(n.layer)&&isFinite(n.mag)})},{key:\"eq\",value:function(e,t){return s(e).eq(t)}},{key:\"equals\",value:function(e,t){return s(e).eq(t)}},{key:\"neq\",value:function(e,t){return s(e).neq(t)}},{key:\"notEquals\",value:function(e,t){return s(e).notEquals(t)}},{key:\"lt\",value:function(e,t){return s(e).lt(t)}},{key:\"lte\",value:function(e,t){return s(e).lte(t)}},{key:\"gt\",value:function(e,t){return s(e).gt(t)}},{key:\"gte\",value:function(e,t){return s(e).gte(t)}},{key:\"max\",value:function(e,t){return s(e).max(t)}},{key:\"min\",value:function(e,t){return s(e).min(t)}},{key:\"minabs\",value:function(e,t){return s(e).minabs(t)}},{key:\"maxabs\",value:function(e,t){return s(e).maxabs(t)}},{key:\"clamp\",value:function(e,t,i){return s(e).clamp(t,i)}},{key:\"clampMin\",value:function(e,t){return s(e).clampMin(t)}},{key:\"clampMax\",value:function(e,t){return s(e).clampMax(t)}},{key:\"cmp_tolerance\",value:function(e,t,i){return s(e).cmp_tolerance(t,i)}},{key:\"compare_tolerance\",value:function(e,t,i){return s(e).cmp_tolerance(t,i)}},{key:\"eq_tolerance\",value:function(e,t,i){return s(e).eq_tolerance(t,i)}},{key:\"equals_tolerance\",value:function(e,t,i){return s(e).eq_tolerance(t,i)}},{key:\"neq_tolerance\",value:function(e,t,i){return s(e).neq_tolerance(t,i)}},{key:\"notEquals_tolerance\",value:function(e,t,i){return s(e).notEquals_tolerance(t,i)}},{key:\"lt_tolerance\",value:function(e,t,i){return s(e).lt_tolerance(t,i)}},{key:\"lte_tolerance\",value:function(e,t,i){return s(e).lte_tolerance(t,i)}},{key:\"gt_tolerance\",value:function(e,t,i){return s(e).gt_tolerance(t,i)}},{key:\"gte_tolerance\",value:function(e,t,i){return s(e).gte_tolerance(t,i)}},{key:\"pLog10\",value:function(e){return s(e).pLog10()}},{key:\"absLog10\",value:function(e){return s(e).absLog10()}},{key:\"log10\",value:function(e){return s(e).log10()}},{key:\"log\",value:function(e,t){return s(e).log(t)}},{key:\"log2\",value:function(e){return s(e).log2()}},{key:\"ln\",value:function(e){return s(e).ln()}},{key:\"logarithm\",value:function(e,t){return s(e).logarithm(t)}},{key:\"pow\",value:function(e,t){return s(e).pow(t)}},{key:\"pow10\",value:function(e){return s(e).pow10()}},{key:\"root\",value:function(e,t){return s(e).root(t)}},{key:\"factorial\",value:function(e,t){return s(e).factorial()}},{key:\"gamma\",value:function(e,t){return s(e).gamma()}},{key:\"lngamma\",value:function(e,t){return s(e).lngamma()}},{key:\"exp\",value:function(e){return s(e).exp()}},{key:\"sqr\",value:function(e){return s(e).sqr()}},{key:\"sqrt\",value:function(e){return s(e).sqrt()}},{key:\"cube\",value:function(e){return s(e).cube()}},{key:\"cbrt\",value:function(e){return s(e).cbrt()}},{key:\"tetrate\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:c(1,0,1),a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return s(e).tetrate(t,i,a)}},{key:\"iteratedexp\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:c(1,0,1),a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return s(e).iteratedexp(t,i,a)}},{key:\"iteratedlog\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:10,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return s(e).iteratedlog(t,i,a)}},{key:\"layeradd10\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return s(e).layeradd10(t,i)}},{key:\"layeradd\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:10,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return s(e).layeradd(t,i,a)}},{key:\"slog\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:10,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return s(e).slog(t,100,i)}},{key:\"lambertw\",value:function(e,t){return s(e).lambertw(t)}},{key:\"ssqrt\",value:function(e){return s(e).ssqrt()}},{key:\"linear_sroot\",value:function(e,t){return s(e).linear_sroot(t)}},{key:\"pentate\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:c(1,0,1),a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return s(e).pentate(t,i,a)}},{key:\"penta_log\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:10,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return s(e).penta_log(t,100,i)}},{key:\"linear_penta_root\",value:function(e,t){return s(e).linear_penta_root(t)}},{key:\"sin\",value:function(e){return s(e).sin()}},{key:\"cos\",value:function(e){return s(e).cos()}},{key:\"tan\",value:function(e){return s(e).tan()}},{key:\"asin\",value:function(e){return s(e).asin()}},{key:\"acos\",value:function(e){return s(e).acos()}},{key:\"atan\",value:function(e){return s(e).atan()}},{key:\"sinh\",value:function(e){return s(e).sinh()}},{key:\"cosh\",value:function(e){return s(e).cosh()}},{key:\"tanh\",value:function(e){return s(e).tanh()}},{key:\"asinh\",value:function(e){return s(e).asinh()}},{key:\"acosh\",value:function(e){return s(e).acosh()}},{key:\"atanh\",value:function(e){return s(e).atanh()}},{key:\"affordGeometricSeries\",value:function(e,t,i,a){return this.affordGeometricSeries_core(s(e),s(t),s(i),a)}},{key:\"sumGeometricSeries\",value:function(e,t,i,a){return this.sumGeometricSeries_core(e,s(t),s(i),a)}},{key:\"affordArithmeticSeries\",value:function(e,t,i,a){return this.affordArithmeticSeries_core(s(e),s(t),s(i),s(a))}},{key:\"sumArithmeticSeries\",value:function(e,t,i,a){return this.sumArithmeticSeries_core(s(e),s(t),s(i),s(a))}},{key:\"efficiencyOfPurchase\",value:function(e,t,i){return this.efficiencyOfPurchase_core(s(e),s(t),s(i))}},{key:\"randomDecimalForTesting\",value:function(e){if(Math.random()*20<1)return c(0,0,0);var t=Math.random()>.5?1:-1;if(Math.random()*20<1)return c(t,0,1);var i=Math.floor(Math.random()*(e+1)),a=i===0?Math.random()*616-308:Math.random()*16;Math.random()>.9&&(a=Math.trunc(a));var l=Math.pow(10,a);return Math.random()>.9&&(l=Math.trunc(l)),m(t,i,l)}},{key:\"affordGeometricSeries_core\",value:function(e,t,i,a){var l=t.mul(i.pow(a));return r.floor(e.div(l).mul(i.sub(1)).add(1).log10().div(i.log10()))}},{key:\"sumGeometricSeries_core\",value:function(e,t,i,a){return t.mul(i.pow(a)).mul(r.sub(1,i.pow(e))).div(r.sub(1,i))}},{key:\"affordArithmeticSeries_core\",value:function(e,t,i,a){var l=t.add(a.mul(i)),f=l.sub(i.div(2)),g=f.pow(2);return f.neg().add(g.add(i.mul(e).mul(2)).sqrt()).div(i).floor()}},{key:\"sumArithmeticSeries_core\",value:function(e,t,i,a){var l=t.add(a.mul(i));return e.div(2).mul(l.mul(2).plus(e.sub(1).mul(i)))}},{key:\"efficiencyOfPurchase_core\",value:function(e,t,i){return e.div(t).add(e.div(i))}},{key:\"slog_critical\",value:function(e,t){return e>10?t-1:r.critical_section(e,t,we)}},{key:\"tetrate_critical\",value:function(e,t){return r.critical_section(e,t,be)}},{key:\"critical_section\",value:function(e,t,i){t*=10,t<0&&(t=0),t>10&&(t=10),e<2&&(e=2),e>10&&(e=10);for(var a=0,l=0,f=0;f<_.length;++f)if(_[f]==e){a=i[f][Math.floor(t)],l=i[f][Math.ceil(t)];break}else if(_[f]<e&&_[f+1]>e){var g=(e-_[f])/(_[f+1]-_[f]);a=i[f][Math.floor(t)]*(1-g)+i[f+1][Math.floor(t)]*g,l=i[f][Math.ceil(t)]*(1-g)+i[f+1][Math.ceil(t)]*g;break}var h=t-Math.floor(t);return a<=0||l<=0?a*(1-h)+l*h:Math.pow(e,Math.log(a)/Math.log(e)*(1-h)+Math.log(l)/Math.log(e)*h)}},{key:\"excess_slog\",value:function(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;e=s(e),t=s(t);var a=t;if(t=t.toNumber(),t==1||t<=0)return[new r(r.dNaN),0];if(t>1.444667861009766)return[e.slog(t,100,i),0];var l=r.ln(t).neg(),f=l.lambertw().div(l),g=r.dInf;if(t>1&&(g=l.lambertw(!1).div(l)),t>1.444667861009099&&(f=g=r.fromNumber(Math.E)),e.lt(f))return[e.slog(t,100,i),0];if(e.eq(f))return[new r(r.dInf),0];if(e.eq(g))return[new r(r.dNegInf),2];if(e.gt(g)){var h=g.mul(2),v=a.pow(h),u=0;if(e.gte(h)&&e.lt(v))u=0;else if(e.gte(v)){var M=v;for(u=1;M.lt(e);)if(M=a.pow(M),u=u+1,M.layer>3){var x=Math.floor(e.layer-M.layer+1);M=a.iteratedexp(x,M,i),u=u+x}M.gt(e)&&(M=M.log(t),u=u-1)}else if(e.lt(h)){var w=h;for(u=0;w.gt(e);)w=w.log(t),u=u-1}for(var o=0,F=0,A=.5,d=h,S=r.dZero;A>1e-16;){if(F=o+A,d=h.pow(1-F).mul(v.pow(F)),S=r.iteratedexp(t,u,d),S.eq(e))return[new r(u+F),2];S.lt(e)&&(o+=A),A/=2}return S.neq_tolerance(e,1e-7)?[new r(r.dNaN),0]:[new r(u+o),2]}if(e.lt(g)&&e.gt(f)){var p=f.mul(g).sqrt(),q=a.pow(p),I=0;if(e.lte(p)&&e.gt(q))I=0;else if(e.lte(q)){var N=q;for(I=1;N.gt(e);)N=a.pow(N),I=I+1;N.lt(e)&&(N=N.log(t),I=I-1)}else if(e.gt(p)){var y=p;for(I=0;y.lt(e);)y=y.log(t),I=I-1}for(var V=0,C=0,D=.5,Y=p,L=r.dZero;D>1e-16;){if(C=V+D,Y=p.pow(1-C).mul(q.pow(C)),L=r.iteratedexp(t,I,Y),L.eq(e))return[new r(I+C),1];L.gt(e)&&(V+=D),D/=2}return L.neq_tolerance(e,1e-7)?[new r(r.dNaN),0]:[new r(I+V),1]}throw new Error(\"Unhandled behavior in excess_slog\")}},{key:\"increasingInverse\",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:120,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:r.dLayerMax.neg(),l=arguments.length>4&&arguments[4]!==void 0?arguments[4]:r.dLayerMax,f=arguments.length>5&&arguments[5]!==void 0?arguments[5]:r.dLayerMax.neg(),g=arguments.length>6&&arguments[6]!==void 0?arguments[6]:r.dLayerMax;return function(h){if(h=new r(h),a=new r(a),l=new r(l),f=new r(f),g=new r(g),h.isNan()||l.lt(a)||h.lt(f)||h.gt(g))return new r(r.dNaN);var v=function(b){return new r(b)},u=!0;if(l.lt(0))u=!1;else if(a.gt(0))u=!0;else{var M=e(r.dZero);if(M.eq(h))return c(0,0,0);u=h.gt(M),t&&(u=!u)}var x=u,w;if(u){if(l.lt($))u=!0;else if(a.gt($))u=!1;else{var o=e(new r($));u=h.lt(o),t&&(u=!u)}if(u){w=!0;var F=r.pow(10,T).recip();if(l.lt(F))u=!1;else if(a.gt(F))u=!0;else{var A=e(new r(F));u=h.gt(A),t&&(u=!u)}if(u)v=function(b){return r.pow(10,b).recip()};else{var d=r.tetrate(10,T);if(l.lt(d))u=!1;else if(a.gt(d))u=!0;else{var S=e(new r(d));u=h.gt(S),t&&(u=!u)}u?v=function(b){return r.tetrate(10,new r(b).toNumber()).recip()}:v=function(b){return new r(b).gt(Math.log10(Number.MAX_VALUE))?r.dZero:r.tetrate(10,r.pow(10,b).toNumber()).recip()}}}else{if(w=!1,l.lt(T))u=!0;else if(a.gt(T))u=!1;else{var p=e(new r(T));u=h.lt(p),t&&(u=!u)}if(u)v=function(b){return new r(b)};else{var q=r.pow(10,T);if(l.lt(q))u=!0;else if(a.gt(q))u=!1;else{var I=e(new r(q));u=h.lt(I),t&&(u=!u)}if(u)v=function(b){return r.pow(10,b)};else{var N=r.tetrate(10,T);if(l.lt(N))u=!0;else if(a.gt(N))u=!1;else{var y=e(new r(N));u=h.lt(y),t&&(u=!u)}u?v=function(b){return r.tetrate(10,new r(b).toNumber())}:v=function(b){return new r(b).gt(Math.log10(Number.MAX_VALUE))?r.dInf:r.tetrate(10,r.pow(10,b).toNumber())}}}}}else{if(w=!0,l.lt(-$))u=!1;else if(a.gt(-$))u=!0;else{var V=e(new r(-$));u=h.gt(V),t&&(u=!u)}if(u){var C=r.pow(10,T).recip().neg();if(l.lt(C))u=!0;else if(a.gt(C))u=!1;else{var D=e(new r(C));u=h.lt(D),t&&(u=!u)}if(u)v=function(b){return r.pow(10,b).recip().neg()};else{var Y=r.tetrate(10,T).neg();if(l.lt(Y))u=!0;else if(a.gt(Y))u=!1;else{var L=e(new r(Y));u=h.lt(L),t&&(u=!u)}u?v=function(b){return r.tetrate(10,new r(b).toNumber()).recip().neg()}:v=function(b){return new r(b).gt(Math.log10(Number.MAX_VALUE))?r.dZero:r.tetrate(10,r.pow(10,b).toNumber()).recip().neg()}}}else{if(w=!1,l.lt(-T))u=!1;else if(a.gt(-T))u=!0;else{var G=e(new r(-T));u=h.gt(G),t&&(u=!u)}if(u)v=function(b){return r.neg(b)};else{var E=r.pow(10,T).neg();if(l.lt(E))u=!1;else if(a.gt(E))u=!0;else{var X=e(new r(E));u=h.gt(X),t&&(u=!u)}if(u)v=function(b){return r.pow(10,b).neg()};else{var Q=r.tetrate(10,T).neg();if(l.lt(Q))u=!1;else if(a.gt(Q))u=!0;else{var J=e(new r(Q));u=h.gt(J),t&&(u=!u)}u?v=function(b){return r.tetrate(10,new r(b).toNumber()).neg()}:v=function(b){return new r(b).gt(Math.log10(Number.MAX_VALUE))?r.dNegInf:r.tetrate(10,r.pow(10,b).toNumber()).neg()}}}}}for(var Z=x!=w!=t,re=Z?function(O,b){return r.gt(O,b)}:function(O,b){return r.lt(O,b)},W=.001,H=!1,te=!1,U=1,P=r.dOne,B=0,z=!1,R=1;R<i;++R){z=!1,B=U,P=v(U),P.gt(l)&&(P=l,z=!0),P.lt(a)&&(P=a,z=!0);var ee=e(P);if(ee.eq(h)&&!z)break;var j=re(ee,h);if(R>1&&te!=j&&(H=!0),te=j,H?W/=2:W*=2,j!=Z&&P.eq(l)||j==Z&&P.eq(a))return new r(r.dNaN);if(W=Math.abs(W)*(j?-1:1),U+=W,W===0||B==U)break}return v(U)}}}]),r}();k.dZero=c(0,0,0);k.dOne=c(1,0,1);k.dNegOne=c(-1,0,1);k.dTwo=c(1,0,2);k.dTen=c(1,0,10);k.dNaN=c(Number.NaN,Number.NaN,Number.NaN);k.dInf=c(1,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY);k.dNegInf=c(-1,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY);k.dNumberMax=m(1,0,Number.MAX_VALUE);k.dNumberMin=m(1,0,Number.MIN_VALUE);k.dLayerSafeMax=m(1,Number.MAX_SAFE_INTEGER,T-1);k.dLayerSafeMin=m(1,Number.MAX_SAFE_INTEGER,-(T-1));k.dLayerMax=m(1,Number.MAX_VALUE,T-1);k.dLayerMin=m(1,Number.MAX_VALUE,-(T-1));k.fromStringCache=new me(de);s=k.fromValue_noAlloc;m=k.fromComponents;c=k.fromComponents_noNormalize;k.fromMantissaExponent;k.fromMantissaExponent_noNormalize;export{k as default};\n","// H5 Big Number System - Venus API\n// Provides break_eternity.js functionality to H5 games\n\n// Import break_eternity.js as ES6 module from local file (default export)\nimport Decimal from '../lib/break_eternity.js';\n\nfunction createNumbersAPI() {\n // Create the numbers API\n const numbersAPI = {\n // Type detection helper\n isBigNumber: (value) => {\n if (typeof value === 'string' && value.startsWith('BE:')) return true;\n if (value instanceof Decimal) return true;\n if (typeof value === 'number' && (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER)) return true;\n return false;\n },\n \n // Normalize any input to Decimal (for API responses)\n normalize: (value) => {\n if (value instanceof Decimal) return value;\n if (typeof value === 'string' && value.startsWith('BE:')) {\n return new Decimal(value.slice(3));\n }\n return new Decimal(value);\n },\n \n // Common game formatters\n format: {\n incremental: (value) => {\n const decimal = value instanceof Decimal ? value : new Decimal(value);\n const suffixes = ['', 'K', 'M', 'B', 'T', 'Qa', 'Qi', 'Sx', 'Sp', 'Oc', 'No', 'Dc'];\n \n if (decimal.lt(1000)) return decimal.toFixed(0);\n \n const log = decimal.log10();\n const suffixIndex = Math.floor(log / 3);\n \n if (suffixIndex < suffixes.length) {\n const divisor = Decimal.pow(1000, suffixIndex);\n const value = decimal.div(divisor);\n return `${value.toFixed(2)}${suffixes[suffixIndex]}`;\n }\n \n return decimal.toExponential(2);\n }\n },\n \n // NEW: Calculate geometric series cost with full Decimal precision\n calculateGeometricSeriesCost: (baseCost, multiplier, currentQuantity, purchaseAmount) => {\n try {\n const base = new Decimal(baseCost);\n const r = new Decimal(multiplier);\n const q = new Decimal(currentQuantity);\n const n = new Decimal(purchaseAmount);\n\n if (r.eq(1)) {\n // Linear progression: baseCost * n\n return base.mul(n);\n }\n\n // Geometric series: a * (r^n - 1) / (r - 1)\n // where a = baseCost * r^currentQuantity\n const a = base.mul(r.pow(q));\n const numerator = a.mul(r.pow(n).sub(1));\n const denominator = r.sub(1);\n \n return numerator.div(denominator);\n } catch (error) {\n console.error('[VenusAPI] Decimal calculation failed, falling back to regular math:', error);\n // Fallback to regular JavaScript math\n const base = Number(baseCost);\n const r = Number(multiplier);\n if (r === 1) return base * purchaseAmount;\n const a = base * Math.pow(r, currentQuantity);\n return (a * (Math.pow(r, purchaseAmount) - 1)) / (r - 1);\n }\n },\n\n // NEW: Find maximum affordable amount using Decimal precision\n calculateMaxAffordableDecimal: (availableCash, baseCost, multiplier, currentQuantity) => {\n try {\n const cash = new Decimal(availableCash);\n \n // Quick check if even one is affordable\n const costOne = numbersAPI.calculateGeometricSeriesCost(baseCost, multiplier, currentQuantity, 1);\n if (cash.lt(costOne)) return 0;\n\n // Binary search with Decimal precision\n let low = 1;\n let high = 1;\n\n // Find upper bound (exponential search)\n while (high < 1000000) { // Safety limit\n const cost = numbersAPI.calculateGeometricSeriesCost(baseCost, multiplier, currentQuantity, high);\n if (cost.gt(cash)) break;\n low = high;\n high *= 2;\n }\n\n // Binary search for exact maximum\n while (low < high) {\n const mid = Math.floor((low + high + 1) / 2);\n const cost = numbersAPI.calculateGeometricSeriesCost(baseCost, multiplier, currentQuantity, mid);\n \n if (cost.lte(cash)) {\n low = mid;\n } else {\n high = mid - 1;\n }\n }\n\n return low;\n } catch (error) {\n console.error('[VenusAPI] Decimal max affordable calculation failed:', error);\n // Fallback to simple division\n return Math.floor(Number(availableCash) / Number(baseCost));\n }\n },\n\n // NEW: Format Decimal value for currency display\n formatDecimalCurrency: (decimalValue) => {\n try {\n if (numbersAPI.isBigNumber(decimalValue)) {\n return `$${numbersAPI.format.incremental(decimalValue)}`;\n }\n // Fallback for regular numbers\n return `$${numbersAPI.format.incremental(decimalValue)}`;\n } catch (error) {\n console.error('[VenusAPI] Decimal formatting failed:', error);\n return `$${Number(decimalValue).toLocaleString()}`;\n }\n }\n };\n\n // Initialized with break_eternity.js\n \n return numbersAPI;\n}\n\n// Export initialization function for venus-api/index.js\nexport async function initializeNumbers(venusApiInstance) {\n // Initializing numbers system...\n \n // Import createProxiedObject and createProxiedMethod from core\n const { createProxiedObject, createProxiedMethod } = await import('./core.js');\n \n // Create the numbers API (Decimal is already imported as ES6 module)\n const numbersAPI = createNumbersAPI();\n \n // Add numbers API to VenusAPI instance\n venusApiInstance.numbers = createProxiedObject.call(\n venusApiInstance,\n 'numbers',\n {\n isBigNumber: numbersAPI.isBigNumber,\n normalize: numbersAPI.normalize,\n format: {\n incremental: numbersAPI.format.incremental\n },\n // NEW: Expose geometric series calculation methods\n calculateGeometricSeriesCost: numbersAPI.calculateGeometricSeriesCost,\n calculateMaxAffordableDecimal: numbersAPI.calculateMaxAffordableDecimal,\n formatDecimalCurrency: numbersAPI.formatDecimalCurrency,\n // Expose Decimal class for direct use\n Decimal: Decimal\n }\n );\n \n // Numbers system initialized with break_eternity.js\n}\n\n// Export Decimal for direct use in games\nexport { Decimal };","import { initializeStorage } from '../storage/'\nimport { initializeAds } from '../ads'\nimport { initializeTheme } from './systems/theme.js'\nimport { initializePopups } from '../popups'\nimport { initializeLocalNotifications } from '../notifications'\nimport { initializeTime } from '../time'\nimport { initializeAvatar3d } from '../avatar3d'\nimport { initializeStackNavigation } from '../navigation'\nimport { initializeAi } from '../ai'\nimport { initializeRooms } from './systems/rooms.js'\nimport { initializeAssetLoader } from './systems/asset-loader.js'\nimport { initializeNumbers } from './systems/numbers.js'\nimport { createProxiedMethod, createProxiedObject } from './systems/core.js'\nimport { initializeAnalytics } from '../analytics'\nimport { initializeIap } from '../iap'\nimport { createHost } from '../Host'\nimport { SDK_VERSION } from '../version'\nimport { initializeProfile } from '../profile/'\nimport { initializeCdn } from '../cdn'\nimport { initializePost } from '../post'\nimport { initializeHaptics } from '../haptics'\nimport { initializeFeaturesApi } from '../features'\nimport { initializeLifecycleApi } from '../lifecycles'\nimport { initializeSimulation } from '../simulation'\nimport { initializeLoggingApi } from '../logging'\n\n// HapticStyle enum for type safety\nconst HapticStyle = {\n LIGHT: 'light',\n MEDIUM: 'medium',\n HEAVY: 'heavy',\n SUCCESS: 'success',\n WARNING: 'warning',\n ERROR: 'error',\n}\n\nclass VenusAPI {\n constructor() {\n console.log(`[Venus SDK] SDK Version: ${SDK_VERSION}`)\n // Shared configuration\n this._shared = {\n initialized: false,\n initPromise: null,\n }\n\n // Bootstrap-specific properties\n this._bootstrap = {\n apiInjected: false,\n apiInjectionTimeout: null,\n venus: null,\n isInsideHostedEnvironment: false,\n _localHandlers: {}, // Store local handlers here\n _pendingMessages: [], // Buffer messages until handlers are registered\n }\n\n // Generate deterministic instance ID based on current URL\n const deterministicInstanceId = this._generateDeterministicInstanceId()\n\n // Mock data structure matching real config format\n this._mock = {\n // Essential config (matching H5ConfigProperties)\n appId: 'mock-app',\n mode: 'preview',\n instanceId: deterministicInstanceId, // Use deterministic ID instead of random\n appUrl: 'mock-app/index.html',\n safeAreaInsets: {\n top: 10,\n right: 0,\n bottom: 10,\n left: 0,\n },\n uiControls: {\n closeButton: { x: 16, y: 16, width: 32, height: 32 },\n menuButton: { x: window.innerWidth - 48, y: 16, width: 32, height: 32 },\n feedHeader: { x: 0, y: 0, width: window.innerWidth, height: 66 },\n playButton: {\n x: 0,\n y: window.innerHeight - 60,\n width: window.innerWidth,\n height: 60,\n },\n },\n // Complete theme structure (matching createH5Theme output)\n theme: {\n background: {\n default: '#131419',\n muted: '#1b1d25',\n dark: '#0d0e11',\n },\n text: {\n primary: '#ffffff',\n muted: '#808080',\n inverted: '#000000',\n },\n theme: {\n primary: '#f6c833',\n secondary: '#6366f1',\n background: '#131419',\n border: '#262626',\n card: '#1b1d25',\n 'card-glass': 'rgba(27, 29, 37, 0.8)',\n },\n typography: {\n fontFamily: {\n base: 'Plus Jakarta Sans, Roboto, sans-serif',\n heading: 'Plus Jakarta Sans, Roboto, sans-serif',\n mono: 'monospace',\n },\n fontSize: {\n '2xs': '10px',\n xs: '12px',\n sm: '14px',\n md: '16px',\n lg: '18px',\n xl: '20px',\n '2xl': '24px',\n '3xl': '30px',\n '4xl': '36px',\n '5xl': '48px',\n '6xl': '60px',\n },\n fontWeight: {\n thin: '100',\n extralight: '200',\n light: '300',\n regular: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n extrablack: '950',\n },\n lineHeight: {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n },\n },\n },\n // Static locale data at top level\n locale: 'en-US',\n languageCode: 'en',\n // Static profile data (renamed from currentProfile)\n profile: {\n id: 'mock-profile-123',\n username: 'MockProfile',\n avatarUrl: 'https://i.pravatar.cc/150?u=mock',\n },\n // Complete environment info (matching buildStaticConfig)\n environment: {\n isDevelopment: true,\n platform: 'web',\n platformVersion: 'mock-1.0',\n browserInfo: {\n browser: 'MockBrowser',\n userAgent: navigator.userAgent,\n isMobile: /Mobi|Android/i.test(navigator.userAgent),\n isTablet: /iPad|Tablet|Pad/i.test(navigator.userAgent),\n language: navigator.language || 'en-US',\n },\n },\n // Complete device info (matching buildStaticConfig)\n device: {\n screenSize: { width: window.innerWidth, height: window.innerHeight },\n viewportSize: {\n width: window.innerWidth - 20, // account for safe area\n height: window.innerHeight - 20,\n },\n orientation:\n window.innerWidth > window.innerHeight ? 'landscape' : 'portrait',\n pixelRatio: window.devicePixelRatio || 1,\n fontScale: 1,\n deviceType: window.innerWidth > 768 ? 'tablet' : 'phone',\n platform: 'web',\n isWeb: true,\n isMobile: /Mobi|Android/i.test(navigator.userAgent),\n hapticsEnabled: false, // Mock environment doesn't support haptics\n haptics: {\n supported: false,\n enabled: false,\n },\n },\n // Context structure (matching buildStaticConfig)\n context: {\n postData: undefined,\n stack: {\n isInStack: false,\n stackPosition: 0,\n parentInstanceId: undefined,\n },\n },\n\n // Internal state (existing handlers and interaction data)\n handlers: {\n onPlay: null,\n onPause: null,\n onResume: null,\n onQuit: null,\n onHide: null,\n onShow: null,\n },\n currentPostInteractions: {\n isLiked: false,\n isFollowing: false,\n likesCount: 42,\n commentsCount: 7,\n },\n\n // Platform overrides for testing different environments\n platformOverrides: {\n isMobile: true,\n isWeb: false,\n },\n }\n\n // Detect if we're inside a hosted environment (iframe or WebView)\n this._detectHostedEnvironment()\n\n // Add config object with structured access\n this.config = createProxiedObject.call(this, 'config', {\n locale: 'en-US',\n languageCode: 'en',\n profile: {\n id: 'mock-user-123',\n username: 'Test User',\n avatarUrl: null,\n },\n environment: {\n isDevelopment: true,\n platform:\n typeof navigator !== 'undefined' ? navigator.platform : 'unknown',\n platformVersion: 'unknown',\n browserInfo: {\n browser: 'unknown',\n userAgent:\n typeof navigator !== 'undefined' ? navigator.userAgent : 'unknown',\n isMobile: true,\n isTablet: false,\n language:\n typeof navigator !== 'undefined' ? navigator.language : 'en-US',\n },\n },\n ui: {\n controls: {\n closeButton: { x: 16, y: 16, width: 32, height: 32 },\n menuButton: {\n x: typeof window !== 'undefined' ? window.innerWidth - 48 : 352,\n y: 16,\n width: 32,\n height: 32,\n },\n feedHeader: {\n x: 0,\n y: 0,\n width: typeof window !== 'undefined' ? window.innerWidth : 400,\n height: 66,\n },\n playButton: {\n x: 0,\n y: typeof window !== 'undefined' ? window.innerHeight - 60 : 740,\n width: typeof window !== 'undefined' ? window.innerWidth : 400,\n height: 60,\n },\n },\n safeArea: { top: 44, left: 0, right: 0, bottom: 34 },\n hudInsets: {\n preview: { top: 60, left: 0, right: 0, bottom: 40 },\n fullscreen: { top: 44, left: 0, right: 0, bottom: 34 },\n },\n },\n device: {\n screenSize: {\n width: typeof window !== 'undefined' ? window.screen?.width || 0 : 0,\n height:\n typeof window !== 'undefined' ? window.screen?.height || 0 : 0,\n },\n viewportSize: {\n width: typeof window !== 'undefined' ? window.innerWidth : 0,\n height: typeof window !== 'undefined' ? window.innerHeight : 0,\n },\n orientation: 'portrait',\n pixelRatio:\n typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1,\n fontScale: 1,\n deviceType: 'phone',\n hapticsEnabled: false,\n haptics: { supported: false, enabled: false },\n },\n theme: {\n background: { default: '#131419', muted: '#1b1d25', dark: '#0d0e11' },\n text: { primary: '#ffffff', muted: '#808080', inverted: '#000000' },\n theme: {\n primary: '#f6c833',\n secondary: '#6366f1',\n background: '#131419',\n border: '#262626',\n card: '#1b1d25',\n 'card-glass': 'rgba(27, 29, 37, 0.8)',\n },\n typography: {\n fontFamily: {\n base: 'Plus Jakarta Sans, Roboto, sans-serif',\n heading: 'Plus Jakarta Sans, Roboto, sans-serif',\n mono: 'monospace',\n },\n fontSize: {\n '2xs': '10px',\n xs: '12px',\n sm: '14px',\n md: '16px',\n lg: '18px',\n xl: '20px',\n '2xl': '24px',\n '3xl': '30px',\n '4xl': '36px',\n '5xl': '48px',\n '6xl': '60px',\n },\n fontWeight: {\n thin: '100',\n extralight: '200',\n light: '300',\n regular: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n extrablack: '950',\n },\n lineHeight: {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n },\n },\n },\n })\n\n const isInsideHostedEnv = this._bootstrap.isInsideHostedEnvironment\n const host = createHost(this, !isInsideHostedEnv)\n this.host = host\n\n // Initialize storage functionality (renamed from localStorage)\n initializeStorage(this, host)\n\n // Initialize ads functionality\n initializeAds(this, host)\n\n // Initialize theme functionality\n initializeTheme(this)\n\n // Initialize UI functionality\n initializePopups(this, host)\n\n // initialize analytics functionality\n initializeAnalytics(this, host)\n\n // Initialize IAP functionality\n initializeIap(this, host)\n\n // Initialize local notifications functionality\n initializeLocalNotifications(this, host)\n\n // Initialize time functionality\n initializeTime(this, host)\n\n // Initialize lifecycle functionality\n initializeLifecycleApi(this, host)\n\n // Haptic feedback\n initializeHaptics(this, host)\n\n // Initialize runtime assets functionality\n initializeCdn(this, host)\n\n initializeFeaturesApi(this, host)\n\n initializeLoggingApi(this, host)\n\n // ✅ FEATURE FLAG: Only initialize avatar3d functionality if not disabled\n const isAvatar3dDisabled =\n typeof window !== 'undefined' &&\n window.location.search.includes('EXPO_PUBLIC_DISABLE_3D_AVATARS=true')\n\n initializeProfile(this, host)\n\n if (!isAvatar3dDisabled) {\n // Initialize avatar3d functionality\n initializeAvatar3d(this, host)\n }\n\n // Initialize stack navigation functionality\n initializeStackNavigation(this, host)\n\n // Post interactions\n initializePost(this, host)\n\n // 🦊 INITIALIZE NEW AI SYSTEM\n initializeAi(this, host)\n\n // Initialize rooms functionality (will get mock data later from initializeAsync)\n initializeRooms(this)\n\n // Initialize simulation functionality (unified crafting, slots, actors)\n initializeSimulation(this, host)\n\n // Initialize asset loader functionality\n initializeAssetLoader(this, createProxiedMethod)\n }\n\n // Generate deterministic instance ID based on current page URL\n _generateDeterministicInstanceId() {\n try {\n // Get current URL and normalize it like H5IdUtils does\n let url = window.location.href || ''\n\n // Normalize URL to match H5IdUtils.normalizeAppUrl logic:\n // 1. Remove protocol, domain, port\n let normalizedUrl = url.replace(/^https?:\\/\\/[^\\/]+/, '')\n\n // 2. Remove query parameters and hash fragments\n normalizedUrl = normalizedUrl.split('?')[0].split('#')[0].trim()\n\n // 3. Ensure it starts with /H5/ for consistency\n if (\n !normalizedUrl.startsWith('/H5/') &&\n !normalizedUrl.startsWith('H5/')\n ) {\n // If it's just the app name, assume it's in /H5/\n if (!normalizedUrl.includes('/')) {\n normalizedUrl = `/H5/${normalizedUrl}/index.html`\n } else if (!normalizedUrl.startsWith('/')) {\n normalizedUrl = `/${normalizedUrl}`\n }\n }\n\n // Normalized URL for deterministic hashing\n\n // Create hash from normalized URL (same logic as H5IdUtils)\n let hash = 0\n for (let i = 0; i < normalizedUrl.length; i++) {\n const char = normalizedUrl.charCodeAt(i)\n hash = (hash << 5) - hash + char\n hash = hash & hash // Convert to 32-bit integer\n }\n\n // Convert to positive base36 and ensure 8 characters (same as H5IdUtils)\n const hashB36 = Math.abs(hash).toString(36)\n const paddedHash = hashB36.substring(0, 8).padEnd(8, '0')\n\n const deterministicId = `app-${paddedHash}`\n\n // Generated deterministic instance ID\n\n return deterministicId\n } catch (error) {\n console.error(\n '[Venus Bootstrap] Error generating deterministic ID, falling back to random:',\n error,\n )\n // Fallback to improved random ID if deterministic generation fails\n return 'app-' + Math.random().toString(36).substr(2, 8)\n }\n }\n\n //---------------------------------------\n // BOOTSTRAP METHODS\n //---------------------------------------\n\n _detectHostedEnvironment() {\n // Detecting hosted environment...\n console.log('[Venus SDK] Detecting host environment...')\n\n // Check if we're inside an iframe or WebView\n const isInIframe = window.self !== window.top\n const hasReactNativeWebView =\n typeof window.ReactNativeWebView !== 'undefined'\n\n this._bootstrap.isInsideHostedEnvironment =\n isInIframe || hasReactNativeWebView\n\n console.log(\n `[Venus SDK] isInIframe: ${isInIframe}, hasReactNativeWebView: ${hasReactNativeWebView}`,\n )\n }\n\n isMobile() {\n return typeof window.ReactNativeWebView !== 'undefined'\n }\n\n _initializeMockMode() {\n // Add any mock mode specific initialization here\n // console.log('[Venus Mock] Initializing mock mode');\n\n // Apply locale override if it was set during initialization\n if (this._mock.localeOverride) {\n // console.log('[Venus Mock] Applying locale override:', this._mock.localeOverride);\n this.config.locale = this._mock.localeOverride\n this.config.languageCode = this._mock.localeOverride.split('-')[0] // Extract language from locale\n // console.log('[Venus Mock] Updated locale:', this.config.locale, 'languageCode:', this.config.languageCode);\n }\n\n // Initialize rooms with mock data if provided\n if (this._mock.roomsData) {\n // console.log('[Venus Mock] Reinitializing rooms with mock data');\n initializeRooms(this, this._mock.roomsData)\n }\n }\n\n //---------------------------------------\n // PUBLIC API METHODS\n //---------------------------------------\n\n async initializeAsync(options = {}) {\n // If already initialized successfully, resolve immediately.\n if (this._shared.initialized) {\n // console.log('[Venus Bootstrap] initializeAsync called but already initialized. Resolving true.');\n return Promise.resolve(true)\n }\n\n if (this._shared.initPromise) {\n return this._shared.initPromise\n }\n\n this._shared.initPromise = new Promise(async (resolve) => {\n try {\n // Log unsupported parameters\n if (options) {\n const supportedRootParams = [\n 'hardDisableMock',\n 'mock',\n 'helpText',\n 'forceRemoteCdn',\n ]\n const supportedMockParams = [\n 'initDelay',\n 'isMobile',\n 'isWeb',\n 'locale',\n 'rooms',\n 'craftingConfig',\n 'onShowContext',\n 'onHideContext',\n ]\n\n // Check root level params\n Object.keys(options).forEach((param) => {\n if (!supportedRootParams.includes(param)) {\n this.log(`Unsupported parameter: ${param}`)\n }\n })\n\n // 🔧 CONSOLIDATED: Support legacy mockData for backward compatibility\n if (options.mockData && typeof options.mockData === 'object') {\n console.warn(\n '[Venus Mock] mockData is deprecated, use options.mock instead',\n )\n // Merge mockData into mock for backward compatibility\n options.mock = { ...options.mock, ...options.mockData }\n }\n\n // Check mock params if present\n if (options.mock && typeof options.mock === 'object') {\n Object.keys(options.mock).forEach((param) => {\n if (!supportedMockParams.includes(param)) {\n this.log(`Unsupported mock parameter: ${param}`)\n }\n })\n }\n\n // Store helpText in mock configuration if provided\n if (options.helpText && typeof options.helpText === 'string') {\n this._mock.helpText = options.helpText\n // console.log('[Venus Mock] Stored help text for later retrieval');\n }\n\n // Store forceRemoteCdn option if provided\n if (typeof options.forceRemoteCdn === 'boolean') {\n this._mock.forceRemoteCdn = options.forceRemoteCdn\n console.log(\n '[Venus Mock] Force remote CDN mode:',\n options.forceRemoteCdn,\n )\n }\n }\n\n await this.host.initialize()\n\n // If we're in a hosted environment, wait for Venus API to be injected\n if (this._bootstrap.isInsideHostedEnvironment) {\n this._shared.initialized = true\n resolve(true)\n return\n }\n\n // We're either in standalone mode or API injection failed\n // console.log('[Venus Bootstrap] Using mock implementation at', new Date().toISOString());\n\n // Get mock delay if specified\n const mockDelay = options.mock?.initDelay ?? 100\n this.log(`Using mock initialization delay: ${mockDelay}ms`)\n\n setTimeout(async () => {\n this._shared.initialized = true\n\n // Initialize mock mode\n this._initializeMockMode()\n\n resolve(true)\n }, mockDelay)\n } catch (err) {\n console.warn(\n '[Venus Bootstrap] Initialization error, falling back to mock mode',\n err,\n )\n\n // If hardDisableMock is true, don't fall back to mock\n if (options.hardDisableMock) {\n console.warn(\n '[Venus Bootstrap] hardDisableMock is true, not using mock.',\n )\n resolve(false)\n return\n }\n\n // Initialize mock mode\n this._initializeMockMode()\n\n setTimeout(async () => {\n this._shared.initialized = true\n\n resolve(true)\n }, 100)\n }\n })\n\n return this._shared.initPromise\n }\n}\n\n// Create singleton instance\nconst instance = new VenusAPI()\n\n// Export for module usage\nexport default instance\n\n// Also attach to window for non-module environments\nwindow.VenusAPI = instance\n\n// Export HapticStyle enum for H5 apps to use\ninstance.HapticStyle = HapticStyle\n\n// Add isAvailable utility method for H5 games\ninstance.isAvailable = function () {\n try {\n return !!(typeof window !== 'undefined' && window.VenusAPI) || !!this\n } catch {\n return false\n }\n}\n\n// Initialize core systems that should always be available\n;(async () => {\n try {\n // Initialize numbers system for exponential games\n await initializeNumbers(instance)\n console.log('[Venus SDK] Numbers system initialized')\n } catch (error) {\n console.error('[Venus SDK] Failed to initialize numbers system:', error)\n }\n})()\n","import { AnalyticsApi } from './AnalyticsApi.ts'\nimport { createMockDelay, MOCK_DELAYS } from '../venus-api/systems/core'\n\nexport class MockAnalyticsApi implements AnalyticsApi {\n async recordCustomEvent(\n eventName: string,\n payload: Record<string, any>,\n ): Promise<void> {\n console.log(\n `[Venus Mock] Logging event with ${eventName}, params ${payload}`,\n )\n await createMockDelay(MOCK_DELAYS.short)\n }\n\n async trackFunnelStep(stepNumber: number, stepName: string, funnelName?: string): Promise<void> {\n console.log(`[Venus Mock] tracking funnel step ${stepName} (step ${stepNumber}) for funnel ${funnelName ?? 'game'}`);\n await createMockDelay(MOCK_DELAYS.short)\n }\n}\n","import { AnalyticsApi } from './AnalyticsApi.ts'\nimport { RpcClient } from '../rpc'\nimport { VenusMessageId } from '../VenusMessageId.ts'\n\nexport class RpcAnalyticsApi implements AnalyticsApi {\n private readonly rpcClient: RpcClient\n\n constructor(rpcClient: RpcClient) {\n this.rpcClient = rpcClient\n }\n\n async recordCustomEvent(\n eventName: string,\n payload: Record<string, any>,\n ): Promise<void> {\n console.log(\n `[Venus SDK] [RpcAnalyticsApi] recordCustomEvent: ${eventName} payload:\\n${JSON.stringify(payload, null, 2)}`,\n )\n await this.rpcClient.call(VenusMessageId.LOG_ANALYTICS_EVENT, {\n eventName: eventName,\n params: payload,\n })\n }\n\n async trackFunnelStep(stepNumber: number, stepName: string, funnelName?: string): Promise<void> {\n console.log(\n `[Venus SDK] [RpcAnalyticsApi] trackFunnelStep: stepNumber: ${stepNumber} stepName: ${stepName} funnelName: ${funnelName}`,\n )\n await this.rpcClient.call(VenusMessageId.TRACK_FUNNEL_STEP, {\n stepNumber,\n stepName,\n funnelName,\n })\n }\n}\n","import { VenusAPI } from '../venus-api/types.ts'\nimport { Host } from '../Host.ts'\n\nexport * from './AnalyticsApi'\nexport * from './MockAnalyticsApi'\nexport * from './RpcAnalyticsApi'\n\nexport function initializeAnalytics(venusApiInstance: VenusAPI, host: Host) {\n venusApiInstance.logCustomEvent = async (options) => {\n const result = await host.analytics.recordCustomEvent(\n options.eventName,\n options.params,\n )\n }\n\n venusApiInstance.analytics = host.analytics\n}\n","// packages/api/src/iap/RpcIapApi.ts\nimport { IapApi, SpendCurrencyOptions } from './IapApi'\nimport { RpcClient } from '../rpc'\nimport { VenusMessageId } from '../VenusMessageId'\n\nexport class RpcIapApi implements IapApi {\n private readonly rpcClient: RpcClient\n\n constructor(rpcClient: RpcClient) {\n this.rpcClient = rpcClient\n }\n\n async getHardCurrencyBalance(): Promise<number> {\n const response = await this.rpcClient.call<number>(\n VenusMessageId.H5_IAP_GET_WALLET,\n )\n return response\n }\n\n async spendCurrency(\n productId: string,\n cost: number,\n options?: SpendCurrencyOptions,\n ): Promise<void> {\n const result = await this.rpcClient.callT<\n IapSpendCurrencyRequest,\n IapSpendCurrencyResult\n >(VenusMessageId.H5_IAP_SPEND_CURRENCY, {\n amount: cost,\n productId: productId,\n screenName: options?.screenName,\n })\n if (!result.success) {\n throw new Error(result.error)\n }\n }\n}\n\ninterface IapSpendCurrencyRequest {\n amount: number // Required: amount to spend\n productId: string // Required: unique identifier for the item being purchased\n screenName?: string // Optional: screen/route name where purchase occurred\n}\n\ninterface IapSpendCurrencyResult {\n success?: boolean\n error?: string\n}\n","import { IapApi, SpendCurrencyOptions } from './IapApi'\n\nexport class MockIapApi implements IapApi {\n private _hardCurrency: number = 100\n\n get hardCurrency(): number {\n return this._hardCurrency\n }\n\n set hardCurrency(value: number) {\n this._hardCurrency = value\n }\n\n async spendCurrency(\n productId: string,\n cost: number,\n options?: SpendCurrencyOptions,\n ): Promise<void> {\n console.log(`[Mock IAP] Spending ${cost} on ${productId})`)\n const remainingHardCurrency = this._hardCurrency - cost\n if (remainingHardCurrency < 0) {\n throw new Error(\n `Not enough hard currency. Expected ${cost}, found ${this._hardCurrency}`,\n )\n }\n this._hardCurrency = remainingHardCurrency\n }\n\n async getHardCurrencyBalance(): Promise<number> {\n console.log('[Mock IAP] get hard currency called')\n return this._hardCurrency\n }\n}\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 { ProfileApi } from './ProfileApi'\nimport { Profile } from '../venus-api/types'\n\nexport class HostProfileApi implements ProfileApi {\n getCurrentProfile(): Profile {\n // Return profile from config context if available\n if (window.venus._config && window.venus._config.profile) {\n return {\n id: window.venus._config.profile.id || 'unknown',\n name: window.venus._config.profile.username || 'Unknown User',\n username: window.venus._config.profile.username || 'unknown',\n }\n }\n\n // Fallback to mock profile\n return {\n id: 'mock_profile_123',\n name: 'Mock User',\n username: 'mockuser',\n }\n }\n}\n","import { ProfileApi } from './ProfileApi'\nimport { Profile } from '../venus-api/types'\n\nexport class MockProfileApi implements ProfileApi {\n getCurrentProfile(): Profile {\n return {\n id: 'mock_profile_123',\n name: 'Mock User',\n username: 'mockuser',\n }\n }\n}\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'\n\nexport class HostCdnApi implements CdnApi {\n private readonly baseUrl: string\n\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl\n }\n\n async fetchBlob(path: SubPath, options?: FetchBlobOptions): Promise<Blob> {\n const controller = new AbortController()\n const timeoutId = setTimeout(\n () => controller.abort(),\n options?.timeout ?? 30000,\n )\n\n try {\n const url = this.resolveAssetUrl(path)\n const response = await fetch(url, {\n mode: 'cors',\n credentials: 'omit',\n headers: { Accept: '/*' },\n signal: controller.signal,\n })\n\n clearTimeout(timeoutId)\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`)\n }\n\n return await response.blob()\n } catch (error) {\n clearTimeout(timeoutId)\n throw error\n }\n }\n\n async fetchFromCdn(url: string, request?: RequestInit): Promise<Response> {\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n Accept: 'application/json, text/plain, */*',\n 'Content-Type': 'application/json',\n },\n mode: 'cors',\n cache: 'no-cache',\n })\n\n if (!response.ok) {\n throw new Error(\n `CDN fetch failed: \\${response.status} \\${response.statusText}`,\n )\n }\n\n return response\n }\n\n getAssetCdnBaseUrl(): string {\n return this.baseUrl\n }\n\n resolveAssetUrl(subPath: string): string {\n // Clean up the subPath (remove leading slash if present)\n const cleanSubPath = subPath.startsWith('/') ? subPath.slice(1) : subPath\n\n // Split path into directory and filename parts, encode only filename to preserve directory structure\n const pathParts = cleanSubPath.split('/')\n const encodedParts = pathParts.map((part, index) => {\n // Only encode the filename (last part), keep directory names as-is for URL structure\n return index === pathParts.length - 1 ? encodeURIComponent(part) : part\n })\n const encodedSubPath = encodedParts.join('/')\n\n const fullUrl = this.baseUrl + '/' + encodedSubPath\n return fullUrl\n }\n\n resolveAvatarAssetUrl(subPath: string): string {\n // Prepend 'avatar3d/' to the subPath and resolve using the base method\n const avatarSubPath = 'avatar3d/' + subPath\n return this.resolveAssetUrl(avatarSubPath)\n }\n\n resolveSharedLibUrl(subPath: string): string {\n // Prepend 'libs/' to the subPath and resolve using the base method\n const libSubPath = 'libs/' + subPath\n return this.resolveAssetUrl(libSubPath)\n }\n}\n","import { CdnApi, FetchBlobOptions, SubPath } from './CdnApi'\n\nexport class MockCdnApi implements CdnApi {\n private readonly baseUrl: string\n\n constructor() {\n this.baseUrl = 'https://venus-static-01293ak.web.app/'\n }\n\n async fetchBlob(path: SubPath, options?: FetchBlobOptions): Promise<Blob> {\n const controller = new AbortController()\n const timeoutId = setTimeout(\n () => controller.abort(),\n options?.timeout ?? 30000,\n )\n\n try {\n const url = this.resolveAssetUrl(path)\n const response = await fetch(url, {\n mode: 'cors',\n credentials: 'omit',\n headers: { Accept: '/*' },\n signal: controller.signal,\n })\n\n clearTimeout(timeoutId)\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`)\n }\n\n return await response.blob()\n } catch (error) {\n clearTimeout(timeoutId)\n throw error\n }\n }\n\n getAssetCdnBaseUrl(): string {\n return this.baseUrl\n }\n\n resolveAssetUrl(subPath: string): string {\n // If subPath is already a full URL, return it as-is\n if (subPath.startsWith('http://') || subPath.startsWith('https://')) {\n // Input is already a full URL\n return subPath\n }\n\n if (subPath.startsWith('cdn/')) {\n return subPath\n }\n\n // Clean up the subPath (remove leading slash if present)\n const cleanSubPath = subPath.startsWith('/') ? subPath.slice(1) : subPath\n\n // Split path into directory and filename parts, encode only filename to preserve directory structure\n const pathParts = cleanSubPath.split('/')\n const encodedParts = pathParts.map((part, index) => {\n // Only encode the filename (last part), keep directory names as-is for URL structure\n return index === pathParts.length - 1 ? encodeURIComponent(part) : part\n })\n const encodedSubPath = encodedParts.join('/')\n\n // Construct the full URL\n const fullUrl = `${this.baseUrl}${encodedSubPath}`\n\n // Resolved asset URL\n return fullUrl\n }\n\n resolveAvatarAssetUrl(subPath: string): string {\n // If subPath is already a full URL, return it as-is\n if (subPath.startsWith('http://') || subPath.startsWith('https://')) {\n // Avatar asset input is already a full URL\n return subPath\n }\n\n // Prepend 'avatar3d/' to the subPath and resolve using the base method\n const avatarSubPath = `avatar3d/${subPath}`\n return this.resolveAssetUrl(avatarSubPath)\n }\n\n resolveSharedLibUrl(subPath: string): string {\n // If subPath is already a full URL, return it as-is\n if (subPath.startsWith('http://') || subPath.startsWith('https://')) {\n // Shared lib input is already a full URL\n return subPath\n }\n\n // Prepend 'libs/' to the subPath and resolve using the base method\n const libSubPath = `libs/${subPath}`\n return this.resolveAssetUrl(libSubPath)\n }\n\n async fetchFromCdn(url: string, options?: RequestInit): Promise<Response> {\n // Fetching from network\n\n // Security validation - only allow trusted CDN domains\n const allowedDomains = [\n 'venus-static-01293ak.web.app',\n 'firebasestorage.googleapis.com',\n 'cdn.venusapp.com',\n 'storage.googleapis.com',\n ]\n let urlObj: URL | null = null\n\n try {\n let isAllowed = true\n\n if (url.startsWith('http://') || url.startsWith('https://')) {\n urlObj = new URL(url)\n isAllowed = allowedDomains.some(\n (domain) =>\n urlObj!.hostname === domain ||\n urlObj!.hostname.endsWith('.' + domain),\n )\n\n if (!isAllowed) {\n const error = `Domain not allowed: ${urlObj.hostname}. Allowed domains: ${allowedDomains.join(', ')}`\n console.error('[Venus Network Mock] Security error:', error)\n throw new Error(error)\n }\n } else {\n // In development mode, let relative URLs be handled naturally by the browser/dev server\n // Using relative URL as-is in development mode\n // Don't convert to absolute URL - let fetch handle the relative URL\n urlObj = null // We'll use the original URL directly\n }\n\n const fetchUrl = urlObj ? urlObj.href : url\n // Making request\n\n const response = await fetch(fetchUrl, {\n method: options?.method || 'GET',\n headers: {\n Accept: 'text/plain, application/octet-stream, application/json, */*',\n ...options?.headers,\n },\n cache: options?.cache || 'default',\n mode: 'cors',\n })\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`)\n }\n\n // Fetch successful\n return response\n } catch (error) {\n // CORS Fallback for mock\n if (\n error instanceof Error &&\n error.message &&\n (error.message.includes('CORS') ||\n error.message.includes('preflight') ||\n error.message.includes('Access-Control') ||\n error.message.includes('cache-control'))\n ) {\n // CORS error detected, trying minimal fetch\n\n try {\n const fallbackUrl = urlObj ? urlObj.href : url\n const fallbackResponse = await fetch(fallbackUrl, {\n method: 'GET',\n mode: 'cors',\n cache: 'default',\n })\n\n if (!fallbackResponse.ok) {\n throw new Error(\n `HTTP ${fallbackResponse.status}: ${fallbackResponse.statusText}`,\n )\n }\n\n const fallbackText = await fallbackResponse.text()\n\n // CORS fallback fetch successful\n return fallbackResponse\n } catch (fallbackError) {\n console.error(\n '[Venus Network Mock] CORS fallback also failed (from network.js):',\n {\n url,\n originalError: error.message,\n fallbackError: fallbackError,\n timestamp: new Date().toISOString(),\n },\n )\n throw new Error(\n `CORS error: ${error.message}. Fallback also failed: ${fallbackError}`,\n )\n }\n }\n\n console.error('[Venus Network Mock] Fetch failed (from network.js):', {\n url,\n error: error,\n timestamp: new Date().toISOString(),\n })\n throw error\n }\n }\n}\n","import { VenusAPI } from '../venus-api/types'\nimport { Host } from '../Host'\n\nexport * from './CdnApi'\nexport * from './HostCdnApi'\nexport * from './MockCdnApi'\n\nexport function initializeCdn(venusApi: VenusAPI, host: Host) {\n // Core asset URL resolver\n venusApi.resolveAssetUrl = function (subPath) {\n return host.cdn.resolveAssetUrl(subPath)\n }\n\n // Avatar-specific asset URL resolver that prepends 'avatar3d/' to the subPath\n venusApi.resolveAvatarAssetUrl = function (subPath) {\n return host.cdn.resolveAvatarAssetUrl(subPath)\n }\n\n // Shared library URL resolver that prepends 'libs/' to the subPath\n venusApi.resolveSharedLibUrl = function (subPath) {\n return host.cdn.resolveSharedLibUrl(subPath)\n }\n\n // Helper method to get the base CDN URL\n venusApi.getAssetCdnBaseUrl = function () {\n return host.cdn.getAssetCdnBaseUrl()\n }\n\n venusApi.fetchFromCdn = (url: string, options?: RequestInit) => {\n return host.cdn.fetchFromCdn(url, options)\n }\n\n venusApi.cdn = host.cdn\n}\n","import {\n OpenCommentsResult,\n PostApi,\n PostInfo,\n ShareContext,\n SharePostResult,\n ToggleFollowResult,\n ToggleLikeResult,\n} from './PostApi'\nimport { createMockDelay, MOCK_DELAYS } from '../venus-api/systems/core'\nimport { VenusAPI } from '../venus-api/types'\n\nexport class MockPostApi implements PostApi {\n private readonly venusApi: VenusAPI\n\n constructor(venusApi: VenusAPI) {\n this.venusApi = venusApi\n }\n\n async getPostInfo(): Promise<PostInfo> {\n const venusApi = this.venusApi\n\n await createMockDelay(MOCK_DELAYS.short)\n\n return venusApi._mock.currentPostInteractions\n }\n\n async openCommentsAsync(): Promise<OpenCommentsResult> {\n // console.log('[Venus Mock] Opening comments with options:', options);\n await createMockDelay(MOCK_DELAYS.short)\n\n return {\n opened: true,\n commentsCount: 0,\n }\n }\n\n async sharePostAsync(context: ShareContext): Promise<SharePostResult> {\n console.log('[Venus Mock] Sharing post with additionalInfo:', context)\n await createMockDelay(MOCK_DELAYS.short)\n return {\n shared: true,\n platform: 'mock',\n }\n }\n\n async toggleFollowAsync(): Promise<ToggleFollowResult> {\n const venusApi = this.venusApi\n\n console.log('[Venus Mock] *Toggling follow status')\n await createMockDelay(MOCK_DELAYS.short)\n\n // Toggle following state\n venusApi._mock.currentPostInteractions.isFollowing =\n !venusApi._mock.currentPostInteractions.isFollowing\n\n const isFollowing = venusApi._mock.currentPostInteractions.isFollowing\n\n // Return direct data, not wrapped in success object\n return {\n isFollowing: isFollowing,\n action: isFollowing ? 'followed' : 'unfollowed',\n }\n }\n\n async toggleLikeAsync(): Promise<ToggleLikeResult> {\n const venusApi = this.venusApi\n\n await createMockDelay(MOCK_DELAYS.short)\n\n // Toggle like state and update count\n venusApi._mock.currentPostInteractions.isLiked =\n !venusApi._mock.currentPostInteractions.isLiked\n\n const isLiked = venusApi._mock.currentPostInteractions.isLiked\n\n if (isLiked) {\n venusApi._mock.currentPostInteractions.likesCount++\n } else {\n venusApi._mock.currentPostInteractions.likesCount = Math.max(\n 0,\n venusApi._mock.currentPostInteractions.likesCount - 1,\n )\n }\n\n // Return direct data, not wrapped in success object\n return {\n isLiked: isLiked,\n likesCount: venusApi._mock.currentPostInteractions.likesCount,\n action: isLiked ? 'liked' : 'unliked',\n }\n }\n}\n","import {\n OpenCommentsResult,\n PostApi,\n PostInfo,\n ShareContext,\n SharePostResult,\n ToggleFollowResult,\n ToggleLikeResult,\n} from './PostApi'\nimport { RpcClient } from '../rpc'\nimport { VenusMessageId } from '../VenusMessageId'\n\nexport class RpcPostApi implements PostApi {\n private readonly rpcClient: RpcClient\n\n constructor(rpcClient: RpcClient) {\n this.rpcClient = rpcClient\n }\n\n getPostInfo(): Promise<PostInfo> {\n return this.rpcClient.call(VenusMessageId.GET_POST_INTERACTIONS, {})\n }\n\n openCommentsAsync(): Promise<OpenCommentsResult> {\n return this.rpcClient.call(VenusMessageId.OPEN_COMMENTS, {})\n }\n\n sharePostAsync(context: ShareContext): Promise<SharePostResult> {\n return this.rpcClient.call(VenusMessageId.SHARE_POST, {\n shareContext: context,\n })\n }\n\n toggleFollowAsync(): Promise<ToggleFollowResult> {\n return this.rpcClient.call<ToggleFollowResult>(\n VenusMessageId.TOGGLE_FOLLOW,\n {},\n )\n }\n\n toggleLikeAsync(): Promise<ToggleLikeResult> {\n return this.rpcClient.call<ToggleLikeResult>(VenusMessageId.TOGGLE_LIKE, {})\n }\n}\n","import { VenusAPI } from '../venus-api/types'\nimport { Host } from '../Host'\n\nexport * from './PostApi'\nexport * from './MockPostApi'\nexport * from './RpcPostApi'\n\nexport function initializePost(venusApi: VenusAPI, host: Host) {\n venusApi.getPostInteractionsAsync = () => {\n return host.post.getPostInfo()\n }\n\n venusApi.toggleFollowAsync = () => {\n return host.post.toggleFollowAsync()\n }\n\n venusApi.toggleLikeAsync = () => {\n return host.post.toggleLikeAsync()\n }\n\n venusApi.sharePostAsync = async (options) => {\n await host.post.sharePostAsync(options)\n }\n\n venusApi.openCommentsAsync = async () => {\n await host.post.openCommentsAsync()\n }\n}\n","import { HapticFeedbackStyle, HapticsApi } from './HapticsApi'\nimport { RpcClient } from '../rpc'\nimport { VenusMessageId } from '../VenusMessageId'\n\nexport class RpcHapticsApi implements HapticsApi {\n private readonly rpcClient: RpcClient\n\n constructor(rpcClient: RpcClient) {\n this.rpcClient = rpcClient\n }\n\n async triggerHapticAsync(style: HapticFeedbackStyle): Promise<void> {\n await this.rpcClient.call(VenusMessageId.TRIGGER_HAPTIC, {\n style: style,\n })\n }\n}\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'\nimport { RpcClient } from '../rpc'\nimport { VenusMessageId } from '../VenusMessageId'\n\nexport class RpcFeaturesApi implements FeaturesApi {\n private readonly rpcClient: RpcClient\n\n constructor(rcpClient: RpcClient) {\n this.rpcClient = rcpClient\n }\n\n async getExperiment(experimentName: string): Promise<Experiment | null> {\n console.log('[Venus] Getting Experiment', experimentName)\n return await this.rpcClient.call(VenusMessageId.GET_EXPERIMENT, {\n experimentName: experimentName,\n })\n }\n\n async getFeatureFlag(flagName: string): Promise<boolean> {\n console.log('[Venus] Getting Feature Flag', flagName)\n return await this.rpcClient.call(VenusMessageId.GET_FEATURE_FLAG, {\n flagName: flagName,\n })\n }\n\n async getFeatureGate(gateName: string): Promise<boolean> {\n console.log('[Venus] Getting Feature Gate', gateName)\n return await this.rpcClient.call(VenusMessageId.GET_FEATURE_GATE, {\n gateName: gateName,\n })\n }\n}\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 {\n LifecycleApi,\n OnCleanupCallback,\n OnHideCallback,\n OnPauseCallback,\n OnPlayCallback,\n OnQuitCallback,\n OnResumeCallback,\n OnShowCallback,\n PlayContext,\n ShowContext,\n} from './LifecycleApi'\n\nexport class MockLifecycleApi implements LifecycleApi {\n private playCallbacks: OnPlayCallback[] = []\n private pauseCallbacks: OnPauseCallback[] = []\n private resumeCallbacks: OnResumeCallback[] = []\n private quitCallbacks: OnQuitCallback[] = []\n private showCallbacks: OnShowCallback[] = []\n private hideCallbacks: OnHideCallback[] = []\n\n onCleanup(callback: OnCleanupCallback): void {}\n\n onShow(callback: OnShowCallback): void {\n this.showCallbacks.push(callback)\n }\n\n onHide(callback: OnHideCallback): void {\n this.hideCallbacks.push(callback)\n }\n\n onPause(callback: OnPauseCallback): void {\n this.pauseCallbacks.push(callback)\n }\n\n onPlay(callback: OnPlayCallback): void {\n this.playCallbacks.push(callback)\n }\n\n onQuit(callback: OnQuitCallback): void {\n this.quitCallbacks.push(callback)\n }\n\n onResume(callback: OnResumeCallback): void {\n this.resumeCallbacks.push(callback)\n }\n\n triggerOnPlayCallbacks(context: PlayContext) {\n for (const callback of this.playCallbacks) {\n callback(context)\n }\n }\n\n triggerOnPauseCallbacks() {\n for (const callback of this.pauseCallbacks) {\n callback()\n }\n }\n\n triggerOnResumeCallbacks() {\n for (const callback of this.resumeCallbacks) {\n callback()\n }\n }\n\n triggerOnShowCallbacks(context: ShowContext) {\n for (const callback of this.showCallbacks) {\n callback(context)\n }\n }\n\n triggerOnHideCallbacks() {\n for (const callback of this.hideCallbacks) {\n callback()\n }\n }\n\n triggerOnQuitCallbacks() {\n for (const callback of this.quitCallbacks) {\n callback()\n }\n }\n}\n","import {\n LifecycleApi,\n OnCleanupCallback,\n OnHideCallback,\n OnPauseCallback,\n OnPlayCallback,\n OnQuitCallback,\n OnResumeCallback,\n OnShowCallback,\n} from './LifecycleApi'\nimport { VenusMessageId } from '../VenusMessageId'\nimport { RpcClient } from '../rpc'\n\nexport class RpcLifecycleApi implements LifecycleApi {\n private readonly rpcClient: RpcClient\n\n constructor(rpcClient: RpcClient) {\n this.rpcClient = rpcClient\n }\n\n onCleanup(callback: OnCleanupCallback): void {\n //window.venus._config._handlers[VenusMethods.CLEANUP] = callback\n this.rpcClient.onNotification(VenusMessageId.CLEANUP, callback)\n }\n\n onHide(callback: OnHideCallback): void {\n //window.venus._config._handlers[VenusMethods.HIDDEN] = callback\n this.rpcClient.onNotification(VenusMessageId.HIDDEN, callback)\n }\n\n onPause(callback: OnPauseCallback): void {\n // window.venus._config._handlers[VenusMethods.PAUSE] = callback\n this.rpcClient.onNotification(VenusMessageId.PAUSE, callback)\n }\n\n onPlay(callback: OnPlayCallback): void {\n // window.venus._config._handlers[VenusMethods.PLAY] = callback\n this.rpcClient.onNotification(VenusMessageId.PLAY, callback)\n }\n\n onQuit(callback: OnQuitCallback): void {\n //window.venus._config._handlers[VenusMethods.QUIT] = callback\n this.rpcClient.onNotification(VenusMessageId.QUIT, callback)\n }\n\n onResume(callback: OnResumeCallback): void {\n //window.venus._config._handlers[VenusMethods.RESUME] = callback\n this.rpcClient.onNotification(VenusMessageId.RESUME, callback)\n }\n\n onShow(callback: OnShowCallback): void {\n // window.venus._config._handlers[VenusMethods.SHOWN] = callback\n this.rpcClient.onNotification(VenusMessageId.SHOWN, callback)\n }\n}\n","import { VenusAPI } from '../venus-api/types'\nimport { Host } from '../Host'\n\nexport * from './LifecycleApi'\nexport * from './MockLifecycleApi'\nexport * from './RpcLifecycleApi'\n\nexport function initializeLifecycleApi(venusApi: VenusAPI, host: Host) {\n venusApi.onPlay = (callback) => {\n host.lifecycle.onPlay(callback)\n }\n\n venusApi.onPause = (callback) => {\n host.lifecycle.onPause(callback)\n }\n\n venusApi.onResume = (callback) => {\n host.lifecycle.onResume(callback)\n }\n\n venusApi.onShow = (callback) => {\n host.lifecycle.onShow(callback)\n }\n\n venusApi.onHide = (callback) => {\n host.lifecycle.onHide(callback)\n }\n\n venusApi.onQuit = (callback) => {\n host.lifecycle.onQuit(callback)\n }\n\n venusApi.onCleanup = (callback) => {\n host.lifecycle.onCleanup(callback)\n }\n}\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 {\n CollectRecipeResult,\n ExecuteRecipeOptions,\n ExecuteScopedRecipeResult,\n GetActiveRunsOptions,\n GetAvailableRecipesOptions,\n GetAvailableRecipesResult,\n GetBatchRecipeRequirements,\n Recipe,\n SimulationApi,\n TriggerRecipeChainOptions,\n} from './SimulationApi'\nimport { RpcClient } from '../rpc'\nimport { VenusMessageId } from '../VenusMessageId'\nimport { VenusSimulationConfig } from '../venus-api/types'\nimport { sumContributions } from './utils'\n\nexport class RpcSimulationApi implements SimulationApi {\n private readonly rpcClient: RpcClient\n private _simulationConfig: VenusSimulationConfig | null = null\n\n constructor(rpcClient: RpcClient) {\n this.rpcClient = rpcClient\n }\n async validateSlotAssignmentAsync(\n containerId: string,\n slotId: string,\n itemId: string,\n ): Promise<any> {\n return this.rpcClient.call(\n VenusMessageId.H5_SIMULATION_VALIDATE_ASSIGNMENT,\n {\n containerId,\n slotId,\n itemId,\n },\n )\n }\n\n sumContributions(contributions: Record<string, any>): Record<string, number> {\n return sumContributions(contributions)\n }\n\n executeBatchOperationsAsync(\n operations: Array<any>,\n validateOnly?: boolean,\n ): Promise<any> {\n return this.rpcClient.call(VenusMessageId.H5_SIMULATION_BATCH_OPERATIONS, {\n operations,\n validateOnly,\n })\n }\n async getAvailableItemsAsync(\n containerId: string,\n slotId: string,\n ): Promise<Array<any>> {\n const response = await this.rpcClient.call<any>(\n VenusMessageId.H5_SIMULATION_GET_AVAILABLE_ITEMS,\n {\n containerId,\n slotId,\n },\n )\n return response.availableItems || []\n }\n calculatePowerPreviewAsync(\n containerId: string,\n slotId: string,\n candidateItemId: string,\n ): Promise<any> {\n return this.rpcClient.call(\n VenusMessageId.H5_SIMULATION_CALCULATE_POWER_PREVIEW,\n {\n containerId,\n slotId,\n candidateItemId,\n },\n )\n }\n assignItemToSlotAsync(\n containerId: string,\n slotId: string,\n itemId: string,\n ): Promise<any> {\n return this.rpcClient.call(VenusMessageId.H5_SIMULATION_ASSIGN_ITEM, {\n containerId,\n slotId,\n itemId,\n })\n }\n\n removeItemFromSlotAsync(containerId: string, slotId: string): Promise<any> {\n return this.rpcClient.call(VenusMessageId.H5_SIMULATION_REMOVE_ITEM, {\n containerId,\n slotId,\n })\n }\n\n async getSlotContainersAsync(): Promise<any> {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_SIMULATION_GET_CONTAINERS,\n {},\n )\n return response.containers || []\n }\n\n async getSlotAssignmentsAsync(containerId: string): Promise<any> {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_SIMULATION_GET_ASSIGNMENTS,\n {\n containerId,\n },\n )\n // Server returns raw array, not wrapped in .assignments property\n return Array.isArray(response) ? response : response.assignments || []\n }\n\n async getStateAsync(roomId?: string): Promise<any> {\n const response = await this.rpcClient.call<any>(\n VenusMessageId.H5_SIMULATION_GET_STATE,\n {\n roomId: roomId,\n },\n )\n\n console.log('[Venus SDK] getStateAsync', response)\n // Cache configuration if included in response\n if (response.configuration) {\n this._simulationConfig = response.configuration\n }\n return response\n }\n\n async getConfigAsync(roomId?: string): Promise<VenusSimulationConfig> {\n if (this._simulationConfig) {\n return this._simulationConfig\n }\n\n // Fetch configuration directly\n const config = await this.rpcClient.call<VenusSimulationConfig>(\n VenusMessageId.H5_SIMULATION_GET_CONFIG,\n {},\n )\n console.log('[Venus SDK] getConfigAsync', config)\n if (config) {\n this._simulationConfig = config\n return config\n }\n\n throw new Error('No simulation configuration available')\n }\n\n executeRecipeAsync(\n recipeId: string,\n inputs?: any,\n options?: ExecuteRecipeOptions,\n ): Promise<any> {\n return this.rpcClient.call(VenusMessageId.H5_SIMULATION_EXECUTE_RECIPE, {\n recipeId: recipeId,\n inputs: inputs,\n roomId: options?.roomId,\n batchAmount: options?.batchAmount,\n allowPartialBatch: options?.allowPartialBatch,\n entity: options?.entity,\n })\n }\n\n collectRecipeAsync(runId: string): Promise<CollectRecipeResult> {\n return this.rpcClient.call(VenusMessageId.H5_SIMULATION_COLLECT_RECIPE, {\n runId: runId,\n })\n }\n\n getActiveRunsAsync(options?: GetActiveRunsOptions): Promise<any> {\n return this.rpcClient.call(VenusMessageId.H5_SIMULATION_GET_ACTIVE_RUNS, {\n roomId: options?.roomId,\n })\n }\n\n executeScopedRecipeAsync(\n recipeId: string,\n entity: string,\n inputs?: any,\n options?: any,\n ): Promise<ExecuteScopedRecipeResult> {\n return this.rpcClient.call(\n VenusMessageId.H5_SIMULATION_EXECUTE_SCOPED_RECIPE,\n {\n recipeId: recipeId,\n entity: entity,\n inputs: inputs,\n roomId: options?.roomId ?? null,\n options,\n },\n )\n }\n\n getAvailableRecipesAsync(\n options?: GetAvailableRecipesOptions,\n ): Promise<GetAvailableRecipesResult> {\n return this.rpcClient.call(\n VenusMessageId.H5_SIMULATION_GET_AVAILABLE_RECIPES,\n {\n roomId: options?.roomId || null,\n includeActorRecipes: options?.includeActorRecipes || false,\n },\n )\n }\n\n getRecipeRequirementsAsync(recipe: Recipe): Promise<any> {\n return this.rpcClient.call(\n VenusMessageId.H5_SIMULATION_GET_RECIPE_REQUIREMENTS,\n {\n recipeId: recipe.recipeId,\n entity: recipe.entity,\n batchAmount: recipe.batchAmount,\n },\n )\n }\n\n getBatchRecipeRequirementsAsync(\n recipes: Recipe[],\n ): Promise<GetBatchRecipeRequirements> {\n return this.rpcClient.call(\n VenusMessageId.H5_SIMULATION_GET_BATCH_RECIPE_REQUIREMENTS,\n {\n recipes,\n },\n )\n }\n\n triggerRecipeChainAsync(\n recipeId: string,\n options?: TriggerRecipeChainOptions,\n ): Promise<any> {\n return this.rpcClient.call(\n VenusMessageId.H5_SIMULATION_TRIGGER_RECIPE_CHAIN,\n {\n triggerRecipeId: recipeId,\n context: options?.context,\n roomId: options?.roomId,\n },\n )\n }\n\n getEntityMetadataAsync(entityId: string): Promise<any> {\n return this.rpcClient.call(\n VenusMessageId.H5_SIMULATION_GET_ENTITY_METADATA,\n {\n entityId,\n },\n )\n }\n\n async resolveFieldValueAsync(\n entityId: string,\n fieldPath: string,\n entity?: string,\n ): Promise<any> {\n const response = await this.rpcClient.call<ResolveFieldValueResponse>(\n VenusMessageId.H5_SIMULATION_RESOLVE_VALUE,\n {\n entityId,\n fieldPath,\n entity,\n },\n )\n // Extract primitive value from server response wrapper\n return response.value\n }\n}\n\ninterface ResolveFieldValueResponse {\n value: any\n}\n","import {\n CollectRecipeResult,\n ExecuteRecipeOptions,\n ExecuteScopedRecipeResult,\n GetActiveRunsOptions,\n GetAvailableRecipesOptions,\n GetAvailableRecipesResult,\n GetBatchRecipeRequirements,\n Recipe,\n SimulationApi,\n TriggerRecipeChainOptions,\n} from './SimulationApi'\nimport {\n RecipeRequirementResult,\n VenusSimulationConfig,\n VenusSimulationEffect,\n VenusSimulationState,\n} from '../venus-api/types'\nimport { sumContributions } from './utils'\n\nfunction generateAppIdentifier() {\n if (typeof window === 'undefined') return 'unknown-app'\n\n const url = window.location.href\n // Extract app ID from URL path like /H5/farming-game/index.html\n const match = url.match(/\\/H5\\/([^\\/]+)/)\n return match ? match[1] : 'unknown-app'\n}\n\nexport class MockSimulationApi implements SimulationApi {\n private readonly mockSimulationConfigs = new Map<\n string,\n VenusSimulationConfig\n >() // appIdentifier -> config\n private readonly mockSimulationStates = new Map<\n string,\n VenusSimulationState\n >() // appIdentifier -> config\n private readonly mockActiveTimers = new Map() // appIdentifier -> timers[]\n private readonly appId: string\n private readonly providedSimulationConfig: VenusSimulationConfig | null\n\n constructor(simulationConfig: VenusSimulationConfig | null = null) {\n this.appId = generateAppIdentifier()\n this.providedSimulationConfig = simulationConfig\n }\n\n sumContributions(contributions: Record<string, any>): Record<string, number> {\n return sumContributions(contributions)\n }\n\n async validateSlotAssignmentAsync(\n containerId: string,\n slotId: string,\n itemId: string,\n ): Promise<any> {\n this.log('validateSlotAssignmentAsync called:', {\n containerId,\n slotId,\n itemId,\n })\n return { valid: true, message: 'Mock validation successful' }\n }\n async executeBatchOperationsAsync(\n operations: Array<any>,\n validateOnly?: boolean,\n ): Promise<any> {\n this.log('executeBatchOperationsAsync called:', {\n operations,\n validateOnly,\n })\n return {\n success: true,\n results: operations.map(() => ({ success: true })),\n }\n }\n async getAvailableItemsAsync(\n containerId: string,\n slotId: string,\n ): Promise<Array<any>> {\n console.log('[Venus Simulation Mock] getAvailableItemsAsync called:', {\n containerId,\n slotId,\n })\n const appIdentifier = generateAppIdentifier()\n const mockSimulationConfigs = this.mockSimulationConfigs\n const config = mockSimulationConfigs.get(appIdentifier) || {\n entities: {},\n }\n\n // Mock: return some available items based on config\n const availableItems = Object.entries(config.entities)\n .slice(0, 3) // Mock: limit to first 3 entities\n .map(([entityId, entity]) => ({\n entityId,\n quantity: 1,\n metadata: entity.metadata,\n powerPreview: 100, // Mock power value\n }))\n\n return availableItems\n }\n async calculatePowerPreviewAsync(\n containerId: string,\n slotId: string,\n candidateItemId: string,\n ): Promise<any> {\n this.log('calculatePowerPreviewAsync called:', {\n containerId,\n slotId,\n candidateItemId,\n })\n return {\n currentPower: 1000,\n previewPower: 1200,\n powerDelta: 200,\n breakdown: { base: 800, weapon: 200, armor: 200 },\n }\n }\n\n async getSlotContainersAsync(): Promise<any> {\n this.log('getSlotContainersAsync called')\n const appIdentifier = this.appId\n const mockSimulationConfigs = this.mockSimulationConfigs\n const config = mockSimulationConfigs.get(appIdentifier) || {\n entities: {},\n }\n\n // Find entities with slot definitions\n const containers = Object.entries(config.entities)\n .filter(([_, entity]) => entity.metadata?.slots)\n .map(([entityId, entity]) => ({\n entityId,\n slots: entity.metadata?.slots,\n isOwned: true, // Mock: assume all containers are owned\n }))\n\n return containers\n }\n async getSlotAssignmentsAsync(containerId: string): Promise<any> {\n this.log('getSlotAssignmentsAsync called for:', containerId)\n // Mock: return empty assignments\n return []\n }\n async resolveFieldValueAsync(\n entityId: string,\n fieldPath: string,\n entity?: string,\n ): Promise<any> {\n this.log('resolveFieldValueAsync called:', {\n entityId,\n fieldPath,\n entity,\n })\n\n // Mock: return some reasonable field values\n const mockValues: Record<string, number> = {\n basePower: 850,\n weaponPower: 300,\n armorPower: 150,\n total_power: 1300,\n total_defense_power: 5000,\n }\n\n return mockValues[fieldPath] || 100\n }\n async getEntityMetadataAsync(entityId: string): Promise<any> {\n this.log('getEntityMetadataAsync called for:', entityId)\n const mockSimulationConfigs = this.mockSimulationConfigs\n const appIdentifier = this.appId\n const config: VenusSimulationConfig = mockSimulationConfigs.get(\n appIdentifier,\n ) || {\n entities: {},\n recipes: {},\n fieldResolution: {},\n version: '0.0.0',\n matchmaking: {},\n }\n\n const entity = config.entities[entityId]\n return entity?.metadata || {}\n }\n\n async collectRecipeAsync(runId: string): Promise<CollectRecipeResult> {\n this.log('collectRecipeAsync called:', { runId })\n\n // Mock successful collection with sample rewards\n const mockRewards = {\n cash: Math.floor(Math.random() * 1000) + 500,\n experience: Math.floor(Math.random() * 50) + 25,\n }\n\n return {\n success: true,\n runId: runId,\n rewards: mockRewards,\n message: 'Rewards collected successfully',\n }\n }\n\n executeRecipeAsync(\n recipeId: string,\n inputs?: any,\n options?: ExecuteRecipeOptions,\n ): Promise<any> {\n this.log('executeRecipeAsync called:', {\n recipeId,\n inputs,\n options,\n })\n const appIdentifier = this.appId\n return this.executeRecipe(appIdentifier, recipeId, inputs)\n }\n\n async executeScopedRecipeAsync(\n recipeId: string,\n entity: string,\n inputs?: any,\n options?: any,\n ): Promise<ExecuteScopedRecipeResult> {\n this.log('executeScopedRecipeAsync called:', {\n recipeId,\n entity,\n inputs,\n roomId: options?.roomId,\n options,\n })\n return {\n success: true,\n message: 'Mock scoped recipe execution successful',\n }\n }\n\n async getActiveRunsAsync(options?: GetActiveRunsOptions): Promise<any> {\n this.log('getActiveRunsAsync called:', options)\n const appIdentifier = this.appId\n\n let state = this.mockSimulationStates.get(appIdentifier)\n if (!state) {\n state = await this.initializeSimulationState(appIdentifier)\n }\n\n return state.activeRuns || []\n }\n\n async getAvailableRecipesAsync(\n options?: GetAvailableRecipesOptions,\n ): Promise<GetAvailableRecipesResult> {\n this.log('getAvailableRecipesAsync called:', options)\n\n // Mock available recipes based on context\n const baseRecipes = [\n { id: 'collect_resources', scope: 'player', clientViewable: true },\n { id: 'upgrade_equipment', scope: 'player', clientViewable: true },\n ]\n\n if (options?.roomId) {\n baseRecipes.push(\n { id: 'room_upgrade', scope: 'room', clientViewable: true },\n { id: 'cooperative_project', scope: 'room', clientViewable: true },\n )\n }\n\n if (options?.includeActorRecipes && options?.roomId) {\n baseRecipes.push(\n { id: 'trade_with_npc', scope: 'actor', clientViewable: true },\n { id: 'attack_monster', scope: 'actor', clientViewable: true },\n )\n }\n\n return { success: true, recipes: baseRecipes }\n }\n\n async getBatchRecipeRequirementsAsync(\n recipes: Recipe[],\n ): Promise<GetBatchRecipeRequirements> {\n this.log('getBatchRecipeRequirementsAsync called:', {\n count: recipes?.length,\n })\n const results = (recipes || []).map((q) => ({\n recipeId: q.recipeId,\n entity: q.entity || null,\n amount: q.batchAmount || 1,\n inputs: { cash: 'BE:0' },\n canAfford: true,\n disabled: false,\n }))\n return { success: true, results: results }\n }\n\n async getRecipeRequirementsAsync(\n recipe: Recipe,\n ): Promise<RecipeRequirementResult> {\n this.log('getRecipeRequirementsAsync called:', recipe)\n // Return minimal structure similar to server response for single\n return {\n recipeId: recipe.recipeId,\n entity: recipe.entity || null,\n amount: recipe.batchAmount,\n inputs: { cash: 'BE:0' },\n canAfford: true,\n disabled: false,\n }\n }\n\n async triggerRecipeChainAsync(\n recipeId: string,\n options?: TriggerRecipeChainOptions,\n ): Promise<any> {\n this.log('triggerRecipeChainAsync called:', { recipeId, ...options })\n return {\n success: true,\n message: 'Mock recipe chain triggered successfully',\n }\n }\n\n private log(message: string, ...args: any): void {\n console.log(`[Venus Sim Mock] ${message}`, args)\n }\n\n private async executeRecipe(\n appIdentifier: string,\n recipeId: string,\n inputs: any,\n ) {\n this.log(`Executing recipe ${recipeId} for ${appIdentifier}`, inputs)\n\n const mockSimulationConfigs = this.mockSimulationConfigs\n const mockSimulationStates = this.mockSimulationStates\n\n let config = mockSimulationConfigs.get(appIdentifier)\n let state = mockSimulationStates.get(appIdentifier)\n\n // Initialize if not exists\n if (!config || !state) {\n state = await this.initializeSimulationState(appIdentifier)\n\n // NOTE(Zee): Config still can be null here\n config = mockSimulationConfigs.get(appIdentifier)\n if (!config) {\n throw new Error('Failed to initialize simulation config')\n }\n }\n\n const recipe = config.recipes?.[recipeId]\n if (!recipe) {\n throw new Error(`Recipe ${recipeId} not found`)\n }\n\n // Check if recipe is disabled\n if (state.disabledRecipes?.includes(recipeId)) {\n throw new Error(`Recipe ${recipeId} is disabled`)\n }\n\n // Validate inputs\n if (recipe.inputs) {\n for (const [entityId, required] of Object.entries(recipe.inputs)) {\n const available = state.inventory[entityId] || 0\n if (available < required) {\n throw new Error(\n `Insufficient ${entityId}: required ${required}, available ${available}`,\n )\n }\n }\n }\n\n // Consume inputs\n if (recipe.inputs) {\n for (const [entityId, input] of Object.entries(recipe.inputs)) {\n const inventoryValue = state.inventory[entityId] || 0\n if (typeof input === 'number' && typeof inventoryValue === 'number') {\n state.inventory[entityId] = inventoryValue - input\n }\n }\n }\n\n // Apply begin effects immediately\n if (recipe.beginEffects) {\n this.applyEffects(state, recipe.beginEffects)\n }\n\n // Create simulation run\n const runId = this.generateRunId()\n const now = Date.now()\n const expiresAt = now + (recipe.duration || 0)\n\n const run = {\n id: runId,\n recipeId,\n status: 'running',\n startTime: now,\n expiresAt,\n inputs: recipe.inputs || {},\n }\n\n state.activeRuns.push(run)\n\n if (recipe.duration === 0) {\n // Instant recipe\n this.completeRun(appIdentifier, runId)\n return { status: 'completed', runId }\n } else {\n const mockActiveTimers = this.mockActiveTimers\n\n // Timed recipe\n const timer = setTimeout(() => {\n this.completeRun(appIdentifier, runId)\n }, recipe.duration)\n\n const timers = mockActiveTimers.get(appIdentifier) || []\n timers.push(timer)\n mockActiveTimers.set(appIdentifier, timers)\n\n return {\n status: 'running',\n runId,\n expiresAt: new Date(expiresAt).toISOString(),\n }\n }\n }\n\n private async initializeSimulationState(appIdentifier: string) {\n this.log(`Initializing simulation state for ${appIdentifier}`)\n\n const providedSimulationConfig = this.providedSimulationConfig\n const mockSimulationConfigs = this.mockSimulationConfigs\n const mockSimulationStates = this.mockSimulationStates\n const mockActiveTimers = this.mockActiveTimers\n\n // Get configuration - use provided config or empty config\n const config: VenusSimulationConfig = providedSimulationConfig || {\n version: '1.0',\n entities: {},\n recipes: {},\n }\n mockSimulationConfigs.set(appIdentifier, config)\n\n // Initialize empty inventory\n const initialInventory: Record<string, any> = {}\n\n // If a config was provided, initialize starting inventory based on it\n if (providedSimulationConfig && config.entities) {\n // You can customize initial amounts here based on your needs\n // This is just an example that gives a small amount of each entity\n Object.keys(config.entities).forEach((entityId) => {\n initialInventory[entityId] = 0 // Start with 0, let the app set initial values\n })\n }\n\n const state = {\n inventory: initialInventory,\n activeRuns: [],\n disabledRecipes: new Array<string>(),\n }\n\n // Check for recipes that start disabled\n if (config.recipes) {\n Object.entries(config.recipes).forEach(([recipeId, recipe]) => {\n if (recipe.metadata?.startsDisabled) {\n state.disabledRecipes.push(recipeId)\n }\n })\n }\n\n mockSimulationStates.set(appIdentifier, state)\n mockActiveTimers.set(appIdentifier, [])\n\n console.log(\n `[Venus Simulation Mock] Initialized state for ${appIdentifier}:`,\n state,\n )\n\n // Auto-start any auto-restart recipes if configured\n if (config.recipes) {\n Object.entries(config.recipes).forEach(([recipeId, recipe]) => {\n // Check for autoRestart at top level OR in metadata\n const isAutoRestart = recipe.autoRestart || recipe.metadata?.autoRestart\n if (isAutoRestart && recipe.outputs) {\n this.log(`Found auto-restart recipe: ${recipeId}`, {\n topLevelAutoRestart: recipe.autoRestart,\n metadataAutoRestart: recipe.metadata?.autoRestart,\n hasOutputs: !!recipe.outputs,\n duration: recipe.duration,\n })\n\n // Check if this recipe should auto-start based on its condition\n const condition =\n recipe.maxRestartCondition || recipe.metadata?.maxRestartCondition\n if (condition && condition.entity) {\n const currentAmount = initialInventory[condition.entity] || 0\n if (currentAmount < condition.maxValue) {\n console.log(\n `[Venus Simulation Mock] Auto-starting ${recipeId} at initialization`,\n {\n currentAmount,\n maxValue: condition.maxValue,\n entity: condition.entity,\n },\n )\n setTimeout(() => {\n this.executeRecipe(appIdentifier, recipeId, {})\n }, 1000)\n }\n } else {\n // No condition means always auto-start (like building_income_tick)\n console.log(\n `[Venus Simulation Mock] Auto-starting ${recipeId} at initialization (no condition)`,\n )\n setTimeout(() => {\n this.executeRecipe(appIdentifier, recipeId, {})\n }, 1000)\n }\n }\n })\n }\n\n return state\n }\n\n private generateRunId() {\n return 'run_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\n }\n\n private completeRun(appIdentifier: string, runId: string) {\n this.log(`Completing run ${runId} for ${appIdentifier}`)\n\n const mockSimulationConfigs = this.mockSimulationConfigs\n const mockSimulationStates = this.mockSimulationStates\n\n const config = mockSimulationConfigs.get(appIdentifier)\n const state = mockSimulationStates.get(appIdentifier)\n\n if (!config || !state) return\n\n const runIndex = state.activeRuns.findIndex((r: any) => r.id === runId)\n if (runIndex === -1) return\n\n const run = state.activeRuns[runIndex]\n const recipe = config.recipes?.[run.recipeId]\n\n if (!recipe) return\n\n // Calculate outputs\n const outputs: Record<string, any> = {}\n const rng = this.createSeededRandom(runId) // Use run ID as seed\n\n if (recipe.outputs) {\n for (const [entityId, value] of Object.entries(recipe.outputs)) {\n if (typeof value === 'number') {\n outputs[entityId] = value\n } else if (\n typeof value === 'object' &&\n value != null &&\n 'min' in value &&\n 'max' in value &&\n typeof value.min == 'number' &&\n typeof value.max === 'number'\n ) {\n outputs[entityId] =\n Math.floor(rng() * (value.max - value.min + 1)) + value.min\n }\n }\n }\n\n // Add outputs to inventory\n for (const [entityId, amount] of Object.entries(outputs)) {\n state.inventory[entityId] = (state.inventory[entityId] || 0) + amount\n }\n\n // Apply end effects\n if (recipe.endEffects) {\n this.applyEffects(state, recipe.endEffects)\n }\n\n // Update run\n run.status = 'completed'\n run.outputs = outputs\n\n // Remove from active runs\n state.activeRuns.splice(runIndex, 1)\n\n // Check for auto-restart (top level OR metadata)\n const isAutoRestart = recipe.autoRestart || recipe.metadata?.autoRestart\n if (isAutoRestart) {\n console.log(\n `[Venus Simulation Mock] Checking auto-restart for ${run.recipeId}`,\n {\n topLevelAutoRestart: recipe.autoRestart,\n metadataAutoRestart: recipe.metadata?.autoRestart,\n hasCondition: !!(\n recipe.maxRestartCondition || recipe.metadata?.maxRestartCondition\n ),\n },\n )\n\n const condition =\n recipe.maxRestartCondition || recipe.metadata?.maxRestartCondition\n if (condition) {\n const currentAmount = state.inventory[condition.entity] || 0\n if (currentAmount < condition.maxValue) {\n console.log(\n `[Venus Simulation Mock] Auto-restarting ${run.recipeId}`,\n {\n currentAmount,\n maxValue: condition.maxValue,\n entity: condition.entity,\n },\n )\n setTimeout(() => {\n this.executeRecipe(appIdentifier, run.recipeId, recipe.inputs || {})\n }, 1000)\n }\n } else {\n // No condition means always auto-restart (like building_income_tick)\n console.log(\n `[Venus Simulation Mock] Auto-restarting ${run.recipeId} (no condition)`,\n )\n setTimeout(() => {\n this.executeRecipe(appIdentifier, run.recipeId, recipe.inputs || {})\n }, 1000)\n }\n }\n\n console.log(\n `[Venus Simulation Mock] Completed run ${runId}, outputs:`,\n outputs,\n )\n }\n\n private createSeededRandom(seed: string) {\n let hash = 0\n for (let i = 0; i < seed.length; i++) {\n const char = seed.charCodeAt(i)\n hash = (hash << 5) - hash + char\n hash = hash & hash\n }\n\n return () => {\n hash = (hash * 9301 + 49297) % 233280\n return hash / 233280\n }\n }\n\n private applyEffects(state: any, effects: VenusSimulationEffect[]) {\n if (!effects || !Array.isArray(effects)) return\n\n for (const effect of effects) {\n switch (effect.type) {\n case 'set':\n state.inventory[effect.target] = effect.value\n console.log(\n `[Venus Simulation Mock] Effect: Set ${effect.target} = ${effect.value}`,\n )\n break\n case 'add':\n state.inventory[effect.target] =\n (state.inventory[effect.target] || 0) + effect.value\n console.log(\n `[Venus Simulation Mock] Effect: Add ${effect.value} to ${effect.target} (new value: ${state.inventory[effect.target]})`,\n )\n break\n case 'multiply':\n state.inventory[effect.target] =\n (state.inventory[effect.target] || 0) * effect.value\n console.log(\n `[Venus Simulation Mock] Effect: Multiply ${effect.target} by ${effect.value} (new value: ${state.inventory[effect.target]})`,\n )\n break\n case 'min':\n state.inventory[effect.target] = Math.max(\n state.inventory[effect.target] || 0,\n effect.value,\n )\n console.log(\n `[Venus Simulation Mock] Effect: Set ${effect.target} min ${effect.value} (new value: ${state.inventory[effect.target]})`,\n )\n break\n case 'max':\n state.inventory[effect.target] = Math.min(\n state.inventory[effect.target] || 0,\n effect.value,\n )\n console.log(\n `[Venus Simulation Mock] Effect: Set ${effect.target} max ${effect.value} (new value: ${state.inventory[effect.target]})`,\n )\n break\n case 'enable_recipe':\n if (state.disabledRecipes?.includes(effect.target)) {\n state.disabledRecipes = state.disabledRecipes.filter(\n (r: any) => r !== effect.target,\n )\n console.log(\n `[Venus Simulation Mock] Effect: Enabled recipe ${effect.target}`,\n )\n }\n break\n case 'disable_recipe':\n if (!state.disabledRecipes) state.disabledRecipes = []\n if (!state.disabledRecipes.includes(effect.target)) {\n state.disabledRecipes.push(effect.target)\n console.log(\n `[Venus Simulation Mock] Effect: Disabled recipe ${effect.target}`,\n )\n }\n break\n case 'trigger_recipe':\n // TODO: Implement recipe triggering if needed\n console.log(\n `[Venus Simulation Mock] Effect: Trigger recipe ${effect.target} (not implemented)`,\n )\n break\n default:\n console.warn(\n `[Venus Simulation Mock] Unknown effect type: ${effect.type}`,\n )\n }\n }\n }\n\n async getConfigAsync(): Promise<any> {\n console.log('[Venus Simulation Mock] getConfigAsync called')\n const appIdentifier = this.appId\n const mockSimulationConfigs = this.mockSimulationConfigs\n const config = mockSimulationConfigs.get(appIdentifier) || {\n version: '1.0',\n entities: {},\n recipes: {},\n }\n return config\n }\n\n async getStateAsync(roomId?: string): Promise<any> {\n this.log('getStateAsync called:', roomId)\n const appIdentifier = this.appId\n\n const mockSimulationStates = this.mockSimulationStates\n let state = mockSimulationStates.get(appIdentifier)\n if (!state) {\n state = await this.initializeSimulationState(appIdentifier)\n }\n\n const mockSimulationConfigs = this.mockSimulationConfigs\n return {\n ...state,\n roomId: roomId,\n configuration: mockSimulationConfigs.get(appIdentifier),\n }\n }\n\n async assignItemToSlotAsync(\n containerId: string,\n slotId: string,\n itemId: string,\n ): Promise<any> {\n this.log('assignItemToSlotAsync called:', {\n containerId,\n slotId,\n itemId,\n })\n return { success: true, message: 'Mock assignment successful' }\n }\n\n async removeItemFromSlotAsync(\n containerId: string,\n slotId: string,\n ): Promise<any> {\n this.log('removeItemFromSlotAsync called:', {\n containerId,\n slotId,\n })\n return { success: true, message: 'Mock removal successful' }\n }\n}\n","import { VenusAPI, VenusSimulationAPI } from '../venus-api/types'\nimport { Host } from '../Host'\n\nexport * from './SimulationApi'\nexport * from './RpcSimulationApi'\nexport * from './MockSimulationApi'\n\nexport function initializeSimulation(venusApi: VenusAPI, host: Host) {\n console.log('[Venus SDK] Initializing new Simulation Api')\n\n venusApi.simulation = {\n isEnabled: () => true,\n } as VenusSimulationAPI\n\n venusApi.simulation.getConfigAsync = () => {\n return host.simulation.getConfigAsync()\n }\n\n venusApi.simulation.getStateAsync = (options) => {\n return host.simulation.getStateAsync(options?.roomId)\n }\n\n venusApi.simulation.executeRecipeAsync = (recipeId, inputs, options) => {\n return host.simulation.executeRecipeAsync(recipeId, inputs, options)\n }\n\n venusApi.simulation.getActiveRunsAsync = () => {\n return host.simulation.getActiveRunsAsync()\n }\n\n venusApi.simulation.collectRecipeAsync = (runId: string) => {\n return host.simulation.collectRecipeAsync(runId)\n }\n\n venusApi.simulation.executeScopedRecipeAsync = (\n recipeId,\n entity,\n inputs,\n roomId,\n options,\n ) => {\n return host.simulation.executeScopedRecipeAsync(recipeId, entity, inputs, {\n roomId,\n ...options,\n })\n }\n\n venusApi.simulation.triggerRecipeChainAsync = (recipeId, context, roomId) => {\n return host.simulation.triggerRecipeChainAsync(recipeId, {\n context: context,\n roomId: roomId,\n })\n }\n\n venusApi.simulation.getAvailableRecipesAsync = async (\n roomId,\n includeActorRecipes,\n ) => {\n const result = await host.simulation.getAvailableRecipesAsync({\n roomId: roomId,\n includeActorRecipes: includeActorRecipes,\n })\n return result.recipes\n }\n\n venusApi.simulation.getRecipeRequirementsAsync = (\n recipeId,\n entity,\n amount,\n ) => {\n return host.simulation.getRecipeRequirementsAsync({\n recipeId: recipeId,\n entity: entity,\n batchAmount: amount,\n })\n }\n\n venusApi.simulation.getBatchRecipeRequirementsAsync = (recipes) => {\n return host.simulation.getBatchRecipeRequirementsAsync(recipes)\n }\n\n venusApi.simulation.resolveFieldValueAsync = (\n entityId,\n fieldPath,\n entity,\n ) => {\n return host.simulation.resolveFieldValueAsync(entityId, fieldPath, entity)\n }\n\n venusApi.simulation.getEntityMetadataAsync = (entityId) => {\n return host.simulation.getEntityMetadataAsync(entityId)\n }\n\n venusApi.simulation.getSlotAssignmentsAsync = (containerId) => {\n return host.simulation.getSlotAssignmentsAsync(containerId)\n }\n\n venusApi.simulation.getSlotContainersAsync = () => {\n return host.simulation.getSlotContainersAsync()\n }\n\n venusApi.simulation.assignItemToSlotAsync = (containerId, slotId, itemId) => {\n return host.simulation.assignItemToSlotAsync(containerId, slotId, itemId)\n }\n\n venusApi.simulation.removeItemFromSlotAsync = (containerId, slotId) => {\n return host.simulation.removeItemFromSlotAsync(containerId, slotId)\n }\n\n venusApi.simulation.getAvailableItemsAsync = (containerId, slotId) => {\n return host.simulation.getAvailableItemsAsync(containerId, slotId)\n }\n\n venusApi.simulation.calculatePowerPreviewAsync = (\n containerId: string,\n slotId: string,\n candidateItemId: string,\n ) => {\n return host.simulation.calculatePowerPreviewAsync(\n containerId,\n slotId,\n candidateItemId,\n )\n }\n\n venusApi.simulation.executeBatchOperationsAsync = (\n operations,\n validateOnly,\n ) => {\n return host.simulation.executeBatchOperationsAsync(operations, validateOnly)\n }\n\n venusApi.simulation.validateSlotAssignmentAsync = (\n containerId,\n slotId,\n itemId,\n ) => {\n return host.simulation.validateSlotAssignmentAsync(\n containerId,\n slotId,\n itemId,\n )\n }\n\n venusApi.simulation.sumContributions = (contributions) => {\n return host.simulation.sumContributions(contributions)\n }\n}\n","import { RoomsApi } from './RoomsApi'\n\nexport class MockRoomsApi implements RoomsApi {\n join(roomId: string): Promise<any> {\n throw new Error('Method not implemented.')\n }\n // Mock room storage to simulate real-time rooms in development\n mockRooms = new Map()\n mockMessages = new Map() // roomId -> messages[]\n mockRoomMoves = new Map() // roomId -> moves[]\n mockSubscriptions = new Map() // instanceId -> subscriptions\n\n createRoom(options: any): Promise<any> {\n return Promise.resolve(undefined)\n }\n\n generateRoomId() {\n return 'room_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\n }\n\n // Helper to generate message IDs\n generateMessageId() {\n return 'msg_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\n }\n\n // Helper to generate room codes\n generateRoomCode() {\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'\n let code = ''\n for (let i = 0; i < 6; i++) {\n code += characters.charAt(Math.floor(Math.random() * characters.length))\n }\n return code\n }\n}\n","import { LoggingApi } from './LoggingApi'\nimport { VenusMessageId } from '../VenusMessageId'\n\nexport class MockLoggingApi implements LoggingApi {\n logDebug(message?: any, ...args: any[]): void {\n console.log(`[Venus Mock] ${message}`, args)\n }\n\n logError(message: string, ...args: any[]): void {\n console.error(`[Venus Mock] ${message}`, args)\n }\n}\n","import { LoggingApi } from './LoggingApi'\nimport { RpcClient } from '../rpc'\nimport { VenusMessageId } from '../VenusMessageId'\nimport { Host } from '../Host'\n\nexport class RpcLoggingApi implements LoggingApi {\n private readonly host: Host\n private readonly rpcClient: RpcClient\n\n constructor(host: Host, rpcClient: RpcClient) {\n this.host = host\n this.rpcClient = rpcClient\n }\n\n logDebug(message: string, ...args: any[]): void {\n if (!this.host.isInitialized) {\n console.log(message, args)\n } else {\n message = this.buildMessage(message, ...args)\n this.rpcClient.call(VenusMessageId.DEBUG, { level: 'log', message })\n }\n }\n\n logError(message: string, ...args: any[]): void {\n if (!this.host.isInitialized) {\n console.log(message, ...args)\n } else {\n message = this.buildMessage(message, ...args)\n this.rpcClient.call(VenusMessageId.DEBUG, {\n level: 'error',\n message,\n })\n }\n }\n\n private buildMessage(message: string, ...args: any[]): string {\n // Handle multiple parameters like console.error\n if (args && args.length > 0) {\n const stringArgs: string[] = []\n for (const arg of args) {\n const argAsString = this.toStringArg(arg)\n if (argAsString) {\n stringArgs.push(argAsString)\n }\n }\n message += stringArgs.join(' ')\n }\n return message\n }\n\n private toStringArg(arg: any) {\n if (arg) {\n if (typeof arg === 'object') {\n try {\n return JSON.stringify(arg)\n } catch (e) {\n return String(arg)\n }\n }\n return String(arg)\n }\n return undefined\n }\n}\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","import { AnalyticsApi, MockAnalyticsApi } from './analytics'\nimport { Host } from './Host.ts'\nimport { AdsApi, MockAdsApi } from './ads'\nimport { createMockStorageApi, StorageApi } from './storage'\nimport { Avatar3dApi, MockAvatarApi } from './avatar3d'\nimport { VenusAPI } from './venus-api/types.ts'\nimport { MockNavigationApi, NavigationApi } from './navigation'\nimport { MockNotificationsApi, NotificationsApi } from './notifications'\nimport {\n ActionSheetItem,\n MockPopupsApi,\n PopupsApi,\n ShowActionSheetOptions,\n} from './popups'\nimport { MockProfileApi, ProfileApi } from './profile'\nimport { CdnApi, MockCdnApi } from './cdn'\nimport { MockTimeApi, TimeApi } from './time'\nimport { MockPostApi, PostApi } from './post'\nimport { AiApi, MockAiApi } from './ai'\nimport { HapticsApi, MockHapticsApi } from './haptics'\nimport { FeaturesApi, MockFeaturesApi } from './features'\nimport { LifecycleApi, MockLifecycleApi } from './lifecycles'\nimport { MockSimulationApi, SimulationApi } from './simulation'\nimport { RoomsApi } from './rooms'\nimport { MockRoomsApi } from './rooms/MockRoomsApi'\nimport { LoggingApi, MockLoggingApi } from './logging'\nimport { IapApi, MockIapApi } from './iap'\nimport { VenusMessageId } from './VenusMessageId'\nimport { MockOverlay } from './MockOverlay'\n\nexport class MockHost implements Host {\n readonly ads: AdsApi\n readonly analytics: AnalyticsApi\n readonly deviceCache: StorageApi\n readonly appStorage: StorageApi\n readonly globalStorage: StorageApi\n readonly avatar3d: Avatar3dApi\n readonly navigation: NavigationApi\n readonly notifications: NotificationsApi\n readonly popups: PopupsApi\n readonly profile: ProfileApi\n readonly cdn: CdnApi\n readonly time: TimeApi\n readonly post: PostApi\n readonly ai: AiApi\n readonly haptics: HapticsApi\n readonly features: FeaturesApi\n readonly lifecycle: LifecycleApi\n readonly simulation: SimulationApi\n readonly rooms: RoomsApi\n readonly logging: LoggingApi\n readonly iap: IapApi\n\n get isInitialized() {\n return this._isInitialized\n }\n\n private readonly venusApi: VenusAPI\n private _isInitialized: boolean = false\n private readonly _overlay: MockOverlay\n\n private readonly _mockLifecyclesApi: MockLifecycleApi\n private readonly _mockAdsApi: MockAdsApi\n\n constructor(venusApi: VenusAPI) {\n this.venusApi = venusApi\n this._overlay = this.createOverlay()\n this._mockAdsApi = new MockAdsApi(this._overlay)\n this._mockLifecyclesApi = new MockLifecycleApi()\n\n this.ads = this._mockAdsApi\n this.analytics = new MockAnalyticsApi()\n const appUrl = typeof window !== 'undefined' ? window.location.href : ''\n this.deviceCache = createMockStorageApi('deviceCache', appUrl)\n this.appStorage = createMockStorageApi('appStorage', appUrl)\n this.globalStorage = createMockStorageApi('globalStorage')\n this.avatar3d = new MockAvatarApi(venusApi)\n this.navigation = new MockNavigationApi(venusApi)\n this.notifications = new MockNotificationsApi(venusApi)\n this.popups = new MockPopupsApi(this._overlay)\n this.profile = new MockProfileApi()\n this.cdn = new MockCdnApi()\n this.time = new MockTimeApi(venusApi)\n this.post = new MockPostApi(venusApi)\n this.ai = new MockAiApi()\n this.haptics = new MockHapticsApi(venusApi)\n this.features = new MockFeaturesApi()\n this.lifecycle = this._mockLifecyclesApi\n this.simulation = new MockSimulationApi()\n this.rooms = new MockRoomsApi()\n this.logging = new MockLoggingApi()\n this.iap = new MockIapApi()\n\n venusApi.isMock = () => true\n }\n initialize(): Promise<void> {\n this._isInitialized = true\n return Promise.resolve()\n }\n\n private updateUiControls() {\n const controls = {\n closeButton: { x: 16, y: 16, width: 32, height: 32 },\n menuButton: {\n x: window.innerWidth - 48,\n y: 16,\n width: 32,\n height: 32,\n },\n feedHeader: { x: 0, y: 0, width: window.innerWidth, height: 56 },\n playButton: {\n x: 0,\n y: window.innerHeight - 60,\n width: window.innerWidth,\n height: 60,\n },\n }\n return controls\n }\n\n private createOverlay(): MockOverlay {\n const venusApi = this.venusApi\n venusApi.config.ui.controls = this.updateUiControls()\n\n // Create overlay container\n const overlayContainer = document.createElement('div')\n overlayContainer.id = 'venus-mock-overlay'\n overlayContainer.style.cssText = `\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 10000;\n `\n document.body.appendChild(overlayContainer)\n\n // Get UI controls from VenusAPI if available\n const uiControls = venusApi.config.ui.controls\n\n // Create play button with dynamic width\n const dynamicPlayButton = {\n x: 0,\n y: window.innerHeight - 60,\n width: window.innerWidth,\n height: 60,\n }\n\n const playButton = this.createOverlayButton(\n 'play',\n 'Play',\n dynamicPlayButton,\n () => {\n this.triggerLifecycleEvent(VenusMessageId.PLAY)\n // Hide play button after clicked\n this.setOverlayElementVisibility('play', false)\n // Hide visibility button after play is clicked\n this.setOverlayElementVisibility('visibility', false)\n },\n 'linear-gradient(90deg, #3b82f6, #1d4ed8)', // Blue gradient instead of pink/blue\n '#FFFFFF',\n )\n overlayContainer.appendChild(playButton)\n\n // Create visibility toggle button above play button (since play spans full width)\n const visibilityButtonSize = 40\n const visibilityButtonMargin = 10\n\n const showHideToggle = this.createOverlayButton(\n 'visibility',\n '👁️',\n {\n x: window.innerWidth - visibilityButtonSize - 20, // Right side with margin\n y:\n window.innerHeight -\n 60 -\n visibilityButtonSize -\n visibilityButtonMargin, // Above play button\n width: visibilityButtonSize,\n height: visibilityButtonSize,\n },\n () => {\n // Toggle visibility state\n if (this._overlay.appVisibilityState === 'visible') {\n this._overlay.appVisibilityState = 'hidden'\n // Update button icon\n if (this._overlay.elements.visibility) {\n this._overlay.elements.visibility.innerHTML = '🚫'\n this._overlay.elements.visibility.title =\n 'App is hidden (click to show)'\n }\n // Trigger onHide event\n this.triggerLifecycleEvent(VenusMessageId.HIDDEN)\n } else {\n this._overlay.appVisibilityState = 'visible'\n // Update button icon\n if (this._overlay.elements.visibility) {\n this._overlay.elements.visibility.innerHTML = '👁️'\n this._overlay.elements.visibility.title =\n 'App is visible (click to hide)'\n }\n // Trigger onShow event with mock context\n this.triggerLifecycleEvent(VenusMessageId.SHOWN)\n }\n },\n 'rgba(59, 130, 246, 0.7)', // Blue background\n '#FFFFFF',\n )\n showHideToggle.title = 'App is visible (click to hide)'\n overlayContainer.appendChild(showHideToggle)\n\n // Create close button\n const closeButton = this.createOverlayButton(\n 'close',\n '✕',\n uiControls.closeButton,\n () => {\n this.triggerLifecycleEvent(VenusMessageId.QUIT)\n },\n 'rgba(59, 130, 246, 0.7)', // Blue background instead of black\n '#FFFFFF',\n )\n overlayContainer.appendChild(closeButton)\n\n // Setup ad overlay container\n const adOverlay = this.setupAdOverlay()\n\n // Setup action sheet overlay container\n const actionSheet = this.setupActionSheetOverlay()\n\n // Show overlay\n // showMockOverlay(true);\n\n // Handle window resize\n window.addEventListener('resize', () => {\n this.updateOverlayLayout()\n })\n\n return {\n container: overlayContainer,\n elements: {\n play: playButton,\n visibility: showHideToggle,\n close: closeButton,\n },\n appVisibilityState: 'visible',\n actionSheetOverlay: actionSheet,\n adOverlay: adOverlay,\n showAdOverlay: () => {\n return this.showAdOverlay('REWARDED VIDEO AD')\n },\n showActionSheet: (items, options) => {\n return this.showActionSheetOverlay(items, options)\n },\n }\n }\n\n private async showAdOverlay(type: any): Promise<boolean> {\n return new Promise((resolve, reject) => {\n const overlay = this._overlay\n const adOverlay = overlay.adOverlay\n\n // Clear any existing content\n overlay.adOverlay.innerHTML = ''\n\n // Add ad type heading\n const heading = document.createElement('h1')\n heading.style.cssText = `\n font-size: 24px;\n margin-bottom: 20px;\n text-align: center;\n `\n heading.innerText =\n type === 'interstitial' ? 'INTERSTITIAL AD' : 'REWARDED VIDEO AD'\n overlay.adOverlay.appendChild(heading)\n\n // Add mock ad content\n const content = document.createElement('div')\n content.style.cssText = `\n width: 300px;\n height: 250px;\n background-color: #1e40af;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 20px;\n border-radius: 8px;\n `\n content.innerText = 'Mock Ad Content'\n adOverlay.appendChild(content)\n\n // Add timer text\n const timer = document.createElement('p')\n timer.style.cssText = `\n margin-bottom: 20px;\n font-size: 16px;\n `\n timer.innerText = 'Normally ads would have a timer...'\n adOverlay.appendChild(timer)\n\n // Add OK button\n const okButton = document.createElement('button')\n okButton.style.cssText = `\n padding: 10px 40px;\n background-color: #2563eb;\n color: white;\n border: none;\n border-radius: 4px;\n font-size: 16px;\n cursor: pointer;\n `\n okButton.innerText = 'Close Ad'\n adOverlay.appendChild(okButton)\n\n // Show the overlay\n adOverlay.style.display = 'flex'\n\n okButton.onclick = () => {\n this.hideAdOverlay()\n resolve(true)\n }\n })\n }\n\n private hideAdOverlay() {\n const overlay = this._overlay\n if (overlay.adOverlay) {\n overlay.adOverlay.style.display = 'none'\n }\n }\n\n private setupActionSheetOverlay() {\n const actionSheetOverlay = document.createElement('div')\n actionSheetOverlay.id = 'venus-action-sheet-overlay'\n actionSheetOverlay.style.cssText = `\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10600;\n font-family: sans-serif;\n display: none;\n `\n document.body.appendChild(actionSheetOverlay)\n return actionSheetOverlay\n }\n\n private createOverlayButton(\n id: string,\n text: string,\n position: { x: number; y: number; width: number; height: number },\n onClick: () => void,\n background: string,\n color: string,\n ) {\n const button = document.createElement('button')\n button.id = `venus-mock-${id}-button`\n button.innerText = text\n button.style.cssText = `\n position: absolute;\n left: ${position.x}px;\n top: ${position.y}px;\n width: ${position.width}px;\n min-width: ${position.width}px;\n height: ${position.height}px;\n background: ${background};\n color: ${color};\n border: none;\n border-radius: 8px;\n font-family: sans-serif;\n font-weight: bold;\n font-size: ${Math.min(position.width, position.height) / 3}px;\n cursor: pointer;\n pointer-events: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.9;\n transition: opacity 0.2s;\n `\n button.addEventListener('click', onClick)\n button.addEventListener('mouseover', () => {\n button.style.opacity = '1'\n })\n button.addEventListener('mouseout', () => {\n button.style.opacity = '0.9'\n })\n\n return button\n }\n\n private updateOverlayLayout() {\n //this.log('Updating mock overlay')\n const venusApi = this.venusApi\n const overlay = this._overlay\n\n venusApi.config.ui.controls = this.updateUiControls()\n\n // Get updated UI controls from VenusAPI\n const uiControls = venusApi.config.ui.controls\n //this.log('Controls: ', venusApi.config.ui.controls)\n\n // Update button positions\n const playBtn = overlay.elements.play\n const playPos = uiControls.playButton\n // Use dynamic width for play button\n playBtn.style.left = `${playPos.x}px`\n playBtn.style.top = `${playPos.y}px`\n playBtn.style.width = `${playPos.width}px`\n playBtn.style.minWidth = `${playPos.width}px`\n playBtn.style.height = `${playPos.height}px`\n\n const menuBtn = overlay.elements.menu\n const menuPos = uiControls.menuButton\n menuBtn.style.left = `${menuPos.x}px`\n menuBtn.style.top = `${menuPos.y}px`\n menuBtn.style.width = `${menuPos.width}px`\n menuBtn.style.minWidth = `${menuPos.width}px`\n menuBtn.style.height = `${menuPos.height}px`\n\n // Update visibility button position above play button\n const visibilityBtn = overlay.elements.visibility\n const visibilityButtonSize = 40\n const visibilityButtonMargin = 10\n\n // Position above the dynamic play button on the right side\n visibilityBtn.style.left = `${window.innerWidth - visibilityButtonSize - 20}px`\n visibilityBtn.style.top = `${window.innerHeight - 60 - visibilityButtonSize - visibilityButtonMargin}px`\n visibilityBtn.style.minWidth = `${visibilityButtonSize}px`\n }\n\n private triggerLifecycleEvent(name: string) {\n console.log('Trigger Lifecycle Event: ', name)\n\n if (name == VenusMessageId.PLAY) {\n this._mockLifecyclesApi.triggerOnPlayCallbacks({\n hudInsets: { top: 60, right: 0, bottom: 0, left: 0 },\n // shareData: {\n // title: 'Mock Share Title',\n // description: 'Mock share description for testing',\n // },\n format: 'post',\n // stackData: null,\n })\n } else if (name == VenusMessageId.PAUSE) {\n this._mockLifecyclesApi.triggerOnPauseCallbacks()\n } else if (name == VenusMessageId.RESUME) {\n this._mockLifecyclesApi.triggerOnResumeCallbacks()\n } else if (name == VenusMessageId.QUIT) {\n this._mockLifecyclesApi.triggerOnQuitCallbacks()\n setTimeout(() => {\n this.setOverlayElementVisibility('play', true)\n this.setOverlayElementVisibility('visibility', true)\n }, 100) // Small delay to ensure handler completes first\n } else if (name == VenusMessageId.SHOWN) {\n this._mockLifecyclesApi.triggerOnShowCallbacks({\n hudInsets: { top: 60, bottom: 120, left: 0, right: 0 },\n })\n } else if (name == VenusMessageId.HIDDEN) {\n this._mockLifecyclesApi.triggerOnHideCallbacks()\n }\n }\n\n private setOverlayElementVisibility(id: string, visible: boolean) {\n const overlay = this._overlay\n if (overlay.elements[id]) {\n overlay.elements[id].style.display = visible ? 'flex' : 'none'\n }\n }\n\n private setupAdOverlay() {\n const adOverlay = document.createElement('div')\n adOverlay.id = 'venus-ad-overlay'\n adOverlay.style.cssText = `\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(37, 99, 235, 0.9);\n color: white;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n z-index: 10500;\n font-family: sans-serif;\n display: none;\n `\n document.body.appendChild(adOverlay)\n return adOverlay\n }\n\n private log(msg: string, ...args: any[]) {\n console.log(`[Venus Mock] ${msg}`, ...args)\n }\n\n private showActionSheetOverlay(\n items: ActionSheetItem[],\n options?: ShowActionSheetOptions,\n ): Promise<string | number | null> {\n this.log('Showing ActionSheetOverlay...')\n\n return new Promise((resolve, reject) => {\n const overlay = this._overlay\n // Clear any existing content and event listeners\n overlay.actionSheetOverlay.innerHTML = ''\n overlay.actionSheetOverlay.style.display = 'flex'\n\n // Create action sheet container\n const actionSheet = document.createElement('div')\n actionSheet.className = 'venus-action-sheet'\n actionSheet.style.cssText = `\n background-color: white;\n border-radius: 8px;\n width: 80%;\n max-width: 400px;\n max-height: 80%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n color: black;\n `\n\n // Add title if provided\n if (options?.title) {\n const titleContainer = document.createElement('div')\n titleContainer.style.cssText = `\n padding: 16px;\n border-bottom: 1px solid #eaeaea;\n font-weight: bold;\n font-size: 18px;\n text-align: center;\n color: black;\n `\n titleContainer.innerText = options.title\n actionSheet.appendChild(titleContainer)\n }\n\n // Add message if provided\n if (options?.message) {\n const messageContainer = document.createElement('div')\n messageContainer.style.cssText = `\n padding: 8px 16px;\n color: #666;\n font-size: 14px;\n text-align: center;\n `\n messageContainer.innerText = options.message\n actionSheet.appendChild(messageContainer)\n }\n\n // Add options\n const optionsContainer = document.createElement('div')\n optionsContainer.style.cssText = `\n overflow-y: auto;\n max-height: 300px;\n `\n\n items.forEach((item, index) => {\n const optionItem = document.createElement('div')\n optionItem.style.cssText = `\n padding: 12px 16px;\n border-bottom: 1px solid #eaeaea;\n cursor: pointer;\n display: flex;\n align-items: center;\n transition: background-color 0.2s;\n color: black;\n `\n\n // Add hover effect\n optionItem.addEventListener('mouseover', () => {\n optionItem.style.backgroundColor = '#f5f5f5'\n })\n\n optionItem.addEventListener('mouseout', () => {\n optionItem.style.backgroundColor = 'white'\n })\n\n // Add icon if provided\n if (item.icon) {\n const iconSpan = document.createElement('span')\n iconSpan.style.cssText = `\n margin-right: 12px;\n font-size: 16px;\n `\n iconSpan.innerText = item.icon\n optionItem.appendChild(iconSpan)\n }\n\n // Add label\n const labelSpan = document.createElement('span')\n labelSpan.style.cssText = `\n color: black;\n `\n labelSpan.innerText = item.label\n optionItem.appendChild(labelSpan)\n\n // Handle click\n optionItem.addEventListener('click', () => {\n this.hideActionSheetOverlay()\n const optionId = item.id !== undefined ? item.id : index\n resolve(optionId)\n })\n\n optionsContainer.appendChild(optionItem)\n })\n\n actionSheet.appendChild(optionsContainer)\n\n // Add cancel button only if cancel is not disabled\n if (!options?.disableCancel) {\n const cancelButton = document.createElement('div')\n cancelButton.style.cssText = `\n padding: 14px 16px;\n text-align: center;\n font-weight: bold;\n cursor: pointer;\n color: #3b82f6;\n border-top: 1px solid #eaeaea;\n `\n cancelButton.innerText = options?.cancelButtonText || 'Cancel'\n cancelButton.addEventListener('click', () => {\n this.hideActionSheetOverlay()\n resolve(null)\n })\n\n actionSheet.appendChild(cancelButton)\n }\n\n // Add close button (X) in the top-right corner only if cancel is not disabled\n if (!options?.disableCancel) {\n const closeButton = document.createElement('div')\n closeButton.style.cssText = `\n position: absolute;\n top: 8px;\n right: 8px;\n width: 24px;\n height: 24px;\n border-radius: 12px;\n background-color: rgba(0,0,0,0.1);\n color: #666;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n font-size: 14px;\n `\n closeButton.innerText = '✕'\n closeButton.addEventListener('click', () => {\n this.hideActionSheetOverlay()\n resolve(null)\n })\n\n actionSheet.appendChild(closeButton)\n overlay.actionSheetOverlay.appendChild(actionSheet)\n }\n })\n }\n\n hideActionSheetOverlay() {\n const overlay = this._overlay\n if (overlay.actionSheetOverlay) {\n overlay.actionSheetOverlay.style.display = 'none'\n }\n }\n}\n","import { RpcRequest } from './RpcRequest.ts'\nimport { RpcResponse } from './RpcResponse.ts'\nimport { RpcTransport } from './RpcTransport.ts'\nimport { RpcNotification } from './RpcNotification'\n\ninterface PendingCall {\n id: string\n resolve: (value: any) => void\n reject: (error: any) => void\n}\n\nexport interface Subscription {\n unsubscribe: () => void\n}\n\nexport class RpcClient {\n private readonly pendingCalls = new Map<string, PendingCall>()\n private readonly notificationCallbacks = new Map<string, Function>()\n\n private onResponseSub: Subscription | null = null\n private onNotificationSub: Subscription | null = null\n private transport: RpcTransport | null = null\n\n start(transport: RpcTransport) {\n this.transport = transport\n this.onResponseSub = transport.onResponse(async (response) => {\n return this.handleRpcResponse(response)\n })\n this.onNotificationSub = transport.onNotification(async (notification) => {\n return this.handleRpcNotification(notification)\n })\n }\n\n stop() {\n if (this.onResponseSub) {\n this.onResponseSub.unsubscribe()\n this.onResponseSub = null\n }\n\n if (this.onNotificationSub) {\n this.onNotificationSub.unsubscribe()\n this.onNotificationSub = null\n }\n\n this.transport = null\n }\n\n onNotification<TPayload>(\n id: string,\n callback: (payload: TPayload) => void,\n ): Subscription {\n this.notificationCallbacks.set(id, callback)\n return {\n unsubscribe: () => {\n this.notificationCallbacks.delete(id)\n },\n }\n }\n\n callT<TArgs, TResult>(\n method: string,\n args: TArgs,\n timeout: number = 5000,\n ): Promise<TResult> {\n return this.call(method, args, timeout)\n }\n\n async call<TResponse>(\n method: string,\n args?: any,\n timeout: number = 5000,\n ): Promise<TResponse> {\n // NOTE(Zee): Make this into options?\n return new Promise((resolve, reject) => {\n const id = this.generateId()\n this.addPendingCall(id, resolve, reject)\n\n const request: RpcRequest = {\n type: 'rpc-request',\n id,\n method,\n args: args,\n }\n\n if (this.transport) {\n this.transport.sendRequest(request)\n }\n\n setTimeout(() => {\n if (this.hasPendingCall(id)) {\n this.removePendingCall(id)\n reject(new Error(`RPC call ${method} timed out`))\n }\n }, timeout)\n })\n }\n\n private hasPendingCall(id: string): boolean {\n return this.pendingCalls.has(id)\n }\n\n private addPendingCall(\n id: string,\n resolve: (v: any) => void,\n reject: (e: any) => void,\n ) {\n this.pendingCalls.set(id, {\n id: id,\n resolve: resolve,\n reject: reject,\n })\n }\n\n private removePendingCall(id: string) {\n this.pendingCalls.delete(id)\n }\n\n private getPendingCall(id: string) {\n return this.pendingCalls.get(id)\n }\n\n private generateId(): string {\n return `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`\n }\n\n private handleRpcResponse(response: RpcResponse): boolean {\n const pending = this.getPendingCall(response.id)\n if (!pending) {\n return false\n }\n this.removePendingCall(response.id)\n\n if (response.error) {\n pending.reject(new Error(response.error.message))\n return true\n }\n\n pending.resolve(response.result)\n return true\n }\n\n private handleRpcNotification(notification: RpcNotification): void {\n const callback = this.notificationCallbacks.get(notification.id)\n if (callback) {\n callback(notification.payload)\n }\n }\n}\n","import {\n OnNotificationCallback,\n OnRequestCallback,\n OnResponseCallback,\n RpcNotification,\n RpcRequest,\n RpcResponse,\n RpcTransport,\n Subscription,\n} from './rpc'\nimport { VenusMessageId } from './VenusMessageId'\n\nexport interface VenusMessage {\n type: string\n direction: string\n data?: {\n requestId?: string\n success?: boolean\n\n //NOTE(Zee): Some things send 'value' others send 'data'\n value?: any\n data?: any\n\n error?: string\n\n script?: string\n }\n instanceId: string\n timestamp: number\n}\n\ndeclare global {\n interface Window {\n _venusInitState?: {\n poolId: string\n apiInjected: boolean\n gameInitialized: boolean\n }\n ReactNativeWebView?: {\n postMessage(message: string): void\n }\n venus: {\n _config: {\n locale: string\n instanceId: string\n context?: any\n profile?: {\n id?: string\n username?: string\n }\n environment: {\n browserInfo?: {\n language: string\n }\n }\n _handlers: Record<string, any>\n }\n _fetchFromCdn: (url: string) => Promise<string>\n _roomSubscriptions: any\n }\n }\n}\n\nexport type OnVenusMessageCallback = (message: VenusMessage) => void\n\nexport class VenusTransport implements RpcTransport {\n private readonly messageHandler: (event: MessageEvent) => void\n\n private readonly onNotificationCallbacks: OnNotificationCallback[] = []\n private readonly onNotificationCallbacksToRemove: OnNotificationCallback[] =\n []\n\n private readonly onVenusMessageCallbacks: OnVenusMessageCallback[] = []\n private readonly onResponseCallbacks: OnResponseCallback[] = []\n private readonly onResponseCallbacksToRemove: OnResponseCallback[] = []\n\n private _instanceId: string | null = null\n private isStarted: boolean = false\n private isProcessingMessage: boolean = false\n\n constructor() {\n this.messageHandler = async (event) => {\n this.isProcessingMessage = true\n\n let message: VenusMessage\n if (typeof event.data === 'string') {\n //this.log(`Message is a string. Parsing...`)\n message = JSON.parse(event.data)\n } else {\n message = event.data as VenusMessage\n }\n\n if (!message) {\n this.logInfo('No message found. Ignoring message...')\n return\n }\n\n this.logInfo(`message received:\\n${JSON.stringify(message, null, 2)}`)\n\n this.notifyVenusMessageReceived(message)\n\n if (\n message.type === VenusMessageId.PLAY ||\n message.type === VenusMessageId.PAUSE ||\n message.type === VenusMessageId.RESUME ||\n message.type === VenusMessageId.SHOWN ||\n message.type === VenusMessageId.HIDDEN ||\n message.type === VenusMessageId.CLEANUP ||\n message.type === VenusMessageId.QUIT\n ) {\n const notification: RpcNotification = {\n type: 'rpc-notification',\n id: message.type,\n payload: message.data,\n }\n this.handleNotification(notification)\n\n // NOTE(Zee): This early return is dangerous here. we have to make sure isProcessingMessage is set to false!\n this.isProcessingMessage = false\n return\n }\n\n const messageData = message.data\n if (!messageData) {\n this.logWarn('No data found. Ignoring message...')\n this.isProcessingMessage = false\n return\n }\n\n const requestId = messageData.requestId\n if (!requestId) {\n this.logWarn('No requestId. Ignoring message...')\n this.isProcessingMessage = false\n return\n }\n\n if (message.type !== VenusMessageId.H5_RESPONSE) {\n this.logWarn(`Ignoring unknown message type: ${message.type}`)\n this.isProcessingMessage = false\n return\n }\n\n const success = messageData.success\n let error = undefined\n if (!success) {\n error = {\n message: messageData.error || 'Unknown error',\n }\n }\n\n // Result can be either inside value or data\n let result = messageData.value\n if (result === undefined) {\n result = messageData.data\n }\n\n const response: RpcResponse = {\n type: 'rpc-response',\n id: requestId,\n result: result,\n method: message.type,\n error: error,\n }\n\n await this.handleResponse(response)\n this.isProcessingMessage = false\n }\n }\n onNotification(callback: OnNotificationCallback): Subscription {\n this.onNotificationCallbacks.push(callback)\n return {\n unsubscribe: () => {\n if (this.isProcessingMessage) {\n this.onNotificationCallbacks.push(callback)\n } else {\n this.removeOnNotificationCallback(callback)\n }\n },\n }\n }\n\n onRequest(callback: OnRequestCallback): Subscription {\n throw new Error('Method not implemented.')\n }\n\n onResponse(callback: OnResponseCallback): Subscription {\n this.onResponseCallbacks.push(callback)\n return {\n unsubscribe: () => {\n if (this.isProcessingMessage) {\n this.onResponseCallbacksToRemove.push(callback)\n } else {\n this.removeOnResponseCallback(callback)\n }\n },\n }\n }\n\n public get instanceId(): string | null {\n return this._instanceId\n }\n\n public set instanceId(instanceId: string) {\n this._instanceId = instanceId\n }\n\n sendRequest(request: RpcRequest): void {\n const instanceId = this.instanceId || 'unknown'\n const method = request.method\n const message: VenusMessage = {\n type: method,\n direction: 'H5_TO_APP',\n data: {\n ...request.args,\n requestId: request.id,\n },\n instanceId: instanceId,\n timestamp: Date.now(),\n }\n this.sendVenusMessage(message)\n }\n\n sendVenusMessage(message: VenusMessage): void {\n const messageAsString = JSON.stringify(message, null, 2)\n this.logInfo(`Sending message:\\n${messageAsString}`)\n const reactNativeWebView = window.ReactNativeWebView\n if (reactNativeWebView) {\n reactNativeWebView.postMessage(messageAsString)\n } else {\n window.parent.postMessage(messageAsString, '*')\n }\n }\n\n sendResponse(response: RpcResponse): void {\n throw new Error('Method not implemented.')\n }\n\n start() {\n if (this.isStarted) {\n return\n }\n this.isStarted = true\n window.addEventListener('message', this.messageHandler, true)\n this.logInfo(`Started`)\n }\n\n stop() {\n if (!this.isStarted) {\n return\n }\n this.isStarted = false\n window.removeEventListener('message', this.messageHandler)\n this.logInfo(`Stopped`)\n }\n\n private handleNotification(notification: RpcNotification): void {\n this.logInfo('Notification received: ', notification.id)\n for (const callback of this.onNotificationCallbacks) {\n callback(notification)\n }\n\n for (const callback of this.onNotificationCallbacksToRemove) {\n this.removeOnNotificationCallback(callback)\n }\n this.onNotificationCallbacksToRemove.length = 0\n }\n\n private async handleResponse(response: RpcResponse): Promise<void> {\n for (const callback of this.onResponseCallbacks) {\n const consumed = await callback(response)\n if (consumed) {\n break\n }\n }\n\n for (const callback of this.onResponseCallbacksToRemove) {\n this.removeOnResponseCallback(callback)\n }\n this.onResponseCallbacksToRemove.length = 0\n }\n\n private removeOnResponseCallback(callback: OnResponseCallback): void {\n this.onResponseCallbacks.splice(\n this.onResponseCallbacks.indexOf(callback),\n 1,\n )\n }\n\n private removeOnNotificationCallback(callback: OnNotificationCallback): void {\n this.onNotificationCallbacks.splice(\n this.onNotificationCallbacks.indexOf(callback),\n 1,\n )\n }\n\n private logInfo(message: string, ...params: any[]) {\n console.log(`[Venus Transport] ${message}`, ...params)\n }\n\n private logWarn(message: string, ...params: any[]) {\n console.warn(`[Venus Transport] ${message}`, ...params)\n }\n\n onVenusMessage(callback: OnVenusMessageCallback): Subscription {\n this.onVenusMessageCallbacks.push(callback)\n return {\n unsubscribe: () => {\n this.onVenusMessageCallbacks.splice(\n this.onVenusMessageCallbacks.indexOf(callback),\n 1,\n )\n },\n }\n }\n\n private notifyVenusMessageReceived(message: VenusMessage) {\n for (const callback of this.onVenusMessageCallbacks) {\n callback(message)\n }\n }\n}\n","import {\n NotificationsApi,\n ScheduleLocalNotification,\n ScheduleLocalNotificationOptions,\n} from './NotificationsApi'\nimport { RpcClient } from '../rpc'\nimport { VenusMessageId } from '../VenusMessageId'\n\nexport class RpcNotificationsApi implements NotificationsApi {\n private readonly rpcClient: RpcClient\n\n constructor(rpcClient: RpcClient) {\n this.rpcClient = rpcClient\n }\n\n async scheduleLocalNotification(\n title: string,\n body: string,\n options?: ScheduleLocalNotificationOptions,\n ): Promise<string | null> {\n const request: ScheduleLocalNotificationRequest = {\n title: title,\n body: body,\n data: options?.payload,\n key: options?.groupId,\n priority: options?.priority || 1,\n }\n const response =\n await this.rpcClient.call<ScheduleLocalNotificationResponse>(\n VenusMessageId.SCHEDULE_LOCAL_NOTIFICATION,\n request,\n )\n\n if (response.scheduled) {\n return response.id\n }\n return null\n }\n\n async cancelLocalNotification(id: string): Promise<boolean> {\n const result = await this.rpcClient.call<CancelLocalNotificationResult>(\n VenusMessageId.CANCEL_LOCAL_NOTIFICATION,\n {\n id: id,\n },\n )\n return result.canceled\n }\n\n async getAllScheduledLocalNotifications(): Promise<\n ScheduleLocalNotification[]\n > {\n const response =\n await this.rpcClient.call<GetAllLocalNotificationsResponse>(\n VenusMessageId.GET_ALL_SCHEDULED_LOCAL_NOTIFICATIONS,\n {},\n )\n\n const notifications: ScheduleLocalNotification[] =\n response.notifications.map((notif) => {\n return {\n id: notif.identifier,\n title: notif.content.title,\n body: notif.content.body,\n payload: notif.content.data,\n }\n })\n\n return notifications\n }\n\n async isLocalNotificationsEnabled(): Promise<boolean> {\n const response =\n await this.rpcClient.call<IsLocalNotificationsEnabledResponse>(\n VenusMessageId.IS_LOCAL_NOTIFICATIONS_ENABLED,\n {},\n )\n return response.enabled\n }\n\n async setLocalNotificationsEnabled(enabled: boolean): Promise<boolean> {\n const response =\n await this.rpcClient.call<SetLocalNotificationsEnabledResponse>(\n VenusMessageId.SET_LOCAL_NOTIFICATIONS_ENABLED,\n {\n enabled: enabled,\n },\n )\n return response.enabled\n }\n}\n\ninterface CancelLocalNotificationResult {\n id: string\n canceled: boolean\n}\n\ninterface ScheduleLocalNotificationRequest {\n title: string\n body: string\n priority: number\n key?: string // Optional key for grouping related notifications\n data?: Record<string, any>\n}\n\ninterface ScheduleLocalNotificationResponse {\n id: string\n scheduled: boolean\n}\n\ninterface IsLocalNotificationsEnabledResponse {\n enabled: boolean\n}\n\ninterface SetLocalNotificationsEnabledResponse {\n enabled: boolean\n}\n\ninterface GetAllLocalNotificationsResponse {\n notifications: NotificationRequest[]\n count: number\n}\n\ninterface NotificationRequest {\n identifier: string\n content: NotificationContent\n}\n\nexport type NotificationContent = {\n title: string | null\n subtitle: string | null\n body: string | null\n data?: Record<string, any>\n}\n","export class VenusRoom {\n public readonly id: string\n public name: string\n public players: any[]\n public maxPlayers: number\n public gameType: string\n public appId: string\n public type: any\n public createdBy: string\n public createdAt: number\n public updatedAt: number\n public isPrivate: boolean\n public currentPlayers: string[]\n public status: any\n public customMetadata: Record<string, any>\n public admins: string[]\n public roomCode: string\n public description: string\n public data: Record<string, any>\n public version: string\n\n private _subscriptions = new Map()\n\n constructor(roomData: any) {\n this.id = roomData.id\n this.name = roomData.name\n this.players = roomData.currentPlayers || []\n this.maxPlayers = roomData.maxPlayers\n this.gameType = roomData.gameType\n\n this.appId = roomData.appId\n this.type = roomData.type\n this.createdBy = roomData.createdBy\n this.createdAt = roomData.createdAt\n this.updatedAt = roomData.updatedAt\n this.isPrivate = roomData.isPrivate\n this.currentPlayers = roomData.currentPlayers || []\n this.status = roomData.status\n this.customMetadata = roomData.customMetadata || {}\n this.admins = roomData.admins || []\n this.roomCode = roomData.roomCode\n this.description = roomData.description\n this.data = roomData.data || {}\n this.version = roomData.version\n\n console.log(`VenusRoom: Created room object for ${this.id}`, {\n hasCustomMetadata: !!this.customMetadata,\n hasGameState: !!this.customMetadata?.rules?.gameState,\n gamePhase: this.customMetadata?.rules?.gameState?.phase,\n currentPlayer: this.customMetadata?.rules?.gameState?.currentPlayer,\n })\n }\n\n private updateFromRoomData(newRoomData: any) {\n if (newRoomData.id === this.id) {\n // Update all room properties with fresh data\n this.name = newRoomData.name || this.name\n this.players = newRoomData.currentPlayers || this.players\n this.maxPlayers = newRoomData.maxPlayers || this.maxPlayers\n this.gameType = newRoomData.gameType || this.gameType\n this.currentPlayers = newRoomData.currentPlayers || this.currentPlayers\n this.customMetadata = newRoomData.customMetadata || this.customMetadata\n this.data = newRoomData.data || this.data\n this.status = newRoomData.status || this.status\n this.updatedAt = newRoomData.updatedAt || this.updatedAt\n\n console.log(`VenusRoom: Updated room object ${this.id} with fresh data`, {\n hasCustomMetadata: !!this.customMetadata,\n hasGameState: !!this.customMetadata?.rules?.gameState,\n gamePhase: this.customMetadata?.rules?.gameState?.phase,\n currentPlayer: this.customMetadata?.rules?.gameState?.currentPlayer,\n })\n }\n }\n\n // NEW: Generic message handler for room-manager.js integration\n private onMessage(callback: any) {\n const subscriptionId =\n 'messages_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\n\n // Set up subscriptions to all event types that this room might receive\n if (!window.venus._roomSubscriptions.allEvents) {\n window.venus._roomSubscriptions.allEvents = {}\n }\n if (!window.venus._roomSubscriptions.allEvents[this.id]) {\n window.venus._roomSubscriptions.allEvents[this.id] = []\n }\n\n window.venus._roomSubscriptions.allEvents[this.id].push(callback)\n\n this._subscriptions.set(subscriptionId, {\n type: 'allEvents',\n callback: callback,\n })\n\n return {\n unsubscribe: () => {\n const callbacks =\n window.venus._roomSubscriptions.allEvents[this.id] || []\n const index = callbacks.indexOf(callback)\n if (index > -1) callbacks.splice(index, 1)\n this._subscriptions.delete(subscriptionId)\n },\n }\n }\n}\n","import { RoomsApi } from './RoomsApi'\nimport { RpcClient } from '../rpc'\nimport { VenusMessageId } from '../VenusMessageId'\nimport { VenusRoom } from './VenusRoom'\n\nexport class RpcRoomsApi implements RoomsApi {\n private readonly rpcClient: RpcClient\n\n constructor(rpcClient: RpcClient) {\n this.rpcClient = rpcClient\n }\n join(roomId: string): Promise<any> {\n throw new Error('Method not implemented.')\n }\n\n async createRoom(options: any): Promise<any> {\n const response = await this.rpcClient.call<any>(\n VenusMessageId.H5_ROOM_CREATE,\n {\n options: options,\n },\n )\n if (response.success === false) {\n throw new Error(response.error || 'Failed to create room')\n }\n\n // The response IS the room data when coming from the real API\n const roomData = response.roomData || response\n const room = new VenusRoom(roomData)\n // 🔧 FIX: Register room object for subscription updates\n //window.venus._roomObjects[room.id] = room\n return room\n }\n\n async joinOrCreateRoom(options: any) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_JOIN_OR_CREATE,\n {\n options: options,\n },\n )\n if (response.success === false) {\n throw new Error(response.error || 'Failed to join or create room')\n }\n\n const data = response.value || response\n const room = new VenusRoom(data.roomData)\n // 🔧 FIX: Register room object for subscription updates\n // window.venus._roomObjects[room.id] = room\n\n return {\n action: data.action,\n room: room,\n playersJoined: data.playersJoined,\n }\n }\n\n async listPublicRooms(gameType: any, limit = 20) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_LIST_PUBLIC,\n {\n gameType: gameType,\n limit: limit,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to list public rooms')\n }\n\n // Return array of room data (not room objects since user hasn't joined)\n return response.rooms || []\n }\n\n async searchRooms(searchQuery: any, gameType: any, limit = 20) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_SEARCH,\n {\n searchQuery: searchQuery,\n gameType: gameType,\n limit: limit,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to search rooms')\n }\n\n return response.rooms || []\n }\n\n async joinRoomByCode(roomCode: string) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_JOIN_BY_CODE,\n {\n roomCode: roomCode,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to join room by code')\n }\n\n // The response IS the room data when coming from the real API\n const roomData = response.roomData || response\n const room = new VenusRoom(roomData)\n // 🔧 FIX: Register room object for subscription updates\n // window.venus._roomObjects[room.id] = room\n return room\n }\n\n // Get user's rooms with optional filtering\n async getUserRooms(appId: string, includeArchived = false) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_GET_USER_ROOMS,\n {\n appId: appId,\n includePersonal: includeArchived,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to get user rooms')\n }\n\n // Convert raw room data to VenusRoom objects and filter out corrupted entries\n const rawRooms = response.rooms || []\n const venusRooms = []\n\n for (const roomData of rawRooms) {\n // Skip rooms with missing canonical ID\n if (!roomData.id) {\n console.warn('getUserRooms: Skipping room with missing ID:', roomData)\n continue\n }\n\n try {\n const venusRoom = new VenusRoom(roomData)\n // 🔧 FIX: Register room object for subscription updates\n //window.venus._roomObjects[venusRoom.id] = venusRoom\n venusRooms.push(venusRoom)\n } catch (error) {\n console.warn(\n 'getUserRooms: Failed to create VenusRoom object:',\n error,\n roomData,\n )\n // Continue processing other rooms\n }\n }\n\n return venusRooms\n }\n\n // Convenience method for common use case\n quickMatch(gameType: any) {\n return this.joinOrCreateRoom({\n matchCriteria: {\n gameType: gameType,\n isPrivate: false,\n hasSpace: true,\n },\n createOptions: {\n name: gameType + ' Game',\n gameType: gameType,\n isPrivate: false,\n maxPlayers: 4, // sensible default\n },\n })\n }\n\n isRoomSystemEnabled = function () {\n return true\n }\n\n // Enhanced room creation with game rules\n async createGameRoom(options: any) {\n const enhancedOptions = {\n ...options,\n customMetadata: {\n ...options.customMetadata,\n rules: {\n ruleEngine: options.ruleEngine || 'basic',\n validateMessages: options.validateMessages || false,\n randomizePlayerOrder: options.randomizePlayerOrder || false,\n clientValidation: options.clientValidation || false,\n allowedMessageTypes: options.allowedMessageTypes || {},\n gameState: {\n phase: 'waiting',\n currentPlayer: null,\n turnOrder: [],\n playerStates: {},\n ...options.initialGameState,\n },\n ...options.rules,\n },\n },\n }\n\n return this.createRoom(enhancedOptions)\n }\n\n // Convenience method for subscribing to all game events\n subscribeToGameEvents(roomId: string, callback: any) {\n if (!window.venus._roomSubscriptions.gameEvents[roomId]) {\n window.venus._roomSubscriptions.gameEvents[roomId] = []\n }\n window.venus._roomSubscriptions.gameEvents[roomId].push(callback)\n\n return {\n unsubscribe: () => {\n const callbacks =\n window.venus._roomSubscriptions.gameEvents[roomId] || []\n const index = callbacks.indexOf(callback)\n if (index > -1) callbacks.splice(index, 1)\n },\n }\n }\n\n async updateData(room: VenusRoom, updates: any, merge = true) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_UPDATE_DATA,\n {\n roomId: room.id,\n updates: updates,\n merge: merge,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to update room data')\n }\n return response.data\n }\n\n async getData(room: VenusRoom) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_GET_DATA,\n {\n roomId: room.id,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to get room data')\n }\n return response.data\n }\n\n async sendMessage(venusRoom: VenusRoom, messageData: any) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_SEND_MESSAGE,\n {\n roomId: venusRoom.id,\n message: messageData,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to send message')\n }\n return response.messageId\n }\n\n async leave(room: VenusRoom) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_LEAVE,\n {\n roomId: room.id,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to leave room')\n }\n\n // Clean up all subscriptions\n // this._subscriptions.forEach((sub) => {\n // if (sub.unsubscribe) sub.unsubscribe()\n // })\n // this._subscriptions.clear()\n //\n // // 🔧 FIX: Remove room object from global registry when leaving\n // if (window.venus._roomObjects[this.id]) {\n // delete window.venus._roomObjects[this.id]\n // console.log(\n // `[Venus Rooms] 🧹 Removed room object ${this.id} from global registry`,\n // )\n // }\n\n return response\n }\n\n async startGame(room: VenusRoom, gameConfig = {}, turnOrder = null) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_START_GAME,\n {\n roomId: room.id,\n gameConfig: gameConfig,\n turnOrder: turnOrder,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to start game')\n }\n return response.data\n }\n\n async proposeMove(room: VenusRoom, proposalPayload: any) {\n const response: any = await this.rpcClient.call(\n VenusMessageId.H5_ROOM_PROPOSE_MOVE,\n {\n roomId: room.id,\n gameSpecificState: proposalPayload.gameSpecificState,\n moveType: proposalPayload.moveType,\n clientContext: proposalPayload.clientContext,\n clientProposalId: proposalPayload.clientProposalId,\n },\n )\n if (!response.success) {\n throw new Error(response.error || 'Failed to propose move')\n }\n return response.data\n }\n\n async validateMove(\n room: VenusRoom,\n moveId: string,\n isValid: boolean,\n reason = null,\n validatorId = null,\n ) {\n console.log(`[Venus Rooms] Validating move ${moveId}: ${isValid}`)\n // TODO: Implement actual validation logic when peer validation is added\n // For now, just return success to maintain compatibility\n return { success: true, moveId, isValid, reason }\n }\n\n async roomSubscribeToGameEvents(room: VenusRoom, callback: any) {\n const subscriptionId =\n 'game_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\n\n // TODO: Fix this madness\n if (!window.venus._roomSubscriptions.gameEvents[room.id]) {\n window.venus._roomSubscriptions.gameEvents[room.id] = []\n }\n window.venus._roomSubscriptions.gameEvents[room.id].push(callback)\n\n // this._subscriptions.set(subscriptionId, {\n // type: 'gameEvents',\n // callback: callback\n // });\n //\n // return {\n // unsubscribe: () => {\n // const callbacks = window.venus._roomSubscriptions.gameEvents[this.id] || [];\n // const index = callbacks.indexOf(callback);\n // if (index > -1) callbacks.splice(index, 1);\n // this._subscriptions.delete(subscriptionId);\n // }\n // };\n }\n\n subscribe(room: VenusRoom, options: any = {}) {\n const subscriptionIds: any[] = []\n const roomId = room.id\n\n // Set up data subscription if requested\n if (options.onData) {\n const dataSubId =\n 'data_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\n\n if (!window.venus._roomSubscriptions.data[roomId]) {\n window.venus._roomSubscriptions.data[roomId] = []\n }\n window.venus._roomSubscriptions.data[roomId].push(options.onData)\n subscriptionIds.push({\n type: 'data',\n id: dataSubId,\n callback: options.onData,\n })\n }\n\n // Set up messages subscription if requested\n if (options.onMessages) {\n const msgSubId =\n 'messages_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\n\n if (!window.venus._roomSubscriptions.messages[roomId]) {\n window.venus._roomSubscriptions.messages[roomId] = []\n }\n window.venus._roomSubscriptions.messages[roomId].push(options.onMessages)\n subscriptionIds.push({\n type: 'messages',\n id: msgSubId,\n callback: options.onMessages,\n })\n }\n\n // Set up game events subscription if requested\n if (options.onMoves || options.onGameEvents) {\n const handler = options.onMoves || options.onGameEvents\n const gameSubId =\n 'game_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9)\n\n if (!window.venus._roomSubscriptions.gameEvents[roomId]) {\n window.venus._roomSubscriptions.gameEvents[roomId] = []\n }\n window.venus._roomSubscriptions.gameEvents[roomId].push(handler)\n subscriptionIds.push({\n type: 'gameEvents',\n id: gameSubId,\n callback: handler,\n })\n }\n\n // Start the actual Firebase subscription if this is the first subscription\n const needsSubscription =\n subscriptionIds.length > 0 &&\n (!window.venus._roomSubscriptions.data[roomId] ||\n window.venus._roomSubscriptions.data[roomId].length <= 1) &&\n (!window.venus._roomSubscriptions.messages[roomId] ||\n window.venus._roomSubscriptions.messages[roomId].length <= 1) &&\n (!window.venus._roomSubscriptions.gameEvents[roomId] ||\n window.venus._roomSubscriptions.gameEvents[roomId].length <= 1)\n\n if (needsSubscription) {\n this.rpcClient\n .call(VenusMessageId.H5_ROOM_SUBSCRIBE, {\n roomId: roomId,\n subscribeToData: !!options.onData,\n subscribeToMessages: !!options.onMessages,\n subscribeToProposedMoves: !!(options.onMoves || options.onGameEvents),\n })\n .catch((error) => {\n console.error('Failed to set up room subscription:', error)\n })\n }\n\n // Return composite unsubscribe function (idempotent)\n let called = false\n return () => {\n if (called) return\n called = true\n\n // Remove all callbacks\n subscriptionIds.forEach((sub: { type: string; callback: any }) => {\n const callbacks =\n window.venus._roomSubscriptions[sub.type][roomId] || []\n const index = callbacks.indexOf(sub.callback)\n if (index > -1) callbacks.splice(index, 1)\n })\n\n // Check if we should unsubscribe from Firebase\n const hasNoCallbacks =\n (!window.venus._roomSubscriptions.data[roomId] ||\n window.venus._roomSubscriptions.data[roomId].length === 0) &&\n (!window.venus._roomSubscriptions.messages[roomId] ||\n window.venus._roomSubscriptions.messages[roomId].length === 0) &&\n (!window.venus._roomSubscriptions.gameEvents[roomId] ||\n window.venus._roomSubscriptions.gameEvents[roomId].length === 0)\n\n if (hasNoCallbacks) {\n this.rpcClient\n .call(VenusMessageId.H5_ROOM_UNSUBSCRIBE, {\n roomId: roomId,\n })\n .catch((error) => {\n console.error('Failed to clean up room subscription:', error)\n })\n }\n }\n }\n}\n","import { Host } from './Host.ts'\nimport { RpcClient } from './rpc'\nimport { VenusMessage, VenusTransport } from './VenusTransport.ts'\nimport { AnalyticsApi, RpcAnalyticsApi } from './analytics'\nimport { AdsApi, RpcAdsApi } from './ads'\nimport { RpcStorageApi, StorageApi } from './storage'\nimport { VenusMessageId } from './VenusMessageId.ts'\nimport { Avatar3dApi, RpcAvatarApi } from './avatar3d'\nimport { VenusAPI } from './venus-api/types.ts'\nimport { NavigationApi, RpcNavigationApi } from './navigation'\nimport { NotificationsApi } from './notifications'\nimport { RpcNotificationsApi } from './notifications/RpcNotificationsApi'\nimport { PopupsApi, RpcPopupsApi } from './popups'\nimport { HostProfileApi, ProfileApi } from './profile'\nimport { CdnApi, HostCdnApi } from './cdn'\nimport { HostTimeApi, TimeApi } from './time'\nimport { PostApi, RpcPostApi } from './post'\nimport { AiApi, RpcAiApi } from './ai'\nimport { HapticsApi, RpcHapticsApi } from './haptics'\nimport { FeaturesApi, RpcFeaturesApi } from './features'\nimport { LifecycleApi, RpcLifecycleApi } from './lifecycles'\nimport { RpcSimulationApi, SimulationApi } from './simulation'\nimport { RoomsApi } from './rooms'\nimport { RpcRoomsApi } from './rooms/RpcRoomsApi'\nimport { LoggingApi, RpcLoggingApi } from './logging'\nimport { IapApi, RpcIapApi } from './iap'\nimport venusApi from './venus-api/index'\nimport VenusApi from './venus-api/index'\n\nconst getCdnBaseUrl = (): string => {\n return (\n process.env.EXPO_PUBLIC_H5_CDN_URL_PRODUCTION ||\n 'https://venus-static-01293ak.web.app/'\n )\n}\n\nexport class RemoteHost implements Host {\n readonly ads: AdsApi\n readonly analytics: AnalyticsApi\n readonly deviceCache: StorageApi\n readonly appStorage: StorageApi\n readonly globalStorage: StorageApi\n readonly avatar3d: Avatar3dApi\n readonly navigation: NavigationApi\n readonly notifications: NotificationsApi\n readonly popups: PopupsApi\n readonly profile: ProfileApi\n readonly cdn: CdnApi\n readonly time: TimeApi\n readonly post: PostApi\n readonly ai: AiApi\n readonly haptics: HapticsApi\n readonly features: FeaturesApi\n readonly lifecycle: LifecycleApi\n readonly simulation: SimulationApi\n readonly rooms: RoomsApi\n readonly logging: LoggingApi\n readonly iap: IapApi\n\n get isInitialized() {\n return this._isInitialized\n }\n\n private readonly venusApi: VenusAPI\n private readonly rpcClient: RpcClient\n private _isInitialized: boolean = false\n\n constructor(venusApi: VenusAPI) {\n this.venusApi = venusApi\n const rpcClient = new RpcClient()\n this.rpcClient = rpcClient\n\n this.ads = new RpcAdsApi(rpcClient)\n this.analytics = new RpcAnalyticsApi(rpcClient)\n this.deviceCache = new RpcStorageApi(rpcClient, {\n clear: VenusMessageId.DEVICE_CACHE_CLEAR,\n getItem: VenusMessageId.DEVICE_CACHE_GET_ITEM,\n getKey: VenusMessageId.DEVICE_CACHE_KEY,\n length: VenusMessageId.DEVICE_CACHE_LENGTH,\n removeItem: VenusMessageId.DEVICE_CACHE_REMOVE_ITEM,\n setItem: VenusMessageId.DEVICE_CACHE_SET_ITEM,\n })\n this.appStorage = new RpcStorageApi(rpcClient, {\n clear: VenusMessageId.APP_STORAGE_CLEAR,\n getItem: VenusMessageId.APP_STORAGE_GET_ITEM,\n getKey: VenusMessageId.APP_STORAGE_KEY,\n length: VenusMessageId.APP_STORAGE_LENGTH,\n removeItem: VenusMessageId.APP_STORAGE_REMOVE_ITEM,\n setItem: VenusMessageId.APP_STORAGE_SET_ITEM,\n getAllItems: VenusMessageId.APP_STORAGE_GET_ALL_ITEMS,\n setMultipleItems: VenusMessageId.APP_STORAGE_SET_ITEM,\n removeMultipleItems: VenusMessageId.APP_STORAGE_REMOVE_ITEM,\n })\n this.globalStorage = new RpcStorageApi(rpcClient, {\n clear: VenusMessageId.GLOBAL_STORAGE_CLEAR,\n getItem: VenusMessageId.GLOBAL_STORAGE_GET_ITEM,\n getKey: VenusMessageId.GLOBAL_STORAGE_KEY,\n length: VenusMessageId.GLOBAL_STORAGE_LENGTH,\n removeItem: VenusMessageId.GLOBAL_STORAGE_REMOVE_ITEM,\n setItem: VenusMessageId.GLOBAL_STORAGE_SET_ITEM,\n getAllItems: VenusMessageId.GLOBAL_STORAGE_GET_ALL_ITEMS,\n setMultipleItems: VenusMessageId.GLOBAL_STORAGE_SET_MULTIPLE_ITEMS,\n removeMultipleItems: VenusMessageId.GLOBAL_STORAGE_REMOVE_MULTIPLE_ITEMS,\n })\n\n this.avatar3d = new RpcAvatarApi(rpcClient, venusApi)\n this.navigation = new RpcNavigationApi(rpcClient, venusApi)\n this.notifications = new RpcNotificationsApi(rpcClient)\n this.popups = new RpcPopupsApi(rpcClient)\n this.profile = new HostProfileApi()\n this.cdn = new HostCdnApi(getCdnBaseUrl())\n this.time = new HostTimeApi(rpcClient)\n this.post = new RpcPostApi(rpcClient)\n this.ai = new RpcAiApi(rpcClient)\n this.haptics = new RpcHapticsApi(rpcClient)\n this.features = new RpcFeaturesApi(rpcClient)\n this.lifecycle = new RpcLifecycleApi(rpcClient)\n this.simulation = new RpcSimulationApi(rpcClient)\n this.rooms = new RpcRoomsApi(rpcClient)\n this.logging = new RpcLoggingApi(this, rpcClient)\n this.iap = new RpcIapApi(rpcClient)\n\n venusApi.isMock = () => false\n\n console.log('[Venus SDK] Remote host created')\n }\n async initialize(): Promise<void> {\n this.log('Initializing Remote Host...')\n\n const transport = new VenusTransport()\n transport.start()\n this.rpcClient.start(transport)\n\n try {\n this.log('Trying to initialize using NEW method...')\n transport.instanceId = await this.initNew()\n } catch (error) {\n this.log(`Failed to initialize using NEW method: ${error}`)\n this.log(`Trying to initialize using OLD method...`)\n transport.instanceId = await this.initOld(transport)\n }\n this.log(`Remote Host Initialized with id: ${transport.instanceId}`)\n this._isInitialized = true\n this.venusApi._bootstrap.apiInjected = true\n this.venusApi._bootstrap.venus = window.venus\n\n await this.rpcClient.call(VenusMessageId.READY, {})\n }\n\n private registerIFrame(transport: VenusTransport): Promise<string> {\n return new Promise((resolve, reject) => {\n this.log('Registering IFrame...')\n\n const location = window.location\n const pathName = location.pathname\n const tokens = pathName.split('/')\n const appId = tokens[2]\n\n console.log('[Venus SDK] App ID ', appId)\n\n // Sending iframe registration message...\n const registrationMessage: VenusMessage = {\n type: 'H5_IFRAME_REGISTER',\n instanceId: appId,\n direction: 'H5_TO_APP',\n timestamp: Date.now(),\n }\n\n const subscription = transport.onVenusMessage((message: VenusMessage) => {\n if (message.type == 'INJECT_VENUS_API_SCRIPT') {\n const scriptContent = message.data?.script\n if (!scriptContent) {\n throw new Error('Failed to inject venus api, no script found.')\n }\n const script = document.createElement('script')\n script.type = 'text/javascript'\n script.textContent = scriptContent\n document.head.appendChild(script)\n\n setTimeout(() => {\n if (window.venus) {\n subscription.unsubscribe()\n resolve(window.venus?._config?.instanceId)\n }\n }, 100)\n }\n })\n transport.sendVenusMessage(registrationMessage)\n\n setTimeout(() => {\n subscription.unsubscribe()\n reject()\n }, 1000)\n })\n }\n\n private async initNew() {\n const response = await this.rpcClient.call<InitResponse>(\n VenusMessageId.INIT_SDK,\n {},\n 1000,\n )\n return response.instanceId\n }\n\n private async initOld(transport: VenusTransport): Promise<string> {\n const isInIframe = window.self !== window.top\n const hasReactNativeWebView =\n typeof window.ReactNativeWebView !== 'undefined'\n\n if (hasReactNativeWebView) {\n return this.useInjectedId()\n } else if (isInIframe) {\n return await this.registerIFrame(transport)\n } else {\n throw new Error('Failed to initialize. Unknown Error')\n }\n }\n\n private useInjectedId() {\n const instanceId =\n window.venus?._config?.instanceId || window._venusInitState?.poolId\n this.log(`On mobile, using injected instanceId: ${instanceId}`)\n if (!instanceId) {\n throw new Error('Expected injected instanceId on mobile')\n }\n return instanceId\n }\n\n private log(message: string) {\n console.log(`[Venus SDK] [Remote Host] ${message}`)\n }\n}\n\ninterface InitResponse {\n instanceId: string\n}\n","import { MockHost } from './MockHost.ts'\nimport { RemoteHost } from './RemoteHost.ts'\nimport { AnalyticsApi } from './analytics'\nimport { AdsApi } from './ads'\nimport { StorageApi } from './storage/StorageApi.ts'\nimport { Avatar3dApi } from './avatar3d'\nimport { VenusAPI } from './venus-api/types.ts'\nimport { NavigationApi } from './navigation'\nimport { NotificationsApi } from './notifications'\nimport { PopupsApi } from './popups'\nimport { ProfileApi } from './profile'\nimport { CdnApi } from './cdn/CdnApi'\nimport { TimeApi } from './time'\nimport { PostApi } from './post'\nimport { AiApi } from './ai'\nimport { HapticsApi } from './haptics'\nimport { FeaturesApi } from './features'\nimport { LifecycleApi } from './lifecycles'\nimport { SimulationApi } from './simulation'\nimport { RoomsApi } from './rooms'\nimport { LoggingApi } from './logging'\nimport { IapApi } from './iap'\n\nexport interface Host {\n readonly ads: AdsApi\n readonly analytics: AnalyticsApi\n readonly deviceCache: StorageApi\n readonly appStorage: StorageApi\n readonly globalStorage: StorageApi\n readonly avatar3d: Avatar3dApi\n readonly navigation: NavigationApi\n readonly notifications: NotificationsApi\n readonly popups: PopupsApi\n readonly profile: ProfileApi\n readonly cdn: CdnApi\n readonly time: TimeApi\n readonly post: PostApi\n readonly ai: AiApi\n readonly haptics: HapticsApi\n readonly features: FeaturesApi\n readonly lifecycle: LifecycleApi\n readonly simulation: SimulationApi\n readonly rooms: RoomsApi\n readonly logging: LoggingApi\n\n readonly isInitialized: boolean\n\n initialize(): Promise<void>\n readonly iap: IapApi\n}\n\nexport function createHost(venusApi: VenusAPI, isMock: boolean): Host {\n if (isMock) {\n console.log('[Venus SDK] Creating Local Host')\n return new MockHost(venusApi)\n } else {\n console.log('[Venus SDK] Creating Remote Host')\n return new RemoteHost(venusApi)\n }\n}\n","declare const __SDK_VERSION__: string\nexport const SDK_VERSION = __SDK_VERSION__\n"]}
|