function assert(condition: unknown, message: string): void { if (!condition) { throw new Error(message); } } const ALLOWED_HOSTS = new Set(["runtime.example.com"]); const ALLOWED_PATH_PREFIX = "/static/hyperframes-runtime/"; function isAllowedRuntimeUrl(candidate: string): boolean { try { const parsed = new URL(candidate); return ( parsed.protocol === "https:" && ALLOWED_HOSTS.has(parsed.hostname.toLowerCase()) && parsed.pathname.startsWith(ALLOWED_PATH_PREFIX) && parsed.pathname.endsWith(".js") ); } catch { return false; } } function isGuardedPreviewMessage(data: unknown): boolean { if (!data || typeof data !== "object") { return false; } const record = data as { source?: unknown; type?: unknown }; const source = typeof record.source === "string" ? record.source : null; const type = typeof record.type === "string" ? record.type : null; const guardedTypes = new Set([ "state", "timeline", "element-picked", "element-picked-many", "element-pick-candidates", "pick-mode-cancelled", ]); if (!type || !guardedTypes.has(type)) { return false; } return source === "hf-preview"; } const allowedRuntimeFixtures = [ "https://runtime.example.com/static/hyperframes-runtime/hyperframe.runtime.iife.js", "https://runtime.example.com/static/hyperframes-runtime/v2026.02.20/hyperframe.runtime.iife.js", ]; const blockedRuntimeFixtures = [ "http://runtime.example.com/static/hyperframes-runtime/hyperframe.runtime.iife.js", "javascript:alert(1)", "data:text/javascript,alert(1)", "https://evil.example/static/hyperframes-runtime/hyperframe.runtime.iife.js", "https://runtime.example.com/static/other/hyperframe.runtime.iife.js", "https://runtime.example.com/static/hyperframes-runtime/hyperframe.runtime.iife.css", ]; for (const fixture of allowedRuntimeFixtures) { assert(isAllowedRuntimeUrl(fixture), `Expected runtime URL to be allowed: ${fixture}`); } for (const fixture of blockedRuntimeFixtures) { assert(!isAllowedRuntimeUrl(fixture), `Expected runtime URL to be blocked: ${fixture}`); } const allowedMessages = [ { type: "state", source: "hf-preview" }, { type: "timeline", source: "hf-preview" }, { type: "element-picked", source: "hf-preview" }, ]; const blockedMessages = [ { type: "state", source: "hf-parent" }, { type: "timeline", source: "evil-origin" }, { type: "element-picked", source: "hf-parent" }, { type: "pick-mode-cancelled", source: null }, { type: "unknown-type", source: "hf-preview" }, ]; for (const fixture of allowedMessages) { assert( isGuardedPreviewMessage(fixture), `Expected message fixture to pass guard: ${JSON.stringify(fixture)}`, ); } for (const fixture of blockedMessages) { assert( !isGuardedPreviewMessage(fixture), `Expected message fixture to fail guard: ${JSON.stringify(fixture)}`, ); } console.log( JSON.stringify({ event: "hyperframe_runtime_security_fixtures_verified", allowedRuntimeFixtures: allowedRuntimeFixtures.length, blockedRuntimeFixtures: blockedRuntimeFixtures.length, allowedMessages: allowedMessages.length, blockedMessages: blockedMessages.length, }), );