@haex-space/vault-sdk 2.3.0 → 2.3.3

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/dist/vite.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/polyfills/localStorage.ts","../src/polyfills/cookies.ts","../src/polyfills/history.ts","../src/messages.ts","../src/polyfills/debug.ts","../src/polyfills/standalone.ts","../src/cors.ts","../src/vite.ts"],"names":[],"mappings":"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","file":"vite.mjs","sourcesContent":["/**\n * localStorage Polyfill for HaexHub Extensions\n *\n * Provides an in-memory fallback when localStorage is blocked\n * due to custom protocol restrictions (haex-extension://)\n */\n\nexport function installLocalStoragePolyfill(): void {\n if (typeof window === 'undefined') {\n return; // Skip in Node.js environment\n }\n\n console.log('[HaexHub] Storage Polyfill loading immediately');\n\n // Test if localStorage is available\n let localStorageWorks = false;\n try {\n const testKey = '__ls_test__';\n localStorage.setItem(testKey, testKey);\n localStorage.removeItem(testKey);\n localStorageWorks = true;\n } catch (e) {\n console.warn('[HaexHub] localStorage blocked – using in-memory fallback');\n }\n\n // If blocked: Replace with In-Memory Storage\n if (!localStorageWorks) {\n const lsStorage = new Map<string, string>();\n\n const localStoragePoly: Storage = {\n getItem(key: string): string | null {\n return lsStorage.get(key) || null;\n },\n setItem(key: string, value: string): void {\n lsStorage.set(key, String(value));\n },\n removeItem(key: string): void {\n lsStorage.delete(key);\n },\n clear(): void {\n lsStorage.clear();\n },\n get length(): number {\n return lsStorage.size;\n },\n key(index: number): string | null {\n return Array.from(lsStorage.keys())[index] || null;\n }\n };\n\n try {\n Object.defineProperty(window, 'localStorage', {\n value: localStoragePoly,\n writable: true,\n configurable: true\n });\n } catch (e) {\n // Fallback: Direct assignment\n (window as any).localStorage = localStoragePoly;\n }\n\n console.log('[HaexHub] localStorage replaced with in-memory polyfill');\n }\n}\n\n/**\n * sessionStorage Polyfill for HaexHub Extensions\n *\n * Provides a no-op implementation as session state doesn't work\n * reliably in custom protocol contexts\n */\nexport function installSessionStoragePolyfill(): void {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n const sessionStoragePoly: Storage = {\n getItem(): null {\n return null;\n },\n setItem(): void {},\n removeItem(): void {},\n clear(): void {},\n get length(): number {\n return 0;\n },\n key(): null {\n return null;\n }\n };\n\n Object.defineProperty(window, 'sessionStorage', {\n value: sessionStoragePoly,\n writable: true,\n configurable: true\n });\n } catch (e) {\n // Fallback: Direct assignment\n (window as any).sessionStorage = {\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n clear: () => {},\n get length() { return 0; },\n key: () => null\n };\n }\n\n console.log('[HaexHub] sessionStorage polyfill installed');\n}\n","/**\n * Cookie Polyfill for HaexHub Extensions\n *\n * Provides an in-memory cookie implementation when cookies are blocked\n * due to custom protocol restrictions (haex-extension://)\n */\n\nexport function installCookiePolyfill(): void {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return; // Skip in Node.js environment\n }\n\n // Test if cookies are available\n let cookiesWork = false;\n try {\n document.cookie = \"__cookie_test__=1\";\n cookiesWork = document.cookie.indexOf(\"__cookie_test__\") !== -1;\n } catch (e) {\n console.warn(\"[HaexHub] Cookies blocked – using in-memory fallback\");\n }\n\n if (!cookiesWork) {\n const cookieStore = new Map<string, string>();\n\n Object.defineProperty(document, \"cookie\", {\n get(): string {\n const cookies: string[] = [];\n cookieStore.forEach((value, key) => {\n cookies.push(`${key}=${value}`);\n });\n return cookies.join(\"; \");\n },\n set(cookieString: string): void {\n const parts = cookieString.split(\";\").map((p) => p.trim());\n const [keyValue] = parts;\n\n if (!keyValue) return;\n\n const [key, value] = keyValue.split(\"=\");\n if (!key) return;\n\n // Parse options\n const options: Record<string, string | boolean> = {};\n for (let i = 1; i < parts.length; i++) {\n const part = parts[i];\n if (!part) continue;\n const parts_split = part.split(\"=\");\n const optKey = parts_split[0];\n const optValue = parts_split[1];\n if (optKey) {\n options[optKey.toLowerCase()] = optValue || true;\n }\n }\n\n // Check for deletion (expires in past)\n const expiresValue = options.expires;\n if (expiresValue && typeof expiresValue === \"string\") {\n const expiresDate = new Date(expiresValue);\n if (expiresDate < new Date()) {\n cookieStore.delete(key);\n return;\n }\n }\n\n // Check for max-age=0 deletion\n const maxAgeValue = options[\"max-age\"];\n if (typeof maxAgeValue === \"string\" && maxAgeValue === \"0\") {\n cookieStore.delete(key);\n return;\n }\n\n // Store cookie\n cookieStore.set(key, value || \"\");\n },\n configurable: true,\n });\n\n console.log(\"[HaexHub] Cookie polyfill installed\");\n }\n}\n","/**\n * History API Polyfill for HaexHub Extensions\n *\n * Works around SecurityError when using pushState/replaceState\n * in custom protocol contexts (haex-extension://)\n *\n * Falls back to hash-based routing when necessary\n */\n\nexport function installHistoryPolyfill(): void {\n if (typeof window === 'undefined' || typeof history === 'undefined') {\n return; // Skip in Node.js environment\n }\n\n // Install after DOM is ready to avoid race conditions\n const install = () => {\n console.log('[HaexHub] History Patch loading');\n\n const originalPushState = history.pushState;\n const originalReplaceState = history.replaceState;\n let skipNextPush = false;\n let skipNextReplace = false;\n\n // Patch pushState\n history.pushState = function(\n state: any,\n title: string,\n url?: string | URL | null\n ): void {\n console.log('[HaexHub] pushState called:', url, 'skip:', skipNextPush);\n\n if (skipNextPush) {\n skipNextPush = false;\n console.log('[HaexHub] pushState skipped');\n return;\n }\n\n try {\n return originalPushState.call(this, state, title, url);\n } catch (e) {\n if ((e as Error).name === 'SecurityError' && url) {\n // Remove duplicate /#/ prefix\n const urlString = url.toString();\n let hashUrl = urlString.replace(/^\\/#/, '');\n hashUrl = hashUrl.startsWith('#') ? hashUrl : '#' + hashUrl;\n console.log('[HaexHub] SecurityError - setting hash to:', hashUrl);\n skipNextPush = true;\n window.location.hash = hashUrl.replace(/^#/, '');\n return; // Silent fallback\n }\n throw e;\n }\n };\n\n // Patch replaceState\n history.replaceState = function(\n state: any,\n title: string,\n url?: string | URL | null\n ): void {\n console.log('[HaexHub] replaceState called:', url, 'skip:', skipNextReplace);\n\n if (skipNextReplace) {\n skipNextReplace = false;\n console.log('[HaexHub] replaceState skipped');\n return;\n }\n\n try {\n return originalReplaceState.call(this, state, title, url);\n } catch (e) {\n if ((e as Error).name === 'SecurityError' && url) {\n // Remove duplicate /#/ prefix\n const urlString = url.toString();\n let hashUrl = urlString.replace(/^\\/#/, '');\n hashUrl = hashUrl.startsWith('#') ? hashUrl : '#' + hashUrl;\n console.log('[HaexHub] SecurityError - setting hash to:', hashUrl);\n skipNextReplace = true;\n window.location.hash = hashUrl.replace(/^#/, '');\n return; // Silent fallback\n }\n throw e;\n }\n };\n\n console.log('[HaexHub] History API patched');\n };\n\n // Install after DOM is ready\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', install, { once: true });\n } else {\n // DOM already loaded, install immediately\n install();\n }\n}\n","/**\n * Central message type definitions for HaexSpace SDK\n *\n * Message Naming Schema: haexspace:{subject}\n *\n * These are used for internal communication between extensions and HaexSpace\n */\n\nexport const HAEXSPACE_MESSAGE_TYPES = {\n /** Debug message for development/troubleshooting */\n DEBUG: 'haexspace:debug',\n\n /** Console forwarding from extension iframe */\n CONSOLE_FORWARD: 'console.forward',\n} as const;\n\nexport type HaexspaceMessageType =\n (typeof HAEXSPACE_MESSAGE_TYPES)[keyof typeof HAEXSPACE_MESSAGE_TYPES];\n","import { HAEXSPACE_MESSAGE_TYPES } from '../messages';\n\n/**\n * Debug diagnostics for Android debugging\n * Tests window.parent availability and postMessage functionality\n */\nexport function installDebugDiagnostics(): void {\n if (typeof window === 'undefined') {\n return;\n }\n\n const hasParent = window.parent && window.parent !== window;\n console.log('[HaexSpace] hasParent:', hasParent);\n\n if (hasParent) {\n console.log('[HaexSpace] Attempting to send debug message to parent...');\n window.parent.postMessage({\n type: HAEXSPACE_MESSAGE_TYPES.DEBUG,\n data: `[Polyfills] window.parent test: exists=${!!window.parent}, different=${hasParent}, selfIsTop=${window.self === window.top}`\n }, '*');\n console.log('[HaexSpace] Debug message sent!');\n } else {\n console.log('[HaexSpace] No parent window or parent === window');\n }\n}\n","/**\n * Generates standalone polyfill code for HTML injection\n * This wraps the modular polyfills into an IIFE for immediate execution\n */\nimport {\n installLocalStoragePolyfill,\n installSessionStoragePolyfill,\n} from './localStorage'\nimport { installCookiePolyfill } from './cookies'\nimport { installHistoryPolyfill } from './history'\nimport { installDebugDiagnostics } from './debug'\n\n/**\n * Get the standalone polyfill code as a string\n * This is used by the Nuxt and Vite plugins to inject polyfills into HTML\n *\n * Note: Base tag is injected statically by the Vite plugin, not at runtime\n */\nexport function getPolyfillCode(): string {\n // Convert functions to string and wrap in IIFE\n const iife = `(function() {\n 'use strict';\n\n console.log('[HaexHub] Storage Polyfill loading immediately');\n\n // localStorage Polyfill\n (${installLocalStoragePolyfill.toString()})();\n\n // sessionStorage Polyfill\n (${installSessionStoragePolyfill.toString()})();\n\n // Cookie Polyfill\n (${installCookiePolyfill.toString()})();\n\n // History API Polyfill\n (${installHistoryPolyfill.toString()})();\n\n // Note: Base tag is injected at build-time by Vite plugin, not at runtime\n\n console.log('[HaexHub] All polyfills loaded successfully');\n\n // Debug diagnostics for Android debugging\n (${installDebugDiagnostics.toString()})();\n})();`\n\n return iife\n}\n","/**\n * CORS Configuration for HaexHub Extensions\n * Used by both Vite and Nuxt plugins to ensure consistent CORS headers\n */\n\n/**\n * Standard CORS headers for HaexHub dev servers\n * Allows extensions to be loaded in custom protocol iframes (haex-extension://)\n */\nexport const HAEXHUB_CORS_HEADERS = {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, PATCH, OPTIONS',\n 'Access-Control-Allow-Headers': '*',\n 'Access-Control-Allow-Credentials': 'true',\n} as const\n\n/**\n * Apply CORS headers to a Node.js response object\n * Used in Vite middleware\n */\nexport function applyCorsHeaders(\n res: { setHeader: (name: string, value: string) => void },\n origin?: string\n) {\n res.setHeader('Access-Control-Allow-Origin', origin || '*')\n res.setHeader('Access-Control-Allow-Methods', HAEXHUB_CORS_HEADERS['Access-Control-Allow-Methods'])\n res.setHeader('Access-Control-Allow-Headers', HAEXHUB_CORS_HEADERS['Access-Control-Allow-Headers'])\n res.setHeader('Access-Control-Allow-Credentials', HAEXHUB_CORS_HEADERS['Access-Control-Allow-Credentials'])\n}\n\n/**\n * Get CORS headers as a plain object\n * Used in Vite/Nuxt config\n */\nexport function getCorsHeaders(origin?: string): Record<string, string> {\n return {\n 'Access-Control-Allow-Origin': origin || HAEXHUB_CORS_HEADERS['Access-Control-Allow-Origin'],\n 'Access-Control-Allow-Methods': HAEXHUB_CORS_HEADERS['Access-Control-Allow-Methods'],\n 'Access-Control-Allow-Headers': HAEXHUB_CORS_HEADERS['Access-Control-Allow-Headers'],\n 'Access-Control-Allow-Credentials': HAEXHUB_CORS_HEADERS['Access-Control-Allow-Credentials'],\n }\n}\n","/**\n * Vite Plugin for HaexHub SDK\n * Automatically injects polyfills into HTML files\n * Works with React, Vue, Svelte, and any other Vite-based project\n */\nimport type { Plugin } from 'vite'\nimport { getPolyfillCode } from './polyfills/standalone'\nimport { applyCorsHeaders } from './cors'\n\nexport interface VitePluginOptions {\n /**\n * Enable/disable polyfill injection\n * @default true\n */\n injectPolyfills?: boolean\n\n /**\n * Configure CORS for dev server\n * @default true\n */\n configureCors?: boolean\n}\n\n/**\n * HaexHub Vite Plugin\n * Injects browser API polyfills for extensions running in custom protocols\n *\n * @example\n * ```ts\n * // vite.config.ts\n * import { haexhubPlugin } from '@haexhub/sdk/vite'\n *\n * export default {\n * plugins: [haexhubPlugin()]\n * }\n * ```\n */\nexport function haexhubPlugin(options: VitePluginOptions = {}): Plugin {\n const { injectPolyfills = true, configureCors = true } = options\n\n let polyfillCode: string | null = null\n\n return {\n name: '@haexhub/sdk',\n enforce: 'post', // Run after other plugins\n\n configResolved(config) {\n if (injectPolyfills) {\n try {\n // Get polyfill code from modular polyfills\n polyfillCode = getPolyfillCode()\n console.log('✓ [@haexhub/sdk] Polyfills initialized')\n } catch (error) {\n console.error('[@haexhub/sdk] Failed to initialize:', error)\n throw error\n }\n }\n\n // Log CORS configuration\n if (configureCors && config.command === 'serve') {\n console.log('✓ [@haexhub/sdk] CORS configured for HaexHub development')\n console.log(' - Allowing all origins (required for custom protocols)')\n console.log(' - Allowing credentials')\n }\n },\n\n configureServer(server) {\n if (!configureCors) return\n\n // Add CORS middleware for HaexHub using shared CORS configuration\n server.middlewares.use((req, res, next) => {\n // Apply CORS headers (allows custom protocols like haex-extension://)\n applyCorsHeaders(res, req.headers.origin)\n\n // Handle preflight requests\n if (req.method === 'OPTIONS') {\n res.statusCode = 200\n res.end()\n return\n }\n\n next()\n })\n },\n\n transformIndexHtml: {\n order: 'pre', // Inject before other transformations\n handler(html: string) {\n if (!injectPolyfills || !polyfillCode) {\n return html\n }\n\n // Inject polyfill script directly after <head>\n const headPos = html.indexOf('<head>')\n if (headPos === -1) {\n console.warn('[@haexhub/sdk] No <head> tag found in HTML')\n return html\n }\n\n const insertPos = headPos + 6 // after <head>\n\n // Inject polyfill only (no base tag needed)\n const polyfillScript = `<script>${polyfillCode}</script>`\n const modifiedHtml = html.slice(0, insertPos) + polyfillScript + html.slice(insertPos)\n\n console.log('✓ [@haexhub/sdk] Polyfill injected into HTML')\n\n return modifiedHtml\n }\n }\n }\n}\n\n// Default export for convenience\nexport default haexhubPlugin\n"]}
1
+ {"version":3,"sources":["../src/polyfills/localStorage.ts","../src/polyfills/cookies.ts","../src/polyfills/history.ts","../src/messages.ts","../src/polyfills/debug.ts","../src/polyfills/standalone.ts","../src/cors.ts","../src/vite.ts"],"names":[],"mappings":";AAOO,SAAS,2BAAA,GAAoC;AAClD,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,IAAA;AAAA,EACF;AAEA,EAAA,OAAA,CAAQ,IAAI,kDAAkD,CAAA;AAG9D,EAAA,IAAI,iBAAA,GAAoB,KAAA;AACxB,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,GAAU,aAAA;AAChB,IAAA,YAAA,CAAa,OAAA,CAAQ,SAAS,OAAO,CAAA;AACrC,IAAA,YAAA,CAAa,WAAW,OAAO,CAAA;AAC/B,IAAA,iBAAA,GAAoB,IAAA;AAAA,EACtB,SAAS,CAAA,EAAG;AACV,IAAA,OAAA,CAAQ,KAAK,kEAA6D,CAAA;AAAA,EAC5E;AAGA,EAAA,IAAI,CAAC,iBAAA,EAAmB;AACtB,IAAA,MAAM,SAAA,uBAAgB,GAAA,EAAoB;AAE1C,IAAA,MAAM,gBAAA,GAA4B;AAAA,MAChC,QAAQ,GAAA,EAA4B;AAClC,QAAA,OAAO,SAAA,CAAU,GAAA,CAAI,GAAG,CAAA,IAAK,IAAA;AAAA,MAC/B,CAAA;AAAA,MACA,OAAA,CAAQ,KAAa,KAAA,EAAqB;AACxC,QAAA,SAAA,CAAU,GAAA,CAAI,GAAA,EAAK,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,MAClC,CAAA;AAAA,MACA,WAAW,GAAA,EAAmB;AAC5B,QAAA,SAAA,CAAU,OAAO,GAAG,CAAA;AAAA,MACtB,CAAA;AAAA,MACA,KAAA,GAAc;AACZ,QAAA,SAAA,CAAU,KAAA,EAAM;AAAA,MAClB,CAAA;AAAA,MACA,IAAI,MAAA,GAAiB;AACnB,QAAA,OAAO,SAAA,CAAU,IAAA;AAAA,MACnB,CAAA;AAAA,MACA,IAAI,KAAA,EAA8B;AAChC,QAAA,OAAO,MAAM,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA,CAAE,KAAK,CAAA,IAAK,IAAA;AAAA,MAChD;AAAA,KACF;AAEA,IAAA,IAAI;AACF,MAAA,MAAA,CAAO,cAAA,CAAe,QAAQ,cAAA,EAAgB;AAAA,QAC5C,KAAA,EAAO,gBAAA;AAAA,QACP,QAAA,EAAU,IAAA;AAAA,QACV,YAAA,EAAc;AAAA,OACf,CAAA;AAAA,IACH,SAAS,CAAA,EAAG;AAEV,MAAC,OAAe,YAAA,GAAe,gBAAA;AAAA,IACjC;AAEA,IAAA,OAAA,CAAQ,IAAI,2DAA2D,CAAA;AAAA,EACzE;AACF;AAQO,SAAS,6BAAA,GAAsC;AACpD,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,IAAA;AAAA,EACF;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,kBAAA,GAA8B;AAAA,MAClC,OAAA,GAAgB;AACd,QAAA,OAAO,IAAA;AAAA,MACT,CAAA;AAAA,MACA,OAAA,GAAgB;AAAA,MAAC,CAAA;AAAA,MACjB,UAAA,GAAmB;AAAA,MAAC,CAAA;AAAA,MACpB,KAAA,GAAc;AAAA,MAAC,CAAA;AAAA,MACf,IAAI,MAAA,GAAiB;AACnB,QAAA,OAAO,CAAA;AAAA,MACT,CAAA;AAAA,MACA,GAAA,GAAY;AACV,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACF;AAEA,IAAA,MAAA,CAAO,cAAA,CAAe,QAAQ,gBAAA,EAAkB;AAAA,MAC9C,KAAA,EAAO,kBAAA;AAAA,MACP,QAAA,EAAU,IAAA;AAAA,MACV,YAAA,EAAc;AAAA,KACf,CAAA;AAAA,EACH,SAAS,CAAA,EAAG;AAEV,IAAC,OAAe,cAAA,GAAiB;AAAA,MAC/B,SAAS,MAAM,IAAA;AAAA,MACf,SAAS,MAAM;AAAA,MAAC,CAAA;AAAA,MAChB,YAAY,MAAM;AAAA,MAAC,CAAA;AAAA,MACnB,OAAO,MAAM;AAAA,MAAC,CAAA;AAAA,MACd,IAAI,MAAA,GAAS;AAAE,QAAA,OAAO,CAAA;AAAA,MAAG,CAAA;AAAA,MACzB,KAAK,MAAM;AAAA,KACb;AAAA,EACF;AAEA,EAAA,OAAA,CAAQ,IAAI,+CAA+C,CAAA;AAC7D;;;ACvGO,SAAS,qBAAA,GAA8B;AAC5C,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,OAAO,aAAa,WAAA,EAAa;AACpE,IAAA;AAAA,EACF;AAGA,EAAA,IAAI,WAAA,GAAc,KAAA;AAClB,EAAA,IAAI;AACF,IAAA,QAAA,CAAS,MAAA,GAAS,mBAAA;AAClB,IAAA,WAAA,GAAc,QAAA,CAAS,MAAA,CAAO,OAAA,CAAQ,iBAAiB,CAAA,KAAM,CAAA,CAAA;AAAA,EAC/D,SAAS,CAAA,EAAG;AACV,IAAA,OAAA,CAAQ,KAAK,6DAAwD,CAAA;AAAA,EACvE;AAEA,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,MAAM,WAAA,uBAAkB,GAAA,EAAoB;AAE5C,IAAA,MAAA,CAAO,cAAA,CAAe,UAAU,QAAA,EAAU;AAAA,MACxC,GAAA,GAAc;AACZ,QAAA,MAAM,UAAoB,EAAC;AAC3B,QAAA,WAAA,CAAY,OAAA,CAAQ,CAAC,KAAA,EAAO,GAAA,KAAQ;AAClC,UAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAA;AAAA,QAChC,CAAC,CAAA;AACD,QAAA,OAAO,OAAA,CAAQ,KAAK,IAAI,CAAA;AAAA,MAC1B,CAAA;AAAA,MACA,IAAI,YAAA,EAA4B;AAC9B,QAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,KAAA,CAAM,GAAG,CAAA,CAAE,IAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,EAAM,CAAA;AACzD,QAAA,MAAM,CAAC,QAAQ,CAAA,GAAI,KAAA;AAEnB,QAAA,IAAI,CAAC,QAAA,EAAU;AAEf,QAAA,MAAM,CAAC,GAAA,EAAK,KAAK,CAAA,GAAI,QAAA,CAAS,MAAM,GAAG,CAAA;AACvC,QAAA,IAAI,CAAC,GAAA,EAAK;AAGV,QAAA,MAAM,UAA4C,EAAC;AACnD,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,UAAA,MAAM,IAAA,GAAO,MAAM,CAAC,CAAA;AACpB,UAAA,IAAI,CAAC,IAAA,EAAM;AACX,UAAA,MAAM,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAClC,UAAA,MAAM,MAAA,GAAS,YAAY,CAAC,CAAA;AAC5B,UAAA,MAAM,QAAA,GAAW,YAAY,CAAC,CAAA;AAC9B,UAAA,IAAI,MAAA,EAAQ;AACV,YAAA,OAAA,CAAQ,MAAA,CAAO,WAAA,EAAa,CAAA,GAAI,QAAA,IAAY,IAAA;AAAA,UAC9C;AAAA,QACF;AAGA,QAAA,MAAM,eAAe,OAAA,CAAQ,OAAA;AAC7B,QAAA,IAAI,YAAA,IAAgB,OAAO,YAAA,KAAiB,QAAA,EAAU;AACpD,UAAA,MAAM,WAAA,GAAc,IAAI,IAAA,CAAK,YAAY,CAAA;AACzC,UAAA,IAAI,WAAA,mBAAc,IAAI,IAAA,EAAK,EAAG;AAC5B,YAAA,WAAA,CAAY,OAAO,GAAG,CAAA;AACtB,YAAA;AAAA,UACF;AAAA,QACF;AAGA,QAAA,MAAM,WAAA,GAAc,QAAQ,SAAS,CAAA;AACrC,QAAA,IAAI,OAAO,WAAA,KAAgB,QAAA,IAAY,WAAA,KAAgB,GAAA,EAAK;AAC1D,UAAA,WAAA,CAAY,OAAO,GAAG,CAAA;AACtB,UAAA;AAAA,QACF;AAGA,QAAA,WAAA,CAAY,GAAA,CAAI,GAAA,EAAK,KAAA,IAAS,EAAE,CAAA;AAAA,MAClC,CAAA;AAAA,MACA,YAAA,EAAc;AAAA,KACf,CAAA;AAED,IAAA,OAAA,CAAQ,IAAI,uCAAuC,CAAA;AAAA,EACrD;AACF;;;ACtEO,SAAS,sBAAA,GAA+B;AAC7C,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,OAAO,YAAY,WAAA,EAAa;AACnE,IAAA;AAAA,EACF;AAGA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,OAAA,CAAQ,IAAI,mCAAmC,CAAA;AAE/C,IAAA,MAAM,oBAAoB,OAAA,CAAQ,SAAA;AAClC,IAAA,MAAM,uBAAuB,OAAA,CAAQ,YAAA;AACrC,IAAA,IAAI,YAAA,GAAe,KAAA;AACnB,IAAA,IAAI,eAAA,GAAkB,KAAA;AAGtB,IAAA,OAAA,CAAQ,SAAA,GAAY,SAClB,KAAA,EACA,KAAA,EACA,GAAA,EACM;AACN,MAAA,OAAA,CAAQ,GAAA,CAAI,+BAAA,EAAiC,GAAA,EAAK,OAAA,EAAS,YAAY,CAAA;AAEvE,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,YAAA,GAAe,KAAA;AACf,QAAA,OAAA,CAAQ,IAAI,+BAA+B,CAAA;AAC3C,QAAA;AAAA,MACF;AAEA,MAAA,IAAI;AACF,QAAA,OAAO,iBAAA,CAAkB,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,OAAO,GAAG,CAAA;AAAA,MACvD,SAAS,CAAA,EAAG;AACV,QAAA,IAAK,CAAA,CAAY,IAAA,KAAS,eAAA,IAAmB,GAAA,EAAK;AAEhD,UAAA,MAAM,SAAA,GAAY,IAAI,QAAA,EAAS;AAC/B,UAAA,IAAI,OAAA,GAAU,SAAA,CAAU,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAC1C,UAAA,OAAA,GAAU,OAAA,CAAQ,UAAA,CAAW,GAAG,CAAA,GAAI,UAAU,GAAA,GAAM,OAAA;AACpD,UAAA,OAAA,CAAQ,GAAA,CAAI,gDAAgD,OAAO,CAAA;AACnE,UAAA,YAAA,GAAe,IAAA;AACf,UAAA,MAAA,CAAO,QAAA,CAAS,IAAA,GAAO,OAAA,CAAQ,OAAA,CAAQ,MAAM,EAAE,CAAA;AAC/C,UAAA;AAAA,QACF;AACA,QAAA,MAAM,CAAA;AAAA,MACR;AAAA,IACF,CAAA;AAGA,IAAA,OAAA,CAAQ,YAAA,GAAe,SACrB,KAAA,EACA,KAAA,EACA,GAAA,EACM;AACN,MAAA,OAAA,CAAQ,GAAA,CAAI,kCAAA,EAAoC,GAAA,EAAK,OAAA,EAAS,eAAe,CAAA;AAE7E,MAAA,IAAI,eAAA,EAAiB;AACnB,QAAA,eAAA,GAAkB,KAAA;AAClB,QAAA,OAAA,CAAQ,IAAI,kCAAkC,CAAA;AAC9C,QAAA;AAAA,MACF;AAEA,MAAA,IAAI;AACF,QAAA,OAAO,oBAAA,CAAqB,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,OAAO,GAAG,CAAA;AAAA,MAC1D,SAAS,CAAA,EAAG;AACV,QAAA,IAAK,CAAA,CAAY,IAAA,KAAS,eAAA,IAAmB,GAAA,EAAK;AAEhD,UAAA,MAAM,SAAA,GAAY,IAAI,QAAA,EAAS;AAC/B,UAAA,IAAI,OAAA,GAAU,SAAA,CAAU,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAC1C,UAAA,OAAA,GAAU,OAAA,CAAQ,UAAA,CAAW,GAAG,CAAA,GAAI,UAAU,GAAA,GAAM,OAAA;AACpD,UAAA,OAAA,CAAQ,GAAA,CAAI,gDAAgD,OAAO,CAAA;AACnE,UAAA,eAAA,GAAkB,IAAA;AAClB,UAAA,MAAA,CAAO,QAAA,CAAS,IAAA,GAAO,OAAA,CAAQ,OAAA,CAAQ,MAAM,EAAE,CAAA;AAC/C,UAAA;AAAA,QACF;AACA,QAAA,MAAM,CAAA;AAAA,MACR;AAAA,IACF,CAAA;AAEA,IAAA,OAAA,CAAQ,IAAI,iCAAiC,CAAA;AAAA,EAC/C,CAAA;AAGA,EAAA,IAAI,QAAA,CAAS,eAAe,SAAA,EAAW;AACrC,IAAA,QAAA,CAAS,iBAAiB,kBAAA,EAAoB,OAAA,EAAS,EAAE,IAAA,EAAM,MAAM,CAAA;AAAA,EACvE,CAAA,MAAO;AAEL,IAAA,OAAA,EAAQ;AAAA,EACV;AACF;;;ACvFO,IAAM,uBAAA,GAA0B;AAAA;AAAA,EAErC,KAAA,EAAO,iBAIT,CAAA;;;ACRO,SAAS,uBAAA,GAAgC;AAC9C,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,SAAA,GAAY,MAAA,CAAO,MAAA,IAAU,MAAA,CAAO,MAAA,KAAW,MAAA;AACrD,EAAA,OAAA,CAAQ,GAAA,CAAI,0BAA0B,SAAS,CAAA;AAE/C,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,OAAA,CAAQ,IAAI,2DAA2D,CAAA;AACvE,IAAA,MAAA,CAAO,OAAO,WAAA,CAAY;AAAA,MACxB,MAAM,uBAAA,CAAwB,KAAA;AAAA,MAC9B,IAAA,EAAM,CAAA,uCAAA,EAA0C,CAAC,CAAC,MAAA,CAAO,MAAM,CAAA,YAAA,EAAe,SAAS,CAAA,YAAA,EAAe,MAAA,CAAO,IAAA,KAAS,MAAA,CAAO,GAAG,CAAA;AAAA,OAC/H,GAAG,CAAA;AACN,IAAA,OAAA,CAAQ,IAAI,iCAAiC,CAAA;AAAA,EAC/C,CAAA,MAAO;AACL,IAAA,OAAA,CAAQ,IAAI,mDAAmD,CAAA;AAAA,EACjE;AACF;;;ACNO,SAAS,eAAA,GAA0B;AAExC,EAAA,MAAM,IAAA,GAAO,CAAA;AAAA;;AAAA;;AAAA;AAAA,GAAA,EAMV,2BAAA,CAA4B,UAAU,CAAA;;AAAA;AAAA,GAAA,EAGtC,6BAAA,CAA8B,UAAU,CAAA;;AAAA;AAAA,GAAA,EAGxC,qBAAA,CAAsB,UAAU,CAAA;;AAAA;AAAA,GAAA,EAGhC,sBAAA,CAAuB,UAAU,CAAA;;AAAA;;AAAA;;AAAA;AAAA,GAAA,EAOjC,uBAAA,CAAwB,UAAU,CAAA;AAAA,KAAA,CAAA;AAGrC,EAAA,OAAO,IAAA;AACT;;;ACrCO,IAAM,sBAAA,GAAyB;AAAA,EAEpC,8BAAA,EAAgC,wCAAA;AAAA,EAChC,8BAAA,EAAgC,GAAA;AAAA,EAChC,kCAAA,EAAoC;AACtC,CAAA;AAMO,SAAS,gBAAA,CACd,KACA,MAAA,EACA;AACA,EAAA,GAAA,CAAI,SAAA,CAAU,6BAAA,EAA+B,MAAA,IAAU,GAAG,CAAA;AAC1D,EAAA,GAAA,CAAI,SAAA,CAAU,8BAAA,EAAgC,sBAAA,CAAuB,8BAA8B,CAAC,CAAA;AACpG,EAAA,GAAA,CAAI,SAAA,CAAU,8BAAA,EAAgC,sBAAA,CAAuB,8BAA8B,CAAC,CAAA;AACpG,EAAA,GAAA,CAAI,SAAA,CAAU,kCAAA,EAAoC,sBAAA,CAAuB,kCAAkC,CAAC,CAAA;AAC9G;;;ACSO,SAAS,eAAA,CAAgB,OAAA,GAA6B,EAAC,EAAW;AACvE,EAAA,MAAM,EAAE,eAAA,GAAkB,IAAA,EAAM,aAAA,GAAgB,MAAK,GAAI,OAAA;AAEzD,EAAA,IAAI,YAAA,GAA8B,IAAA;AAElC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,uBAAA;AAAA,IACN,OAAA,EAAS,MAAA;AAAA;AAAA,IAET,eAAe,MAAA,EAAQ;AACrB,MAAA,IAAI,eAAA,EAAiB;AACnB,QAAA,IAAI;AAEF,UAAA,YAAA,GAAe,eAAA,EAAgB;AAC/B,UAAA,OAAA,CAAQ,IAAI,sDAAiD,CAAA;AAAA,QAC/D,SAAS,KAAA,EAAO;AACd,UAAA,OAAA,CAAQ,KAAA,CAAM,iDAAiD,KAAK,CAAA;AACpE,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF;AAGA,MAAA,IAAI,aAAA,IAAiB,MAAA,CAAO,OAAA,KAAY,OAAA,EAAS;AAC/C,QAAA,OAAA,CAAQ,IAAI,0EAAqE,CAAA;AACjF,QAAA,OAAA,CAAQ,IAAI,0DAA0D,CAAA;AACtE,QAAA,OAAA,CAAQ,IAAI,0BAA0B,CAAA;AAAA,MACxC;AAAA,IACF,CAAA;AAAA,IAEA,gBAAgB,MAAA,EAAQ;AACtB,MAAA,IAAI,CAAC,aAAA,EAAe;AAGpB,MAAA,MAAA,CAAO,WAAA,CAAY,GAAA,CAAI,CAAC,GAAA,EAAK,KAAK,IAAA,KAAS;AAEzC,QAAA,gBAAA,CAAiB,GAAA,EAAK,GAAA,CAAI,OAAA,CAAQ,MAAM,CAAA;AAGxC,QAAA,IAAI,GAAA,CAAI,WAAW,SAAA,EAAW;AAC5B,UAAA,GAAA,CAAI,UAAA,GAAa,GAAA;AACjB,UAAA,GAAA,CAAI,GAAA,EAAI;AACR,UAAA;AAAA,QACF;AAEA,QAAA,IAAA,EAAK;AAAA,MACP,CAAC,CAAA;AAAA,IACH,CAAA;AAAA,IAEA,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,KAAA;AAAA;AAAA,MACP,QAAQ,IAAA,EAAc;AACpB,QAAA,IAAI,CAAC,eAAA,IAAmB,CAAC,YAAA,EAAc;AACrC,UAAA,OAAO,IAAA;AAAA,QACT;AAGA,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,OAAA,CAAQ,QAAQ,CAAA;AACrC,QAAA,IAAI,YAAY,EAAA,EAAI;AAClB,UAAA,OAAA,CAAQ,KAAK,qDAAqD,CAAA;AAClE,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,MAAM,YAAY,OAAA,GAAU,CAAA;AAG5B,QAAA,MAAM,cAAA,GAAiB,WAAW,YAAY,CAAA,SAAA,CAAA;AAC9C,QAAA,MAAM,YAAA,GAAe,KAAK,KAAA,CAAM,CAAA,EAAG,SAAS,CAAA,GAAI,cAAA,GAAiB,IAAA,CAAK,KAAA,CAAM,SAAS,CAAA;AAErF,QAAA,OAAA,CAAQ,IAAI,4DAAuD,CAAA;AAEnE,QAAA,OAAO,YAAA;AAAA,MACT;AAAA;AACF,GACF;AACF;AAGA,IAAO,YAAA,GAAQ","file":"vite.mjs","sourcesContent":["/**\n * localStorage Polyfill for HaexSpace Extensions\n *\n * Provides an in-memory fallback when localStorage is blocked\n * due to custom protocol restrictions (haex-extension://)\n */\n\nexport function installLocalStoragePolyfill(): void {\n if (typeof window === 'undefined') {\n return; // Skip in Node.js environment\n }\n\n console.log('[HaexSpace] Storage Polyfill loading immediately');\n\n // Test if localStorage is available\n let localStorageWorks = false;\n try {\n const testKey = '__ls_test__';\n localStorage.setItem(testKey, testKey);\n localStorage.removeItem(testKey);\n localStorageWorks = true;\n } catch (e) {\n console.warn('[HaexSpace] localStorage blocked – using in-memory fallback');\n }\n\n // If blocked: Replace with In-Memory Storage\n if (!localStorageWorks) {\n const lsStorage = new Map<string, string>();\n\n const localStoragePoly: Storage = {\n getItem(key: string): string | null {\n return lsStorage.get(key) || null;\n },\n setItem(key: string, value: string): void {\n lsStorage.set(key, String(value));\n },\n removeItem(key: string): void {\n lsStorage.delete(key);\n },\n clear(): void {\n lsStorage.clear();\n },\n get length(): number {\n return lsStorage.size;\n },\n key(index: number): string | null {\n return Array.from(lsStorage.keys())[index] || null;\n }\n };\n\n try {\n Object.defineProperty(window, 'localStorage', {\n value: localStoragePoly,\n writable: true,\n configurable: true\n });\n } catch (e) {\n // Fallback: Direct assignment\n (window as any).localStorage = localStoragePoly;\n }\n\n console.log('[HaexSpace] localStorage replaced with in-memory polyfill');\n }\n}\n\n/**\n * sessionStorage Polyfill for HaexSpace Extensions\n *\n * Provides a no-op implementation as session state doesn't work\n * reliably in custom protocol contexts\n */\nexport function installSessionStoragePolyfill(): void {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n const sessionStoragePoly: Storage = {\n getItem(): null {\n return null;\n },\n setItem(): void {},\n removeItem(): void {},\n clear(): void {},\n get length(): number {\n return 0;\n },\n key(): null {\n return null;\n }\n };\n\n Object.defineProperty(window, 'sessionStorage', {\n value: sessionStoragePoly,\n writable: true,\n configurable: true\n });\n } catch (e) {\n // Fallback: Direct assignment\n (window as any).sessionStorage = {\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n clear: () => {},\n get length() { return 0; },\n key: () => null\n };\n }\n\n console.log('[HaexSpace] sessionStorage polyfill installed');\n}\n","/**\n * Cookie Polyfill for HaexSpace Extensions\n *\n * Provides an in-memory cookie implementation when cookies are blocked\n * due to custom protocol restrictions (haex-extension://)\n */\n\nexport function installCookiePolyfill(): void {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return; // Skip in Node.js environment\n }\n\n // Test if cookies are available\n let cookiesWork = false;\n try {\n document.cookie = \"__cookie_test__=1\";\n cookiesWork = document.cookie.indexOf(\"__cookie_test__\") !== -1;\n } catch (e) {\n console.warn(\"[HaexSpace] Cookies blocked – using in-memory fallback\");\n }\n\n if (!cookiesWork) {\n const cookieStore = new Map<string, string>();\n\n Object.defineProperty(document, \"cookie\", {\n get(): string {\n const cookies: string[] = [];\n cookieStore.forEach((value, key) => {\n cookies.push(`${key}=${value}`);\n });\n return cookies.join(\"; \");\n },\n set(cookieString: string): void {\n const parts = cookieString.split(\";\").map((p) => p.trim());\n const [keyValue] = parts;\n\n if (!keyValue) return;\n\n const [key, value] = keyValue.split(\"=\");\n if (!key) return;\n\n // Parse options\n const options: Record<string, string | boolean> = {};\n for (let i = 1; i < parts.length; i++) {\n const part = parts[i];\n if (!part) continue;\n const parts_split = part.split(\"=\");\n const optKey = parts_split[0];\n const optValue = parts_split[1];\n if (optKey) {\n options[optKey.toLowerCase()] = optValue || true;\n }\n }\n\n // Check for deletion (expires in past)\n const expiresValue = options.expires;\n if (expiresValue && typeof expiresValue === \"string\") {\n const expiresDate = new Date(expiresValue);\n if (expiresDate < new Date()) {\n cookieStore.delete(key);\n return;\n }\n }\n\n // Check for max-age=0 deletion\n const maxAgeValue = options[\"max-age\"];\n if (typeof maxAgeValue === \"string\" && maxAgeValue === \"0\") {\n cookieStore.delete(key);\n return;\n }\n\n // Store cookie\n cookieStore.set(key, value || \"\");\n },\n configurable: true,\n });\n\n console.log(\"[HaexSpace] Cookie polyfill installed\");\n }\n}\n","/**\n * History API Polyfill for HaexSpace Extensions\n *\n * Works around SecurityError when using pushState/replaceState\n * in custom protocol contexts (haex-extension://)\n *\n * Falls back to hash-based routing when necessary\n */\n\nexport function installHistoryPolyfill(): void {\n if (typeof window === 'undefined' || typeof history === 'undefined') {\n return; // Skip in Node.js environment\n }\n\n // Install after DOM is ready to avoid race conditions\n const install = () => {\n console.log('[HaexSpace] History Patch loading');\n\n const originalPushState = history.pushState;\n const originalReplaceState = history.replaceState;\n let skipNextPush = false;\n let skipNextReplace = false;\n\n // Patch pushState\n history.pushState = function(\n state: any,\n title: string,\n url?: string | URL | null\n ): void {\n console.log('[HaexSpace] pushState called:', url, 'skip:', skipNextPush);\n\n if (skipNextPush) {\n skipNextPush = false;\n console.log('[HaexSpace] pushState skipped');\n return;\n }\n\n try {\n return originalPushState.call(this, state, title, url);\n } catch (e) {\n if ((e as Error).name === 'SecurityError' && url) {\n // Remove duplicate /#/ prefix\n const urlString = url.toString();\n let hashUrl = urlString.replace(/^\\/#/, '');\n hashUrl = hashUrl.startsWith('#') ? hashUrl : '#' + hashUrl;\n console.log('[HaexSpace] SecurityError - setting hash to:', hashUrl);\n skipNextPush = true;\n window.location.hash = hashUrl.replace(/^#/, '');\n return; // Silent fallback\n }\n throw e;\n }\n };\n\n // Patch replaceState\n history.replaceState = function(\n state: any,\n title: string,\n url?: string | URL | null\n ): void {\n console.log('[HaexSpace] replaceState called:', url, 'skip:', skipNextReplace);\n\n if (skipNextReplace) {\n skipNextReplace = false;\n console.log('[HaexSpace] replaceState skipped');\n return;\n }\n\n try {\n return originalReplaceState.call(this, state, title, url);\n } catch (e) {\n if ((e as Error).name === 'SecurityError' && url) {\n // Remove duplicate /#/ prefix\n const urlString = url.toString();\n let hashUrl = urlString.replace(/^\\/#/, '');\n hashUrl = hashUrl.startsWith('#') ? hashUrl : '#' + hashUrl;\n console.log('[HaexSpace] SecurityError - setting hash to:', hashUrl);\n skipNextReplace = true;\n window.location.hash = hashUrl.replace(/^#/, '');\n return; // Silent fallback\n }\n throw e;\n }\n };\n\n console.log('[HaexSpace] History API patched');\n };\n\n // Install after DOM is ready\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', install, { once: true });\n } else {\n // DOM already loaded, install immediately\n install();\n }\n}\n","/**\n * Central message type definitions for HaexSpace SDK\n *\n * Message Naming Schema: haexspace:{subject}\n *\n * These are used for internal communication between extensions and HaexSpace\n */\n\nexport const HAEXSPACE_MESSAGE_TYPES = {\n /** Debug message for development/troubleshooting */\n DEBUG: 'haexspace:debug',\n\n /** Console forwarding from extension iframe */\n CONSOLE_FORWARD: 'console.forward',\n} as const;\n\nexport type HaexspaceMessageType =\n (typeof HAEXSPACE_MESSAGE_TYPES)[keyof typeof HAEXSPACE_MESSAGE_TYPES];\n","import { HAEXSPACE_MESSAGE_TYPES } from '../messages';\n\n/**\n * Debug diagnostics for Android debugging\n * Tests window.parent availability and postMessage functionality\n */\nexport function installDebugDiagnostics(): void {\n if (typeof window === 'undefined') {\n return;\n }\n\n const hasParent = window.parent && window.parent !== window;\n console.log('[HaexSpace] hasParent:', hasParent);\n\n if (hasParent) {\n console.log('[HaexSpace] Attempting to send debug message to parent...');\n window.parent.postMessage({\n type: HAEXSPACE_MESSAGE_TYPES.DEBUG,\n data: `[Polyfills] window.parent test: exists=${!!window.parent}, different=${hasParent}, selfIsTop=${window.self === window.top}`\n }, '*');\n console.log('[HaexSpace] Debug message sent!');\n } else {\n console.log('[HaexSpace] No parent window or parent === window');\n }\n}\n","/**\n * Generates standalone polyfill code for HTML injection\n * This wraps the modular polyfills into an IIFE for immediate execution\n */\nimport {\n installLocalStoragePolyfill,\n installSessionStoragePolyfill,\n} from './localStorage'\nimport { installCookiePolyfill } from './cookies'\nimport { installHistoryPolyfill } from './history'\nimport { installDebugDiagnostics } from './debug'\n\n/**\n * Get the standalone polyfill code as a string\n * This is used by the Nuxt and Vite plugins to inject polyfills into HTML\n *\n * Note: Base tag is injected statically by the Vite plugin, not at runtime\n */\nexport function getPolyfillCode(): string {\n // Convert functions to string and wrap in IIFE\n const iife = `(function() {\n 'use strict';\n\n console.log('[HaexSpace] Storage Polyfill loading immediately');\n\n // localStorage Polyfill\n (${installLocalStoragePolyfill.toString()})();\n\n // sessionStorage Polyfill\n (${installSessionStoragePolyfill.toString()})();\n\n // Cookie Polyfill\n (${installCookiePolyfill.toString()})();\n\n // History API Polyfill\n (${installHistoryPolyfill.toString()})();\n\n // Note: Base tag is injected at build-time by Vite plugin, not at runtime\n\n console.log('[HaexSpace] All polyfills loaded successfully');\n\n // Debug diagnostics for Android debugging\n (${installDebugDiagnostics.toString()})();\n})();`\n\n return iife\n}\n","/**\n * CORS Configuration for HaexSpace Extensions\n * Used by both Vite and Nuxt plugins to ensure consistent CORS headers\n */\n\n/**\n * Standard CORS headers for HaexSpace dev servers\n * Allows extensions to be loaded in custom protocol iframes (haex-extension://)\n */\nexport const HAEXSPACE_CORS_HEADERS = {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, PATCH, OPTIONS',\n 'Access-Control-Allow-Headers': '*',\n 'Access-Control-Allow-Credentials': 'true',\n} as const\n\n/**\n * Apply CORS headers to a Node.js response object\n * Used in Vite middleware\n */\nexport function applyCorsHeaders(\n res: { setHeader: (name: string, value: string) => void },\n origin?: string\n) {\n res.setHeader('Access-Control-Allow-Origin', origin || '*')\n res.setHeader('Access-Control-Allow-Methods', HAEXSPACE_CORS_HEADERS['Access-Control-Allow-Methods'])\n res.setHeader('Access-Control-Allow-Headers', HAEXSPACE_CORS_HEADERS['Access-Control-Allow-Headers'])\n res.setHeader('Access-Control-Allow-Credentials', HAEXSPACE_CORS_HEADERS['Access-Control-Allow-Credentials'])\n}\n\n/**\n * Get CORS headers as a plain object\n * Used in Vite/Nuxt config\n */\nexport function getCorsHeaders(origin?: string): Record<string, string> {\n return {\n 'Access-Control-Allow-Origin': origin || HAEXSPACE_CORS_HEADERS['Access-Control-Allow-Origin'],\n 'Access-Control-Allow-Methods': HAEXSPACE_CORS_HEADERS['Access-Control-Allow-Methods'],\n 'Access-Control-Allow-Headers': HAEXSPACE_CORS_HEADERS['Access-Control-Allow-Headers'],\n 'Access-Control-Allow-Credentials': HAEXSPACE_CORS_HEADERS['Access-Control-Allow-Credentials'],\n }\n}\n","/**\n * Vite Plugin for HaexSpace SDK\n * Automatically injects polyfills into HTML files\n * Works with React, Vue, Svelte, and any other Vite-based project\n */\nimport type { Plugin } from 'vite'\nimport { getPolyfillCode } from './polyfills/standalone'\nimport { applyCorsHeaders } from './cors'\n\nexport interface VitePluginOptions {\n /**\n * Enable/disable polyfill injection\n * @default true\n */\n injectPolyfills?: boolean\n\n /**\n * Configure CORS for dev server\n * @default true\n */\n configureCors?: boolean\n}\n\n/**\n * HaexSpace Vite Plugin\n * Injects browser API polyfills for extensions running in custom protocols\n *\n * @example\n * ```ts\n * // vite.config.ts\n * import { haexspacePlugin } from '@haex-space/vault-sdk/vite'\n *\n * export default {\n * plugins: [haexspacePlugin()]\n * }\n * ```\n */\nexport function haexspacePlugin(options: VitePluginOptions = {}): Plugin {\n const { injectPolyfills = true, configureCors = true } = options\n\n let polyfillCode: string | null = null\n\n return {\n name: '@haex-space/vault-sdk',\n enforce: 'post', // Run after other plugins\n\n configResolved(config) {\n if (injectPolyfills) {\n try {\n // Get polyfill code from modular polyfills\n polyfillCode = getPolyfillCode()\n console.log('✓ [@haex-space/vault-sdk] Polyfills initialized')\n } catch (error) {\n console.error('[@haex-space/vault-sdk] Failed to initialize:', error)\n throw error\n }\n }\n\n // Log CORS configuration\n if (configureCors && config.command === 'serve') {\n console.log('✓ [@haex-space/vault-sdk] CORS configured for HaexSpace development')\n console.log(' - Allowing all origins (required for custom protocols)')\n console.log(' - Allowing credentials')\n }\n },\n\n configureServer(server) {\n if (!configureCors) return\n\n // Add CORS middleware for HaexSpace using shared CORS configuration\n server.middlewares.use((req, res, next) => {\n // Apply CORS headers (allows custom protocols like haex-extension://)\n applyCorsHeaders(res, req.headers.origin)\n\n // Handle preflight requests\n if (req.method === 'OPTIONS') {\n res.statusCode = 200\n res.end()\n return\n }\n\n next()\n })\n },\n\n transformIndexHtml: {\n order: 'pre', // Inject before other transformations\n handler(html: string) {\n if (!injectPolyfills || !polyfillCode) {\n return html\n }\n\n // Inject polyfill script directly after <head>\n const headPos = html.indexOf('<head>')\n if (headPos === -1) {\n console.warn('[@haex-space/vault-sdk] No <head> tag found in HTML')\n return html\n }\n\n const insertPos = headPos + 6 // after <head>\n\n // Inject polyfill only (no base tag needed)\n const polyfillScript = `<script>${polyfillCode}</script>`\n const modifiedHtml = html.slice(0, insertPos) + polyfillScript + html.slice(insertPos)\n\n console.log('✓ [@haex-space/vault-sdk] Polyfill injected into HTML')\n\n return modifiedHtml\n }\n }\n }\n}\n\n// Default export for convenience\nexport default haexspacePlugin\n"]}
package/dist/vue.js CHANGED
@@ -10,7 +10,7 @@ function installLocalStoragePolyfill() {
10
10
  if (typeof window === "undefined") {
11
11
  return;
12
12
  }
13
- console.log("[HaexHub] Storage Polyfill loading immediately");
13
+ console.log("[HaexSpace] Storage Polyfill loading immediately");
14
14
  let localStorageWorks = false;
15
15
  try {
16
16
  const testKey = "__ls_test__";
@@ -18,7 +18,7 @@ function installLocalStoragePolyfill() {
18
18
  localStorage.removeItem(testKey);
19
19
  localStorageWorks = true;
20
20
  } catch (e) {
21
- console.warn("[HaexHub] localStorage blocked \u2013 using in-memory fallback");
21
+ console.warn("[HaexSpace] localStorage blocked \u2013 using in-memory fallback");
22
22
  }
23
23
  if (!localStorageWorks) {
24
24
  const lsStorage = /* @__PURE__ */ new Map();
@@ -51,7 +51,7 @@ function installLocalStoragePolyfill() {
51
51
  } catch (e) {
52
52
  window.localStorage = localStoragePoly;
53
53
  }
54
- console.log("[HaexHub] localStorage replaced with in-memory polyfill");
54
+ console.log("[HaexSpace] localStorage replaced with in-memory polyfill");
55
55
  }
56
56
  }
57
57
  function installSessionStoragePolyfill() {
@@ -96,7 +96,7 @@ function installSessionStoragePolyfill() {
96
96
  key: () => null
97
97
  };
98
98
  }
99
- console.log("[HaexHub] sessionStorage polyfill installed");
99
+ console.log("[HaexSpace] sessionStorage polyfill installed");
100
100
  }
101
101
 
102
102
  // src/polyfills/cookies.ts
@@ -109,7 +109,7 @@ function installCookiePolyfill() {
109
109
  document.cookie = "__cookie_test__=1";
110
110
  cookiesWork = document.cookie.indexOf("__cookie_test__") !== -1;
111
111
  } catch (e) {
112
- console.warn("[HaexHub] Cookies blocked \u2013 using in-memory fallback");
112
+ console.warn("[HaexSpace] Cookies blocked \u2013 using in-memory fallback");
113
113
  }
114
114
  if (!cookiesWork) {
115
115
  const cookieStore = /* @__PURE__ */ new Map();
@@ -155,7 +155,7 @@ function installCookiePolyfill() {
155
155
  },
156
156
  configurable: true
157
157
  });
158
- console.log("[HaexHub] Cookie polyfill installed");
158
+ console.log("[HaexSpace] Cookie polyfill installed");
159
159
  }
160
160
  }
161
161
 
@@ -165,16 +165,16 @@ function installHistoryPolyfill() {
165
165
  return;
166
166
  }
167
167
  const install = () => {
168
- console.log("[HaexHub] History Patch loading");
168
+ console.log("[HaexSpace] History Patch loading");
169
169
  const originalPushState = history.pushState;
170
170
  const originalReplaceState = history.replaceState;
171
171
  let skipNextPush = false;
172
172
  let skipNextReplace = false;
173
173
  history.pushState = function(state, title, url) {
174
- console.log("[HaexHub] pushState called:", url, "skip:", skipNextPush);
174
+ console.log("[HaexSpace] pushState called:", url, "skip:", skipNextPush);
175
175
  if (skipNextPush) {
176
176
  skipNextPush = false;
177
- console.log("[HaexHub] pushState skipped");
177
+ console.log("[HaexSpace] pushState skipped");
178
178
  return;
179
179
  }
180
180
  try {
@@ -184,7 +184,7 @@ function installHistoryPolyfill() {
184
184
  const urlString = url.toString();
185
185
  let hashUrl = urlString.replace(/^\/#/, "");
186
186
  hashUrl = hashUrl.startsWith("#") ? hashUrl : "#" + hashUrl;
187
- console.log("[HaexHub] SecurityError - setting hash to:", hashUrl);
187
+ console.log("[HaexSpace] SecurityError - setting hash to:", hashUrl);
188
188
  skipNextPush = true;
189
189
  window.location.hash = hashUrl.replace(/^#/, "");
190
190
  return;
@@ -193,10 +193,10 @@ function installHistoryPolyfill() {
193
193
  }
194
194
  };
195
195
  history.replaceState = function(state, title, url) {
196
- console.log("[HaexHub] replaceState called:", url, "skip:", skipNextReplace);
196
+ console.log("[HaexSpace] replaceState called:", url, "skip:", skipNextReplace);
197
197
  if (skipNextReplace) {
198
198
  skipNextReplace = false;
199
- console.log("[HaexHub] replaceState skipped");
199
+ console.log("[HaexSpace] replaceState skipped");
200
200
  return;
201
201
  }
202
202
  try {
@@ -206,7 +206,7 @@ function installHistoryPolyfill() {
206
206
  const urlString = url.toString();
207
207
  let hashUrl = urlString.replace(/^\/#/, "");
208
208
  hashUrl = hashUrl.startsWith("#") ? hashUrl : "#" + hashUrl;
209
- console.log("[HaexHub] SecurityError - setting hash to:", hashUrl);
209
+ console.log("[HaexSpace] SecurityError - setting hash to:", hashUrl);
210
210
  skipNextReplace = true;
211
211
  window.location.hash = hashUrl.replace(/^#/, "");
212
212
  return;
@@ -214,7 +214,7 @@ function installHistoryPolyfill() {
214
214
  throw e;
215
215
  }
216
216
  };
217
- console.log("[HaexHub] History API patched");
217
+ console.log("[HaexSpace] History API patched");
218
218
  };
219
219
  if (document.readyState === "loading") {
220
220
  document.addEventListener("DOMContentLoaded", install, { once: true });
@@ -292,7 +292,7 @@ function interceptConsole(level) {
292
292
  "*"
293
293
  );
294
294
  } catch (error) {
295
- originalConsole.error("[HaexHub] Failed to forward console message:", error);
295
+ originalConsole.error("[HaexSpace] Failed to forward console message:", error);
296
296
  }
297
297
  }
298
298
  };
@@ -305,7 +305,7 @@ function installConsoleForwarding(debug = false) {
305
305
  return;
306
306
  }
307
307
  if (!debug) {
308
- console.log("[HaexHub] Console forwarding disabled (not in debug mode)");
308
+ console.log("[HaexSpace] Console forwarding disabled (not in debug mode)");
309
309
  return;
310
310
  }
311
311
  interceptConsole("log");
@@ -313,7 +313,7 @@ function installConsoleForwarding(debug = false) {
313
313
  interceptConsole("warn");
314
314
  interceptConsole("error");
315
315
  interceptConsole("debug");
316
- console.log("[HaexHub] Console forwarding installed");
316
+ console.log("[HaexSpace] Console forwarding installed");
317
317
  }
318
318
 
319
319
  // src/polyfills/index.ts
@@ -325,7 +325,7 @@ function installPolyfills() {
325
325
  installSessionStoragePolyfill();
326
326
  installCookiePolyfill();
327
327
  installHistoryPolyfill();
328
- console.log("[HaexHub] All polyfills loaded successfully");
328
+ console.log("[HaexSpace] All polyfills loaded successfully");
329
329
  installDebugDiagnostics();
330
330
  }
331
331
  if (typeof window !== "undefined") {
@@ -827,13 +827,13 @@ var HaexVaultClient = class {
827
827
  async runSetupAsync() {
828
828
  if (!this.setupHook) return;
829
829
  try {
830
- this.log("[HaexHub] Running setup hook...");
830
+ this.log("[HaexSpace] Running setup hook...");
831
831
  await this.setupHook();
832
832
  this._setupCompleted = true;
833
- this.log("[HaexHub] Setup completed successfully");
833
+ this.log("[HaexSpace] Setup completed successfully");
834
834
  this.notifySubscribers();
835
835
  } catch (error) {
836
- this.log("[HaexHub] Setup failed:", error);
836
+ this.log("[HaexSpace] Setup failed:", error);
837
837
  throw error;
838
838
  }
839
839
  }
@@ -1162,26 +1162,26 @@ var HaexVaultClient = class {
1162
1162
  this.log("Application context:", this._context);
1163
1163
  this.notifySubscribers();
1164
1164
  const { listen } = window.__TAURI__.event;
1165
- console.log("[HaexHub SDK] Setting up Tauri event listener for:", HAEXTENSION_EVENTS.CONTEXT_CHANGED);
1165
+ console.log("[HaexSpace SDK] Setting up Tauri event listener for:", HAEXTENSION_EVENTS.CONTEXT_CHANGED);
1166
1166
  try {
1167
1167
  await listen(HAEXTENSION_EVENTS.CONTEXT_CHANGED, (event) => {
1168
- console.log("[HaexHub SDK] Received Tauri event:", HAEXTENSION_EVENTS.CONTEXT_CHANGED, event);
1168
+ console.log("[HaexSpace SDK] Received Tauri event:", HAEXTENSION_EVENTS.CONTEXT_CHANGED, event);
1169
1169
  this.log("Received context change event:", event);
1170
1170
  if (event.payload?.context) {
1171
1171
  this._context = event.payload.context;
1172
- console.log("[HaexHub SDK] Updated context to:", this._context);
1172
+ console.log("[HaexSpace SDK] Updated context to:", this._context);
1173
1173
  this.handleEvent({
1174
1174
  type: HAEXTENSION_EVENTS.CONTEXT_CHANGED,
1175
1175
  data: { context: this._context },
1176
1176
  timestamp: Date.now()
1177
1177
  });
1178
1178
  } else {
1179
- console.warn("[HaexHub SDK] Event received but no context in payload:", event);
1179
+ console.warn("[HaexSpace SDK] Event received but no context in payload:", event);
1180
1180
  }
1181
1181
  });
1182
- console.log("[HaexHub SDK] Context change listener registered successfully");
1182
+ console.log("[HaexSpace SDK] Context change listener registered successfully");
1183
1183
  } catch (error) {
1184
- console.error("[HaexHub SDK] Failed to setup context change listener:", error);
1184
+ console.error("[HaexSpace SDK] Failed to setup context change listener:", error);
1185
1185
  this.log("Failed to setup context change listener:", error);
1186
1186
  }
1187
1187
  this.resolveReady();
@@ -1198,7 +1198,7 @@ var HaexVaultClient = class {
1198
1198
  window.addEventListener("message", this.messageHandler);
1199
1199
  this.isNativeWindow = false;
1200
1200
  this.initialized = true;
1201
- this.log("HaexHub SDK initialized in iframe mode");
1201
+ this.log("HaexSpace SDK initialized in iframe mode");
1202
1202
  try {
1203
1203
  if (this.config.manifest) {
1204
1204
  this._extensionInfo = {
@@ -1366,7 +1366,7 @@ postMessage error: ${e}`);
1366
1366
  }
1367
1367
  log(...args) {
1368
1368
  if (this.config.debug) {
1369
- console.log("[HaexHub SDK]", ...args);
1369
+ console.log("[HaexSpace SDK]", ...args);
1370
1370
  }
1371
1371
  }
1372
1372
  };