UNPKG

z-ipc

Version:

Z-IPC is an easy-to-use, extensible and fully type-safe IPC solution for JavaScript environments.

51 lines (49 loc) 1.35 kB
// src/core/adapter.ts function defineAdapter(adapter) { return adapter; } // src/adapters/browser.ts function createChildWebWorkerAdapter(worker) { const listenerMap = /* @__PURE__ */ new Map(); return defineAdapter({ publish: (message) => { worker.postMessage(message); }, subscribe: (callback) => { const handler = (evt) => callback(evt.data); listenerMap.set(callback, handler); worker.addEventListener("message", handler); }, unsubscribe: (callback) => { const handler = listenerMap.get(callback); if (handler) { worker.removeEventListener("message", handler); listenerMap.delete(callback); } } }); } function createParentWebWorkerAdapter() { const listenerMap = /* @__PURE__ */ new Map(); return defineAdapter({ publish: (message) => { self.postMessage(message); }, subscribe: (callback) => { const handler = (evt) => callback(evt.data); listenerMap.set(callback, handler); self.addEventListener("message", handler); }, unsubscribe: (callback) => { const handler = listenerMap.get(callback); if (handler) { self.removeEventListener("message", handler); listenerMap.delete(callback); } } }); } export { createChildWebWorkerAdapter, createParentWebWorkerAdapter };