refactor(iframe): [PKG-IFRAME-03] scope requests to active documents

This commit is contained in:
Harvey Zhao committed 2026-09-13 01:07:37 +08:00
1 parent b8cdafedd1
commit 1342de94ef
27 files changed
+10860 -69

No files matched your search

@@ -1,4 +1,5 @@
import type { Packet, RequestHost } from './requests'
import { createNavigation } from './navigation'
import { cancelRequests } from './requests'
interface ConnectionHost extends RequestHost {
@@ -11,9 +12,29 @@ const connections = new WeakMap<ConnectionHost, () => void>()
export function connect(host: ConnectionHost): void {
const owner = window
const receiver = host.onMessage
connections.set(host, () => owner.removeEventListener('message', receiver))
const cleanups = [() => owner.removeEventListener('message', receiver)]
connections.set(host, () => {
let failed = false
let failure: unknown
for (const cleanup of cleanups) {
try {
cleanup()
}
catch (error) {
if (!failed) {
failed = true
failure = error
}
}
}
if (failed)
throw failure
})
owner.addEventListener('message', receiver)
host.$iframe.src = host.url
const navigation = createNavigation(host)
cleanups.push(navigation.dispose)
navigation.start()
}
export function releaseConnection(host: ConnectionHost): void {