mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-08 08:39:59 +00:00
36 lines
717 B
TypeScript
36 lines
717 B
TypeScript
"use strict";
|
|
|
|
import { Message } from "../types";
|
|
|
|
|
|
interface Details {
|
|
tabId: number
|
|
, frameId: number
|
|
}
|
|
|
|
type SenderCallback = (message: Message, details: Details) => void;
|
|
|
|
|
|
const routeMap = new Map<string, SenderCallback>();
|
|
|
|
function register (routeName: string, senderCallback: SenderCallback) {
|
|
routeMap.set(routeName, senderCallback);
|
|
}
|
|
|
|
function deregister (routeName: string) {
|
|
routeMap.delete(routeName);
|
|
}
|
|
|
|
function handleMessage (message: Message, details?: Details) {
|
|
const destination = message.subject.split(":")[0];
|
|
if (routeMap.has(destination)) {
|
|
routeMap.get(destination)(message, details);
|
|
}
|
|
}
|
|
|
|
export default {
|
|
register
|
|
, deregister
|
|
, handleMessage
|
|
};
|