computers
Version:
computer←→computer
30 lines (27 loc) • 908 B
JavaScript
import { createTransport, call } from '../chunk-BUCQFDXC.js';
// src/transports/web.ts
var MESSAGE_SOURCE_NAMESPACE = "::computers::";
function web({ target, self }, api = {}) {
return createTransport({
call: (path, args) => call(api, path, args),
send: (message) => {
return target.postMessage({
source: MESSAGE_SOURCE_NAMESPACE,
payload: message
});
},
subscribe: (notify) => {
const onMessage = (event) => {
if (!event.data) return;
if (typeof event.data !== "object" || event.data === null) return;
if (!("source" in event.data) || event.data.source !== MESSAGE_SOURCE_NAMESPACE) return;
notify(event.data.payload);
};
self.addEventListener("message", onMessage);
return () => {
self.removeEventListener("message", onMessage);
};
}
});
}
export { MESSAGE_SOURCE_NAMESPACE, web };