@remote-ui/rpc
Advanced tools
Comparing version
@@ -17,10 +17,16 @@ 'use strict'; | ||
const listenerMap = new WeakMap(); | ||
let resolveIFrameReadyPromise; | ||
function onMessage(event) { | ||
if (event.source !== target.contentWindow) return; | ||
if (event.data === 'remote-ui::ready') { | ||
window.removeEventListener('message', onMessage); | ||
resolveIFrameReadyPromise(); | ||
} | ||
} | ||
const iframeReadyPromise = new Promise(resolve => { | ||
window.addEventListener('message', event => { | ||
if (event.source !== target.contentWindow) return; | ||
if (event.data === 'remote-ui::ready') { | ||
resolve(); | ||
} | ||
}); | ||
resolveIFrameReadyPromise = resolve; | ||
window.addEventListener('message', onMessage); | ||
}); | ||
@@ -51,2 +57,3 @@ return { | ||
terminate() { | ||
window.removeEventListener('message', onMessage); | ||
if (shouldTerminate) target.remove(); | ||
@@ -53,0 +60,0 @@ } |
# Changelog | ||
All notable changes to this project will be documented in this file. | ||
## 1.3.5 | ||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | ||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | ||
### Patch Changes | ||
- [#192](https://github.com/Shopify/remote-ui/pull/192) [`fb2e2e8`](https://github.com/Shopify/remote-ui/commit/fb2e2e8b76876158a6dab1aee2a9915d5a182a20) Thanks [@TheCloudlessSky](https://github.com/TheCloudlessSky)! - Fix memory leak when listening to 'message' events from child iframes | ||
## [1.3.3] - 2022-08-15 | ||
@@ -9,0 +10,0 @@ |
{ | ||
"name": "@remote-ui/rpc", | ||
"description": "An RPC library with strong support for simulating the transfer of functions via postMessage", | ||
"version": "1.3.4", | ||
"version": "1.3.5", | ||
"publishConfig": { | ||
@@ -25,4 +25,3 @@ "access": "public" | ||
"uuid": "^8.2.0" | ||
}, | ||
"gitHead": "a35cf5c1e3d89949e60af9b90339c6551325396d" | ||
} | ||
} |
@@ -21,9 +21,16 @@ import type {MessageEndpoint} from '../types'; | ||
let resolveIFrameReadyPromise: () => void; | ||
function onMessage(event: MessageEvent<any>) { | ||
if (event.source !== target.contentWindow) return; | ||
if (event.data === 'remote-ui::ready') { | ||
window.removeEventListener('message', onMessage); | ||
resolveIFrameReadyPromise(); | ||
} | ||
} | ||
const iframeReadyPromise = new Promise<void>((resolve) => { | ||
window.addEventListener('message', (event) => { | ||
if (event.source !== target.contentWindow) return; | ||
if (event.data === 'remote-ui::ready') { | ||
resolve(); | ||
} | ||
}); | ||
resolveIFrameReadyPromise = resolve; | ||
window.addEventListener('message', onMessage); | ||
}); | ||
@@ -54,2 +61,4 @@ | ||
terminate() { | ||
window.removeEventListener('message', onMessage); | ||
if (shouldTerminate) target.remove(); | ||
@@ -56,0 +65,0 @@ }, |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
2362
0.64%149881
-0.09%75
-1.32%