@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/ads/RpcAdsApi.ts","../src/ads/MockAdsApi.ts","../src/ads/index.ts","../src/ai/RpcAiApi.ts","../src/ai/MockAiApi.ts","../src/ai/index.ts","../src/analytics/MockAnalyticsApi.ts","../src/analytics/RpcAnalyticsApi.ts","../src/analytics/index.ts","../src/avatar3d/MockAvatarApi.ts","../src/avatar3d/RpcAvatarApi.ts","../src/avatar3d/index.ts","../src/cdn/HostCdnApi.ts","../src/cdn/MockCdnApi.ts","../src/cdn/index.ts","../src/features/RpcFeaturesApi.ts","../src/features/MockFeaturesApi.ts","../src/features/index.ts","../src/haptics/HapticsApi.ts","../src/haptics/RpcHapticsApi.ts","../src/haptics/MockHapticsApi.ts","../src/haptics/index.ts","../src/iap/RpcIapApi.ts","../src/iap/MockIapApi.ts","../src/iap/index.ts","../src/lifecycles/MockLifecycleApi.ts","../src/lifecycles/RpcLifecycleApi.ts","../src/lifecycles/index.ts","../src/logging/MockLoggingApi.ts","../src/logging/RpcLoggingApi.ts","../src/logging/index.ts","../src/navigation/MockNavigationApi.ts","../src/navigation/RpcNavigationApi.ts","../src/navigation/index.ts","../src/notifications/MockNotificationsApi.ts","../src/notifications/index.ts","../src/popups/RpcPopupsApi.ts","../src/popups/MockPopupsApi.ts","../src/popups/index.ts","../src/profile/HostProfileApi.ts","../src/profile/MockProfileApi.ts","../src/profile/index.ts","../src/rpc/RpcClient.ts","../src/storage/MockStorageApi.ts","../src/storage/RpcStorageApi.ts","../src/storage/index.ts","../src/simulation/utils.ts","../src/simulation/RpcSimulationApi.ts","../src/simulation/MockSimulationApi.ts","../src/simulation/index.ts","../src/time/utils.ts","../src/time/HostTimeApi.ts","../src/time/MockTimeApi.ts","../src/time/index.ts","../src/version.ts"],"names":["selectedAsset","HapticFeedbackStyle","generateAppIdentifier"],"mappings":"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","file":"chunk-7KKRTPDL.mjs","sourcesContent":["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 { 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","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","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 { 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 { 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","export enum HapticFeedbackStyle {\n Light = 'light',\n Medium = 'medium',\n Heavy = 'heavy',\n Success = 'success',\n Warning = 'warning',\n Error = 'error',\n}\nexport interface HapticsApi {\n triggerHapticAsync(style: HapticFeedbackStyle): Promise<void>\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","// 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 {\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","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 {\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 {\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","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 { 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 { 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 { 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","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","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","declare const __SDK_VERSION__: string\nexport const SDK_VERSION = __SDK_VERSION__\n"]}
|